

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# TensorFlow Lite 物件偵測
<a name="tensorflow-lite-object-detection-component"></a>

TensorFlow Lite 物件偵測元件 (`aws.greengrass.TensorFlowLiteObjectDetection`) 包含使用 [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) 執行物件偵測推論的範例推論程式碼，以及預先訓練的範例單一鏡頭偵測 (SSD) MobileNet 1.0 模型。此元件使用 變體[TensorFlow Lite 物件偵測模型存放區](tensorflow-lite-object-detection-model-store-component.md)和 [TensorFlow Lite 執行時間](tensorflow-lite-component.md)元件做為相依項，以下載 TensorFlow Lite 和範例模型。

若要搭配自訂訓練的 TensorFlow Lite 模型使用此推論元件，您可以[建立相依模型存放區元件的自訂版本](ml-customization.md#override-public-model-store)。若要使用您自己的自訂推論程式碼，請使用此元件的配方做為範本來[建立自訂推論元件](ml-customization.md#create-inference-component)。

**Topics**
+ [版本](#tensorflow-lite-object-detection-component-versions)
+ [類型](#tensorflow-lite-object-detection-component-type)
+ [作業系統](#tensorflow-lite-object-detection-component-os-support)
+ [要求](#tensorflow-lite-object-detection-component-requirements)
+ [相依性](#tensorflow-lite-object-detection-component-dependencies)
+ [Configuration](#tensorflow-lite-object-detection-component-configuration)
+ [本機日誌檔案](#tensorflow-lite-object-detection-component-log-file)
+ [變更記錄](#tensorflow-lite-object-detection-component-changelog)

## 版本
<a name="tensorflow-lite-object-detection-component-versions"></a>

此元件具有下列版本：
+ 2.1.x

## 類型
<a name="tensorflow-lite-object-detection-component-type"></a>

<a name="public-component-type-generic"></a>此<a name="public-component-type-generic-phrase"></a>元件是一般元件 (`aws.greengrass.generic`)。[Greengrass 核](greengrass-nucleus-component.md)會執行元件的生命週期指令碼。

<a name="public-component-type-more-information"></a>如需詳細資訊，請參閱[元件類型](develop-greengrass-components.md#component-types)。

## 作業系統
<a name="tensorflow-lite-object-detection-component-os-support"></a>

此元件可以安裝在執行下列作業系統的核心裝置上：
+ Linux
+ Windows

## 要求
<a name="tensorflow-lite-object-detection-component-requirements"></a>

此元件有下列需求：<a name="ml-component-requirements"></a>
+ 在執行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心裝置上，[GNU C Library](https://www.gnu.org/software/libc/) (glibc) 2.27 版或更新版本安裝在裝置上。
+ 在 Armv7l 裝置上，例如 Raspberry Pi，安裝在裝置上的 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 OS Bullseye 包含舊版的 NumPy，因此您可以執行下列命令以在裝置上升級 NumPy。

    ```
    pip3 install --upgrade numpy
    ```
  + 裝置上啟用的舊版攝影機堆疊。Raspberry Pi OS Bullseye 包含預設啟用且不相容的新攝影機堆疊，因此您必須啟用舊版攝影機堆疊。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**啟用舊版攝影機堆疊**

    1. 執行下列命令以開啟 Raspberry Pi 組態工具。

       ```
       sudo raspi-config
       ```

    1. 選取**界面選項**。

    1. 選取**舊版攝影機**以啟用舊版攝影機堆疊。

    1. 重新啟動 Raspberry Pi。

## 相依性
<a name="tensorflow-lite-object-detection-component-dependencies"></a>

當您部署元件時， AWS IoT Greengrass 也會部署其相依性的相容版本。這表示您必須符合元件及其所有相依性的要求，才能成功部署元件。本節列出此元件[發行版本的](#tensorflow-lite-object-detection-component-changelog)相依性，以及為每個相依性定義元件版本的語意版本限制。您也可以在 [AWS IoT Greengrass 主控台](https://console.aws.amazon.com//greengrass)中檢視每個版本元件的相依性。在元件詳細資訊頁面上，尋找**相依性**清單。

------
#### [ 2.1.11 and 2.1.12 ]

下表列出此元件 2.1.11 版和 2.1.12 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.10 ]

下表列出此元件 2.1.10 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.9 ]

下表列出此元件 2.1.9 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.8 ]

下表列出此元件 2.1.8 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.7 ]

下表列出此元件 2.1.7 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.6 ]

下表列出此元件 2.1.6 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.5 ]

下表列出此元件 2.1.5 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.4 ]

下表列出此元件 2.1.4 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.3 ]

下表列出此元件 2.1.3 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.2 ]

下表列出此元件 2.1.2 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.1 ]

下表列出此元件 2.1.1 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------
#### [ 2.1.0 ]

下表列出此元件 2.1.0 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0 | 軟式 | 
| [TensorFlow Lite 影像分類模型存放區](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬式 | 
| [TensorFlow Lite](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬式 | 

------

## Configuration
<a name="tensorflow-lite-object-detection-component-configuration"></a>

此元件提供下列組態參數，您可以在部署元件時自訂這些參數。

`accessControl`  
<a name="ml-config-accesscontrol-desc"></a>（選用） 包含[授權政策](interprocess-communication.md#ipc-authorization-policies)的物件，允許元件將訊息發佈至預設通知主題。  
預設：  

```
{
   "aws.greengrass.ipc.mqttproxy": {
      "aws.greengrass.TensorFlowLiteObjectDetection:mqttproxy:1": {
         "policyDescription": "Allows access to publish via topic ml/tflite/object-detection.",
         "operations": [
            "aws.greengrass#PublishToIoTCore"
         ],
         "resources": [
            "ml/tflite/object-detection"
         ]
      }
   }
}
```

`PublishResultsOnTopic`  
<a name="ml-config-publishresultsontopic-desc"></a>（選用） 您要發佈推論結果的主題。如果您修改此值，則也必須修改 `accessControl` 參數`resources`中的 值，以符合您的自訂主題名稱。  
預設：`ml/tflite/object-detection`

`Accelerator`  <a name="ml-config-accelerator"></a>
您要使用的加速器。支援的值為 `cpu` 和 `gpu`。  
相依模型元件中的範例模型僅支援 CPU 加速。若要搭配不同的自訂模型使用 GPU 加速，[請建立自訂模型元件](ml-customization.md#override-public-model-store)以覆寫公有模型元件。  
預設：`cpu`

`ImageDirectory`  
<a name="ml-config-imagedirectory-desc"></a>（選用） 推論元件讀取映像之裝置上的資料夾路徑。您可以將此值修改為您裝置上具有讀取/寫入存取權的任何位置。  
<a name="ml-config-imagedirectory-obj-default"></a>預設：`/greengrass/v2/packages/artifacts-unarchived/component-name/object_detection/sample_images/`  
如果您將 的值設定為 `UseCamera` `true`，則會忽略此組態參數。

`ImageName`  
<a name="ml-config-imagename-desc"></a>（選用） 推論元件用來輸入進行預測的影像名稱。元件會在 中指定的資料夾中尋找映像`ImageDirectory`。根據預設，元件會使用預設映像目錄中的範例映像。 AWS IoT Greengrass 支援下列映像格式：`jpeg`、`png`、 `jpg`和 `npy`。  
<a name="ml-config-imagename-obj-default"></a>預設：`objects.jpg`  
如果您將 的值設定為 `UseCamera` `true`，則會忽略此組態參數。

`InferenceInterval`  <a name="ml-config-inferenceinterval"></a>
（選用） 推論程式碼所做的每個預測之間的秒數。範例推論程式碼會無限期執行，並在指定的時間間隔重複其預測。例如，如果您想要使用攝影機拍攝的影像進行即時預測，您可以將此值變更為較短的間隔。  
預設：`3600`

`ModelResourceKey`  <a name="ml-config-modelresourcekey"></a>
<a name="ml-config-modelresourcekey-desc"></a>（選用） 用於相依公有模型元件的模型。只有在您使用自訂元件覆寫公有模型元件時，才修改此參數。  
預設：  

```
{
    "model": "TensorFlowLite-SSD"
}
```

`UseCamera`  <a name="ml-config-usecamera"></a>
（選用） 字串值，定義是否使用連接至 Greengrass 核心裝置的攝影機的影像。支援的值為 `true` 和 `false`。  
當您將此值設定為 時`true`，範例推論程式碼會存取裝置上的攝影機，並在擷取的影像上本機執行推論。會忽略 `ImageName`和 `ImageDirectory` 參數的值。確定執行此元件的使用者具有攝影機存放擷取影像之位置的讀取/寫入存取權。  
預設：`false`  
當您檢視此元件的配方時，`UseCamera`組態參數不會出現在預設組態中。不過，您可以在部署元件時修改[組態合併更新](update-component-configurations.md)中此參數的值。  
將 `UseCamera`設定為 時`true`，您還必須建立符號連結，讓推論元件從執行期元件建立的虛擬環境中存取您的攝影機。如需搭配範例推論元件使用攝影機的詳細資訊，請參閱 [更新元件組態](ml-tutorial-image-classification-camera.md)。

**注意**  <a name="ml-config-not-visible-note"></a>
當您檢視此元件的配方時，`UseCamera`組態參數不會出現在預設組態中。不過，您可以在部署元件時修改[組態合併更新](update-component-configurations.md)中此參數的值。  
將 `UseCamera`設定為 時`true`，您還必須建立符號連結，讓推論元件從執行期元件建立的虛擬環境中存取您的攝影機。如需搭配範例推論元件使用攝影機的詳細資訊，請參閱 [更新元件組態](ml-tutorial-image-classification-camera.md)。

## 本機日誌檔案
<a name="tensorflow-lite-object-detection-component-log-file"></a>

此元件使用以下日誌檔案。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.TensorFlowLiteObjectDetection.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteObjectDetection.log
```

------

**檢視此元件的日誌**
+ 在核心裝置上執行下列命令，以即時檢視此元件的日誌檔案。將 `/greengrass/v2`或 *C：\$1greengrass\$1v2* 取代為 AWS IoT Greengrass 根資料夾的路徑。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.TensorFlowLiteObjectDetection.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteObjectDetection.log -Tail 10 -Wait
  ```

------

## 變更記錄
<a name="tensorflow-lite-object-detection-component-changelog"></a>

下表說明每個版本元件的變更。


|  版本  |  變更  | 
| --- | --- | 
|  2.1.12  |  針對 Greengrass nucleus 2.12.5 版本更新版本。  | 
|  2.1.11  | 針對 Greengrass nucleus 2.12.0 版更新版本。 | 
|  2.1.10  | 針對 Greengrass nucleus 2.11.0 版更新版本。 | 
|  2.1.9  | 針對 Greengrass nucleus 2.10.0 版更新版本。 | 
|  2.1.8  | 針對 Greengrass nucleus 2.9.0 版更新版本。 | 
|  2.1.7  | 針對 Greengrass nucleus 2.8.0 版更新版本。 | 
|  2.1.6  |  針對 Greengrass nucleus 2.7.0 版更新版本。  | 
|  2.1.5  |  針對 Greengrass nucleus 2.6.0 版更新版本。  | 
|  2.1.4  |  針對 Greengrass nucleus 2.5.0 版更新版本。  | 
|  2.1.3  |  針對 Greengrass nucleus 2.4.0 版更新版本。  | 
|  2.1.2  |  針對 Greengrass nucleus 2.3.0 版更新版本。  | 
|  2.1.1  |  <a name="changelog-tensorflow-lite-object-detection-2.1.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/tensorflow-lite-object-detection-component.html)  | 
|  2.1.0  |  初始版本。  | 