Amazon SageMaker Ground Truth を試してみる

[Amazon AI by ナレコム Advent Calendar 2018](https://qiita.com/advent-calendar/2018/knowcom-amazonai)の3日目の記事です。
今日は、AWS re:Invent 2018で発表された Amazon SageMaker Ground Truth [1] について書いていきます。

## Amazon SageMaker Ground Truthとは
機械学習や深層学習をする際に様々なデータセットを用いますが、そのデータセットには真値（Ground Truth）が必要です。

物体検出をして矩形（Bounding Box）が得られますが、検出領域が真値のBounding Boxと一致している部分を計算し精度を求めます。そのズレが誤差になるわけです。[2]

このように予測した結果を評価するためには、まず真値が必要です。
世の中には様々なデータセットが用意されていますが、数千枚・数万枚以上の画像を人の手でラベリングしています。

Amazon SageMaker Ground Truthは、データセットの真値の作成をサポートします。以下のようなラベルデータを作成できます。

* テキスト分類（Text classification）
* 画像分類（Image classification）
* 物体検出（Bounding box）
* セマンティック・セグメンテーション（Semantic Segmentation）
* ユーザー定義のカスタムタスク（Custom）

物体検出[1]やテキスト分類[3]は例があるので、セマンティック・セグメンテーションについてやってみたいと思います。

## S3にデータセットをアップロード
今回使用したのは、[KITTI Vision Benchmark](http://www.cvlibs.net/datasets/kitti/)のセグメンテーション用のデータセットであるdata_semantics.zipです。training->image_02から000000_10.png ~ 000009_10.pngまで10枚の画像をS3にアップロードします。

![SMGT04.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/d37bac0d-6fb1-b207-7607-dd48081ae6ff.png)

## ラベリングジョブの作成
Amazon SageMakerのGround Truth->ラベリングジョブを選択し、Create labeling jobをクリックします。
![SMGT05.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/d9ea310b-ab48-1c56-ca83-1519b70b7605.png)

S3のパスを指定し、manifestファイルを作成します。
![SMGT07.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/21ad9eeb-a0c0-1100-5200-5a45ae3e3e01.png)

IAM roleを新規作成します。
![SMGT08.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/d5af107c-5d04-da74-f394-15152424407f.png)

最終的なJob overviewです。
![SMGT09.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/b6ea96e1-2e8f-ea91-d3d1-eaab303b5f93.png)

Task TypeのSemantic Segmentationを選択します。
![SMGT10.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/6b9d4913-2a13-f22b-329f-1a5857fc0c10.png)

Workersを作成します。
![SMGT12.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/da1e4856-ff42-a32b-9fb2-441bd39cb200.png)

タスクの内容とラベルを追加します。
![SMGT20.png](https://qiita-image-store.s3.amazonaws.com/0/63863/172328a3-04f3-da41-a629-8c9d499d7cbc.png)

## ラベリングツールを用いてラベリング
ラベリング労働力にあるLabeling portal sign URLから、ラベリングツールへ移動します。
usernameとpasswordはWorkers作成の際に書いたemailアドレスに届きます。
新しいパスワードを入力して、ログインします。
![SMGT24.png](https://qiita-image-store.s3.amazonaws.com/0/63863/e11d561e-66b7-1833-baa0-053ec82ad809.png)

ツールを使って自分でラベリングしていきます。
ラベルを選択して（例えばperson）、人の領域をクリックして線でつないでいきます。
![SMGT29.png](https://qiita-image-store.s3.amazonaws.com/0/63863/dc314b2e-09dc-15b4-2166-2a45caffdf10.png)

車も同様にラベリングします。
![SMGT34.png](https://qiita-image-store.s3.amazonaws.com/0/63863/42450ff7-13b7-5a36-9496-1ebbb8289b4d.png)

10枚全部行います。大変...

## ラベリング結果
しばらく経つと、ラベリングジョブがCompleteとなります。
![SMGT35.png](https://qiita-image-store.s3.amazonaws.com/0/63863/4d6d3c8a-23c2-b659-185d-132ccccc77fe.png)
![SMGT36.png](https://qiita-image-store.s3.amazonaws.com/0/63863/dabd9ac8-1216-f23e-2618-2e053bb0b48c.png)

実際にこれを真値として使っていく方法は今後調べていきたいと思います。


<!-- 
![SMGT13.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/5491aa85-8367-9482-82b8-2c7a12fa6eb9.png)
![SMGT14.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/82960c60-48d0-12ad-89a5-f00dba5d85ce.png)
![SMGT15.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/d9fe6d61-749b-8d7f-1961-36802fe5578c.png)
![SMGT16.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/76c65fb2-c08a-09e7-0a8f-513a17825f7c.png)
![SMGT17.png](https://qiita-image-store.s3.amazonaws.com/0/63863/2562d404-b2a6-4d23-3a73-26607b1f4fe3.png)
![SMGT18.png](https://qiita-image-store.s3.amazonaws.com/0/63863/d06f9b48-c9cf-2708-8164-f92ab4a0b04b.png)
![SMGT19.png](https://qiita-image-store.s3.amazonaws.com/0/63863/72dd97db-b793-48a0-00fe-8b8aff64dba8.png)




![SMGT21.png](https://qiita-image-store.s3.amazonaws.com/0/63863/5a9017a5-c9bd-08cf-61cc-c2e51f64ab60.png)
![SMGT22.png](https://qiita-image-store.s3.amazonaws.com/0/63863/3d9fc9cc-5ba8-1055-d23c-14f76c8a91ff.png)
![SMGT23.png](https://qiita-image-store.s3.amazonaws.com/0/63863/16263bfb-c28e-912d-f3b1-9a3578a5b9bd.png)




![SMGT25.png](https://qiita-image-store.s3.amazonaws.com/0/63863/2f5ccc0c-918e-7336-31f8-882c63d3e755.png)
![SMGT26.png](https://qiita-image-store.s3.amazonaws.com/0/63863/50dd2bd7-0686-ceaf-f7be-c1623c9a5d90.png)
![SMGT27.png](https://qiita-image-store.s3.amazonaws.com/0/63863/1eff048c-8a95-2b30-aced-878bc0d425f2.png)
![SMGT28.png](https://qiita-image-store.s3.amazonaws.com/0/63863/47406bee-f073-7654-49cb-363780f8c70e.png)


![SMGT30.png](https://qiita-image-store.s3.amazonaws.com/0/63863/4236d12c-546b-4da3-8d30-94e9b303d551.png)
![SMGT31.png](https://qiita-image-store.s3.amazonaws.com/0/63863/ac69744b-6c46-e197-afa2-d02780d9f786.png)
![SMGT32.png](https://qiita-image-store.s3.amazonaws.com/0/63863/b609f231-962e-8c07-5d92-0b80eb2267c4.png)
![SMGT33.png](https://qiita-image-store.s3.amazonaws.com/0/63863/0b1e8bc1-be5e-e8dd-7344-0ec142206701.png)

-->

## 参考文献
[1] [Amazon SageMaker Ground Truth — 高い精度のデータセットを構築し、ラベル付けのコストを最大70%削減](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-ground-truth/)
[2] [Deepに理解する深層学習による物体検出 by Keras](https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7)
[3] [AWS SageMaker Ground Truthでテキストのラベリングを試してみる](https://qiita.com/hideki/items/5ad5018912cb87fc6b8d)