LoginSignup
2
0

More than 1 year has passed since last update.

Amazon SageMakerでセマンティックセグメンテーション

Posted at

SageMakerについて

機械学習のモデリングや、デプロイしてAWS上のアプリケーションで使うこともできるSageMaker(セージメーカー)
いくつかビルトインでアルゴリズムが使用可能で、ハイパーパラメータの調整だけでもお手軽に試すことができるシロモノです。
#sage makerってつまり賢いやーつを生成するやーつってコトですね

SageMakerでセマンティックセグメンテーションを試してみる

今回はセマンティックセグメンテーション(semantic segmentation)を試してみます。画像のピクセル(画素)ごとにラベルづけをします。
下記のように、左が入力画像(学習データ)で、右がマスク画像(教師データ)となります。
semantic_segmentation.jpeg

入出力の画像を使って、物体切り抜きなんかできると面白いなあ!と思ったのでやってみます。

学習データの準備

こちらのサイトからデータを拝借。
semantic_segmentation_dataset.png

学習データをS3に保存

解凍されたVOC2012フォルダのうち、「train」と「train_annotation」フォルダをS3に保存します。
aws cli使えば楽ちんです。--recursiveでフォルダごとコピーします。
下記は「your-bucket-name」というバケットの中の、「segmentation」というサブフォルダに保存する場合です。

aws s3 cp ~/train s3://your-bucket-name/segmentation --recursive
aws s3 cp ~/train_annotation s3://your-bucket-name/segmentation --recursive

SageMakerを立ち上げる

ノートブックインスタンス→ノートブックインスタンスの作成。
sagemaker_instance1.png

ノートブックインスタンス名を書いて(sagemaker-semanticsegmentationとか)、残りはデフォルトのままでインスタンス作成します。
sagemaker_instance2.png

notebookでコーディング

基本的にはこちらのサイトを参考にしています。英語なので自分なりに日本語でまとめてみます。

config

sagemakerをimportしてconfig設定します。
sagemaker_notebook1.png

ここで[3]の部分で、semantic-segmentationと書いています。このほかビルトインの画像処理DLアルゴは、ResNetを用いた画像認識(image-classification)や、SSDベースの物体検出(object-detection)があるようです。

計算リソースとパラメータセッティング

さて、次は訓練に用いる計算リソースやハイパーパラメータをセッティングします。
sagemaker_notebook2.png
[6] ml.p3.2xlargeというGPUの高速リソースを選びます。詳細はAWS公式ドキュメントに記載があります。これでGPU使えるのは良いですね。しっかりお金はかかります(東京リージョンで5.242USD/h)。
[7] ハイパーパラメータのセットです。semantic-segmentationモデルを行うにあたり、学習済みモデル(backbone)を何にするか、アルゴ(algorithm)を何にするかを指定できます。エポックや学習率、optimizerなどのおなじみのパラメータもここで指定することができます。

データ置き場を設定して、学習&デプロイ!

sagemaker_notebook3.png

[8] データ置き場を設定します。
sagemaker.inputs.TrainingInputにS3のパスを設定します。
data_channelsは↑に記述している4つのキー(と対応するS3パス)が必須です。
このへんの詳細もAWS公式ドキュメントに記載があります。

[9] モデル学習!2時間ぐらいかかりました。1000円以上しました。メシ抜きです。

[11]学習したモデルを使って予測/推論できるようにするために、Sagemakerのエンドポイントにデプロイします!これでLambdaから呼び出したりできるってことですね。デプロイに使うインスタンスは学習時と同じである必要はなくて、推論の時はもっとローコストなインスタンスでも良いです。ということでここではml.m4.xlargeを選びました。

これでモデルの作成ができました!推論はせっかくなのでLambda上でやってみようと思います。

エンドポイントお片付け

デプロイされたエンドポイントはInServiceのあいだ課金され続けます。なので終わったらお片付けが必要です。
これはGUIで簡単にできます。
image.png
上記の画面で、「アクション▼」→「削除」で削除することができます。
「え、せっかくモデル作ったのに!!」という場合も、後から簡単にエンドポイント作成できます。
その場合は、「エンドポイント」→「エンドポイントの作成」で楽ちんです。

まとめ

今回はSagemakerを用いてセマンティックセグメンテーションのモデル学習を試してみました。
画像だけでなくseq2seqなどの自然言語処理のビルトインモデルもあったり、マーケットプレイスでモデル購入したりして簡単にモデル学習/使用を試すことができます。
AWS上のいろんなサービスと連携できるので、ひとまずLambdaで呼び出して試してみようと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0