Amazon SageMaker セマンティックセグメンテーションアルゴリズムを試してみる

[Amazon AI by ナレコム Advent Calendar 2018](https://qiita.com/advent-calendar/2018/knowcom-amazonai)の9日目の記事です。
今日は、Amazon SageMakerで新しく利用可能になったセマンティックセグメンテーションアルゴリズムを試していきます。

## ノートブックインスタンスの作成
1．AWSのコンソールからAmazon SageMakerを検索し、ダッシュボードを開きます。
2．左のメニューのノートブック->ノートブックインスタンスからノートブックインスタンスの作成をクリックします。
3．ノートブックインスタンスの設定は以下のようにします。

![SageMakerSeg03.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/5d211a09-2533-54d3-bdba-54300933a8de.png)

4．ノートブックインスタンスが作成され、ステータスがInServiceになったら、Jupyterを開いてください。
5．タブのSageMaker Examples選択し、Introduction to Amazon Algorithmsを展開、semantic_segmentation_pascalvoc.ipynbを使用します。
![SageMakerSeg07.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/a0e24765-a2cd-0005-1f6e-30d7cba1cea1.png)

6．上から順にRUNをクリックして実行していきます。

## データの準備

1．IAM roleを設定します。
![SageMakerSeg11.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/b3e066c3-bc7d-ac1e-4adf-5425b2a935c7.png)

2．S3 bucketを定義します。
![SageMakerSeg12.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/cd4a3dbb-6148-4c60-90ef-0018aef20fd1.png)

3．イメージを取得します。
![SageMakerSeg13.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/f4e029a3-7c11-27c0-e19d-2d85e3de5f39.png)

4．Pascal VOCデータセットをダウンロードします。
![SageMakerSeg15.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/f09f627c-dda6-9d92-fc0f-c9ba36a5801e.png)

5．ダウンロードしたデータセットの準備をします。
![SageMakerSeg16.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/ffa9d21c-6bf9-79a7-9a46-3f1c11190128.png)

6．画像の数をチェックします。
![SageMakerSeg17.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/ea90d4cf-132a-8a7e-564c-0db897583f4f.png)

7．ラベルマップを設定します。
![SageMakerSeg18.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/d8b46716-6c56-8252-9df8-437817b0a7c3.png)

8．S3へアップロードします。
![SageMakerSeg19.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/a488fa17-6112-2a67-8ec0-1f6c3d8ece44.png)

## 学習

1．SageMaker Estimator オブジェクトを定義します。
![SageMakerSeg20.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/8fe5d07c-744f-ce9d-73b6-c331887cbacd.png)

2．ハイパーパラメータを設定します。
![SageMakerSeg21.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/84f05ce7-12a0-ef5a-a5dd-8418bae200ee.png)

3．データチャンネルを設定します。
![SageMakerSeg22.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/a9faf5f9-c844-58c8-daf7-8a53fd8632f9.png)

4．学習を実行します。20分くらいかかります。
![SageMakerSeg24.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/27e87c37-634f-efbc-481c-3e0893ef92a7.png)

5．学習したモデルをデプロイします。
![SageMakerSeg25.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/ad2d3361-80cd-52f5-40e0-368a6634d502.png)

## テスト
1．テスト画像をダウンロードします。
![SageMakerSeg26.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/a0a78936-0ae9-4cbc-f5ad-6871accdfd78.png)

2．テスト画像を表示します。
![SageMakerSeg27.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/551b7057-f8a8-5b4c-a2ef-d09170dec483.png)

3．テストを実行します。
![SageMakerSeg28.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/e2423e7c-793c-dcd8-65b3-a57e77990aba.png)

4．結果を表示します。
![SageMakerSeg29.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/f93510a7-f07a-8511-b9bb-f1a52d76ec94.png)

5．application/x-protobufを使用して、テストを実行します。
![SageMakerSeg30.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/a7ba26a3-4697-3c69-831d-2544b2d04843.png)

6．mxnetを用いて、結果を読み込みます。
![SageMakerSeg31.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/6e12d1da-56fd-332d-f69c-2e90c8279642.png)

7．出力形状と確率の値をチェックします。
![SageMakerSeg32.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/8db1c4f7-1115-4c35-9c4f-bbb5b1d7a5ba.png)

8．結果を表示します。
![SageMakerSeg33.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/f1d2fa81-0c15-4a13-5933-bc6ad30f9a5e.png)

9．エンドポイントを削除して終了です。
![SageMakerSeg34.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/24955cc2-3db0-5df2-5ce4-949f8672c4cd.png)

## まとめ
Amazon SageMakerのセマンティックセグメンテーションアルゴリズムを試してみました。
サンプルが用意されているので、簡単に試すことができます。

## 参考文献
- [Amazon SageMaker で、セマンティックセグメンテーションアルゴリズムが利用可能になりました](https://aws.amazon.com/jp/blogs/news/semantic-segmentation-algorithm-is-now-available-in-amazon-sagemaker/)
- [Amazon SageMakerの組み込みアルゴリズムのセマンティックセグメンテーションを試してみる](https://dev.classmethod.jp/machine-learning/2018advent-calendar-sagemaker-20181201/)
- [Amazon SageMaker Ground Truth を試してみる](https://qiita.com/SatoshiGachiFujimoto/items/e4ab624d3527237ca9e9)