Amazon SageMaker Ground Truth
先日、AWSの教師データ作成のサービスAmazon SageMaker Ground Truth
の使い方や特徴を調べる機会がありました。ところどころ躓いたりもしたので、それらを含めて使うまでの流れをまとめたいと思います。
Amazon SageMaker Ground Truthとは、Amazonの提供する教師データを作成するためのサービスです。このサービスを通して、自前あるいはクラウドソーシングによるデータのラベル付けを行うことができます。
以下のラベリングタスクが利用可能です。
- Image classification
- Bounding box (object detection)
- Text classification
- Semantic segmentation
- Custom (未調査)
Image classification
とBounding box(object detection)
について見ていきたいと思います。
注) Image classification
では、複数クラスのラベルを定義できますが、Bounding box
では、単一のラベルしか定義できないです(2019.2.5現在)。複数クラスの物体検出用の教師データを作成したい場合は注意。
主要な概念
SageMaker Ground Truthを始めるにあたって、以下の3つの概念を認識しておくと、全体像を把握しやすいと思います。
- Labeling Job: ラベリング作業の定義と状態を表します。status, task type, progressなどを含みます。
- Labeling Dataset: 教師データ作成ようのデータ(画像またはテキスト)の集合です。
-
Labeling Workforce: ラベリング作業を行う人的リソースです。チームとそれを構成するワーカーから成り立ちます。
Public
,Private
,Vendor
の3種類のWorkforceがあります。-
Public
: Amazon Mechanical Turkの経由でのワーカーです。チームはグローバルチームになります。 -
Private
: ラベリング作業に内部リソースを使う場合はこちらです。メールアドレスでワーカーのアカウントを作成します。 -
Vendor
: ラベル作成業者をAWS Marketplaceから選びたい場合用です。
-
Jobの作成
まず、us-east-2 (ohio) リージョンのS3バケットを作成し、そこにデータをアップロードします。記事執筆時点で別のリージョンのバケットはサポートされていないです。ここでは、s3://my-sagemaker-sample
というバケットを作成して、その中のsample-data
というディレクトリに画像データを置きました。
データの準備ができたら、Labeling jobsのページでJobを作成していきます。流れに従ってフォームを埋めていきます。
Job overview
Jobの名前や、データの入力、出力場所などを指定します。
Input dataset location
では、manifestファイルというファイルを指定する必要があります。これはCreate manifest file
のリンクから作成できます。データを置いたディレクトリを指定して、manifestファイルを作成できます。
また、IAM Role
を作成して指定する必要があります。
Task type
Workers
ラベリング作業者を定義します。ここではPrivate
を選択しますが、作業者を追加するにあたって、Team
を作る必要があります。作業者はメールアドレスで追加します。オプションでAutomated data labeling
を有効にすることができます。active learningによる自動ラベリングを行ってくれるらしいです。
Labeling tool
具体的なラベリングの仕方を記述できます。ラベルもここで設定します。良いラベリング例や悪いラベリング例などを説明に加えることができますが、そのための画像はあらかじめパブリックなS3に置いておく必要があるようです。
Image classification
の場合
複数のラベルを設定することができます(画像はVisual Geometry Group: Oxford-IIIT Pet Datasetのものです)。
あとはsubmit
を押して、Jobを作成できます。なお、一度作成したJobの詳細は変更できないようです。Jobの一覧画面から、選択したJobのcloneができるので、変更したい場合はJobをcloneして、それを修正するのが良さそうです。
Workerによるラベリング作業
Jobを作成すると、Workersで指定したメールアドレスに、パスワードと作業画面へのログインURLの含まれたメールが届きます。もしログインページのURLが含まれていない場合は(なぜか1度ありました)、Labeling workforcesのページのPrivate
タブから、ログインURLを参照できます。なおこのページでは、TeamやWorkerの追加や編集ができます。
ログイン後の画面。
ラベリング作業の様子(プライベートのバケットにある画像を、ラベリング例の画像に使ってしまったため、左側の画像が正しく表示されてないです)。
ラベリング作業の結果がJobに反映されるのに、少し時間がかかります。
まとめ
以上、SageMaker Ground Truthの使い方を見てきました。よく説明を読まないと引っかかる部分が多少ありました。また、Bounding boxタスクで、ラベルが1種類しか設定できないというのは、複数クラスの物体検出用のデータを作成するには辛い制限です。やがてアップデートされることを期待します。
今回はPrivateなWorkforceで試しましたが、データが大規模で、PublicなWorkforceが使用可能な案件であれば、かなり強力なツールになるのではないかと思います。