SageMaker Ground Truthの画像ジョブの仕組みを調査した

2024.06.07

NTT東日本の中村です。

SageMaker Ground Truthのラベリングジョブを管理しているのですが、画像分類のタスクの配分とジョブの連鎖について調査してみました。 ちなみに、動画フレームのジョブについては、こちらの記事で触れています。

概要

社内のプロジェクトでSageMaker Ground Truthのラベリングジョブを実行しており、同じようなテスト環境を構築しました。 前回は動画フレームからGround Truthが自動的にスライスし、ラベル付けを行っていましたが、今回は予めスライス済の画像を用意し、データセットとして読み込ませる手法を取りました。

静止画のオブジェクト検出の特徴

動画フレームと静止画の2つのオブジェクト検出手法で、大まかな違いを紹介します。

「次を予測」等の、フレーム前後を補完するツールは存在しない

一連のスライスしたフレームをコマ送りでラベル付けを行いますが、「次を予測(Pregdict next)」というツールで 現在のフレームの矩形を元に、次のフレームの矩形を予測する機能がついていました。 静止画の場合、画像の前後関係は考慮されないため、このツールが存在しません。

動画フレーム

動画フレームのラベル付け画面です。

静止画

動画フレームには存在した、Predict Nextツールや、前のフレームを次のフレームにコピーする機能等が存在しません。

Gyazo

静止画群のラベリングで、データのラベル付けの自動化が使用できる

ジョブ作成時に、ラベル自動化のボタンが追加され、EC2で動作する機械学習を補助的に使用し、矩形の検出をサポートする機能が使えるようになります。 元となる、ラベル付けの完了したデータを元に推論を行います。最小で1250程のデータが必要との事です。 また、EC2で推論を行うため、追加コストも発生します。

自動データラベリングに許容される最小のオブジェクト数は 1,250 ですが、少なくとも 5,000 個のオブジェクトを指定することを強くお勧めします。

データフローオブジェクトの柔軟な調整が可能

動画フレームではNumberOfHumanWorkersPerDataObjectの値が1固定、つまり1つの動画フレームを処理できるワーカは一人と決まっていましたが、静止画ではこの値が変更可能となり、複数名が重複してラベル付けを行えるようになりました。

MaxConcurrentTaskCountの設定

今回は、MaxConcurrentTaskCountの調整も行ってみます。 MaxConcurrentTaskCountを指定することで、1タスク辺りに割り当てられる静止画の数を制御できます。

MaxConcurrentTaskCount は、人間のワーカーが同時にラベル付けできるデータオブジェクトの最大数を定義します。コンソールを使用する場合、このパラメータは 1,000 に設定されます。CreateLabelingJob を使用した場合は、このパラメータを 1~1,000 の範囲の任意の整数に設定できます。

例えば、100枚の静止画をデータセットとしたジョブが存在し、ワーカーが10人居た場合、1タスクを10枚に設定すると、一人1タスクで効率良くラベル付けを進めることができます。 これが1タスク100枚になってしまうと、一人のワーカだけが忙しく、残りのワーカーは手が空いてしまうため、効率良く進めることが出来ません。

ただし、上記のコメントにもある通り、MaxConcurrentTaskCountはマネージメントコンソールからジョブを作成した場合、1000となり、CreateLabelingJobのAPI経由でのみ調整が可能です。 途中で変更もできないようです(UpdateLaberingJobというAPIが存在しない)。

その他

output.manifestに出力されるデータ形式が異なるので、動画フレームからそのまま置き換えができる訳でもなく、一手間必要になります。

調査してみた

今回の調査のシナリオです。

  • 静止画のオブジェクト検出でテストする
  • Amazon Cognitoを利用した Private WorkForce(三人)
  • NumberOfHumanWorkersPerDataObjectは1で行う(=一つの画像を数人で作業することは無い)
  1. MaxConcurrentTaskCountが1000の時の、ワーカーへのタスク割当の内容を確認する
    1. データソースとして50の画像(1から50の数字が書かれている)を用意し、S3にアップロードしておく
    2. 50の静止画をデータセットとして、Ground Truthのコンソールからジョブを作成する。(MaxConcurrentTaskCount=1000)
    3. 各ワーカーが1タスクごとに何枚の画像を割り当てられているか、チェックする
  2. MaxConcurrentTaskCountが10の時の、ワーカーへのタスク割当の内容を確認する
    1. 50の静止画をデータセットとして、Ground TruthのCreateLabelingJobのAPI経由でジョブを作成する。(MaxConcurrentTaskCount=10)
    2. 各ワーカーが1タスクごとに何枚の画像を割り当てられているか、チェックする
    3. ジョブで「3」の数字に矩形を追加する(「33」は矩形が2つになる)
    4. ジョブを完了し、output.manifestの内容を確認する
  3. 「2」で作成したジョブを連鎖して、Ground Truthのコンソールから調整ジョブを作成し、反映を確認する
    1. 「2」で作成したジョブを連鎖して調整ジョブとし、Ground Truthのコンソールからジョブを作成する。 このとき、「3と、4にも矩形を付ける」ように修正する。
    2. ジョブで「4」の数字に矩形を追加する(結果、「33」、「34」、「43」、「44」は矩形が2つになる)
    3. ジョブを完了し、output.manifestの内容を確認する
  4. データセットに追加の画像を設定してジョブを連鎖し、output.manifestの反映を確認する
    1. データソースとして、追加の50の画像(51-100の数字が書かれている)を用意し、S3にアップロードする
    2. 「3」で完了したoutput.manifestを編集し、50の画像を追加データソースとして読み込ませる
    3. 100枚の静止画をデータセットとして、「3」で作成したジョブを連鎖して、Ground Truthのコンソールからジョブを作成する。
    4. ジョブで、追加された51-100の画像に「3」「4」の矩形を追加する
    5. ジョブを完了し、output.manifestの内容を確認する

 

S3バケットはこのような階層になっています。input側のdatasetと、output側のjobのフォルダは、分離した方が管理しやすくなります。

.
├── dataset
│   ├── 1to50
│   │   ├── output_frame_0001.jpg
│   │   ├── output_frame_0002.jpg
│   │   └── ////etc
│   └── 50to100
│         ├── output_frame_0051.jpg
│         ├── output_frame_0052.jpg
│         └── ////etc
└── job
    ├── image-job-first (MaxConcurrentTaskCount=1000のジョブ)
    ├── image-job-second (MaxConcurrentTaskCount=10のジョブ)
    ├── image-job-third-chain (連鎖した調整ジョブ)
    └── image-job-fourth-chain (連鎖したデータセット追加ジョブ)

MaxConcurrentTaskCountが1000の時の、ワーカーへのタスク割当の内容を確認する

データソースとして50の画像(1から50の数字が書かれている)を用意し、S3にアップロードしておく

動画フレームの記事の動画を流用しています。

S3にアップロードします。

 

50の静止画をデータセットとして、Ground Truthのコンソールからジョブを作成する

マネジメントコンソールで作成するので、MaxConcurrentTaskCountは1000に設定されます。

効果は低そうですが、「自動データラベリング」を有効にします。 下の項目は、NumberOfHumanWorkersPerDataObjectに相当するものです。

 

ジョブを開始しました。それぞれのワーカーにタスクが割り当てられていることが解ります。

各ワーカーが1タスクごとに何枚の画像を割り当てられているか、チェックする

3に矩形をつけていきますが、終わる気配が無いので、どんどん進めていきます。

48のデータオブジェクトを処理した時点で、タスクが完了しました。 残り2のデータオブジェクトは、何もしていないtest2、test3ユーザが画面に表示している分と思われます。

test2、test3ユーザもデータオブジェクトを処理すると、ジョブが完了しました。

現状は、1つのタスクに未処理のものがある限り、同じタスクに参加しているユーザであれば、好きなだけ処理を行えることが解ります。

MaxConcurrentTaskCountが10の時の、ワーカーへのタスク割当の内容を確認する

MaxConcurrentTaskCountを10に制限してみます。 同じデータセットから、CreateLabelingJobのAPI経由でジョブを作成します。

長々と書きましたが、MaxConcurrentTaskCount: 10である所だけがポイントです。

APIで実行する前に、ラベル情報のJSONと、ラベルUIのliquidテンプレートを用意し、S3にアップロードします。

S3://hoge/label/data.json

{"document-version":"2021-05-13","labels":[{"label":"three"}]}

S3://hoge/label/template.liquid

<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22https%3A%2F%2Fassets.crowd.aws%2Fcrowd-html-elements.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
<crowd-form>
  <crowd-bounding-box
    name="boundingBox"
    src="{{ task.input.taskObject | grant_read_access }}"
    header="3を囲んでください"
    labels="{{ task.input.labels | to_json | escape }}"
  >
    <full-instructions header="Bounding box instructions">
      <ol><li><strong>Inspect</strong> the image</li><li><strong>Determine</strong> if the specified label is/are visible in the picture.</li><li><strong>Outline</strong> each instance of the specified label in the image using the provided “Box” tool.</li></ol><ul><li>Boxes should fit tight around each object</li><li>Do not include parts of the object are overlapping or that cannot be seen, even though you think you can interpolate the whole shape.</li><li>Avoid including shadows.</li><li>If the target is off screen, draw the box up to the edge of the image.</li></ul><p><img src="https://a.b.cdn.console.awsstatic.com/a/v1/RXIU2KIKPUTEU7TQ5DQOX6O3DNMPRQXILCPUDLIQKIYSM7STA3OA/src/images/bounding-box-good-example.png" style="max-width:100%" alt="Bounding box good example"></p><h2><span style="color: rgb(0, 138, 0);">Good Example</span></h2><p><img src="[object Object]" style="max-width:100%" alt="Bounding box bad example"></p><h2><span style="color: rgb(230, 0, 0);">Bad Example</span></h2>
    </full-instructions>
    <short-instructions>
      <h3><span style="color: rgb(0, 138, 0);">Good example</span></h3><p>Enter description of a correct bounding box label</p><p><img src="https://a.b.cdn.console.awsstatic.com/a/v1/RXIU2KIKPUTEU7TQ5DQOX6O3DNMPRQXILCPUDLIQKIYSM7STA3OA/src/images/quick-instructions-example-placeholder.png" style="max-width:100%" alt="Add image here"></p><h3><span style="color: rgb(230, 0, 0);">Bad example</span></h3><p>Enter description of an incorrect bounding box label</p><p><img src="https://a.b.cdn.console.awsstatic.com/a/v1/RXIU2KIKPUTEU7TQ5DQOX6O3DNMPRQXILCPUDLIQKIYSM7STA3OA/src/images/quick-instructions-example-placeholder.png" style="max-width:100%" alt="Add image here"></p>
    </short-instructions>
  </crowd-bounding-box>
</crowd-form>

createLabelingJobs.mjs

import {
  SageMakerClient,
  CreateLabelingJobCommand,
} from "@aws-sdk/client-sagemaker";

// https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sagemaker/command/CreateLabelingJobCommand/

const client = new SageMakerClient({ region: "ap-northeast-1" });
const input = {
  // CreateLabelingJobRequest
  LabelingJobName: "image-job-second", // required
  LabelAttributeName: "image-job-second", // required
  InputConfig: {
    DataSource: {
      S3DataSource: {
        ManifestS3Uri:
          "s3://hoge/dataset/1to50/dataset-20240605T174303.manifest", // required
      },
    },
  },
  OutputConfig: {
    S3OutputPath:
      "s3://hoge/job/", // required
  },
  RoleArn:
    "arn:aws:iam::hoge:role/service-role/AmazonSageMaker-ExecutionRole-20231019T170624", // required
  LabelCategoryConfigS3Uri:
    "s3://hoge/label/data.json",
  StoppingConditions: {
    MaxPercentageOfInputDatasetLabeled: 100,
  },
  LabelingJobAlgorithmsConfig: {
    LabelingJobAlgorithmSpecificationArn:
      "arn:aws:sagemaker:region:027400017018:labeling-job-algorithm-specification/object-detection", // required
    // InitialActiveLearningModelArn: "STRING_VALUE", // 前回のアクティブラーニングのARN
  },
  HumanTaskConfig: {
    UiConfig: {
      UiTemplateS3Uri:
        "s3://hoge/label/template.liquid",
    },
    // HumanTaskConfig
    WorkteamArn:
      "arn:aws:sagemaker:ap-northeast-1:hoge:workteam/private-crowd/inspection", // required
    PreHumanTaskLambdaArn:
      "arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-BoundingBox", // required
    TaskTitle: "3を矩形で囲んで下さい", // required
    TaskDescription: "Image object detection", // required
    NumberOfHumanWorkersPerDataObject: 1, // required
    TaskTimeLimitInSeconds: 28800, // required
    TaskAvailabilityLifetimeInSeconds: 864000,
    MaxConcurrentTaskCount: 10,
    AnnotationConsolidationConfig: {
      AnnotationConsolidationLambdaArn:
        "arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-BoundingBox",
    },
  },
};
const command = new CreateLabelingJobCommand(input);
const response = await client.send(command);
console.log(response);
node --experimental-modules createLabelingJobs.mjs
{
  '$metadata': {
    httpStatusCode: 200,
    requestId: 'f7ab2edc-1ff0-4d47-903d-9bd81891e634',
    extendedRequestId: undefined,
    cfId: undefined,
    attempts: 1,
    totalRetryDelay: 0
  },
  LabelingJobArn: 'arn:aws:sagemaker:ap-northeast-1:hoge:labeling-job/image-job-second'
}

先ほどと同じ様に、3ユーザに分かれて処理を開始します。

test1ユーザが8件処理を行った所で、test1ユーザのタスクが完了しました。 リロードしても、タスクが表示されません。

test2、test3ユーザが画面に出ていたデータオブジェクトを処理したところ、全員のタスクが完了になりました。 test1が8件、test2が1件、test3が1件、合計10件処理が完了しています。

 

3分ほど経過すると、全員に新しいタスクが割り当てられていました。

test1ユーザが4件、test2ユーザが3件、test3ユーザが3件、合計10件でタスクが完了しました。 設定の通り、1つのタスク内の画像の数は、MaxConcurrentTaskCountにより制御できるようです。

output.manifestを確認しました。 JSON LINESの中で、annotationsの項目に、矩形が配列として格納されています。33だけ、配列の要素が2つ存在します。

output.manifest

{"source-ref":"s3://hoge/dataset/1to50/output_frame_0001.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.282150","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0002.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.429673","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0003.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":196,"left":397,"height":207,"width":155}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.606657","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0004.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:00:30.976891","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0005.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.285016","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0006.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:11:08.602026","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0007.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.609502","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0008.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.336632","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0009.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.432566","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0010.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.286465","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0011.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.652620","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0012.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.334639","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0013.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":199,"left":473,"height":207,"width":152}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:11:08.602794","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0014.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.430393","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0015.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.333969","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0016.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:25:57.839722","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0017.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.335960","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0018.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.428886","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0019.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.431120","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0020.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.285794","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0021.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.433243","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0022.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.654050","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0023.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":203,"left":481,"height":207,"width":133}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.283633","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0024.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.428137","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0025.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.105141","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0026.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.331116","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0027.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.651157","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0028.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.104430","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0029.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.331822","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0030.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":207,"left":298,"height":214,"width":169}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.106585","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0031.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":183,"left":325,"height":239,"width":144}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.332555","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0032.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":183,"left":317,"height":243,"width":144}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.105861","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0033.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":203,"left":317,"height":207,"width":156},{"class_id":0,"top":195,"left":465,"height":219,"width":160}]},"image-job-second-metadata":{"objects":[{"confidence":0},{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.337344","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0034.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":191,"left":313,"height":227,"width":156}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.651914","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0035.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":195,"left":321,"height":219,"width":148}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:25:57.840593","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0036.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":207,"left":325,"height":207,"width":140}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.653332","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0037.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":187,"left":321,"height":219,"width":152}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.333272","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0038.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":191,"left":328,"height":219,"width":137}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.655474","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0039.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":183,"left":325,"height":235,"width":136}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.608110","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0040.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.284335","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0041.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.656166","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0042.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.654741","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0043.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":199,"left":473,"height":204,"width":149}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.282918","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0044.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.431844","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0045.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:25:57.839024","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0046.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.103672","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0047.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.608833","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0048.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:00:30.976177","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0049.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.335296","job-name":"labeling-job/image-job-second"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0050.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.607393","job-name":"labeling-job/image-job-second"}}

作成したジョブを連鎖して、Ground Truthのコンソールから調整ジョブを作成する

先程のジョブを連鎖して、調整ジョブを作成します。 調整ジョブとは、既につけられた教師データを確認し、必要であれば修正(矩形の位置を直すなど)を行う機能です。

MaxConcurrentTaskCountは1000で行います。ジョブの作成をコンソールから行います。 APIからも作成可能ですが、調整ジョブ用のUIテンプレートの作成等、かなり手間が掛かります。

Jobの名前を、image-job-third-chainで設定しました。 自動データラベリングのチェックを外すと、既存ラベルの表示のオプションが表示されます。 今回は3の矩形に加えて、4の矩形も追加します。既存ラベルを表示するようにします。

fourのラベルを追加しました。

ジョブで「4」の数字に矩形を追加する(結果、「33」、「34」、「43」、「44」は矩形が2つになる)

3のラベルは既に表示されています。領域が重ならないように、4に矩形を加えます。

ジョブを完了し、output.manifestの内容を確認する

s3://hoge/job/image-job-third-chain/manifests/output/output.manifest

{"source-ref":"s3://hoge/dataset/1to50/output_frame_0001.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.282150","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:34:10.637802","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0002.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.429673","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.641007","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0003.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":196,"left":397,"height":207,"width":155}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.606657","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":196,"left":397,"height":207,"width":155}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.023764","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0004.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:00:30.976891","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":211,"left":395,"height":195,"width":164}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.645977","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0005.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.285016","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.024458","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0006.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:11:08.602026","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.649494","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0007.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.609502","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:38:53.515271","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0008.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.336632","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.643819","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0009.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.432566","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.790306","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0010.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.286465","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.640288","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0011.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.652620","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.641687","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0012.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.334639","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.795106","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0013.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":199,"left":473,"height":207,"width":152}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:11:08.602794","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":199,"left":473,"height":207,"width":152}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.799425","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0014.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.430393","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":199,"left":473,"height":219,"width":164}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.021568","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0015.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.333969","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.646674","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0016.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:25:57.839722","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.020835","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0017.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.335960","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.020150","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0018.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.428886","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:38:53.512391","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0019.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.431120","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.793075","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0020.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.285794","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.647348","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0021.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.433243","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.642362","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0022.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.654050","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.795816","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0023.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":203,"left":481,"height":207,"width":133}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.283633","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":203,"left":481,"height":207,"width":133}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.648800","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0024.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.428137","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":219,"left":481,"height":195,"width":141}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:38:53.516731","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0025.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.105141","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.645267","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0026.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.331116","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.791014","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0027.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.651157","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.792374","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0028.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.104430","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:38:53.514591","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0029.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.331822","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.793722","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0030.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":207,"left":298,"height":214,"width":169}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.106585","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":207,"left":298,"height":214,"width":169}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.022285","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0031.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":183,"left":325,"height":239,"width":144}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.332555","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":183,"left":325,"height":239,"width":144}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:38:53.515986","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0032.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":183,"left":317,"height":243,"width":144}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.105861","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":183,"left":317,"height":243,"width":144}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.644557","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0033.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":203,"left":317,"height":207,"width":156},{"class_id":0,"top":195,"left":465,"height":219,"width":160}]},"image-job-second-metadata":{"objects":[{"confidence":0},{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.337344","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":203,"left":317,"height":207,"width":156},{"class_id":0,"top":195,"left":465,"height":219,"width":160}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0},{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.650219","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0034.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":191,"left":313,"height":227,"width":156}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.651914","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":191,"left":313,"height":227,"width":156},{"class_id":1,"top":191,"left":473,"height":232,"width":145}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0},{"confidence":0}],"class-map":{"0":"three","1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.643105","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0035.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":195,"left":321,"height":219,"width":148}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:25:57.840593","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":195,"left":321,"height":219,"width":148}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.639520","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0036.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":207,"left":325,"height":207,"width":140}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.653332","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":207,"left":325,"height":207,"width":140}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.797286","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0037.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":187,"left":321,"height":219,"width":152}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.333272","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":187,"left":321,"height":219,"width":152}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.019435","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0038.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":191,"left":328,"height":219,"width":137}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.655474","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":191,"left":328,"height":219,"width":137}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.797994","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0039.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":183,"left":325,"height":235,"width":136}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.608110","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":183,"left":325,"height":235,"width":136}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.018682","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0040.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.284335","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":211,"left":317,"height":188,"width":152}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:38:53.513155","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0041.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.656166","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":203,"left":325,"height":196,"width":136}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:38:53.513903","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0042.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T09:58:24.654741","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":195,"left":297,"height":227,"width":180}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:34:10.638546","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0043.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":199,"left":473,"height":204,"width":149}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.282918","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":0,"top":199,"left":473,"height":204,"width":149},{"class_id":1,"top":199,"left":317,"height":200,"width":152}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0},{"confidence":0}],"class-map":{"0":"three","1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.023027","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0044.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.431844","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":207,"left":328,"height":215,"width":149},{"class_id":1,"top":211,"left":477,"height":207,"width":164}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0},{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.796542","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0045.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:25:57.839024","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":207,"left":321,"height":207,"width":152}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.800151","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0046.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:05:52.103672","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":211,"left":328,"height":195,"width":137}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:38:53.517436","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0047.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.608833","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":203,"left":317,"height":200,"width":152}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.798711","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0048.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:00:30.976177","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":211,"left":325,"height":188,"width":136}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.794414","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0049.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:15:17.335296","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[{"class_id":1,"top":215,"left":309,"height":188,"width":160}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"1":"four"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.648064","job-name":"labeling-job/image-job-third-chain","adjustment-status":"adjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0050.jpg","image-job-second":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.607393","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"image_size":[{"width":960,"height":540,"depth":3}],"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:36:32.791702","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}

抜粋して、33番と34番のデータを確認します。

33番は、元々2つの矩形が存在し、調整ジョブでも何も作業しませんでした。 image-job-third-chain.annotationsで、最初の矩形が継承されているのが解ります。

output_frame_0033.jpg

{
    "source-ref": "s3://hoge/dataset/1to50/output_frame_0033.jpg",
    "image-job-second": {
        "annotations": [
            {
                "class_id": 0,
                "top": 203,
                "left": 317,
                "height": 207,
                "width": 156
            },
            {
                "class_id": 0,
                "top": 195,
                "left": 465,
                "height": 219,
                "width": 160
            }
        ]
    },
    "image-job-second-metadata": {
        //省略
    },
    "image-job-third-chain": {
        "annotations": [
            {
                "class_id": 0,
                "top": 203,
                "left": 317,
                "height": 207,
                "width": 156
            },
            {
                "class_id": 0,
                "top": 195,
                "left": 465,
                "height": 219,
                "width": 160
            }
        ]
    },
    "image-job-third-chain-metadata": {
        //省略
    }
}

34番は、元々1つの矩形が存在し、調整ジョブで追加の矩形が1つ追加されました。 同じくimage-job-third-chain.annotationsで、継承された矩形と、新しい矩形で、2つの矩形が存在することが解ります。

output_frame_0034.jpg

{
    "source-ref": "s3://hoge/dataset/1to50/output_frame_0034.jpg",
    "image-job-second": {
        "annotations": [
            {
                "class_id": 0,
                "top": 191,
                "left": 313,
                "height": 227,
                "width": 156
            }
        ]
    },
    "image-job-second-metadata": {
        //省略
    },
    "image-job-third-chain": {
        "annotations": [
            {
                "class_id": 0,
                "top": 191,
                "left": 313,
                "height": 227,
                "width": 156
            },
            {
                "class_id": 1,
                "top": 191,
                "left": 473,
                "height": 232,
                "width": 145
            }
        ]
    },
    "image-job-third-chain-metadata": {
        //省略
    }
}

データセットに追加の画像を設定してジョブを連鎖し、output.manifestの反映を確認する

最後に、追加学習を想定して、50のラベル付けが必要な画像を追加してみます。

データソースとして、追加の50の画像(51-100の数字が書かれている)を用意し、S3にアップロードする

「3」で完了したoutput.manifestを編集し、50の画像を追加データソースとして読み込ませる

3のoutput.manifestは、「s3://hoge/job/image-job-third-chain/manifests/output/output.manifest」に保存されています。 ここに追加データソースを50行加えて、リネームして保存しておきます。

代替マニフェストファイルを指定することはできません。前のジョブの出力マニフェストを手動で編集して新しい項目を追加してから、連鎖ジョブを開始します。 Amazon S3 URI を使用すると、Amazon S3 バケット内のマニフェストを格納している場所を見つけやすくなります。 そこからマニフェストファイルをダウンロードして、コンピュータ上でローカルに編集し、新しいバージョンをアップロードして置き換えます。

s3://hoge/job/image-job-third-chain/manifests/output/custom-output.manifest

{"source-ref":"s3://hoge/dataset/1to50/output_frame_0001.jpg","image-job-second":{"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T23:24:53.282150","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:34:10.637802","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0002.jpg","image-job-second":{"annotations":[]},"image-job-second-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:12:14.429673","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"annotations":[]},"image-job-third-chain-metadata":{"objects":[],"class-map":{},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:37:44.641007","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
{"source-ref":"s3://hoge/dataset/1to50/output_frame_0003.jpg","image-job-second":{"annotations":[{"class_id":0,"top":196,"left":397,"height":207,"width":155}]},"image-job-second-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-05T10:04:46.606657","job-name":"labeling-job/image-job-second"},"image-job-third-chain":{"annotations":[{"class_id":0,"top":196,"left":397,"height":207,"width":155}]},"image-job-third-chain-metadata":{"objects":[{"confidence":0}],"class-map":{"0":"three"},"type":"groundtruth/object-detection","human-annotated":"yes","creation-date":"2024-06-06T01:35:21.023764","job-name":"labeling-job/image-job-third-chain","adjustment-status":"unadjusted"}}
....
//ここから下を追加
{"source-ref":"s3://hoge/dataset/51to100/output_frame_0051.jpg"}
{"source-ref":"s3://hoge/dataset/51to100/output_frame_0052.jpg"}
....

100の静止画をデータセットとして、「3」で作成したジョブを連鎖して、Ground Truthのコンソールからジョブを作成する

前回のジョブをクローンして、「image-job-fourth-chain」ジョブを作成します。 ラベル属性名は前回のラベル属性名(一般的には前回のジョブ名)を使用しています。 manifestの1-50は、全て前回のラベル属性名が存在し、新規追加した51-100のデータにはラベル属性が存在しないので、結果として51-100のデータだけがラベル付けの対象となります。 デフォルトのラベル属性名を使うと、自動で全てがラベル付の対象となります。

デフォルトでは、Ground Truth で選択されているラベルの属性名が使用されます。そのラベル属性名に接続されたデータを含まないデータオブジェクトはすべてラベル付けされます。 マニフェストに存在しないラベル属性名を使用すると、データセット内のオブジェクトはすべて、ジョブで処理されます。

 

マニフェストファイルは、先ほど作成したcustom-output.manifest.jsonを使用します。

調整ジョブでオフになっていた自動データラベリングを、再度有効にします。

同時に、前回のラベル属性を指定することで、ラベル付けのツールに「three」「four」のラベルを表示することができます。

ジョブを作成すると、オブジェクトが100で認識されました。

ジョブで、追加された画像に「3」「4」の矩形を追加する

ジョブを開始すると、51-100の画像のみ表示されます。 「3」と「4」にのみ矩形を追加する形で処理を進めていきます。

ジョブを完了し、output.manifestの内容を確認する

s3://hoge/job/image-job-fourth-chain/manifests/output/output.manifestの中身を確認します。 抜粋して紹介します。

1-50のデータに変化はありませんでした。

74番の画像は、今回4の矩形を追加しています。指定したラベル属性名でアノテーションデータが作成されていることが解ります。

output_frame_0074.jpg

{
    "source-ref": "s3://hoge/dataset/51to100/output_frame_0074.jpg",
    "image-job-third-chain": {
        "image_size": [
            {
                "width": 960,
                "height": 540,
                "depth": 3
            }
        ],
        "annotations": [
            {
                "class_id": 1,
                "top": 199,
                "left": 469,
                "height": 223,
                "width": 160
            }
        ]
    },
    "image-job-third-chain-metadata": {... }
}

まとめ

SageMaker Ground Truthの画像検出について、調査を行いました。

  • createLabelingJobのAPIでMaxConcurrentTaskCountの値を調整すると、1タスク内の画像の枚数を1から1000の間で調整できる。
    • タスクの粒度の設定となる。タスク毎の期限を細かく設定する時に有効と思われる
  • 1つのタスクをワーカー全員でシェアする。タスク内の画像を全て処理するとタスク完了となり、新規タスクが作成される
  • output.manifestは連鎖を行うことにより、最新のジョブのannotationの中に、これまで全ての矩形の情報が蓄積されるようだ

MaxConcurrentTaskCountと、連鎖の仕組みについての理解が深まったと思います。