背景
AWS SageMakerについて勉強していたところ、SageMaker Ground Truthは画像にラベリングを行うものとあったので、実際に触ってみました。
試した事(概要)
漫画家の矢吹健太郎先生の作品である「ToLoveる-ダークネス-」のヒロインキャラクター画像に対して、キャラクター名をラベリングしてみました。
例えば、
これは「ヤミ」のラベルを付けて、
これは「モモ」のラベルを付けてみる形です。
試した事(詳細)
1. S3にラベリングを行いたい画像をアップロード
今回は12枚の画像(pngファイル)をアップロードしました。
2. SageMaker Ground Truthにて、ラベリングジョブを作成
どこに保存されている画像に、どのようなラベリングを行うのか、作業者は誰か、等の設定をしたジョブを作成します。
まずは、マネジメントコンソールのSageMaker画面の左ペインから、Ground Truth > ラベリングジョブにアクセスして、画面右上の「ラベリングジョブの作成」をクリックします。
続いて、「ジョブの詳細の指定」を設定していきます。
今回設定した項目と値は下記になります。
■「ジョブ名」の入力
Picture-Labeling-Test
■「ラベリングジョブ名とは異なるラベル属性名を指定したいです」のチェック
チェックは外したまま
■「入力データのセットアップ」の選択
自動化されたデータセットアップ
■「入力データセットの S3 の場所」の入力
画像を保存したS3バケットのフォルダ
■「出力データセットの S3 の場所」の選択
入力データセットと同じ場所
■「データタイプ」の選択
画像
■「IAMロール」の選択
AmazonSageMakerFullAccessポリシーを持っている既存のロール
「追加設定-オプション」は特に触らず、「データセットアップの完了」をクリックしました。
少し待つと、「入力データの接続に成功しました」の旨が表示されました。
続いて、「タスクのタイプ」を設定していきます。
今回設定した項目と値は下記になります。
■「タスクカテゴリ」の選択
Image
■「タスクの選択」
ImageClassification(単一ラベル)
「タグ-オプション」は特に触らず、「次へ」をクリックしました。
(後述しますが、画像データを保存しているS3にCORSが設定されるようです。)
続いて、「ワーカーの選択とツールの設定」を設定していきます。
今回設定した項目と値は下記になります。
■「ワーカータイプ」の選択
プライベート
■「チーム名」の入力
Picture-Labeling-Test-Team
■「プライベートな注釈者の招待」の入力
今回の作業者は私のみのため、私のメールアドレスだけを入力しました
■「タスクのタイムアウト」の入力
5分
■「タスクの有効期限」の入力
10日
■「企業・団体名」の入力
画像ラベル付けテスト
■「連絡先 E メール」の入力
ラベル付け作業時の質問先と思われますため、今回は私のメールアドレスを入力しました
■「自動データラベリングを有効にする」のチェック
チェックは外したまま
「追加設定-オプション」は触らずに、続いて、「画像分類(単一ラベル)ラベル付けツール」を設定していきます。
今回設定した項目と値は下記になります。
■「タスクの簡単な説明を入力します」の入力
表示されるキャラの名前をラベル付けしてください。
■「オプションを選択」の入力
下記の8つをラベルとして入力
┗ララ
┗春奈
┗モモ
┗ナナ
┗美柑
┗ヤミ
┗唯
┗メア
「Good Example」や「Bad Example」の部分や、「追加の手順-オプション」は何も設定せずに、「作成」をクリックしました。
すると、画面が戻り、無事にラベリングジョブが作成されました。
※補足
- ラベリングジョブ作成後、画像を保存しているS3バケットにACLとCORSが自動で追加
ラベル付けを行う作業者は、別途、「ラベル付け作業システム」のようなものにログインして、ラベル付けを行う形になります。そのため、「ラベル付け作業システム」がS3に保存されている画像ファイルにアクセス出来るように、このようなACLとCORSが追加されたと思われます。
- ラベリングジョブ作成後、Amazon Cognitoユーザプールが自動で作成
AWSでユーザ認証機能を提供しているAmazon Cognitoユーザプールが自動で作成され、そのユーザプールには、ラベル付けを行う作業者のメールアドレスがユーザ名として登録されていました。これは、「ラベル付け作業システム」にログインするためのユーザ認証を、Amazon Cognitoユーザプールで行うためと思われます。
3. ラベル付け作業
ラベル付けを行う作業者のメールアドレス宛てに、このようなメールが届きました。
「ラベル付け作業システム」にログイン出来ました。対象のTaskを選択した状態で、画面右上の「Start working」をクリックします。
ラベル付け作業が始まりました。
これは、「春奈」ですね(笑)選択したら、「Submit」をクリックします。
次は「ララ」ですね。
次は「モモ」ですね。楽しくなってきました(笑)
全ての画像のラベル付けが完了すると、「ラベル付け作業システム」のトップ画面に戻りました。先程まであったTaskが無くなっています。
4. 結果確認
AWSのマネジメントコンソールで、SageMaker > Ground Truth > ラベリングジョブにアクセスすると、対象のラベリングジョブのステータスが「完了」になっています。
完了した対象のラベリングジョブを開くと、出力タブで、ラベル付け作業の結果を確認出来ます。
また、ラベリングジョブ作成時に、「出力データセットの S3 の場所」で設定したフォルダを確認してみると、「output.manifest」というファイルがあり、それを開くと、1行毎にJSONの形でラベル付け作業の結果がありました。
{
"source-ref": "s3://*****/for_sagemaker_ground_truth/001.png",
"Picture-Labeling-Test": 5,
"Picture-Labeling-Test-metadata": {
"class-name": "ヤミ",
"job-name": "labeling-job/picture-labeling-test",
"confidence": 0,
"type": "groundtruth/image-classification",
"human-annotated": "yes",
"creation-date": "2024-05-10T12:06:51.205054"
}
}
{
"source-ref": "s3://*****/for_sagemaker_ground_truth/002.png",
"Picture-Labeling-Test": 2,
"Picture-Labeling-Test-metadata": {
"class-name": "モモ",
"job-name": "labeling-job/picture-labeling-test",
"confidence": 0,
"type": "groundtruth/image-classification",
"human-annotated": "yes",
"creation-date": "2024-05-10T12:05:44.769536"
}
}
以上になります。
5. まとめ
最低限の設定ではありますが、実際にSageMaker Ground Truthを触ってみて、雰囲気を把握する事が出来ました。拙い記事ではありますが、「SageMaker Ground Truthって?」の方の一助になりましたら幸甚で御座います。
6. 参考