Amazon SageMaker 物体検出モデルの構築 ～Honey Bees～

[Amazon AI by ナレコム Advent Calendar 2019](https://qiita.com/advent-calendar/2019/knowcom-amazonai)の8日目の記事です。

AWS公式[機械学習トレーニング](https://aws.amazon.com/jp/training/learning-paths/machine-learning/exam-preparation/)の **Amazon SageMaker: Build an Object Detection Model Using Images Labeled with Ground Truth (Japanese) (Ground Truth のラベルが付いたイメージを使用して、オブジェクト検出モデルを構築)** を参考に、物体検出のモデル構築についてまとめてみました。

# 物体検出とは
今回は画像からミツバチの検出を行います。

クラスタリング（分類）・・・1枚の画像がどのタグに分類できるか
物体検出・・・1枚の画像の中から特定の物体の境界ボックス（BoundingBox）を検出
セグメンテーション・・・ピクセル単位での分類


# データのダウンロード
[iNaturalist.org](https://www.inaturalist.org/) から CC0 ライセンスに基づくミツバチの画像500枚を使用します。
[ここ](http://aws-tc-largeobjects.s3-us-west-2.amazonaws.com/DIG-TF-200-MLBEES-10-EN/dataset.zip)からダウンロードしてください。

学習画像500枚、テスト画像10枚、アノテーションデータ（.manifest）で構成されています。
![honey03.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/be07d40d-afab-71de-6600-c6d89f58487d.png)

# ラベリングの実施
output.manifest は GroundTruth を使ってラベリングされた結果です。
各行が各学習画像のアノテーション結果になっています。

~~~
{"source-ref":"s3://sagemaker-remars/datasets/na-bees/500/10006450.jpg","bees-500":{"annotations":[{"class_id":0,"width":95.39999999999998,"top":256.2,"height":86.80000000000001,"left":177}],"image_size":[{"width":500,"depth":3,"height":500}]},"bees-500-metadata":{"job-name":"labeling-job/bees-500","class-map":{"0":"bee"},"human-annotated":"yes","objects":[{"confidence":0.75}],"creation-date":"2019-05-16T00:15:58.914553","type":"groundtruth/object-detection"}}
{"source-ref":"s3://sagemaker-remars/datasets/na-bees/500/10022723.jpg","bees-500":{"annotations":[{"class_id":0,"width":93.8,"top":228.8,"height":135,"left":126.8}],"image_size":[{"width":375,"depth":3,"height":500}]},"bees-500-metadata":{"job-name":"labeling-job/bees-500","class-map":{"0":"bee"},"human-annotated":"yes","objects":[{"confidence":0.82}],"creation-date":"2019-05-16T00:41:33.384412","type":"groundtruth/object-detection"}}
{"source-ref":"s3://sagemaker-remars/datasets/na-bees/500/10059108.jpg","bees-500":{"annotations":[{"class_id":0,"width":157.39999999999998,"top":188.60000000000002,"height":131.2,"left":110.8}],"image_size":[{"width":375,"depth":3,"height":500}]},"bees-500-metadata":{"job-name":"labeling-job/bees-500","class-map":{"0":"bee"},"human-annotated":"yes","objects":[{"confidence":0.8}],"creation-date":"2019-05-16T00:57:28.636681","type":"groundtruth/object-detection"}}
・・・
~~~

output.manifestを編集するか、ラベリングツールは好きなもの（VoTTなど）を使用し、下記のようなをフォーマットでアノテーションデータを作成します。

~~~
{"source-ref": "s3://{bucketname}/{foldername}/train/{root}.{exts}", "train/validation": {"annotations": [{"class_id": {class_id}, "width": {width}, "top": {top}, "height": {height}, "left": {left}}], "image_size": [{"width": {width}, "depth": {depth}, "height": {height}}]}}
~~~

- "source-ref"：画像のS3パス
- "train/validation"：学習（Train）もしくは検証（Validation）
    - "annotations"：アノテーションデータ
        - "class_id"：検出するタグ（タグごとに0から順につける番号）
        - "width", "top", "height", "left"：タグの境界ボックスの左上の点（top, left）とボックスのサイズ（width, height）
    - "image_size"：画像幅（width）、チャンネル数（depth）、画像高さ（height）

今回は学習画像（Train）を400枚、残りの100枚を検証画像（Validation）とし、train.manifest、validation.manifest の2つを作成します。対応する画像のファイル形式はJPGとPNGになります。

*train.manifest*

~~~
{"source-ref": "s3://sagemaker-mlbees/20191208/train/10006450.jpg", "train": {"annotations": [{"class_id": 0, "width": 95, "top": 256, "height": 86, "left": 177}], "image_size": [{"width": 500, "depth": 3, "height": 500}]}}
{"source-ref": "s3://sagemaker-mlbees/20191208/train/10022723.jpg", "train": {"annotations": [{"class_id": 0, "width": 93, "top": 228, "height": 135, "left": 126}], "image_size": [{"width": 375, "depth": 3, "height": 500}]}}
{"source-ref": "s3://sagemaker-mlbees/20191208/train/10059108.jpg", "train": {"annotations": [{"class_id": 0, "width": 157, "top": 188, "height": 131, "left": 110}], "image_size": [{"width": 375, "depth": 3, "height": 500}]}}
・・・
{"source-ref": "s3://sagemaker-mlbees/20191208/train/10437385.jpg", "train": {"annotations": [{"class_id": 0, "width": 38, "top": 306, "height": 31, "left": 73}, {"class_id": 0, "width": 40, "top": 281, "height": 24, "left": 214}, {"class_id": 0, "width": 37, "top": 283, "height": 24, "left": 281}, {"class_id": 0, "width": 40, "top": 236, "height": 26, "left": 360}, {"class_id": 0, "width": 25, "top": 192, "height": 24, "left": 300}, {"class_id": 0, "width": 36, "top": 193, "height": 29, "left": 144}, {"class_id": 0, "width": 19, "top": 146, "height": 23, "left": 224}, {"class_id": 0, "width": 20, "top": 105, "height": 23, "left": 418}, {"class_id": 0, "width": 30, "top": 340, "height": 29, "left": 20}, {"class_id": 0, "width": 27, "top": 162, "height": 18, "left": 211}, {"class_id": 0, "width": 20, "top": 104, "height": 23, "left": 226}, {"class_id": 0, "width": 34, "top": 208, "height": 38, "left": 451}, {"class_id": 0, "width": 35, "top": 331, "height": 24, "left": 52}, {"class_id": 0, "width": 37, "top": 278, "height": 25, "left": 312}, {"class_id": 0, "width": 31, "top": 171, "height": 17, "left": 175}, {"class_id": 0, "width": 26, "top": 152, "height": 16, "left": 177}, {"class_id": 0, "width": 15, "top": 166, "height": 24, "left": 375}, {"class_id": 0, "width": 25, "top": 177, "height": 17, "left": 408}, {"class_id": 0, "width": 22, "top": 160, "height": 18, "left": 395}, {"class_id": 0, "width": 20, "top": 126, "height": 16, "left": 375}, {"class_id": 0, "width": 17, "top": 141, "height": 17, "left": 319}, {"class_id": 0, "width": 16, "top": 135, "height": 17, "left": 349}, {"class_id": 0, "width": 17, "top": 137, "height": 17, "left": 302}, {"class_id": 0, "width": 18, "top": 135, "height": 19, "left": 279}, {"class_id": 0, "width": 26, "top": 101, "height": 22, "left": 470}, {"class_id": 0, "width": 19, "top": 78, "height": 13, "left": 397}, {"class_id": 0, "width": 15, "top": 96, "height": 18, "left": 366}, {"class_id": 0, "width": 21, "top": 101, "height": 19, "left": 171}, {"class_id": 0, "width": 21, "top": 47, "height": 17, "left": 173}, {"class_id": 0, "width": 11, "top": 54, "height": 15, "left": 232}, {"class_id": 0, "width": 16, "top": 66, "height": 13, "left": 241}, {"class_id": 0, "width": 23, "top": 89, "height": 17, "left": 244}, {"class_id": 0, "width": 13, "top": 80, "height": 18, "left": 275}, {"class_id": 0, "width": 19, "top": 74, "height": 14, "left": 329}, {"class_id": 0, "width": 17, "top": 76, "height": 14, "left": 365}, {"class_id": 0, "width": 18, "top": 80, "height": 17, "left": 312}, {"class_id": 0, "width": 15, "top": 22, "height": 25, "left": 401}, {"class_id": 0, "width": 19, "top": 39, "height": 17, "left": 347}, {"class_id": 0, "width": 16, "top": 42, "height": 15, "left": 309}, {"class_id": 0, "width": 16, "top": 53, "height": 12, "left": 281}, {"class_id": 0, "width": 15, "top": 59, "height": 14, "left": 284}, {"class_id": 0, "width": 12, "top": 20, "height": 15, "left": 181}, 
~~~

*validation.manifest*
validation.manifest は "train" の部分を "validation" に置換してください。

~~~
{"source-ref": "s3://sagemaker-mlbees/20191208/train/6381998.jpg", "validation": {"annotations": [{"class_id": 0, "width": 215, "top": 70, "height": 196, "left": 104}], "image_size": [{"width": 416, "depth": 3, "height": 369}]}}
{"source-ref": "s3://sagemaker-mlbees/20191208/train/6415127.jpg", "validation": {"annotations": [{"class_id": 0, "width": 121, "top": 94, "height": 100, "left": 73}], "image_size": [{"width": 484, "depth": 3, "height": 500}]}}
{"source-ref": "s3://sagemaker-mlbees/20191208/train/6415462.jpg", "validation": {"annotations": [{"class_id": 0, "width": 52, "top": 187, "height": 56, "left": 71}, {"class_id": 0, "width": 50, "top": 173, "height": 59, "left": 197}, {"class_id": 0, "width": 65, "top": 316, "height": 48, "left": 363}, {"class_id": 0, "width": 66, "top": 112, "height": 45, "left": 244}], "image_size": [{"width": 500, "depth": 3, "height": 452}]}}
~~~

アノテーションデータに指定したS3のパス（この例では s3://sagemaker-mlbees/20191208/train/ ）へ500枚の学習および検証画像をアップロードします。
s3://sagemaker-mlbees/20191208/ へアノテーションデータ（ train.manifest, validation.manifest ）をアップロードします。
次のトレーニングジョブ作成時にこれらのパスを使うのでメモっておいてください。

![honey15.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/8ca0dcc4-ed7f-90f5-7fc7-e8edd79e1f48.png)

<!-- # （ラベル付けの結果をダウンロードして確認する）-->

<!-- # （オブジェクト検出とシングルショット検出アルゴリズムの概要）-->

# モデルをトレーニングしてデプロイする

## トレーニングジョブの作成
SageMaker を開き、トレーニングジョブを作成します。

ジョブ設定

| | |
|:--|:--|
|ジョブ名|mlbees-20191208|
|IAMロール|新しいロールの作成（AmazonSageMaker-ExecutionRole-20191208Txxxxxx）|
|アルゴリズムのソース|AmazonSageMaker組み込みアルゴリズム|
|アルゴリズムの選択|ObjectDetection|
|コンテナ|825641698319.dkr.ecr.us-east-2.amazonaws.com/object-detection:1|
|入力モード|Pipe|
|インスタンスタイプ|ml.p2.xlarge|
|インスタンス数|1|
|インスタンスあたりの追加のストレージボリューム(GB)|50|
|最大ランタイム|360000 seconds|


ネットワーク

| | |
|:--|:--|
|ネットワーク分離の有効化|false|

ハイパーパラメータ

| | |
|:--|:--|
|***base_network***|resnet-50|
|use_pretrained_model|1|
|***num_classes***|1|
|***epochs***|30|
|larning_rate|0.001|
|lr_scheduler_factor|0.1|
|optimizer|sgd|
|momentum|0.9|
|weight_decay|0.0005|
|***mini_batch_size***|8|
|image_shape|300|
|label_width|350|
|***num_training_samples***|400|
|nms_threshold|0.45|
|overlap_threshold|0.5|
|freeze_layer_pattern|false|
|early_stopping|false|
|early_stopping_min_epochs|10|
|early_stopping_patience|5|
|early_stopping_tolerance|0.0|

入力データ設定

train

|||
|:--|:--|
|チャンネル名|train|
|入力モードオプション|Pipe|
|コンテンツタイプ|application/x-recordio|
|圧縮タイプ|None|
|レコードラッパー|RecordIO|
|Data source|S3|
|S3データタイプ|AugmentedManifestFile|
|S3データディストリビューションタイプ|FullyReplicated|
|AugmentedManifestFile 属性名 (パイプ入力モード必須)|source-ref, train|
|S3の場所|s3://sagemaker-mlbees/20191208/train.manifest|


validation

|||
|:--|:--|
|チャンネル名|validation|
|入力モードオプション|Pipe|
|コンテンツタイプ|application/x-recordio|
|圧縮タイプ|None|
|レコードラッパー|RecordIO|
|Data source|S3|
|S3データタイプ|AugmentedManifestFile|
|S3データディストリビューションタイプ|FullyReplicated|
|AugmentedManifestFile 属性名 (パイプ入力モード必須)|source-ref, validation|
|S3の場所|s3://sagemaker-mlbees/20191208/validation.manifest|

出力データ設定

|||
|:--|:--|
|S3出力パス|s3://sagemaker-mlbees/20191208/|

マネージド型スポットのトレーニング

|||
|:--|:--|
|マネージド型スポットトレーニングの有効化|True|
|ジョブが終了するまでの最大待機時間 オプション停止条件|360000 seconds|

トレーニングジョブがInProgressからCompletedになったら学習が完了です。

## モデルの作成
モデルを作成します。

モデル設定

|||
|:--|:--|
|モデル名|mlbees-20191208|
|IAMロール|トレーニングジョブと同じもの|

コンテナの定義１

|||
|:--|:--|
|コンテナ入力オプション|モデルアーティファクトと推論イメージの場所を指定します。|
|モデルアーティファクトと推論イメージの場所を指定します。|単一のモデルを使用する|
|推論コードイメージの場所|825641698319.dkr.ecr.us-east-2.amazonaws.com/object-detection:1|
|アーティファクトの場所|s3://sagemaker-mlbees/20191208/mlbees-20191208/output/model.tar.gz|

ネットワーク

|||
|:--|:--|
|ネットワーク分離の有効化|False|

## エンドポイントの作成と設定

エンドポイント設定を作成します。

Endpoint

|||
|:--|:--|
|エンドポイント名|mlbees-20191208|

エンドポイント設定のアタッチ

||
|:--|
|新しいエンドポイント設定の作成|

新しいエンドポイント設定

|||
|:--|:--|
|エンドポイント設定名|mlbees-20191208|

エンドポイント設定の作成が完了したら、エンドポイントを作成します。
Creating からInService になったら使えます。

## 推論
作成したエンドポイントを用いてテスト画像を推論します。
AWS CLIを設定して、下記のPythonコードを実行しましょう！

~~~python
import boto3
import json

with open("dataset/test/22971237.jpg", "rb") as f:
    image = f.read()

response = boto3.client('sagemaker-runtime').invoke_endpoint(
    EndpointName="mlbees-20191208",
    Body=image,
    ContentType='image/jpeg'
)

predictions = json.loads(response['Body'].read())
print(predictions)
~~~

推論結果は、（class_id, score, xmin, ymin, xmax, ymax）の順で格納されており、それぞれ
class_id：タグID
score：推論スコア
xmin：境界ボックスの左上のx値（※画像サイズで正規化してあるので注意）
ymin：境界ボックスの左上のy値（※画像サイズで正規化してあるので注意）
xmax：境界ボックスの右下のx値（※画像サイズで正規化してあるので注意）
ymax：境界ボックスの右下のy値 （※画像サイズで正規化してあるので注意）
になっています

~~~
{'prediction': [[0.0, 0.4678894877433777, 0.30429762601852417, 0.24999865889549255, 0.6138879060745239, 0.6268823146820068], [0.0, 0.42358464002609253, 0.06584984064102173, 0.06060954928398132, 0.9343515038490295, 0.9401313066482544], [0.0, 0.41352295875549316, 0.30878573656082153, 0.10083526372909546, 0.6731508374214172, 0.5129770636558533], [0.0, 0.39709046483039856, 0.33817505836486816, 0.4873414635658264, 0.6675703525543213, 0.9277041554450989], [0.0, 0.378907710313797, 0.0, 0.0, 0.3687918484210968, 0.5197888016700745], [0.0, 0.37673383951187134, 0.07746218144893646, 0.0, 0.5161272287368774, 0.3293883800506592], [0.0, 0.3741675913333893, 0.0, 0.460550993680954, 0.36986619234085083, 1.0], [0.0, 0.37143221497535706, 0.5950260162353516, 0.0, 1.0, 0.21253566443920135], [0.0, 0.3708018660545349, 0.3493179380893707, 0.0, 1.0, 0.6512178182601929], [0.0, 0.3700588643550873, 0.27566099166870117, 0.0, 0.713475227355957, 0.3211899995803833], [0.0, 0.3692185580730438, 0.39444130659103394, 0.3983367681503296, 1.0, 1.0], [0.0, 0.36762967705726624, 0.2224271595478058, 0.21391180157661438, 0.7647933959960938, 0.7966573238372803], [0.0, 0.3665901720523834, 0.0, 0.31598204374313354, 0.5442211627960205, 0.7052187323570251], [0.0, 0.36615416407585144, 0.0, 0.7466477751731873, 0.3294963836669922, 1.0], [0.0, 0.3645714223384857, 0.78152996301651, 0.0, 1.0, 0.38953807950019836], [0.0, 0.3632708489894867, 0.6367571353912354, 0.14908206462860107, 1.0, 0.8790770769119263], [0.0, 0.3581337630748749, 0.0, 0.7736784815788269, 0.11148740351200104, 1.0], [0.0, 0.35730576515197754, 0.18405702710151672, 0.5357580184936523, 0.8030450344085693, 1.0], [0.0, 0.35632744431495667, 0.4812198281288147, 0.0, 0.9089540839195251, 0.32849448919296265], [0.0, 0.35606932640075684, 0.4814307987689972, 0.3763745427131653, 0.6160391569137573, 0.5194752216339111], [0.0, 0.35529276728630066, 0.0, 0.0, 0.08277034014463425, 0.051912762224674225], [0.0, 0.35219448804855347, 0.5505965352058411, 0.33695971965789795, 0.7397928833961487, 0.5715459585189819], [0.0, 0.3487113118171692, 0.42075949907302856, 0.844500720500946, 0.47111785411834717, 0.8974922299385071], [0.0, 0.3482074737548828, 0.0, 0.0, 0.3503129482269287, 0.24298378825187683], [0.0, 0.3474455773830414, 0.5203220844268799, 0.2931615710258484, 0.8834731578826904, 0.7036521434783936], [0.0, 0.3472687304019928, 0.0, 0.0, 0.10882196575403214, 0.22120940685272217], [0.0, 0.3466414511203766, 0.4666988253593445, 0.6249315142631531, 0.5282527804374695, 0.6908530592918396], [0.0, 0.3453116714954376, 0.31746411323547363, 0.8423987627029419, 0.3688467741012573, 0.8994448184967041], [0.0, 0.3440929353237152, 0.7796421647071838, 0.6209114789962769, 1.0, 1.0], [0.0, 0.34316927194595337, 0.6643545031547546, 0.0558457225561142, 1.0, 0.535685122013092], [0.0, 0.3427833914756775, 0.544445812702179, 0.08242097496986389, 0.8637402653694153, 0.5203053951263428], [0.0, 0.3418370485305786, 0.0, 0.6646335124969482, 0.6075617074966431, 0.987572431564331], [0.0, 0.341707706451416, 0.07544617354869843, 0.1437387317419052, 0.5128083229064941, 0.4533810019493103], [0.0, 0.3399723768234253, 0.5327222943305969, 0.4944736957550049, 0.8722519278526306, 0.9193394184112549], [0.0, 0.3384418189525604, 0.35905712842941284, 0.4564792513847351, 0.5525619983673096, 0.6246435046195984], [0.0, 0.33811572194099426, 0.0, 0.8843855261802673, 0.20716631412506104, 1.0], [0.0, 0.3380047082901001, 0.6239446997642517, 6.010197103023529e-05, 0.7040519118309021, 0.05022969841957092], [0.0, 0.33621808886528015, 0.526395320892334, 0.35611313581466675, 0.5769199132919312, 0.4400783181190491], [0.0, 0.33464792370796204, 0.7893296480178833, 0.1616135984659195, 0.8427752256393433, 0.2122565656900406], [0.0, 0.3313765525817871, 0.0, 0.21833011507987976, 0.23080405592918396, 0.7796567678451538], [0.0, 0.3295021951198578, 0.6871658563613892, 0.16251946985721588, 0.7505543231964111, 0.20261342823505402], [0.0, 0.32939413189888, 0.8877862691879272, 0.0, 1.0, 0.21754144132137299], [0.0, 0.3280572295188904, 0.683427095413208, 0.05675225332379341, 0.7324377298355103, 0.1061081737279892], [0.0, 0.3280175030231476, 0.7337505221366882, 0.21456307172775269, 0.7870777249336243, 0.26403456926345825], [0.0, 0.32741934061050415, 0.7871232628822327, 0.0, 1.0, 0.11095887422561646], [0.0, 0.32711800932884216, 0.6125258207321167, 0.7707194089889526, 1.0, 1.0], [0.0, 0.3256891369819641, 0.0, 0.9203382730484009, 0.0562296137213707, 1.0], [0.0, 0.32530954480171204, 0.35250425338745117, 0.0, 0.5488604307174683, 0.1449427455663681], [0.0, 0.324715256690979, 0.45405250787734985, 0.0, 0.6479468941688538, 0.14573422074317932], [0.0, 0.3244691491127014, 0.5747636556625366, 0.6804345846176147, 0.6344759464263916, 0.7449156045913696], [0.0, 0.3242606818675995, 0.0, 0.7802523374557495, 0.060774143785238266, 0.8526475429534912], [0.0, 0.3231322765350342, 0.4211777150630951, 0.7901055216789246, 0.4736692011356354, 0.8448881506919861], [0.0, 0.3225260376930237, 0.6855562329292297, 0.2695790231227875, 0.7485852837562561, 0.3097873032093048], [0.0, 0.3223261833190918, 0.5165964961051941, 0.30369797348976135, 0.5838491320610046, 0.37661054730415344], [0.0, 0.3190132975578308, 0.6840611696243286, 0.11031299084424973, 0.7345172166824341, 0.15836459398269653], [0.0, 0.31880688667297363, 0.5868977308273315, 0.7858849167823792, 0.6264750957489014, 0.8554143309593201], [0.0, 0.318799763917923, 0.10135529190301895, 0.6273577213287354, 0.16216304898262024, 0.6878644227981567], [0.0, 0.3178630471229553, 0.2491334080696106, 0.0, 0.4503113031387329, 0.1459662914276123], [0.0, 0.31764253973960876, 0.0, 0.729369044303894, 0.06217200309038162, 0.8002824783325195], [0.0, 0.316314160823822, 0.13572518527507782, 0.4907791018486023, 0.4709596633911133, 0.918556272983551], [0.0, 0.31614798307418823, 0.7361401319503784, 0.161359503865242, 0.7889970541000366, 0.21088607609272003], [0.0, 0.3158923387527466, 0.36976388096809387, 0.7920727729797363, 0.42588844895362854, 0.8462352752685547], [0.0, 0.3157651722431183, 0.36776894330978394, 0.8443600535392761, 0.4184507131576538, 0.8987955451011658], [0.0, 0.3152107894420624, 0.9517414569854736, 0.5720713138580322, 0.9960393905639648, 0.6536024808883667], [0.0, 0.31452468037605286, 0.6303567886352539, 0.056085046380758286, 0.6810942888259888, 0.10801681876182556], [0.0, 0.31429141759872437, 0.3200715184211731, 0.09504622220993042, 0.3662959933280945, 0.1773381233215332], [0.0, 0.314095675945282, 0.5308109521865845, 0.6801299452781677, 0.5753098726272583, 0.7513325810432434], [0.0, 0.3140608072280884, 0.6809313297271729, 0.2178284078836441, 0.7347820997238159, 0.26759111881256104], [0.0, 0.31373119354248047, 0.5221344232559204, 0.7350226640701294, 0.5814639329910278, 0.7973107099533081], [0.0, 0.3117356598377228, 0.4218320846557617, 0.20239503681659698, 0.4763789772987366, 0.28319358825683594], [0.0, 0.31127995252609253, 0.42516055703163147, 0.3630872070789337, 0.47294357419013977, 0.429222971200943], [0.0, 0.31101304292678833, 0.8473232388496399, 0.8993422389030457, 0.8852854371070862, 0.9573569893836975], [0.0, 0.30946406722068787, 0.5220901370048523, 0.7896288633346558, 0.575954258441925, 0.8456448316574097], [0.0, 0.3092215061187744, 0.5670506954193115, 0.9440076947212219, 0.639283299446106, 1.0], [0.0, 0.30905911326408386, 0.9063401818275452, 0.9130138158798218, 1.0, 1.0], [0.0, 0.3090510964393616, 0.5135889053344727, 0.5722286701202393, 0.578898549079895, 0.6422014236450195], [0.0, 0.30885469913482666, 0.5250933170318604, 0.8471934795379639, 0.5761620998382568, 0.9015847444534302], [0.0, 0.30866655707359314, 0.951046884059906, 0.35804468393325806, 0.997364342212677, 0.4444500803947449], [0.0, 0.3081985414028168, 0.16665951907634735, 0.052841365337371826, 0.44393396377563477, 0.5633533000946045], [0.0, 0.30809155106544495, 0.8756505250930786, 0.8173004388809204, 1.0, 1.0], [0.0, 0.30627647042274475, 0.4542831778526306, 0.4180346727371216, 0.6407758593559265, 0.6615869998931885], [0.0, 0.30577099323272705, 0.36145180463790894, 0.21161268651485443, 0.43976718187332153, 0.26231950521469116], [0.0, 0.3056153357028961, 0.950568675994873, 0.6223926544189453, 0.9963271617889404, 0.7067312002182007], [0.0, 0.3048050105571747, 0.7901118397712708, 0.3691854476928711, 0.8498157858848572, 0.4268338680267334], [0.0, 0.3046548366546631, 0.4767646789550781, 0.6647834181785583, 0.9210307598114014, 1.0], [0.0, 0.3040694296360016, 0.9493268132209778, 0.7254079580307007, 0.9974527955055237, 0.8113071918487549], [0.0, 0.3036992847919464, 0.7842162847518921, 0.522617757320404, 0.8383376598358154, 0.5814014077186584], [0.0, 0.3035878539085388, 0.0, 0.5602916479110718, 0.15254323184490204, 0.7438892126083374], [0.0, 0.3035617172718048, 0.9525880217552185, 0.41422122716903687, 0.9983840584754944, 0.49657273292541504], [0.0, 0.3034290373325348, 0.09489327669143677, 0.9379873275756836, 0.168815016746521, 1.0], [0.0, 0.30334362387657166, 0.3615919351577759, 0.9473257064819336, 0.42423540353775024, 1.0], [0.0, 0.302979052066803, 0.4229004383087158, 0.1517314910888672, 0.4750792980194092, 0.2332150936126709], [0.0, 0.30288878083229065, 0.5509763360023499, 0.16333407163619995, 0.7436758875846863, 0.3406045436859131], [0.0, 0.302875816822052, 0.5253306031227112, 0.41257160902023315, 0.5755682587623596, 0.4916040897369385], [0.0, 0.3023538291454315, 0.7781322598457336, 0.9446988105773926, 0.8505274653434753, 1.0], [0.0, 0.3018416464328766, 0.04201468452811241, 0.0, 0.12768010795116425, 0.05132518336176872], [0.0, 0.3018025755882263, 0.638735294342041, 0.11266299337148666, 0.700247049331665, 0.15081219375133514], [0.0, 0.3017869293689728, 0.8701384663581848, 0.22678041458129883, 1.0, 0.47191929817199707], [0.0, 0.30173516273498535, 0.46991971135139465, 0.5788829326629639, 0.5528373718261719, 0.6279313564300537], [0.0, 0.3015425503253937, 0.702499508857727, 0.4966621398925781, 1.0, 0.8961905241012573], [0.0, 0.30097973346710205, 0.0, 0.6766150593757629, 0.062443431466817856, 0.7492969632148743], [0.0, 0.2999502122402191, 0.46926426887512207, 0.7879582643508911, 0.5222427248954773, 0.8441793918609619], [0.0, 0.2998069226741791, 0.8383838534355164, 0.7387928366661072, 0.9041901230812073, 0.7820411324501038], [0.0, 0.2997302711009979, 0.6266809701919556, 0.6829532384872437, 0.687191367149353, 0.7437620162963867], [0.0, 0.29922932386398315, 0.2766895890235901, 0.7345049381256104, 0.7165694832801819, 1.0], [0.0, 0.29915371537208557, 0.6280661225318909, 0.37325695157051086, 0.701719343662262, 0.41669437289237976], [0.0, 0.2988787591457367, 0.9512851238250732, 0.521103024482727, 0.9948536157608032, 0.6019420623779297], [0.0, 0.2982707619667053, 0.0020293742418289185, 0.5068413615226746, 0.05407947301864624, 0.5978963971138], [0.0, 0.2981034517288208, 0.8889434337615967, 0.6884158253669739, 0.9598939418792725, 0.731789767742157], [0.0, 0.29724669456481934, 0.7976745367050171, 0.5782050490379333, 0.8368011713027954, 0.6447365880012512], [0.0, 0.29685869812965393, 0.9411171078681946, 0.785904049873352, 1.0, 0.8544464111328125], [0.0, 0.29628944396972656, 0.25656986236572266, 0.0014236383140087128, 0.3422602415084839, 0.05571365728974342], [0.0, 0.29552161693573, 0.11159392446279526, 0.10173332691192627, 0.1531572937965393, 0.17168718576431274], [0.0, 0.2954811751842499, 0.0, 0.21423587203025818, 0.0765061229467392, 0.2614700198173523], [0.0, 0.2952989935874939, 0.15916989743709564, 0.32192519307136536, 0.3372461199760437, 0.5637787580490112], [0.0, 0.2952832579612732, 0.5180695056915283, 0.6282444000244141, 0.5831331014633179, 0.6977766752243042], [0.0, 0.2950413227081299, 0.8828567266464233, 0.939605712890625, 0.9554505348205566, 1.0], [0.0, 0.2945857346057892, 0.32042452692985535, 0.37924274802207947, 0.3600386679172516, 0.43792232871055603], [0.0, 0.2944544851779938, 0.373241662979126, 0.37452229857444763, 0.41563618183135986, 0.4352876842021942], [0.0, 0.2942132353782654, 0.8290576934814453, 0.9420439600944519, 0.902672529220581, 1.0], [0.0, 0.2941124439239502, 0.5380184054374695, 0.37435197830200195, 0.6709570288658142, 0.5188630819320679], [0.0, 0.2940295338630676, 0.7430799603462219, 0.11170899868011475, 0.8037078976631165, 0.15102824568748474], [0.0, 0.293331116437912, 0.35394763946533203, 0.34981769323349, 0.5498237609863281, 0.5380789637565613], [0.0, 0.29332756996154785, 0.4114592671394348, 0.9471758604049683, 0.4766947627067566, 1.0], [0.0, 0.29272541403770447, 0.5713214874267578, 0.0004309359937906265, 0.6492958068847656, 0.05033056437969208], [0.0, 0.2925208806991577, 0.7396335005760193, 0.05556988716125488, 0.7874881625175476, 0.10414917767047882], [0.0, 0.29249969124794006, 0.47896528244018555, 0.7397496700286865, 0.5195545554161072, 0.8028196096420288], [0.0, 0.2924167215824127, 0.933567464351654, 0.0, 1.0, 0.05580366402864456], [0.0, 0.29215577244758606, 0.4724491238594055, 0.84593665599823, 0.5229489803314209, 0.8991013765335083], [0.0, 0.2921390235424042, 0.4273237884044647, 0.6821130514144897, 0.47838541865348816, 0.7363201379776001], [0.0, 0.2918897867202759, 0.9429163932800293, 0.8406599760055542, 1.0, 0.9075591564178467], [0.0, 0.2918473780155182, 0.5128514170646667, 0.9449970126152039, 0.5849166512489319, 1.0], [0.0, 0.2911980152130127, 0.3602719008922577, 0.0, 0.4299685060977936, 0.06602838635444641], [0.0, 0.29032817482948303, 0.4254702925682068, 0.3083078861236572, 0.47212082147598267, 0.3808460235595703], [0.0, 0.2898170053958893, 0.7874332666397095, 0.2158052623271942, 0.8402680158615112, 0.26326441764831543], [0.0, 0.28945106267929077, 0.0, 0.0, 0.20739901065826416, 0.11667156964540482], [0.0, 0.2893337309360504, 0.4705773890018463, 0.4750300943851471, 0.5540667772293091, 0.5243601202964783], [0.0, 0.289265900850296, 0.6800929307937622, 0.0, 0.7377841472625732, 0.06092862784862518], [0.0, 0.2889595627784729, 0.8434596657752991, 0.31377309560775757, 0.8996695876121521, 0.370649516582489], [0.0, 0.2888559401035309, 0.37120816111564636, 0.04520254209637642, 0.4176694452762604, 0.1255854219198227], [0.0, 0.28823786973953247, 0.4785866141319275, 0.9381502866744995, 0.5244562029838562, 1.0], [0.0, 0.2881348431110382, 0.20553499460220337, 0.8335792422294617, 0.26337143778800964, 0.8998133540153503], [0.0, 0.28776055574417114, 0.848702073097229, 0.7896995544433594, 0.8853460550308228, 0.8488997220993042], [0.0, 0.28757259249687195, 0.8688817024230957, 0.12569433450698853, 1.0, 0.37085333466529846], [0.0, 0.2872491776943207, 0.5691465735435486, 0.25578054785728455, 0.6365798115730286, 0.32962414622306824], [0.0, 0.28710606694221497, 0.20785976946353912, 0.3741651475429535, 0.2643526792526245, 0.42936912178993225], [0.0, 0.287015825510025, 0.6081342697143555, 0.3686332702636719, 1.0, 0.6216212511062622], [0.0, 0.28659290075302124, 0.3108674883842468, 0.2117319256067276, 0.3869855999946594, 0.2622150182723999], [0.0, 0.28577154874801636, 0.3714808523654938, 0.09464675933122635, 0.41979309916496277, 0.17836514115333557], [0.0, 0.28570878505706787, 0.8963097929954529, 0.05641122907400131, 0.9497058987617493, 0.11036554723978043], [0.0, 0.28569257259368896, 0.9403613209724426, 0.2626246213912964, 1.0, 0.3157275915145874], [0.0, 0.2856108546257019, 0.5140482783317566, 0.26451432704925537, 0.5973600745201111, 0.3160684108734131], [0.0, 0.2852841019630432, 0.6335992217063904, 0.0, 0.679035484790802, 0.07775532454252243], [0.0, 0.28523746132850647, 0.57380610704422, 0.7360888123512268, 0.6322826743125916, 0.7948341965675354], [0.0, 0.2850608825683594, 0.2614211142063141, 0.4769710600376129, 0.3177346885204315, 0.5308374166488647], [0.0, 0.2847842574119568, 0.7914046049118042, 0.05570163577795029, 0.8404449224472046, 0.10548176616430283], [0.0, 0.2846382260322571, 0.25523650646209717, 0.9453313946723938, 0.318317174911499, 1.0], [0.0, 0.2845005393028259, 0.8596287369728088, 0.35657915472984314, 1.0, 0.5540792346000671], [0.0, 0.2843627333641052, 0.41853857040405273, 0.5140296220779419, 0.4780052900314331, 0.5822768211364746], [0.0, 0.28411853313446045, 0.7431882619857788, 0.5747441649436951, 0.7822370529174805, 0.6451032757759094], [0.0, 0.2838780879974365, 0.48433569073677063, 0.7505739331245422, 0.6222746968269348, 0.8824090361595154], [0.0, 0.28370994329452515, 0.5477281808853149, 0.4361770451068878, 0.740065336227417, 0.6665181517601013], [0.0, 0.28352266550064087, 0.0, 0.6035395860671997, 0.19002968072891235, 0.9050962924957275], [0.0, 0.28339964151382446, 0.5550472736358643, 0.06040928512811661, 0.7510890960693359, 0.2383417785167694], [0.0, 0.28322362899780273, 0.8587049245834351, 0.4579421281814575, 1.0, 0.655707836151123], [0.0, 0.2831907868385315, 0.6806806325912476, 0.3685862123966217, 0.7362295389175415, 0.4201270043849945], [0.0, 0.28298673033714294, 0.4577640891075134, 0.9509414434432983, 0.5475930571556091, 0.9990087747573853], [0.0, 0.2825695276260376, 0.6534325480461121, 0.0, 0.8546033501625061, 0.1414952278137207], [0.0, 0.2825687825679779, 0.32393306493759155, 0.0, 0.46664130687713623, 0.0958959311246872], [0.0, 0.28248947858810425, 0.7344797849655151, 0.0, 0.792578935623169, 0.059951916337013245], [0.0, 0.2822904884815216, 0.25265052914619446, 0.25429606437683105, 0.4493076503276825, 0.44751179218292236], [0.0, 0.2821846306324005, 0.3152012228965759, 0.7858959436416626, 0.37233418226242065, 0.8456672430038452]]}
~~~

ベストスコアの境界ボックスを可視化します。
![honey16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/08471a56-7845-5b92-139e-7c195465c7f4.png)

<!-- # ハイパーパラメータ最適化（HPO）の概要 -->

<!-- # （ハイパーパラメータ/自動モデルチューニング）-->

<!-- # ハイパーパラメータ最適化（HPO）の結果の検証と本番モデルの交換 -->

# まとめ
トレーニングビデオを参考に、ミツバチの物体検出モデルを作成しました。画像をアノテーションしてファイルをアップロードし、GUI上でちょちょいと設定を書いて学習するだけで、物体検出ができます。今後は、ハイパーパラメータの設定やチューニング方法、再学習して運用する方法などについて学んでいきましょう。