Amazon SageMaker ラベリングジョブを使用して画像データにラベルを付与してみる

Amazon SageMaker ラベリングジョブを使用して画像データにラベルを付与してみる

Clock Icon2024.09.03

こんにちは!よしななです。
今回は、Amazon SageMaker Ground Truth を使用して、S3 にアップロードした画像データにラベルを付与し、教師データを作ってみたいと思います。

目次

  • 前提
  • Amazon SageMaker Ground Truth とは
  • 利用料金について
    • プライベート
    • Amazon Mechanical Turk
    • ベンダー管理下
  • 前準備
    • S3 の作成
  • Amazon SageMaker Ground Truth で画像にラベルを付与
    • Step 1:ジョブの詳細の指定
    • Step 2:ワーカーの選択とツールの設定
  • ラベリングツールでラベル付与を行う
  • 実行結果
  • 最後に

前提

- OS
    - Windows 11
- 本記事の実行には AWS アカウントが必要となります。

Amazon SageMaker Ground Truth とは

公式から引用:

Amazon SageMaker Ground Truth はフルマネージド型のデータラベル付けサービスで、機械学習のための高精度なトレーニングデータセットを簡単に構築することができます。カスタム、または組み込み済みのデータラベル付けワークフローを使用して、SageMaker Ground Truth コンソールから数分でデータのラベル付けを開始することができます。

公式ホームページ:

https://aws.amazon.com/jp/sagemaker/groundtruth/

また、ラベル付けは、社内の限られたメンバーでプライベートチームを作成し、チーム内でラベル付け作業を分担したり、Amazon Mechanical Turk を指定し、AWS が指定する請負業者に依頼したり、Marketplace で依頼するといったことが可能です、

利用料金について

Amazon SageMaker Ground Truth の利用料金ですが、ラベル付与を行う作業者(ワーカーと呼ばれる)により異なります。

  • 対象ワーカー
    • Amazon Mechanical Turk
      • AWS 側でラベル付けを行う業者を用意してくれる
    • プライベート
      • Amazon Cognite からメールアドレスで招待したメンバーでラベル付けを行う
      • 社内メンバーに限定したい場合はこちらを使用
    • ベンダー管理下
      • データラベリングサービスの提供を専門とするサードパーティベンダーの厳選リスト
      • AWS Marketplace から選べる

各ワーカーの料金は以下の通りです。

プライベート

ラベル付けをしたオブジェクト(画像、テキスト、動画)毎に料金が発生します。
料金は以下の通りです。(日本円は 1USD = ¥146.7 で試算)

2024-09-03_11h02_48

ラベル付けをしたオブジェクトが 1,200,000 オブジェクトの場合、
(50,000 オブジェクト × 0.08USD) + (950,000 オブジェクト × 0.04USD) + (200,000 オブジェクト × 0.02USD) = 46,000USD / ¥6,161,400 となります。

Amazon Mechanical Turk

プライベートの料金に合わせて、以下の料金がラベル付けをしたオブジェクト(画像、テキスト、動画)毎に発生します。
料金は以下の通りです。(日本円は 1USD = ¥146.7 で試算)

2024-09-03_11h05_39

Amazon Mechanical Turk にラベル付けを依頼したオブジェクトが 1,200,000 オブジェクト
ラベル付け精度を向上させるため3人のワーカーを手配した場合、
(50,000 オブジェクト × 0.08USD) + (950,000 オブジェクト × 0.04USD) + (200,000 オブジェクト × 0.02USD) + (3人のワーカー × 0.012USD × 1,200,000 オブジェクト) = 89,200 USD / ¥12,498,840 となります。

ベンダー管理下

こちらはラベル付けベンダー毎に料金に違いが発生します。

前準備

S3 の作成

アノテーションする画像データを格納 / アノテーション結果を出力するための S3 バケットを作成します。

データセットは以下 URL のものを使用しました。
Kaggle : https://www.kaggle.com/c/dogs-vs-cats/data

それぞれ、dog 画像と cat 画像を10枚ずつ引用し、以下のように S3 バケットにアップロードします。

2024-09-02_13h43_28

Amazon SageMaker Ground Truth で画像にラベルを付与

コンソール画面 > Amazon SageMaker > ラベリングジョブ から ラベリングジョブの作成
をクリックすると、ジョブの作成画面に遷移します。

2024-09-02_13h44_59

Step 1:ジョブの詳細の指定

以下の項目を入力します。

〇ジョブ名
ラベリングジョブ名を入力します。
今回はtest_nyoshidaを入力します。

〇ラベル属性名の指定
ラベリングジョブ実行結果のフォルダ名について、ジョブ名と同じ or 独自に指定ができます。
今回はジョブ名と同じにするため、チェックを入れないようにします。

〇入力データのセットアップ
自動化されたデータセットアップ or 手動によるデータのセットアップ を選択できます。

- 自動化されたデータセットアップ
  - ラベルを付けるデータセットの S3 の場所を指定し、Ground Truth が自動的に接続してジョブにこのデータセットを使用するようにすることができます。
- 手動によるデータのセットアップ
  - ラベルを付けるデータオブジェクトを識別するファイル (入力マニフェストファイル)S3 の場所を指定します

2024-08-29_15h08_25

今回は自動化されたデータセットアップを指定します。

〇データセットアップ - 入力データセットのS3の場所 / 出力データセットのS3の場所
Amazon SageMaker Ground Truth でラベル付けするデータが格納された S3 バケット のパス、
ラベリングジョブの実行結果の出力先を指定します。

2024-09-02_15h43_36

〇データタイプ
ラベル付けするデータの形式を選択します。
画像、テキスト、動画、動画フレームから選択できます。
今回は画像を選択します。

〇IAMロール
Amazon SageMaker が S3 バケットにアクセスするための IAM ロールを指定します。
既存のロールを選択するか、Create new roleAmazonSageMakerFullAccessIAM ポリシーがアタッチされたロールを作成します。

2024-09-02_10h10_58

必要な権限は以下となります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "sagemakergroundtruth",
            "Effect": "Allow",
            "Action": [
                "cognito-idp:CreateGroup",
                "cognito-idp:CreateUserPool",
                "cognito-idp:CreateUserPoolDomain",
                "cognito-idp:AdminCreateUser",
                "cognito-idp:CreateUserPoolClient",
                "cognito-idp:AdminAddUserToGroup",
                "cognito-idp:DescribeUserPoolClient",
                "cognito-idp:DescribeUserPool",
                "cognito-idp:UpdateUserPool"
            ],
            "Resource": "*"
        }
    ]
}

〇データセットアップの完了
ジョブ名IAMの作成まで一通り完了したら、データセットアップの完了をクリックします。以下の画面の通り入力データ接続に成功しましたが出力されればセットアップは完了となります。

2024-08-29_13h55_28

〇タスクカテゴリ
今回ラベル付けを行うデータの形式を選択します。
以下が選択可能となります。

- 画像
  - 単一ラベル
    - 画像分類を行う作業者に、画像を見てそれぞれのクラスに分類してもらう
    - ex.1つの画像を見て、それぞれ 犬 / 猫 に分類する
  - マルチラベル
    - 画像分類を行う作業者に、画像を見て1つまたは複数のクラスに分類してもらう
    - 1つの画像を見て、その画像に写っているものをラベル付けしてもらう
  - 境界ボックス
    - 画像を見て、画像に指定されたオブジェクトの周りに境界ボックスを描画してもらう
  - 意味論的なセグメント化
    - 画像内の特定のオブジェクトやセグメントの周りにピクセルレベルのラベルを描画してもらう
  - ラベルの検証
    - すでにラベル付けされているデータに対し、ラベル付けが間違っていないかを確認してもらう

その他、動画に対しても作業者にどのようにラベル付けをしてほしいのか、細かく指示を出すことが可能です。

Step 2:ワーカーの選択とツールの設定

〇ワーカータイプ
冒頭でも説明した通り、画像 / テキスト / 動画データに対するラベル付けは人力で行います。
ラベル付けを実施する人員を以下から選ぶことができます。

- Amazon Mechanical Turk
    - AWS 側でラベル付けを行う業者を用意してくれる
- プライベート
    - Amazon Cognite からメールアドレスで招待したメンバーでラベル付けを行う
    - 社内メンバーに限定したい場合はこちらを使用
- ベンダー管理下
    - データラベリングサービスの提供を専門とするサードパーティベンダーの厳選リスト
    - AWS Marketplace から選べる

今回は検証なので、プライベートを選択します。

2024-09-02_16h49_59

〇プライベートチーム

ワーカーをプライベートにする場合、プライベートチームの作成が必要になります。
Amazon SageMaker > Ground Truth > ラベリングワークフォース を選択し、プライベートチームの作成をクリックします。
プライベートチームの作成 画面で以下の情報を入力します。

- チーム名の入力
- ワーカーの追加
  - 新規作成のため`新しい Amazon Cognito ユーザーグループを作成する`を選択

2024-08-29_14h22_32

次に、作成したプライベートチームに新しいワーカーを招待します。
Amazon SageMaker > Ground Truth > ラベリングワークフォース を選択し、新しいワーカーを招待をクリックします。
新しいワーカーの招待 画面で、招待したいメンバーのメールアドレスを入力します。

2024-08-29_14h28_41

入力したメールアドレスに、以下のメールが届きます。
こちらのURLから画像のラベル付けを行っていきます。

2024-08-29_14h42_06

〇画像分類 (単一ラベル) ラベル付けツール

ラベリングの指示を入力します。
画面上部にラベリングジョブの概要を入力し、画面左側でラベリングジョブの詳細を入力します。
画面右部で画像に付与するラベル名を入力します。

今回は、ラベリングジョブの概要部分に犬猫の画像分類タスクを入力し、
ラベル名はdogcatを入力します。

2024-09-02_17h19_09

ラベリングツールでラベル付与を行う

ラベリングジョブが設定できたら、実際にラベル付け作業を行います。
作成したプライベートチームに登録したメールアドレスに、以下のようなメールが届いているのでこちらからラベル付けワークスペースにサインインします。

2024-09-03_11h44_43
2024-09-02_10h19_30

ログインに成功すると、以下のワークスペースが表示されます。

2024-09-02_14h12_24
2024-09-02_13h34_10

select an optionから画像にラベルを付与します。
ラベルの付与が完了したらsubmitをクリックすると次の画像に遷移します。
全ての画像のラベル付けが完了すると、ラベリングジョブのステータスが完了になります。

2024-09-02_14h20_13

実行結果

ラベル付けの出力結果が指定した S3 バケットに保存されます。
このデータを用いて、機械学習モデルの構築などが行えるようになります。

2024-09-03_13h08_36

以上で、「Amazon SageMaker ラベリングジョブを使用して画像データにラベルを付与してみる」は以上となります。

最後に

Amazon SageMaker Ground Truth は名前は聞いたことはあるものの、どんなサービスかは詳しく知らないところもあったので、今回は勉強になりました。
ここまで読んでいただきありがとうございました!

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.