インスタンスセグメンテーションデータセットの概要
インスタンスセグメンテーションは、画像内の個々のオブジェクトを識別し、区別するコンピュータビジョンのタスクです。このガイドでは、インスタンスセグメンテーションタスクのためにUltralytics YOLOがサポートするデータセット形式の概要と、モデルをトレーニングするためにこれらのデータセットを準備、変換、および使用する方法について説明します。
サポートされているデータセット形式
Ultralytics YOLO形式
YOLOセグメンテーションモデルのトレーニングに使用されるデータセットのラベル形式は次のとおりです。
- 画像ごとに1つのテキストファイル:データセット内の各画像には、画像ファイルと同じ名前で、拡張子「.txt」が付いた対応するテキストファイルがあります。
- オブジェクトごとに1行:テキストファイルの各行は、画像の1つのオブジェクトインスタンスに対応します。
- 行ごとのオブジェクト情報:各行には、オブジェクトインスタンスに関する次の情報が含まれています。
- オブジェクトクラスのインデックス:オブジェクトのクラスを表す整数(例:0は人物、1は車など)。
- オブジェクトのバウンディング座標:マスク領域の周囲のバウンディング座標で、0から1の間に正規化されています。
セグメンテーションデータセットファイル内の単一行の形式は次のとおりです。
<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>
この形式では、 <class-index>
は、オブジェクトのクラスのインデックスであり、 <x1> <y1> <x2> <y2> ... <xn> <yn>
は、オブジェクトのセグメンテーションマスクの境界座標です。座標はスペースで区切られています。
3点のセグメントと5点のセグメントで構成される2つのオブジェクトを持つ単一の画像の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
ヒント
- 各行の長さは等しい必要はありません。
- 各セグメンテーションラベルには、 最小3つのxyポイント:
<class-index> <x1> <y1> <x2> <y2> <x3> <y3>
データセットのYAML形式
Ultralytics フレームワークは、YAML ファイル形式を使用して、セグメンテーションモデルをトレーニングするためのデータセットとモデル構成を定義します。以下は、セグメンテーションデータセットを定義するために使用される YAML 形式の例です。
ultralytics/cfg/datasets/coco8-seg.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg/
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-seg ← downloads here (1 MB)
# 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: 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
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip
The train
および val
フィールドには、それぞれトレーニング画像と検証画像を含むディレクトリへのパスを指定します。
names
は、クラス名の辞書です。名前の順序は、YOLOデータセットファイル内のオブジェクトクラスインデックスの順序と一致する必要があります。
使用法
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-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 segment train data=coco8-seg.yaml model=yolo11n-seg.pt epochs=100 imgsz=640
サポートされているデータセット
Ultralytics YOLOは、インスタンスセグメンテーションタスク用のさまざまなデータセットをサポートしています。最も一般的に使用されるもののリストを次に示します。
- COCO: オブジェクト検出、セグメンテーション、およびキャプション作成のための包括的なデータセットで、幅広いカテゴリにわたる200Kを超えるラベル付き画像を備えています。
- COCO8-seg: COCOのコンパクトな8画像サブセット。セグメンテーションモデルの学習を迅速にテストするために設計されており、CIチェックやワークフローの検証に最適です。
ultralytics
リポジトリ。 - COCO128-seg: インスタンスセグメンテーションタスク用の小規模なデータセットで、セグメンテーションアノテーション付きの128枚のCOCO画像のサブセットが含まれています。
- 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="yolo11x.pt", sam_model="sam_b.pt")
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
data |
str |
必須 | アノテーションまたはセグメンテーションの対象となる画像を含むディレクトリへのパス。 |
det_model |
str |
'yolo11x.pt' |
初期オブジェクト検出のための YOLO 検出モデルのパス。 |
sam_model |
str |
'sam_b.pt' |
セグメンテーション用のSAMモデルパス(SAM、SAM2バリアント、およびmobile_samモデルをサポート)。 |
device |
str |
'' |
計算デバイス(例:'cuda:0'、'cpu'、または自動デバイス検出の場合は'')。 |
conf |
float |
0.25 |
YOLO 検出における、弱い検出を除外するための信頼度閾値。 |
iou |
float |
0.45 |
重複するボックスをフィルタリングするためのNon-Maximum SuppressionのIoU閾値。 |
imgsz |
int |
640 |
画像リサイズ時の入力サイズ(32の倍数にする必要があります)。 |
max_det |
int |
300 |
メモリ効率のための画像あたりの最大検出数。 |
classes |
list[int] |
None |
検出するクラスインデックスのリスト(例: [0, 1] 人および自転車用)。 |
output_dir |
str |
None |
アノテーションの保存先ディレクトリ(デフォルトはデータパスに対する相対パスで'./labels')。 |
The auto_annotate
関数は、画像へのパスと、事前トレーニング済みの検出モデルを指定するためのオプションの引数(例:)を受け取ります。 YOLO11, YOLOv8 またはその他の モデル そして、セグメンテーションモデル(例: SAM, SAM2 または MobileSAM、モデルを実行するデバイス、およびアノテーション付きの結果を保存する出力ディレクトリを指定します。
事前学習済みモデルの力を活用することで、自動アノテーションは、高品質のセグメンテーションデータセットを作成するために必要な時間と労力を大幅に削減できます。この機能は、大規模な画像コレクションを扱う研究者や開発者にとって特に役立ち、手動アノテーションではなく、モデルの開発と評価に集中できます。
データセットのアノテーションの可視化
モデルをトレーニングする前に、データセットのアノテーションを視覚化して、それらが正しいことを確認すると役立つことがよくあります。Ultralyticsはこの目的のためにユーティリティ関数を提供します。
from ultralytics.data.utils import visualize_image_annotations
label_map = { # Define the label map with all annotated class labels.
0: "person",
1: "car",
}
# Visualize
visualize_image_annotations(
"path/to/image.jpg", # Input image path.
"path/to/annotations.txt", # Annotation file path for the image.
label_map,
)
この関数は、バウンディングボックスを描画し、クラス名でオブジェクトにラベルを付け、テキストの色を調整して読みやすくすることで、トレーニング前にアノテーションエラーを特定して修正するのに役立ちます。
セグメンテーションマスクをYOLO形式に変換する
セグメンテーションマスクがバイナリ形式である場合は、以下を使用してYOLOセグメンテーション形式に変換できます。
from ultralytics.data.converter import convert_segment_masks_to_yolo_seg
# For datasets like COCO with 80 classes
convert_segment_masks_to_yolo_seg(masks_dir="path/to/masks_dir", output_dir="path/to/output_dir", classes=80)
このユーティリティは、バイナリマスク画像をYOLOセグメンテーション形式に変換し、指定された出力ディレクトリに保存します。
よくある質問
Ultralytics YOLOは、インスタンスセグメンテーションでどのようなデータセット形式をサポートしていますか?
Ultralytics YOLOは、インスタンスセグメンテーション用にいくつかのデータセット形式をサポートしており、主要な形式は独自のUltralytics YOLO形式です。データセット内の各画像には、クラスインデックスと正規化されたバウンディング座標をリストした、複数の行(オブジェクトごとに1行)にセグメント化されたオブジェクト情報を含む対応するテキストファイルが必要です。YOLOデータセット形式の詳細な手順については、インスタンスセグメンテーションデータセットの概要をご覧ください。
COCOデータセットのアノテーションをYOLO形式に変換するにはどうすればよいですか?
Ultralytics ツールを使用すると、COCO 形式のアノテーションから YOLO 形式への変換が簡単に行えます。以下を使用できます。 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モデルのトレーニングに適した状態にします。詳細については、ラベル形式の移植または変換を参照してください。
Ultralytics YOLO モデルをトレーニングするために YAML ファイルを準備するにはどうすればよいですか?
UltralyticsでYOLOモデルをトレーニングするためのYAMLファイルを作成するには、データセットのパスとクラス名を定義する必要があります。YAML構成の例を次に示します。
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg/
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-seg ← downloads here (1 MB)
# 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: 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
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip
データセットに合わせてパスとクラス名を更新してください。詳細については、Dataset YAML Formatのセクションを確認してください。
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") # or sam_model="mobile_sam.pt"
この機能は、アノテーション処理を自動化し、より迅速かつ効率的にします。詳細については、自動アノテーションのリファレンスをご覧ください。