Data Annotation
データアノテーションでは、生データにクラス、ボックス、マスク、キーポイントなどの正解データを付与します。タスク別のアノテーション形式、ファイル形式、自動アノテーションを解説します。
データアノテーションとは、画像のクラス名、各オブジェクトを囲むボックスやポリゴン、人体のキーポイント、テキスト範囲のタグなど、教師あり学習モデルがデータから学習できるよう、未加工データに正解情報を付与するプロセスです。データラベリングの同義語であり、コンピュータービジョンチームは、ボックスやマスクなどの描画したジオメトリについては「アノテーション」と呼ぶ傾向があります。アノテーションには、人物またはモデルが描画するジオメトリやタグと、学習用にそれを保存するファイル形式の2つの要素があります。
タスク別のアノテーションの種類#
モデルが出力する必要のある内容によって、アノテーターが描画するものが決まります。詳細な作業には時間がかかるため、チームはモデルに必要な情報を含む最もシンプルなアノテーション形式を選びます。
- バウンディングボックス: 物体検出では、オブジェクトごとに1つのボックスとクラスを指定します。YOLO形式では、画像ごとに1つのテキストファイルを作成し、オブジェクトごとに
class x_center y_center width heightの行を記述して、画像サイズに対して0~1に正規化します。COCO JSONではピクセル単位で[x_min, y_min, width, height]を保存し、Pascal VOC XMLでは2つの角のピクセル座標を保存します。 - ポリゴンとマスク: インスタンスセグメンテーションでは輪郭を指定し、セマンティックセグメンテーションではピクセルごとにクラスを指定します。YOLOとCOCOではポリゴンを頂点のリストとして保存し、COCOでは混雑領域のマスクをランレングス符号化(RLE)でも保存します。
- クラスラベル: 画像分類では画像ごとに1つのクラスを指定します。多くの場合、画像を格納するフォルダー名として保存され、ImageNet形式の分類データセットのフォルダーレイアウトがこれに該当します。
- キーポイント: 姿勢推定では、各ランドマークのx、y位置と可視性フラグを指定します。COCOの人物アノテーションでは17個のキーポイントを指定し、それぞれに「未ラベル」「ラベル済みだが非表示」「可視」のフラグを付けます。
- 回転ボックス: 航空画像に写る船舶や車両など、回転したオブジェクトに合わせた4つの頂点です。回転バウンディングボックス検出に使用します。
アノテーションの精度は、小さなオブジェクトで特に重要です。20 × 20ピクセルのボックスを横方向と縦方向にそれぞれ3ピクセルずらすと、元のボックスとのintersection over union (IoU)は0.57に低下します。そのため、真のオブジェクトに一致する予測でも、COCOのmean average precision (mAP)で平均されるIoUしきい値10個のうち、0.60から0.95までの8つで見逃しと判定されます。各クラスを定義し、部分的に隠れたオブジェクトのボックスをどれだけぴったり囲むかなどの境界ケースを決める文書化されたガイドラインは、何千ものアノテーションの一貫性を保ちます。
画像以外のアノテーション#
- 動画: 複数オブジェクト追跡では、各オブジェクトを時間の経過とともに追跡するトラックIDで関連付け、すべてのフレームにボックスまたはマスクを付与します。
- LiDARと3D: 運転やロボティクスにおける3D物体検出では、点群内の立方体に中心、サイズ、進行方向の角度を指定します。
- テキスト: 固有表現抽出(NER)では、文字オフセットとエンティティタイプで範囲を指定します。感情分析などのタスクでは、文書ごとに1つのラベルを指定します。
- 音声: 音声認識では、タイムスタンプ付きの区間に書き起こしテキストまたは話者IDを付与します。
- モデルの選好: アノテーターが2つのモデル応答から優れた方を選び、人間のフィードバックによる強化学習(RLHF)で使用する比較データを作成します。
自動アノテーション#
モデル支援アノテーションでは、モデルの提案を人が確認して修正します。検出器は既知のクラスのボックスを提案し、MetaのSegment Anythingなどのプロンプト対応セグメンテーションモデルは、ボックスやクリックをマスクに変換するため、頂点を1つずつ指定してポリゴンをトレースする必要がありません。Ultralyticsパッケージのauto_annotate関数は、この2つを連携させます。YOLO26検出器がオブジェクトを検出して分類し、Ultralyticsパッケージで動作するSAM 2.1が各ボックスをYOLOセグメンテーション形式で保存されるポリゴンに変換します。
from pathlib import Path
from ultralytics.data.annotator import auto_annotate
from ultralytics.utils import ASSETS
# Detect objects in the bundled sample images, then turn each box into a SAM 2.1 polygon
auto_annotate(data=ASSETS, det_model="yolo26n.pt", sam_model="sam2.1_b.pt", output_dir="auto_labels")
# Read the annotation file written for the bus image
rows = Path("auto_labels/bus.txt").read_text().splitlines()
print(f"{len(rows)} objects annotated")
print(rows[0][:80])bus.txtの各行は、COCOクラスインデックスに続いて、0~1に正規化されたポリゴンの頂点のx、y座標ペアを記述します。注釈担当者が確認・修正してから学習できる形式です。デフォルトの信頼度しきい値0.25を下回る検出にはアノテーションが付かないため、見逃した物体は手動で描画する必要があります。Ultralytics Platformでは、クラス名だけを必要とする視覚言語モデルやオープンボキャブラリー検出器を使って検出データセットを自動アノテーションすることもできます。VLMベンチマーク結果は、実世界の画像に各モデルがどれほど正確にラベルを付けるかを示します。










