コンテンツへスキップ

インスタンス・セグメンテーション・データセットの概要

サポートされるデータセット形式

Ultralytics YOLO フォーマット

YOLO セグメンテーションモデルの学習に使用するデータセットのラベル形式は以下の通りである:

  1. 画像1枚につきテキストファイル1つ:データセットの各画像には、画像ファイルと同じ名前で拡張子が".txt "の対応するテキストファイルがある。
  2. 1オブジェクトにつき1行:テキストファイルの各行は、画像内の1つのオブジェクトインスタンスに対応します。
  3. 行ごとのオブジェクト情報:各行には、オブジェクト・インスタンスに関する以下の情報が含まれる:
    • オブジェクト・クラス・インデックス:オブジェクトのクラスを表す整数(例えば、0は人、1は車など)。
    • オブジェクトの境界座標:マスク領域の境界座標で、0から1の間で正規化される。

セグメンテーション・データセット・ファイルの1行のフォーマットは以下の通りである:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

この形式では <class-index> はオブジェクトのクラスのインデックスであり <x1> <y1> <x2> <y2> ... <xn> <yn> は、オブジェクトのセグメンテーションマスクの境界座標である。座標はスペースで区切られる。

以下は、3点セグメントと5点セグメントで構成される2つのオブジェクトを持つ1つの画像の、YOLO データセットフォーマットの例である。

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104

チップ

  • 各行の長さは同じである必要はない
  • 各セグメンテーション・ラベルは 最低3xy点: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

データセット YAML 形式

Ultralytics フレームワークは、検出モデルをトレーニングするためのデータセットとモデル構成を定義するために、YAML ファイル形式を使用します。以下は検出データセットを定義するために使用されるYAMLフォーマットの例です:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8-seg  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

# Classes (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

について train そして val フィールドは、それぞれトレーニング画像と検証画像を含むディレクトリへのパスを指定します。

names はクラス名の辞書である。名前の順序は、YOLO データセット・ファイル内のオブジェクト・クラス・インデックスの順序と一致する必要があります。

使用方法

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-seg.pt')  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data='coco8-seg.yaml', epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

対応データセット

対応データセット

  • COCO: オブジェクトの検出、セグメンテーション、キャプション付けのための包括的なデータセット。

  • COCO8セグ:COCOのコンパクトな8画像のサブセットは、セグメンテーションモデルのトレーニングを素早くテストするために設計されており、CIチェックやワークフローの検証に最適です。 ultralytics リポジトリ

  • Carparts-seg: 自動車部品のセグメンテーションに特化したデータセットで、自動車アプリケーションに最適。個々の自動車部品の詳細な注釈が付いた様々な自動車が含まれている。

  • Crack-seg: 様々な表面のひび割れをセグメンテーションするためのデータセット。インフラの保守や品質管理に不可欠で、構造物の弱点を特定するためのモデルを学習するための詳細な画像を提供する。

  • Package-seg: 様々な種類の包装材や形状のセグメンテーションに特化したデータセット。ロジスティクスや倉庫のオートメーションに特に有効で、パッケージのハンドリングや仕分けのシステム開発に役立つ。

独自のデータセットを追加する

独自のデータセットをお持ちで、Ultralytics YOLO 形式でセグメンテーションモデルの学習に使用したい場合は、上記の「Ultralytics YOLO 形式」で指定された形式に従っていることを確認してください。アノテーションを必要なフォーマットに変換し、YAML 設定ファイルでパス、クラス数、クラス名を指定します。

ラベルフォーマットの移植または変換

COCO データセット形式からYOLO 形式へ

次のコード・スニペットを使えば、よく使われるCOCOデータセット・フォーマットからYOLO ・フォーマットにラベルを簡単に変換できる:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir='path/to/coco/annotations/', use_segments=True)

この変換ツールを使って、COCO データセットまたは COCO フォーマットのデータセットをUltralytics YOLO フォーマットに変換することができる。

使用したいデータセットがあなたのモデルと互換性があり、必要なフォーマット規則に従っているかどうかを再チェックすることを忘れないでください。適切にフォーマットされたデータセットは、オブジェクト検出モデルをうまくトレーニングするために非常に重要です。

自動アノテーション

オートアノテーションは、事前にトレーニングされた検出モデルを使用してセグメンテーションデータセットを生成するための不可欠な機能です。手動でラベリングすることなく、多数の画像にすばやく正確に注釈を付けることができるため、時間と労力を節約できます。

検出モデルを使ったセグメンテーション・データセットの生成

Ultralytics フレームワークを使ってデータセットを自動注釈化するには、次のようにします。 auto_annotate 関数は以下のようになる:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model='sam_b.pt')

確かに、ここにコード・スニペットで更新された表がある:

議論 タイプ 説明 デフォルト
data str 注釈を付ける画像を含むフォルダへのパス。 None
det_model str, optional 事前にトレーニングされたYOLO 検出モデル。デフォルトは 'yolov8x.pt'. 'yolov8x.pt'
sam_model str, optional 事前にトレーニングされたSAM セグメンテーションモデル。デフォルトは 'sam_b.pt'. 'sam_b.pt'
device str, optional モデルを実行するデバイス。デフォルトは空の文字列(利用可能な場合はCPUまたはGPU)。 ''
output_dir str or None, optional 注釈付き結果を保存するディレクトリ。デフォルトは 'labels' と同じディレクトリにある 'data'. None

について auto_annotate 関数は、画像へのパスと、事前に学習された検出機能と SAM セグメンテーションモデルモデルを実行するデバイス、注釈付き結果を保存する出力ディレクトリ。

事前に訓練されたモデルのパワーを活用することで、オートアノテーションは、高品質のセグメンテーションデータセットを作成するために必要な時間と労力を大幅に削減することができます。この機能は、大規模な画像コレクションを扱う研究者や開発者にとって、手作業によるアノテーションよりもモデルの開発と評価に集中できるため、特に有用です。



作成日:2023-11-12 更新日:2024-04-18
作成者:glenn-jocher(8)

コメント