LoginSignup
2
3

More than 5 years have passed since last update.

SageMaker Ground Truthによる物体検出用データセットの作成

Last updated at Posted at 2019-02-05

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 classificationBounding 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の名前や、データの入力、出力場所などを指定します。
スクリーンショット 2019-02-05 15.01.35.png
Input dataset locationでは、manifestファイルというファイルを指定する必要があります。これはCreate manifest fileのリンクから作成できます。データを置いたディレクトリを指定して、manifestファイルを作成できます。
スクリーンショット 2019-02-05 14.58.19.png

また、IAM Roleを作成して指定する必要があります。

Task type

教師データの種類を選択します。
スクリーンショット 2019-02-05 15.02.22.png

Workers

ラベリング作業者を定義します。ここではPrivateを選択しますが、作業者を追加するにあたって、Teamを作る必要があります。作業者はメールアドレスで追加します。オプションでAutomated data labelingを有効にすることができます。active learningによる自動ラベリングを行ってくれるらしいです。
スクリーンショット 2019-02-05 15.30.53.png

Labeling tool

具体的なラベリングの仕方を記述できます。ラベルもここで設定します。良いラベリング例や悪いラベリング例などを説明に加えることができますが、そのための画像はあらかじめパブリックなS3に置いておく必要があるようです。

  • Image classificationの場合
    複数のラベルを設定することができます(画像はVisual Geometry Group: Oxford-IIIT Pet Datasetのものです)。スクリーンショット 2019-02-05 15.45.12.png

  • Bounding Boxの場合
    1種類のラベルしか設定できないです。
    スクリーンショット 2019-02-05 15.50.55.png

あとはsubmitを押して、Jobを作成できます。なお、一度作成したJobの詳細は変更できないようです。Jobの一覧画面から、選択したJobのcloneができるので、変更したい場合はJobをcloneして、それを修正するのが良さそうです。

Workerによるラベリング作業

Jobを作成すると、Workersで指定したメールアドレスに、パスワードと作業画面へのログインURLの含まれたメールが届きます。もしログインページのURLが含まれていない場合は(なぜか1度ありました)、Labeling workforcesのページPrivateタブから、ログインURLを参照できます。なおこのページでは、TeamやWorkerの追加や編集ができます。

ログイン後の画面。
スクリーンショット 2019-02-05 16.35.48.png
ラベリング作業の様子(プライベートのバケットにある画像を、ラベリング例の画像に使ってしまったため、左側の画像が正しく表示されてないです)。
output.gif
ラベリング作業の結果がJobに反映されるのに、少し時間がかかります。

まとめ

以上、SageMaker Ground Truthの使い方を見てきました。よく説明を読まないと引っかかる部分が多少ありました。また、Bounding boxタスクで、ラベルが1種類しか設定できないというのは、複数クラスの物体検出用のデータを作成するには辛い制限です。やがてアップデートされることを期待します。

今回はPrivateなWorkforceで試しましたが、データが大規模で、PublicなWorkforceが使用可能な案件であれば、かなり強力なツールになるのではないかと思います。

参考

2
3
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
3