Amazon SageMaker のアノテーションツールを試してみる

こんにちは、開発部門インターンの飯沼です。この記事では機械学習導入の第1段階としてSageMakerのアノテーションツールを使ってみようと思います。

Amazon SageMaker とは?

Amazon Web Service の展開する機械学習プラットフォームです。Jupyter Notebook をインターフェースとして、機械学習モデルを構築、トレーニング、デプロイするためのモジュールが用意されています。Tensorflow や Chainer など、メジャーなフレーム枠をサポートしているほか、オリジナルのアルゴリズムフレームワークなどを組み込むことも可能となっています。また、S3と連携させることで、S3内のファイルでトレーニングすることもできます。

Amazon S3 にファイルをアップロード

最初に Amazon S3 にファイルをアップロードしておきます。S3 に適当な名前でバケットを作成して、その中にデータを入れておきます。設定は全てデフォルトのままで大丈夫です。

Amazon SageMaker でアノテーション

ラベリングジョブの設定

最初にラベリングジョブを作成します。SageMaker のトップから「ラベリングジョブ」→「ラベリングジョブの作成」と進んでジョブの詳細指定のページを開きます。

f:id:iinuma0710:20191024114922p:plain

ジョブの詳細設定

 「入力データセットの場所」にはアノテーションを行うファイルを書き出した .manifest ファイルを指定する必要がありますが、「マニフェストファイルを作成します」をクリックして、データが置いてあるフォルダを選択すると自動的に生成してくれます。

f:id:iinuma0710:20191024170644j:plain

manifest ファイルの自動生成

適切な権限がないとIAM ロールが作成できなかったり、S3 のファイルにアクセスできないと怒られたりするので、何かエラーを吐かれたら権限周りの担当者に相談するのがいいと思います。

最後に、タスクのタイプを指定します。ここではセグメンテーションがしたいので、「意味論的なセグメント化」を選択します。

f:id:iinuma0710:20191024134140p:plain

タスクのタイプ選択

 「拡張画像アクセスを有効にする」にチェックを入れて「次へ」をクリックします。

 

ワーカーの選択

ジョブの設定ができたら、アノテーションを行うワーカーの選択を行います。アノテーションは社内メンバーで行いたいのでプライベートを選択して、適当なプライベートチームを指定します。パブリックを選択してしまうと、外部の人にお金を払わないといけなくなります。

f:id:iinuma0710:20191024171114p:plain

ワーカーの選択

ラベリングツールの設定

最後にラベリングツールの設定をします。一番上のテキストボックスには、アノテーションの簡単な説明を追加します。「ラベル」のカラムには、セグメンテーションの対象となるラベルを追加します。

f:id:iinuma0710:20191024171303j:plain

ラベリングツールの設定

これで「作成」をクリックすればジョブの作成は完了です。

 

ラベリングツールでアノテーションする

ここまででラベリングジョブの作成はできたので、実際にラベリングしていきます。個人のラベリングのページにログインすると、先ほど作成したジョブがラベリングタスクのリストに追加されています。

トップページからジョブを選択して "Start Working" をクリックします。ラベリングツールが表示されたら Brush とか Eraser とかを使いながらラベルを貼りたいピクセルを塗りつぶしていきます。

Polygon:ぽちぽちクリックして塗りつぶしたい部分を囲んでやると囲んだ部分の内側を塗りつぶしてくれるツールです。広範囲を塗りつぶす時に便利。

Brush:色鉛筆のように塗りつぶすツールです。細かい部分や最後の仕上げに使えます。

Eraser:はみ出した箇所を消すのに使う消しゴムツールです。

Dimmer:明るさの調整をします。デフォルトが100%で数字が小さくすると画像が暗くなります。ただ輝度調整なんかは実際の学習時にした方がいいと思うので、あまり使う機会はないような気がします。

Undo・Redo:言うまでもなく作業を戻したり進めたりします。

Zoom In・Zoom Out:画像の拡大縮小をします。画像上で上下にスクロールしても拡大縮小できます。

Move:ドラッグして画像を動かします。拡大表示しているときに使います。

Fit Image:拡大 or 縮小表示中の画像をオリジナルサイズに戻してくれます。

f:id:iinuma0710:20191024171455j:plain

アノテーション作業

 

右の"Labels"からアノテーション対象のラベルを選択して塗りつぶします。全部塗れたら右下の"Submit"を押して、その画像のアノテーションを完了します。もし、対象としているラベルが画像中になければ、"Nothing to label"にチェックを入れて"Submit"します。これを用意したデータセットの分だけやっていきます。

思った以上に大変な作業です。1枚あたり10分くらいはかかりそうな感じがします。今のところ115枚のデータがあるので、単純計算して19時間以上かかりますね・・・。