GroundTruthとRekognitionカスタムラベルを用いた物体検出

できるもの
![スクリーンショット 2023-04-06 16.28.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/870c8b41-6a26-6d32-fbcc-a1dba648c49f.png)

# 対象者
awsのGroundTruthとRekognitionカスタムラベルに興味がある、
簡易的に物体検出プログラムを訓練、デプロイしてみたい方

# 記事を読むとできるようになること
awsのGroundTruthとカスタムラベルのシンプルな使用方法を実践し、サービスの利用イメージの概要を掴める

# 記事を読むのにかかる時間
5-10m

# コンテンツの流れ
awsのGroundTruthにてlabel付けを行い、その後、カスタムラベルにてそのデータセットを用いて、訓練、
モデルのデプロイという流れとなります。

# サービス簡易概要
GroundTruth:
さまざまな画像分析の訓練データを簡易に作成できる、アノテーションサービス、
類似としてはlabelmeなどがあるが、大きく異なるのは、アノテーションチームの管理や権限など、アノテーション作業に関するマルチな機能を簡易に実現可能なサービス

Rekognitionカスタムラベル:
簡易的に物体検出モデルをトレーニング、デプロイを行えるサービス
特に上記GroundTruthとの親和性が高い

# 以下GroundTruth関連の作業フロー
aws　GroundTruthを選択後、以下画面でどういった形でラベルを保存するかを設定します。今回はobjectの境界ボックスを選択します
![スクリーンショット 2023-04-06 16.18.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/2736fb27-fc5f-fe2f-e908-0fa913cf9ee4.png)
↓

以下画像を設定することで
ジョブを実行する人に向けて、適切なラベル画像と、不適切なラベル画像を添付し、作業イメージを共有することができます（今回は何も画像を設定していないためdefalut表示）
![スクリーンショット 2023-04-06 16.14.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/2dbf42b4-c4d4-7855-9606-9633f08ee2b2.png)
↓

GroundTruthにて、作業者はパブリックやプライベートとして依頼をすることができます。
作業者にはメールが届き、cognitoでログインを行い、ラベル付を行う。
という流れが多いかと思います
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3230363738312f63646362313763302d663862382d656534662d396166352d6566306131343162636131312e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/c65f42ce-3b8e-b777-4f02-6a8e19ece5da.png)
↓

以下がGroundTruth上でのラベル付け作業のイメージです。
アノテーションツールとしては、labelmeやlabelImgなどあり、慣れているアノテーションファイルを使用するのが良いかと思いますが、出力形式がmanifest形式というところをクリアできれば、見た目がリッチに使用できると思います
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3230363738312f64323733323834662d376538652d363933392d306232622d3430613466633332363465652e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/bfe554ec-3780-50ac-d7b7-ae3d08854466.png)

↓
GroundTruthでの操作によってs3上にjsonファイルができていることがわかります
![bucketpath.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/cfd50c5c-6ce0-b5ec-9737-2659f20699cb.png)

↓
jsonファイルの中身は以下のようになっています
![スクリーンショット 2023-04-06 16.21.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/49a89404-baee-410e-be92-95e7e363e650.png)

↓
余談
GroudTruth 上で後日画像を追加する際などはこちらの「ジョブをチェーン」で追加可能です
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3230363738312f39306233633832642d303964302d336437362d363439352d3638373565636638326531372e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/10c236ad-1918-2c4d-7006-c21a1206a4d1.png)

## 以下カスタムラベル作業の流れ
カスタムラベル上でのデータセットの設定を開始
![スクリーンショット 2023-04-06 16.24.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/9f10fd3a-5273-7397-34d5-cabe1877eb1c.png)

↓
カスタムラベル上で先ほどのgroundTruthで作成したoutput.manifestがあるパスを指定する
![スクリーンショット 2023-04-06 16.26.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/8065850c-4e58-9ede-8761-3f402162812b.png)

↓
結果カスタムラベル上でGround Truth上で作成したデータセットが読み込めていることがわかる
![スクリーンショット 2023-04-06 16.28.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/870c8b41-6a26-6d32-fbcc-a1dba648c49f.png)

↓
このようにカスタムラベル上で、modelが訓練開始となったことがわかります。
![スクリーンショット 2023-04-06 16.31.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/940e63ef-cab2-5203-1028-dee3447a48ab.png)

↓
以下画面右のボタンでテストリザルトを確認できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/7b0f96a1-eac2-caf8-3b02-2f4ad78fb7b0.png)

↓
特に優秀なのは訓練結果に対して、true positiveなど、検証画面が非常にリッチでわかりやすいものとなっています。
今回は訓練データの個数自体が少なく、学習がまともにできていないことがわかります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/00026be2-8a36-2fc0-96cd-5098eb9959e5.png)

↓
訓練データが足りない場合は、GroudTruthで訓練データを追加したあと、以下のボタンでカスタムモデル側に同期を取ってあげるとデータセットの追加が可能です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/131b8ef3-11b5-f7a3-867d-37a3a815a5bf.png)

↓
前回ラベルを使用するときは手動によるデータのセットアップを選択肢、入力データセットに、前回つけたラベルデータが格納されたmanifestファイルのパスを入れ、出力データセットを設定すると、前回データに追加をできます。
![入力データセットの場所.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/a4615794-b14f-b81f-4c7e-9fceb6e6fa9f.png)


↓
カスタムモデルのデプロイは以下のように、usemodelで実行可能となります
![useYourModel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206781/572f3039-f4d6-c96d-a4a0-94dcf1c58242.png)