翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: TensorFlow Lite を使用してカメラからの画像に対してサンプル画像分類推論を実行する
このチュートリアルでは、TensorFlow Lite イメージ分類推論コンポーネントを使用して、Greengrass コアデバイスでローカルにカメラから画像に対してサンプルイメージ分類推論を実行する方法を示します。このコンポーネントには、次のコンポーネントの従属関係が含まれます:
-
TensorFlow Lite イメージ分類モデルストアコンポーネント
-
TensorFlow Lite ランタイムコンポーネント
注記
このチュートリアルでは、Raspberry Pi
Greengrass デバイスでの機械学習の詳細については、「機械学習の推論を実行する」を参照してください。
トピック
前提条件
このチュートリアルを完了するには、まず チュートリアル: TensorFlow Lite を使用してサンプルイメージ分類推論を実行する を完了する必要があります。
また、以下も必要になります:
-
カメラインターフェイスを備えた Linux Greengrass コアデバイス。このチュートリアルでは、サポートされている次に示すデバイスのいずれかのカメラモジュールにアクセスします:
-
Raspberry Pi OS
(以前はRaspbianと呼ばれていた) を実行中の Raspberry Pi
Greengrass コアデバイスのセットアップの情報については、「チュートリアル: AWS IoT Greengrass V2 の開始方法」を参照してください。
コアデバイスは、次の要件を満たしている必要があります。
-
Amazon Linux 2 または Ubuntu 18.04 を実行している Greengrass コアデバイスの場合は、GNU C ライブラリ
(glibc) バージョン 2.27 以降がデバイスにインストールされている必要があります。 -
Raspberry Pi などの Armv7l デバイスでは、OpenCV-Python の依存関係がデバイスにインストールされています。次のコマンドを実行して依存関係をインストールします。
sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
-
Raspberry Pi OS Bullseye を実行する Raspberry Pi デバイスでは、次の要件を満たす必要があります。
-
NumPy 1.22.4 以降がデバイスにインストールされている。Raspberry Pi OSwireseye には以前のバージョンの が含まれているため NumPy、次のコマンドを実行して NumPy デバイスでアップグレードできます。
pip3 install --upgrade numpy
-
デバイスで、レガシーカメラスタックが有効になっていること。Raspberry Pi OS Bullseye には、デフォルトで新しいカメラスタックが含まれており有効化されていますが、これには互換性がないるため、レガシーカメラスタックを有効にしておく必要があります。
レガシーカメラスタックを有効にするには
-
次のコマンドを実行して、Raspberry Pi 設定ツールを開きます。
sudo raspi-config
-
[Interface Options] (インターフェイスオプション) を選択します。
-
[Legacy camera] (レガシーカメラ) を選択して、レガシーカメラスタックを有効にします。
-
Raspberry Pi を再起動します。
-
-
-
-
Raspberry Pi または NVIDIA Jetson Nano デバイスの場合、Raspberry Pi カメラモジュール V2 - 8 megapixel、1080p
。カメラの設定方法については、Raspberry Pi ドキュメントで「カメラの接続 」を参照してください。
ステップ 1: デバイスのカメラモジュールを設定
このステップでは、デバイスのカメラモジュールをインストールして有効にします。デバイスに次のコマンドを実行します。
ステップ 2: デフォルトの通知トピックのサブスクライブ状況を確認
でチュートリアル: TensorFlow Lite を使用してサンプルイメージ分類推論を実行する、 AWS IoT ml/tflite/image-classification
トピックの TensorFlow Lite イメージ分類コンポーネントによって発行された MQTT メッセージを監視するように、 AWS IoTコンソールで MQTT クライアントを設定しました。AWS IoT コンソールで、このサブスクリプションが存在することを確認します。そうでない場合、ステップ 1: デフォルトの通知トピックへサブスクライブ の手順に従って、コンポーネントを Greengrass コアデバイスにデプロイする前に、このトピックをサブスクライブします。
ステップ 3: TensorFlow Lite イメージ分類コンポーネント設定を変更してデプロイする
このステップでは、 TensorFlow Lite イメージ分類コンポーネントを設定し、コアデバイスにデプロイします。
-
AWS IoT Greengrass コンソール
のナビゲーションメニューで、[Components] (コンポーネント) を選択します。 -
[Components] (コンポーネント) ページの [Public components] (公開コンポーネント) タブで、[
aws.greengrass.TensorFlowLiteImageClassification
] を選択します。 -
[aws.greengrass.TensorFlowLiteImageClassification] ページで、[Deploy] (デプロイ) を選択します。
-
[Add to deployment] (デプロイに追加) から、次のいずれかを選択します。
-
ターゲットデバイスにある既存のデプロイにこのコンポーネントをマージするには、[Add to existing deployment] (既存のデプロイに追加) をクリックし、修正するデプロイを選択します。
-
ターゲットデバイスに新しいデプロイを作成するには、[Create new deployment] (新しいデプロイの作成) を選択します。デバイスに既存のデプロイがある場合は、このステップを選択すると既存のデプロイが置き換えられます。
-
-
[Specify device state] (ターゲットを指定) ページで、次を実行します。
-
[Deployment information] (デプロイ情報) で、デプロイの名前を入力または変更して、わかりやすくします。
-
[Deployment targets] (デプロイターゲット) でデプロイのターゲットを選択し、[Next] (次へ) を選択します。既存のデプロイを修正する場合は、デプロイターゲットを変更できません。
-
-
[Select components] (コンポーネントを選択) ページの [Public components] (パブリックコンポーネント) 内で、
aws.greengrass.TensorFlowLiteImageClassification
コンポーネントが選択されていることを確認して、[Next] (次) を選択します。 -
[Configure components] (コンポーネントの設定) ページで、次の手順を実行します:
-
推論コンポーネントを選択して、[Configure component] (コンポーネントの設定) を選択します。
-
[Configuration update] (設定更新) 内で、[Configuration to merge] (マージの設定) ボックスに次の設定更新を入力します:
{ "InferenceInterval": "60", "UseCamera": "true" }
この設定更新により、コンポーネントはデバイスのカメラモジュールにアクセスし、カメラで撮影した画像の推論を実行します。推論コードは 60 秒ごとに実行されます。
-
[Confirm] (確認)、[Next] (次へ) の順に選択します。
-
-
[Configure advanced settings] (詳細設定) ページはデフォルト設定のままにし、[Next] (次へ) を選択します。
-
[Review] (レビュー) ページで、[Deploy] (デプロイ) を選択します。
-
TensorFlow Lite イメージ分類コンポーネントのデプロイ設定を定義する
deployment.json
ファイルを作成します。このファイルは次のようになります:{ "targetArn":"
targetArn
", "components": { "aws.greengrass.TensorFlowLiteImageClassification": { "componentVersion":2.1.0
, "configurationUpdate": { "InferenceInterval": "60", "UseCamera": "true" } } } }-
[
targetArn
] フィールドで
をデプロイメントの対象となるモノまたはモノのグループの Amazon リソースネーム (ARN) に置き換えます。形式は以下のとおりです:targetArn
-
モノ:
arn:aws:iot:
region
:account-id
:thing/thingName
-
モノのグループ:
arn:aws:iot:
region
:account-id
:thinggroup/thingGroupName
-
-
このチュートリアルでは、コンポーネントバージョン 2.1.0 を使用します。
aws.greengrass.TensorFlowLiteImageClassification
コンポーネントオブジェクトで2.1.0
を置き換えて、別のバージョンの TensorFlow Lite イメージ分類コンポーネントを使用します。
この設定更新により、コンポーネントはデバイスのカメラモジュールにアクセスし、カメラで撮影した画像の推論を実行します。推論コードは 60 秒ごとに実行されます。次の値の置き換え
-
-
次のコマンドを実行して、デバイスに TensorFlow Lite イメージ分類コンポーネントをデプロイします。
aws greengrassv2 create-deployment \ --cli-input-json file://
path/to/
deployment.json
デプロイには数分かかる場合があります。次のステップでは、コンポーネントログをチェックして、デプロイが正常に完了したことを確認し、推論結果を表示します。
ステップ 4: 推論結果の確認
コンポーネントをデプロイした後、Greengrass コアデバイスのコンポーネントログと、AWS IoT コンソールの AWS IoT MQTT クライアントで推論結果を確認できます。コンポーネントが推論結果をパブリッシュするトピックへサブスクライブするには、「ステップ 2: デフォルトの通知トピックのサブスクライブ状況を確認」を参照してください。
トピック
-
AWS IoT MQTT クライアント - 推論コンポーネントがデフォルトの通知トピックにパブリッシュした結果を確認するには、次のステップを実行します:
-
AWS IoT コンソール
のナビゲーションメニューで、[Test, MQTT test client] (テスト、MQTT テストクライアント) を選択します。 -
[Subscriptions] (サブスクリプション) 内で、
ml/tflite/image-classification
を選択します。
-
-
コンポーネントログ - コンポーネントログで推論結果を確認するには、Greengrass コアデバイスで次のコマンドを実行します。
sudo tail -f
/logs/aws.greengrass.TensorFlowLiteImageClassification.log/greengrass/v2
コンポーネントログまたは MQTT クライアントで推論結果が確認できない場合、デプロイが失敗しているか、コアデバイスに到達していません。これは、コアデバイスがインターネットに接続されていない、あるいはコンポーネントを実行するために必要な許可がない場合に発生します。コアデバイスで次のコマンドを実行して、AWS IoT Greengrass Core ソフトウェアのログファイルを確認します。このファイルは、Greengrass コアデバイスのデプロイサービスからのログが含まれます。
sudo tail -f
/logs/greengrass.log
/greengrass/v2
詳細については、「機械学習の推論に対するトラブルシューティング」を参照してください。
次のステップ
このチュートリアルでは、 TensorFlow Lite イメージ分類コンポーネントと、カメラで撮影したイメージのサンプルイメージ分類を実行するカスタム設定オプションを使用する方法を示します。
パブリックコンポーネント設定のカスタマイズ、またはカスタム機械学習コンポーネントの作成の詳細については、「機械学習コンポーネントのカスタマイズ」を参照してください。