本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使 TensorFlow 用 Lite 對相機中的影像執行範例影像分類推論
本教學課程說明如何使用 TensorFlow Lite 影像分類推論元件,對 Greengrass 核心裝置上本機攝影機的影像執行範例影像分類推論。此元件包括下列元件相依性:
-
TensorFlow 精簡版圖像分類模型存儲組件
-
TensorFlow 精簡版運行組件
注意
本教程訪問樹莓派
如需 Greengrass 裝置上機器學習的詳細資訊,請參閱。執行機器學習推論
必要條件
若要完成此自學課程,您必須先完成教學課程:使 TensorFlow 用 Lite 執行範例影像分類推論。
您也需要下列項目:
-
一種具 Greengrass 攝像機接口的 Linux 核心設備。本教學課程會存取下列其中一個受支援裝置上的相機模組:
如需有關設定 Greengrass 核心裝置的資訊,請參閱。教學課程:AWS IoT Greengrass V2 入門
核心裝置必須符合下列要求:
-
在運行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心設備上,GNU C 庫
(glibc)2.27 版或更高版本安裝在設備上。 -
在 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
-
樹莓派運行樹莓派操作系統靶心設備必須滿足以下要求:
-
NumPy 1.22.4 或更新版本已安裝在裝置上。樹莓派 OS 靶心包括早期版本的 NumPy,因此您可以運行以下命令在設備 NumPy 上升級。
pip3 install --upgrade numpy
-
裝置上啟用的舊式攝影機堆疊。樹莓派 OS Bullseye 包括一個新的相機堆疊,預設情況下啟用且不相容,因此您必須啟用傳統的相機堆疊。
啟用舊式相機堆疊
-
運行以下命令以打開樹莓派配置工具。
sudo raspi-config
-
選取介面選項。
-
選取「舊式相機」以啟用舊式相機堆疊。
-
重新啟動 Raspberry Pi。
-
-
-
-
對於樹莓派或 NVIDIA 傑特森納米設備,樹莓派相機模塊 V2-8 百萬像素,1080p
的。若要了解如何設定相機,請參閱 Raspberry Pi 文件中的連接相機 。
步驟 1:在設備上配置相機模塊
在此步驟中,您將安裝並啟用裝置的相機模組。在設備上運行以下命令。
步驟 2:驗證您對預設通知主題的訂閱
在中教學課程:使 TensorFlow 用 Lite 執行範例影像分類推論,您已在AWS IoT主控台中設定 AWS IoT MQTT 用戶端,以監視由 TensorFlow Lite 映像分類元件針對主題發佈的 MQTT 訊息。ml/tflite/image-classification
在主AWS IoT控台中,確認此訂閱存在。如果沒有,請在步驟 1:訂閱預設通知主題將元件部署到 Greengrass 核心裝置之前,遵循中的步驟訂閱本主題。
步驟 3:修改 TensorFlow Lite 映像分類元件組態並加以部署
在此步驟中,您可以設定 TensorFlow Lite 映像分類元件並將其部署至核心裝置:
-
在AWS IoT Greengrass主控台
瀏覽功能表中,選擇 [元件]。 -
在元面頁面上的公用元件索引標籤上,選擇
aws.greengrass.TensorFlowLiteImageClassification
。 -
在 aws.greengrass.TensorFlowLiteImageClassification頁面中,選擇部署。
-
從新增至部署中,選擇下列其中一項:
-
若要將此元件合併至目標裝置上的現有部署,請選擇 [新增至現有部署],然後選取要修訂的部署。
-
若要在目標裝置上建立新部署,請選擇 [建立新部署]。如果您的設備上有現有的部署,則選擇此步驟將取代現有部署。
-
-
在指定目標頁面上,執行下列作業:
-
在部署資訊下,輸入或修改部署的易記名稱。
-
在部署目標下,選取部署的目標,然後選擇下一步。如果您要修訂既有部署,則無法變更部署目標。
-
-
在 [選取元件] 頁面的 [公用元件] 下,確認已選取
aws.greengrass.TensorFlowLiteImageClassification
元件,然後選擇 [下一步]。 -
在 [設定元件] 頁面上,執行下列動作:
-
選取推論元件,然後選擇設定元件。
-
在「組態更新」下,在「要合併的組態」方塊中輸入下列組態更新。
{ "InferenceInterval": "60", "UseCamera": "true" }
透過此組態更新,元件會存取裝置上的攝影機模組,並對相機拍攝的影像執行推論。推論程式碼每 60 秒執行一次。
-
選擇確認,然後選擇下一步。
-
-
在設定進階設定頁面上,保留預設組態設定,然後選擇 下一步。
-
在「複查」頁面上,選擇「建置」
-
建立
deployment.json
檔案以定義 TensorFlow Lite 影像分類元件的部署規劃。此檔案看起來應如下所示:{ "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 MQTT 用戶端中檢視推論結果。AWS IoT若要訂閱元件發佈推論結果的主題,請參閱步驟 2:驗證您對預設通知主題的訂閱。
主題
-
AWS IoTMQTT 用戶端 — 若要檢視推論元件在預設通知主題上發佈的結果,請完成下列步驟:
-
在AWS IoT主控台
導覽功能表中,選擇 [測試]、[MQTT 測試用戶端]。 -
在「訂閱」下,選擇
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 影像分類元件,以及自訂組態選項,對相機拍攝的影像執行範例影像分類。
如需自訂公用元件組態或建立自訂機器學習元件的詳細資訊,請參閱自訂您的機器學習元件。