COCO データセットの変換 - Rekognition

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

COCO データセットの変換

COCO は、大規模なオブジェクト検知、セグメンテーション、キャプションデータセットを指定するための形式です。この Python のでは、COCO オブジェクト検知形式のデータセットを Amazon Rekognition Custom Labels 境界ボックス形式のマニフェストファイルに変換する方法を示しています。このセクションには、独自のコードを記述するために使用できる情報も含まれています。

COCO 形式の JSON ファイルは、データセット全体の情報を提供する 5 つのセクションで構成されています。詳細については、「COCO 形式」を参照してください。

  • info - データセットに関する一般情報。

  • licenses - データセット内のイメージのライセンス情報。

  • images - データセット内のイメージのリスト。

  • annotations - データセット内のすべてのイメージに含まれる注釈 (境界ボックスを含む) のリスト。

  • categories - ラベルカテゴリのリスト。

Amazon Rekognition Custom Labels マニフェストファイルを作成するには imagesannotations、および categories のリストの情報が必要です。

Amazon Rekognition Custom Labels マニフェストファイルは JSON 行形式で、各行にはイメージの 1 つ以上のオブジェクトの境界ボックスとラベル情報が含まれます。詳細については、「マニフェストファイル内のオブジェクトのローカリゼーション」を参照してください。

COCO オブジェクトをカスタムラベルの JSON 行にマッピングする

COCO 形式のデータセットを変換するには、COCO データセットを Amazon Rekognition Custom Labels マニフェストファイルにマッピングして、オブジェクトのローカリゼーションを行います。詳細については、「マニフェストファイル内のオブジェクトのローカリゼーション」を参照してください。イメージごとに JSON 行を作成するには、マニフェストファイルに COCO データセット imageannotation、および category オブジェクトフィールド ID をマッピングする必要があります。

次は、COCO マニフェストファイルの例です。詳細については、「COCO 形式」を参照してください。

{ "info": { "description": "COCO 2017 Dataset","url": "http://cocodataset.org","version": "1.0","year": 2017,"contributor": "COCO Consortium","date_created": "2017/09/01" }, "licenses": [ {"url": "http://creativecommons.org/licenses/by/2.0/","id": 4,"name": "Attribution License"} ], "images": [ {"id": 242287, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/xxxxxxxxxxxx.jpg", "flickr_url": "http://farm3.staticflickr.com/2626/xxxxxxxxxxxx.jpg", "width": 426, "height": 640, "file_name": "xxxxxxxxx.jpg", "date_captured": "2013-11-15 02:41:42"}, {"id": 245915, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/nnnnnnnnnnnn.jpg", "flickr_url": "http://farm1.staticflickr.com/88/xxxxxxxxxxxx.jpg", "width": 640, "height": 480, "file_name": "nnnnnnnnnn.jpg", "date_captured": "2013-11-18 02:53:27"} ], "annotations": [ {"id": 125686, "category_id": 0, "iscrowd": 0, "segmentation": [[164.81, 417.51,......167.55, 410.64]], "image_id": 242287, "area": 42061.80340000001, "bbox": [19.23, 383.18, 314.5, 244.46]}, {"id": 1409619, "category_id": 0, "iscrowd": 0, "segmentation": [[376.81, 238.8,........382.74, 241.17]], "image_id": 245915, "area": 3556.2197000000015, "bbox": [399, 251, 155, 101]}, {"id": 1410165, "category_id": 1, "iscrowd": 0, "segmentation": [[486.34, 239.01,..........495.95, 244.39]], "image_id": 245915, "area": 1775.8932499999994, "bbox": [86, 65, 220, 334]} ], "categories": [ {"supercategory": "speaker","id": 0,"name": "echo"}, {"supercategory": "speaker","id": 1,"name": "echo dot"} ] }

次の図では、データセットの COCO データセットのリストが、イメージの Amazon Rekognition Custom Labels JSON 行にどのようにマッピングされるかを示しています。一致する色は、1 つのイメージの情報を示しています。

単一の JSON 行の COCO オブジェクトを取得するには
  1. イメージリスト内の各イメージについて、注釈リストから、注釈フィールド image_id の値がイメージ id フィールドと一致する注釈を取得します。

  2. ステップ 1 で一致した注釈ごとに、categories リストを読み込み、category フィールド id の値が annotation オブジェクトの category_id フィールドと一致する各 category を取得します。

  3. 一致した imageannotation、および category オブジェクトを使用して、イメージの JSON 行を作成します。フィールドをマッピングするには、「COCO オブジェクトフィールドをカスタムラベル JSON 行オブジェクトフィールドにマッピングする」を参照してください。

  4. images リスト内の各 image オブジェクトに JSON 行が作成されるまで、ステップ 1~3 を繰り返します。

サンプルコードについては、「COCO データセットの変換」を参照してください。

COCO オブジェクトフィールドをカスタムラベル JSON 行オブジェクトフィールドにマッピングする

Amazon Rekognition Custom Labels JSON 行の COCO オブジェクトを特定したら、COCO オブジェクトフィールドをそれぞれの Amazon Rekognition Custom Labels JSON 行オブジェクトフィールドにマッピングする必要があります。次の Amazon Rekognition Custom Labels JSON 行の例では、1 つのイメージ (id=000000245915) を前述の COCO JSON の例にマッピングしています。以下の情報に注意してください。

  • source-ref は Amazon S3 バケット内のイメージの場所です。COCO のイメージが Amazon S3 バケットに保存されていない場合は、それらを Amazon S3 バケットに移動する必要があります。

  • annotations リストには、イメージのオブジェクトごとに 1 つの annotation オブジェクトが含まれています。annotation オブジェクトには、境界ボックス情報 (topleftwidthheight) とラベル識別子 (class_id) が含まれます。

  • ラベル識別子 (class_id) はメタデータ内の class-map リストにマッピングされます。イメージに使用されているラベルが一覧表示されます。

{ "source-ref": "s3://custom-labels-bucket/images/000000245915.jpg", "bounding-box": { "image_size": { "width": 640, "height": 480, "depth": 3 }, "annotations": [{ "class_id": 0, "top": 251, "left": 399, "width": 155, "height": 101 }, { "class_id": 1, "top": 65, "left": 86, "width": 220, "height": 334 }] }, "bounding-box-metadata": { "objects": [{ "confidence": 1 }, { "confidence": 1 }], "class-map": { "0": "Echo", "1": "Echo Dot" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "my job" } }

以下の情報を使用して、Amazon Rekognition Custom Labels マニフェストファイルフィールドを COCO データセット JSON フィールドにマッピングします。

source-ref

イメージの場所の S3 形式の URL。イメージは S3 バケットに保存されている必要があります。詳細については、「source-ref」を参照してください。coco_url COCO フィールドが S3 バケットの場所を指している場合、coco_url の値には source-ref の値を使用できます。または、source-reffile_name (COCO) フィールドにマッピングし、イメージが保存されている場所に必要な S3 パスを変換コードに追加することもできます。

bounding-box

選択したラベルの属性名。詳細については、「bounding-box」を参照してください。

image_size

イメージサイズ (ピクセル単位) イメージリストの image オブジェクトにマッピングします。

  • height-> image.height

  • width-> image.width

  • depth-> Amazon Rekognition Custom Labels では使用されませんが、値を指定する必要があります。

annotations

annotation オブジェクトのリスト。イメージのオブジェクトごとに 1 つの annotation があります。

注釈

イメージのオブジェクトの 1 つのインスタンスの境界ボックス情報が含まれます。

  • class_id-> カスタムラベルの class-map リストへの数値 ID マッピング。

  • top -> bbox[1]

  • left -> bbox[0]

  • width -> bbox[2]

  • height -> bbox[3]

bounding-box-metadata

ラベル属性のメタデータ。ラベルとラベル ID が含まれています。詳細については、「bounding-box-metadata」を参照してください。

オブジェクト

イメージ内のオブジェクトの配列。インデックスによって annotations リストにマッピングされます。

オブジェクト
  • confidence->Amazon Rekognition Custom Labels では使用されませんが、値 (1) が必要です。

class-map

イメージ内で検知されたオブジェクトに適用されるラベル (クラス) のマップ。カテゴリリスト内のカテゴリオブジェクトにマッピングします。

type

groundtruth/object-detection を指定してください

human-annotated

yes または no を指定します。詳細については、「bounding-box-metadata」を参照してください。

creation-date -> image.date_captured

イメージの作成日時。COCO イメージリストの image.date_captured フィールドにマッピングされます。Amazon Rekognition Custom Labels では、creation-date の形式が Y-M-DTH:M:S であることを想定しています。

job-name

ユーザーが選択したジョブ名。