インスタンス・セグメンテーション・データセットの概要
サポートされるデータセット形式
Ultralytics YOLO フォーマット
YOLO セグメンテーションモデルの学習に使用するデータセットのラベル形式は以下の通りである:
- 画像1枚につきテキストファイル1つ:データセットの各画像には、画像ファイルと同じ名前で拡張子が".txt "の対応するテキストファイルがある。
- 1オブジェクトにつき1行:テキストファイルの各行は、画像内の1つのオブジェクトインスタンスに対応します。
- 行ごとのオブジェクト情報:各行には、オブジェクト・インスタンスに関する以下の情報が含まれる:
- オブジェクト・クラス・インデックス:オブジェクトのクラスを表す整数(例えば、0は人、1は車など)。
- オブジェクトの境界座標:マスク領域の境界座標で、0から1の間で正規化される。
セグメンテーション・データセット・ファイルの1行のフォーマットは以下の通りである:
このフォーマットでは <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 データセット・ファイル内のオブジェクト・クラス・インデックスの順序と一致する必要があります。
使用方法
例
対応データセット
対応データセット
- COCO:オブジェクト検出、セグメンテーション、キャプション付けのための包括的なデータセット。
- COCO8セグ:COCOのコンパクトな8画像のサブセットは、セグメンテーションモデルのトレーニングを素早くテストするために設計されており、CIチェックやワークフローの検証に最適です。
ultralytics
リポジトリ - COCO128-seg:インスタンスのセグメンテーションタスク用の小規模なデータセットで、セグメンテーション注釈付きの128枚のCOCO画像のサブセットを含む。
- Carparts-seg: 自動車部品のセグメンテーションに特化したデータセットで、自動車アプリケーションに最適。個々の自動車部品の詳細な注釈が付いた様々な自動車が含まれている。
- Crack-seg: 様々な表面のひび割れをセグメンテーションするためのデータセット。インフラの保守や品質管理に不可欠で、構造物の弱点を特定するためのモデルを学習するための詳細な画像を提供する。
- Package-seg: 様々な種類の包装材や形状のセグメンテーションに特化したデータセット。ロジスティクスや倉庫のオートメーションに特に有用で、パッケージのハンドリングや仕分けのシステム開発に役立つ。
独自のデータセットを追加する
独自のデータセットをお持ちで、Ultralytics YOLO 形式でセグメンテーションモデルの学習に使用したい場合は、上記の「Ultralytics YOLO 形式」で指定された形式に従っていることを確認してください。アノテーションを必要なフォーマットに変換し、YAML 設定ファイルでパス、クラス数、クラス名を指定します。
ラベルフォーマットの移植または変換
COCO データセット形式からYOLO 形式へ
次のコード・スニペットを使えば、よく使われるCOCOデータセット・フォーマットからYOLO ・フォーマットにラベルを簡単に変換できる:
例
この変換ツールを使って、COCO データセットまたは COCO フォーマットのデータセットをUltralytics YOLO フォーマットに変換することができる。
使用したいデータセットがあなたのモデルと互換性があり、必要なフォーマット規則に従っているかどうかを再チェックすることを忘れないでください。適切にフォーマットされたデータセットは、オブジェクト検出モデルをうまくトレーニングするために非常に重要です。
自動アノテーション
オートアノテーションは、事前にトレーニングされた検出モデルを使用してセグメンテーションデータセットを生成するための不可欠な機能です。手動でラベリングすることなく、多数の画像にすばやく正確に注釈を付けることができるため、時間と労力を節約できます。
検出モデルを用いたセグメンテーション・データセットの生成
Ultralytics フレームワークを使用してデータセットを自動注釈付けするには、次のようにします。 auto_annotate
関数は以下のようになる:
例
議論 | タイプ | 説明 | デフォルト |
---|---|---|---|
data |
str |
注釈を付ける画像を含むフォルダへのパス。 | None |
det_model |
str, optional |
事前にトレーニングされたYOLO 検出モデル。デフォルトは 'yolo11x.pt' . |
'yolo11x.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 セグメンテーションモデルまた、モデルを実行するデバイスと、注釈付き結果を保存する出力ディレクトリを指定します。
事前に訓練されたモデルのパワーを活用することで、オートアノテーションは、高品質のセグメンテーションデータセットを作成するために必要な時間と労力を大幅に削減することができます。この機能は、大規模な画像コレクションを扱う研究者や開発者にとって、手作業によるアノテーションよりもモデルの開発と評価に集中できるため、特に有用です。
よくあるご質問
Ultralytics YOLO は、インスタンスのセグメンテーションにどのようなデータセット形式をサポートしていますか?
Ultralytics YOLO は、インスタンスのセグメンテーション用にいくつかのデータセット形式をサポートしており、主な形式は独自のUltralytics YOLO 形式です。データセットの各画像には、クラスインデックスと正規化された境界座標が記載され、オブジェクト情報が複数行(オブジェクトごとに1行)に分割された対応するテキストファイルが必要です。YOLO データセット形式の詳細については、インスタンス・セグメンテーション・データセットの概要をご覧ください。
COCO データセットの注釈をYOLO フォーマットに変換するにはどうすればよいですか?
COCO フォーマットの注釈をYOLO フォーマットに変換するには、Ultralytics ツールを使用します。変換には convert_coco
関数から ultralytics.data.converter
モジュールである:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)
このスクリプトは、COCO データセットの注釈を必要なYOLO フォーマットに変換し、YOLO モデルのトレーニングに適するようにします。詳細については、PortまたはConvert Label Formatsを参照してください。
Ultralytics YOLO モデルをトレーニングするための YAML ファイルはどのように準備すればよいですか?
Ultralytics を使ってYOLO モデルを学習するための YAML ファイルを準備するには、データセットのパスとクラス名を定義する必要があります。以下はYAML設定の例です:
path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')
names:
0: person
1: bicycle
2: car
# ...
データセットに従ってパスとクラス名を更新してください。詳細については、データセットのYAMLフォーマットのセクションを確認してください。
Ultralytics YOLO の自動注釈機能とは何ですか?
Ultralytics YOLO のオートアノテーションでは、事前にトレーニングされた検出モデルを使用して、データセットのセグメンテーションアノテーションを生成できます。これにより、手作業によるラベリングの必要性が大幅に軽減されます。この機能は auto_annotate
関数は次のようになる:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")
この機能により、アノテーション・プロセスが自動化され、より迅速かつ効率的になります。詳しくは、自動アノテーションのセクションをご覧ください。