YOLO Vision 2026:

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

インスタンスセグメンテーションは、画像内の個々のオブジェクトを識別して輪郭を描くコンピュータビジョンのタスクです。このガイドでは、インスタンスセグメンテーションタスクにおいてUltralytics YOLOでサポートされるデータセット形式の概要と、モデルのトレーニングに向けてこれらのデータセットを準備、変換、使用する方法について説明します。

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

Ultralytics YOLO形式#

YOLOセグメンテーションモデルのトレーニングに使用されるデータセットラベルの形式は以下の通りです。

  1. 画像ごとに1つのテキストファイル:データセット内の各画像には、画像ファイルと同じ名前で「.txt」拡張子を持つ対応するテキストファイルがあります。
  2. オブジェクトごとに1行:テキストファイルの各行は、画像内の1つのオブジェクトインスタンスに対応します。
  3. 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>

データセット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

trainval、および test フィールドは、それぞれトレーニング、検証、テスト画像を指定します。それぞれ、ディレクトリ、ディレクトリのリスト、または 1 行に 1 つの画像パスが記載された *.txt ファイルを受け入れます(./ で始まるパスは、*.txt ファイルからの相対パスとして解決されます)。*.txt ファイルは、ディレクトリの一部でトレーニングを行ったり、ラベルのない画像をスキップしたり、複数のソースからの画像を 1 つの分割に結合したりする際に便利です。

`*.txt`ファイルとしての画像パス
path: datasets/coco8-seg # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

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

使用方法#

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)

サポートされているデータセット#

Ultralytics YOLOは、インスタンスセグメンテーションタスク向けに様々なデータセットをサポートしています。以下に最も一般的に使用されるデータセットのリストを示します。

  • Carparts-seg: 自動車部品のセグメンテーションに特化したデータセットであり、自動車アプリケーションに最適です。個々の自動車コンポーネントの詳細なアノテーションが含まれた多様な車両が収録されています。
  • COCO: オブジェクト検出、セグメンテーション、キャプション生成のための包括的なデータセットであり、幅広いカテゴリにわたる 200K 以上のラベル付き画像を備えています。
  • COCO8-seg: セグメンテーションモデルのトレーニングの迅速なテスト用に設計された、COCO のコンパクトな 8 画像のサブセットであり、ultralytics リポジトリでの CI チェックやワークフロー検証に最適です。
  • COCO128-seg: インスタンスセグメンテーションタスク用の小規模なデータセットであり、セグメンテーションアノテーションを含む 128 個の COCO 画像のサブセットが含まれています。
  • Crack-seg: さまざまな表面のひび割れのセグメンテーションに特化したデータセットです。インフラストラクチャの保守や品質管理に不可欠であり、構造的弱点を特定するためのモデルのトレーニングに詳細な画像を提供します。
  • Package-seg: さまざまな種類の梱包材や形状のセグメンテーション専用のデータセットです。ロジスティクスや倉庫の自動化に特に役立ち、パッケージのハンドリングや仕分けのためのシステム開発を支援します。

独自のデータセットの追加#

独自のデータセットがあり、Ultralytics YOLO 形式でセグメンテーションモデルのトレーニングに使用したい場合は、上記の「Ultralytics YOLO format」で指定された形式に従っていることを確認してください。アノテーションを必要な形式に変換し、YAML 設定ファイルでパス、クラス数、およびクラス名を指定します。images/labels/ を同じ階層の個別のフォルダーとして維持し、サブフォルダーの構造を一致させてください。ラベル .txt ファイルを画像フォルダーに配置すると、モデルがラベルを見落とす原因になることがあります。

ラベル形式の移植または変換#

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形式に変換できます。

使用するデータセットがモデルと互換性があり、必要な形式規則に従っているか再確認してください。適切にフォーマットされたデータセットは、成功するセグメンテーションモデルをトレーニングするために非常に重要です。

自動アノテーション#

Auto-annotation は、事前学習済み検出モデルを使用してセグメンテーションデータセットを生成できるようにする重要な機能です。手動でのラベル付けを必要とせずに、多数の画像を素早く正確にアノテーションできるため、時間と労力を節約できます。

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

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")
引数タイプデフォルト説明
datastr必須アノテーションまたはセグメンテーション対象の画像が含まれるディレクトリへのパス。
det_modelstr'yolo26x.pt'初期の物体検出を行うためのYOLO検出モデルのパス。
sam_modelstr'sam_b.pt'セグメンテーション用のSAMモデルパス(SAM、SAM 2、MobileSAM、SAM 3のウェイトをサポート)。
devicestr''計算デバイス(例: 'cuda:0'、'cpu'、または空文字で自動デバイス検出)。
conffloat0.25弱い検出結果をフィルタリングするためのYOLO検出信頼度閾値です。
ioufloat0.45重複するボックスをフィルタリングするためのNon-Maximum Suppression(NMS)用IoU閾値です。
imgszint640画像のリサイズに使用する入力サイズ(32の倍数である必要があります)。
max_detint300メモリ効率のために、画像1枚あたりの最大検出数です。
classeslist[int]None検出するクラスインデックスのリスト(例:人物と自転車の場合は [0, 1])。
output_dirstrNoneアノテーションの保存ディレクトリ(デフォルト:<data>_auto_annotate_labels の兄弟ディレクトリ)。

auto_annotate 関数は、画像へのパスと、事前学習済みの検出モデル(例: YOLO26YOLO11、またはその他のモデル)やセグメンテーションモデル(例: SAMSAM 2MobileSAM、または SAM 3)を指定するためのオプション引数、モデルを実行するデバイス、およびアノテーション結果を保存する出力ディレクトリを受け取ります。

学習済みモデルの力を活用することで、自動アノテーションは高品質なセグメンテーションデータセットを作成するために必要な時間と労力を大幅に削減できます。この機能は、大規模な画像コレクションを扱う研究者や開発者が、手動アノテーションではなくモデルの開発や評価に集中できるため、特に役立ちます。

データセットアノテーションの可視化#

モデルをトレーニングする前に、データセットのアノテーションを可視化して、それらが正しいことを確認するのが有益な場合が多いです。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セグメンテーション形式に変換し、指定された出力ディレクトリに保存します。

よくある質問 (FAQ)#

Ultralytics YOLOはインスタンスセグメンテーションのためにどのようなデータセット形式をサポートしていますか?#

Ultralytics YOLO は、インスタンスセグメンテーション用にいくつかのデータセット形式をサポートしており、主要な形式は独自の Ultralytics YOLO 形式です。データセット内の各画像には、クラスインデックスと正規化されたバウンディング座標をリストした、複数の行(1 オブジェクトにつき 1 行)にセグメント化されたオブジェクト情報を含む対応するテキストファイルが必要です。YOLO データセット形式の詳細な手順については、Instance Segmentation Datasets Overview をご覧ください。

COCOデータセットのアノテーションをYOLO形式に変換するにはどうすればよいですか?#

Ultralyticsのツールを使用すると、COCO形式のアノテーションをYOLO形式に簡単に変換できます。ultralytics.data.converterモジュールのconvert_coco関数を使用できます。

from ultralytics.data.converter import convert_coco

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

このスクリプトは、COCO データセットのアノテーションを必要な YOLO 形式に変換し、YOLO モデルのトレーニングに適した形にします。詳細は、Port or Convert Label Formats を参照してください。

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="yolo26x.pt", sam_model="sam_b.pt")  # or sam_model="mobile_sam.pt"

この関数はアノテーションプロセスを自動化し、より速く効率的にします。詳細については、Auto-Annotate Reference を確認してください。

コメント