Link to this sectionインスタンスセグメンテーションデータセットの概要#
インスタンスセグメンテーションは、画像内の個々のオブジェクトを識別して輪郭を描画するコンピュータビジョンのタスクです。本ガイドでは、インスタンスセグメンテーションタスクにおいてUltralytics YOLOがサポートするデータセット形式の概要に加え、これらのデータセットを準備、変換し、モデルのトレーニングに使用する方法を説明します。
Link to this sectionサポートされているデータセット形式#
Link to this sectionUltralytics YOLO形式#
YOLOセグメンテーションモデルのトレーニングに使用されるデータセットラベル形式は以下の通りです。
- 画像ごとに1つのテキストファイル:データセット内の各画像には、画像ファイルと同じ名前で".txt"拡張子を持つ対応するテキストファイルが必要です。
- オブジェクトごとに1行:テキストファイル内の各行は、画像内の1つのオブジェクトインスタンスに対応します。
- 行ごとのオブジェクト情報:各行には、オブジェクトインスタンスに関する以下の情報が含まれます。
- オブジェクトクラスインデックス:オブジェクトのクラスを表す整数(例:人が0、車が1など)。
- オブジェクトのバウンディング座標:マスク領域を囲むバウンディング座標で、0から1の範囲に正規化されています。
セグメンテーションデータセットファイルの1行の形式は以下の通りです。
<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>
この形式において、<class-index>はオブジェクトのクラスインデックスであり、<x1> <y1> <x2> <y2> ... <xn> <yn>はオブジェクトのセグメンテーションマスクの正規化されたポリゴン座標です(値は画像幅および高さに対して[0, 1]の範囲内)。座標はスペースで区切られます。
以下は、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つの
(x, y)点を持つ必要があります:<class-index> <x1> <y1> <x2> <y2> <x3> <y3>
Link to this sectionデータセットYAML形式#
Ultralyticsフレームワークでは、セグメンテーションモデルをトレーニングするためのデータセットとモデルの構成を定義するために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.ziptrainおよびvalフィールドは、それぞれトレーニング用画像と検証用画像を含むディレクトリへのパスを指定します。
namesはクラス名の辞書です。名前の順序は、YOLOデータセットファイル内のオブジェクトクラスインデックスの順序と一致させる必要があります。
Link to this section使用方法#
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)Link to this sectionサポートされているデータセット#
Ultralytics YOLOは、インスタンスセグメンテーションタスクのために様々なデータセットをサポートしています。以下によく使用されるデータセットのリストを挙げます。
- Carparts-seg: 自動車部品のセグメンテーションに特化したデータセットで、自動車関連のアプリケーションに最適です。個々の自動車コンポーネントの詳細なアノテーションを含む様々な車両が含まれています。
- COCO: オブジェクト検出、セグメンテーション、キャプション生成のための包括的なデータセットであり、広範なカテゴリにわたる20万枚以上のラベル付き画像が含まれています。
- COCO8-seg: セグメンテーションモデルのトレーニングを迅速にテストするために設計された、COCOの8画像からなるコンパクトなサブセットです。
ultralyticsリポジトリでのCIチェックやワークフロー検証に最適です。 - COCO128-seg: インスタンスセグメンテーションタスクのための小規模なデータセットであり、セグメンテーションアノテーションを含むCOCOの128画像のサブセットが含まれています。
- Crack-seg: 様々な表面における亀裂のセグメンテーション向けに調整されたデータセットです。インフラのメンテナンスや品質管理に不可欠であり、構造的な弱点を特定するモデルをトレーニングするための詳細な画像を提供します。
- Package-seg: 様々な種類の梱包材や形状のセグメンテーションに特化したデータセットです。物流や倉庫の自動化に特に役立ち、パッケージの取り扱いや仕分けを行うシステムの開発を支援します。
Link to this section独自のデータセットの追加#
独自のデータセットを所有しており、それをUltralytics YOLO形式でセグメンテーションモデルのトレーニングに使用したい場合は、前述の「Ultralytics YOLO形式」に従っていることを確認してください。アノテーションを必要な形式に変換し、YAML構成ファイルでパス、クラス数、クラス名を指定します。images/とlabels/は同じ階層の個別のフォルダとして保持し、サブフォルダ構造を一致させてください。画像フォルダ内にラベルの.txtファイルを配置すると、モデルがラベルを認識できない可能性があります。
Link to this sectionラベル形式の移植または変換#
Link to this sectionCOCOデータセット形式から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形式に変換できます。
使用するデータセットがモデルと互換性があり、必要な形式規則に従っていることを再確認してください。適切にフォーマットされたデータセットは、成功するセグメンテーションモデルをトレーニングするために極めて重要です。
Link to this section自動アノテーション#
自動アノテーションは、事前学習済みの検出モデルを使用してセグメンテーションデータセットを生成できる重要な機能です。手動でのラベリングを必要とせずに多数の画像を迅速かつ正確にアノテーションできるため、時間と労力を節約できます。
Link to this section検出モデルを使用したセグメンテーションデータセットの生成#
Ultralyticsフレームワークを使用してデータセットを自動アノテーションするには、以下に示すようにauto_annotate関数を使用します。
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
data | str | 必須 | アノテーションまたはセグメンテーションの対象画像を含むディレクトリへのパス。 |
det_model | str | 'yolo26x.pt' | 初期オブジェクト検出のためのYOLO検出モデルパス。 |
sam_model | str | 'sam_b.pt' | セグメンテーションのためのSAMモデルパス(SAM、SAM 2、MobileSAM、SAM 3ウェイトをサポート)。 |
device | str | '' | 計算デバイス(例: 'cuda:0'、'cpu'、または自動デバイス検出の場合は '')。 |
conf | float | 0.25 | 弱い検出をフィルタリングするためのYOLO検出信頼度しきい値。 |
iou | float | 0.45 | 重複するボックスをフィルタリングするための非最大値抑制(NMS)のIoUしきい値。 |
imgsz | int | 640 | 画像のサイズ変更のための入力サイズ(32の倍数である必要があります)。 |
max_det | int | 300 | メモリ効率のための、1画像あたりの最大検出数。 |
classes | list[int] | None | 検出するクラスインデックスのリスト(例: 人と自転車の場合は [0, 1])。 |
output_dir | str | None | アノテーションの保存ディレクトリ(デフォルト: <data>_auto_annotate_labels の兄弟ディレクトリ)。 |
auto_annotate関数は、画像へのパスに加え、事前学習済み検出モデル(YOLO26、YOLO11、またはその他のモデル)やセグメンテーションモデル(SAM、SAM 2、MobileSAM、またはSAM 3)、モデルを実行するデバイス、アノテーション結果を保存するための出力ディレクトリを指定するオプション引数を受け取ります。
事前学習済みモデルの能力を活用することで、自動アノテーションは高品質なセグメンテーションデータセットの作成に必要な時間と労力を大幅に削減できます。この機能は、大規模な画像コレクションを扱う研究者や開発者にとって特に有用であり、手動アノテーションではなくモデルの開発や評価に集中できるようになります。
Link to this sectionデータセットアノテーションの可視化#
モデルをトレーニングする前に、データセットのアノテーションが正しいことを確認するために可視化を行うことが役立ちます。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,
)この関数はバウンディングボックスを描画し、クラス名でオブジェクトにラベルを付け、読みやすさを向上させるためにテキストの色を調整します。これにより、トレーニング前にアノテーションの誤りを特定して修正するのに役立ちます。
Link to this sectionセグメンテーションマスクの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セグメンテーション形式に変換し、指定された出力ディレクトリに保存します。
Link to this sectionFAQ#
Link to this sectionUltralytics YOLOはインスタンスセグメンテーションにおいてどのようなデータセット形式をサポートしていますか?#
Ultralytics YOLOはインスタンスセグメンテーションのためにいくつかのデータセット形式をサポートしていますが、主要な形式は独自のUltralytics YOLO形式です。データセット内の各画像には、クラスインデックスと正規化されたバウンディング座標を列挙した、複数行(オブジェクトごとに1行)に分割されたオブジェクト情報を持つ対応するテキストファイルが必要です。YOLOデータセット形式に関する詳細な手順については、インスタンスセグメンテーションデータセットの概要を参照してください。
Link to this sectionCOCOデータセットのアノテーションをYOLO形式に変換するにはどうすればよいですか?#
Converting COCO format annotations to YOLO format is straightforward using Ultralytics tools. You can use the convert_coco function from the ultralytics.data.converter module:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)このスクリプトは、COCOデータセットのアノテーションを必要なYOLO形式に変換し、YOLOモデルのトレーニングに適した形式にします。詳細については、「ラベル形式の移植または変換」を参照してください。
Link to this sectionUltralytics 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データセットに合わせてパスとクラス名を更新してください。詳細については、「データセットYAML形式」セクションを確認してください。
Link to this sectionUltralytics YOLOの自動アノテーション機能とは何ですか?#
Ultralytics YOLOの自動アノテーションを使用すると、事前学習済みの検出モデルを使用してデータセットのセグメンテーションアノテーションを生成できます。これにより、手動でのラベリングの必要性が大幅に減少します。以下のようにauto_annotate関数を使用できます。
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt") # or sam_model="mobile_sam.pt"この関数はアノテーションプロセスを自動化し、より高速かつ効率的にします。詳細については、「Auto-Annotate Reference」をご覧ください。