Amazon SageMaker
開発者ガイド

ラベリングジョブの連鎖

Amazon SageMaker Ground Truth では、クローン作成と連鎖の 2 つの方法で前のジョブのデータセットを再利用することができます。

クローン作成の操作は、比較的簡単です。クローン作成では、以前のラベリングジョブの設定がコピーされるため、追加の変更を行うことができます。その後、実行するように設定します。

連鎖の操作は、クローン作成よりも複雑です。連鎖は、前のジョブの設定だけでなく、結果も使用します。これにより、未完了のジョブを引き続き行い、完了したジョブにラベルやデータオブジェクトを追加することができます。

処理中のデータに関しては、次のように行います。

  • ククローン作成 — は、前のジョブの入力 マニフェストを新しいジョブの入力マニフェストとして使用します。

  • 連鎖 — は、前のジョブの 出力 マニフェストを新しいジョブの入力マニフェストとして使用します。

ラベリングジョブの連鎖

連鎖が有用な状況を以下に示します。

  • 手動で停止したラベリングジョブを続行する。

  • 問題を解決して、ジョブ中に失敗したラベリングジョブを続行する。

  • ジョブの一部に手動でラベリングした後に自動ラベリングに切り替える (またはその逆)。

  • 完了したジョブにさらにデータオブジェクトを追加して、そこからジョブを開始する。

  • 完了したジョブに別の注釈を追加する。たとえば、トピックにラベリングされたフレーズのコレクションがあり、そのセットを再度実行して、トピックの暗黙的な対象者別に分類するとします。

Amazon SageMaker Ground Truth では、コンソールまたは API を使用して、連鎖されたラベリングジョブを設定できます。

キーワード: ラベル属性名

ラベル属性名 (API では LabelAttributeName) は、ワーカーがデータオブジェクトに割り当てるラベルで形成されたキーと値のペアのキーとして使用される文字列です。

ラベル属性名にはいくつかのルールがあります。

  • -metadata で終わることはできません。

  • sourcesource-ref の名前は予約されているため使用できません。

  • セマンティックセグメンテーションのラベリングジョブでは、-ref で終わることが義務付けられています。その他のラベリングジョブでは、-ref終わってはいけません-ref の追加は、コンソールで設定されたジョブで自動的に管理されます。

  • 元のジョブと同じラベル属性名を使用していて、自動ラベリングを使用するように連鎖ジョブを構成しており、任意の時点で自動ラベリングモードになっていた場合は、元のジョブのモデルが使用されます。

出力マニフェストでは、次のように表示されます。

"source-ref": "<S3 URI>", "<label attribute name>": { "annotations": [{ "class_id": 0, "width": 99, "top": 87, "height": 62, "left": 175 }], "image_size": [{ "width": 344, "depth": 3, "height": 234 }] }, "<label attribute name>-metadata": { "job-name": "<job name>", "class-map": { "0": "<label attribute name>" }, "human-annotated": "yes", "objects": [{ "confidence": 0.09 }], "creation-date": "<timestamp>", "type": "groundtruth/object-detection" }

コンソールでジョブを作成している場合、ラベル属性名の値を明示的に設定しないと、ジョブ名がそのジョブのラベル属性名として使用されます。

コンソールで連鎖ジョブを開始する

既存のジョブのリストから、停止、失敗、または完了したラベリングジョブを選択します。これにより、[Actions] メニューが有効になります。

[Actions] メニューの [Chain] を選択します。

ジョブの概要パネル

[ジョブの概要] パネルで、新しい [ジョブ名] は、このジョブの連鎖元のジョブのタイトルに基づいて設定されます。このデフォルトの名前は変更できます。

ラベリングジョブ名とは異なるラベル属性名を指定することもできます。

完了したジョブから連鎖している場合は、構成中の新しいジョブの名前がラベル属性の名前に使用されます。名前を変更するには、チェックボックスをオンにします。

停止または失敗したジョブから連鎖している場合は、連鎖元のジョブの名前がラベル属性の名前に使用されます。名前のチェックボックスがオンになっているため、値を簡単に確認および編集することができます。

属性ラベルの命名に関する考慮事項

  • デフォルトでは、Ground Truth で選択されているラベルの属性名 が使用されます。そのラベル属性名に接続されたデータを含まないデータオブジェクトはすべてラベリングされます。

  • マニフェストに存在しないラベル属性名を使用すると、データセット内のオブジェクトはすべて、ジョブで処理されます。

この場合の [入力データセットの場所] は、連鎖ジョブの出力マニフェストとして自動的に選択されます。入力フィールドは使用できないため、変更することはできません。

ラベリングジョブにデータオブジェクトを追加する

代替マニフェストファイルを指定することはできません。前のジョブの出力マニフェストを手動で編集して新しい項目を追加してから、連鎖ジョブを開始します。S3 URI を使用すると、S3 バケット内のマニフェストを格納している場所を見つけやすくなります。そこからマニフェストファイルをダウンロードして、コンピュータ上でローカルに編集し、新しいバージョンをアップロードして置き換えます。編集中にエラーが発生していないことを確認してください。JSON を確認するには JSON lineter を使用することをお勧めします。通常、一般的なテキストエディタや IDE では linter のプラグインを使用することができます。

API で連鎖ジョブを開始する

この手順は、CreateLabelingJob を使用した新しいラベリングジョブの設定とほぼ同じです。ただし、2 つの主な違いを除きます。

  • マニフェストの場所: 前のジョブの元のマニフェストを使用するのではなく、DataSourceManifestS3Uri の値で前のラベリングジョブの出力マニフェスト の S3 URI を指す必要があります。

  • ラベル属性名: ここで正しい LabelAttributeName 値を設定することが重要です。指摘したように、これはラベリングされたデータが値であるキーと値のペアの重要な部分です。サンプルのユースケースを以下に示します。

    • 完了したジョブに新しいラベルまたは具体的なラベルを追加する — 新しいラベル属性名が設定されます。

    • 以前のジョブのラベリングされていない項目をラベリングする — 前のジョブのラベルの属性名が使用されます。

部分的にラベリングされたデータセットを使用する

すでに部分的にラベリングされている拡張マニフェストを使用すると、連鎖によるメリットが得られます。[ラベル属性名] チェックボックスをオンにして、マニフェストの名前と一致するように名前を設定します。

API を使用する場合の手順は、連鎖ジョブを開始する場合と同じです。ただし、以前のジョブの出力マニフェストを使用せずに、必ずマニフェストを S3 バケットにアップロードして使用してください。

マニフェストの [ラベルの属性名] の値は、上記で説明した命名の考慮事項に準拠している必要があります。