

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

# 物件偵測 - TensorFlow演算法的輸入和輸出介面
<a name="object-detection-tensorflow-inputoutput"></a>

TensorFlow Hub 模型中列出的每個預先訓練模型，皆可針對具有任何映像類別數量之任何資料集進行微調。請注意如何格式化您的訓練資料，以輸入至物件偵測 - TensorFlow模型。
+ **訓練資料輸入格式：**您的訓練資料應該是具有 `images` 子目錄和 `annotations.json` 檔案的目錄。

以下為輸入目錄結構的範例。輸入目錄應該託管於 Amazon S3 儲存貯體中，其中包含與下方相似的路徑：`s3://bucket_name/input_directory/`。請注意，結尾的 `/` 是必要的。

```
input_directory
    |--images
        |--abc.png
        |--def.png
    |--annotations.json
```

`annotations.json` 檔案應該以字典 `"images"` 和 `"annotations"` 金鑰的形式包含邊界框及其類別標籤的資訊。`"images"` 金鑰的值應該是字典清單。每個映像都應該有一個字典，其中包含下列資訊：`{"file_name": image_name, "height": height, "width": width, "id": image_id}`。`"annotations"` 金鑰的值應該也是字典清單。每個邊界框應該有一個字典，其中包含以下資訊：`{"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}`。

訓練後，標籤對應檔案和訓練的模型會儲存到 Amazon S3 儲存貯體。

## 增量訓練
<a name="object-detection-tensorflow-incremental-training"></a>

您可以將您先前使用 SageMaker AI 訓練模型的成品，植入新模型的訓練。增量訓練可以在您希望使用相同或相似資料訓練新模型時，節省訓練的時間。

**注意**  
您只能使用在 SageMaker AI 中訓練的另一個物件偵測 - TensorFlow 模型，來植入 SageMaker AI 物件偵測 - TensorFlow 模型。

只要類別組保持不變，您就可以使用任何資料集進行增量訓練。增量訓練步驟類似微調的步驟，但不是從預先訓練的模型開始，而是從現有的經微調的模型開始。如需如何將增量訓練與 SageMaker AI 物件偵測 - TensorFlow 搭配使用的更多相關資訊，請參閱 [SageMaker TensorFlow - 物件偵測簡介](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/object_detection_tensorflow/Amazon_Tensorflow_Object_Detection.ipynb)筆記本。

## 使用物件偵測 - TensorFlow 演算法進行推論
<a name="object-detection-tensorflow-inference"></a>

您可以託管由 TensorFlow 物件偵測訓練所產生的經微調的模型，以進行推論。任何推論的輸入映像都必須位於`.jpg`、.`jpeg` 或 `.png` 格式並且為內容類型 `application/x-image`。物件偵測 - TensorFlow 演算法會自動調整輸入映像的大小。

執行推論會產生邊界框、預測的類別，以及以 JSON 格式編碼的每個預測分數。物件偵測 - TensorFlow 模型會處理每個請求的單一映像，而且僅輸出一行。以下為 JSON 格式的回應範例：

```
accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], 
    "classes":[classidx1, class_idx2,...], 
    "scores":[score_1, score_2,...], 
    "labels": [label1, label2, ...], 
    "tensorflow_model_output":<original output of the model>}
```

如果將 `accept` 設定為 `application/json`，則模型僅輸出標準化方塊、類別和分數。