Ultralytics YOLO27:
Get Started

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

インスタンスセグメンテーションは、画像内の個々の物体を識別し、その領域を区分するコンピュータビジョンタスクです。このガイドでは、インスタンスセグメンテーションタスク向けにUltralytics YOLOがサポートするデータセット形式の概要と、モデルのトレーニングに向けたデータセットの準備、変換、使用方法を説明します。

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

Ultralytics YOLO形式#

YOLOセグメンテーションモデルのトレーニングに使用するデータセットのラベル形式は、次のとおりです。

  1. 画像ごとに1つのテキストファイル:データセット内の各画像に、画像ファイルと同じ名前で拡張子が「.txt」のテキストファイルが対応します。
  2. 物体ごとに1行:テキストファイルの各行は、画像内の1つの物体インスタンスに対応します。
  3. 各行に物体情報を記載:各行には、物体インスタンスに関する次の情報が含まれます。
    • 物体クラスのインデックス:物体のクラスを表す整数(例:人は0、車は1など)。
    • 物体ポリゴンの座標:物体のマスクの輪郭を示す(x, y)の点で、値は0~1に正規化されています。

セグメンテーションデータセットファイルにおける1行の形式は、次のとおりです。

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

この形式では、<class-index>は物体のクラスインデックスで、<x1> <y1> <x2> <y2> ... <xn> <yn>は物体のセグメンテーションマスクを表す正規化済みポリゴン座標です(値は画像の幅と高さに対する[0, 1]です)。座標はスペースで区切られます。

以下は、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
ヒント
  • 各行の長さは同じである必要はありません。
  • 各セグメンテーションラベルには、最低3つの(x, y)点が必要です:<class-index> <x1> <y1> <x2> <y2> <x3> <y3>
  • すべてのオブジェクトにポリゴンが必要です。検出形式の行(<class-index> <x_center> <y_center> <width> <height>)にはポリゴンが含まれておらず、ボックス数とポリゴン数が一致しないセグメンテーションデータセットは、ラベルの読み込み時にValueErrorで拒否されます。

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

train、val、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

# モデルを読み込む
model = YOLO("yolo26n-seg.pt")  # 事前トレーニング済みモデルを読み込みます(トレーニングにはこちらを推奨します)

# モデルをトレーニングする
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

サポート対象のデータセット#

Ultralytics YOLOは、インスタンスセグメンテーションタスク向けにさまざまなデータセットをサポートしています。以下は、最もよく使用されるデータセットの一覧です。これらのデータセットの多くはUltralytics Platformでもホストされており、画像やアノテーションの閲覧、データセット統計の確認、クラウド学習用のクローン作成ができます。

  • Carparts-seg:自動車部品のセグメンテーションに特化したデータセットで、自動車関連の用途に最適です。さまざまな車両が含まれており、個々の車両部品に詳細なアノテーションが付けられています。
  • COCO:物体検出、セグメンテーション、キャプション生成向けの包括的なデータセットです。幅広いカテゴリにわたる20万枚以上のラベル付き画像を収録しています。
  • COCO8-seg:セグメンテーションモデルの学習をすばやくテストするために設計された、COCOのコンパクトな8枚の画像サブセットです。ultralyticsリポジトリでのCIチェックやワークフロー検証に最適です。
  • COCO128-seg:インスタンスセグメンテーションタスク向けの小規模なデータセットで、セグメンテーションアノテーション付きのCOCO画像128枚のサブセットが含まれています。
  • Crack-seg:さまざまな表面のひび割れのセグメンテーションに特化したデータセットです。インフラの保守や品質管理に不可欠で、構造上の弱点を検出するモデルの学習に役立つ詳細な画像を提供します。
  • Package-seg:さまざまな種類や形状の包装材のセグメンテーションに特化したデータセットです。物流や倉庫の自動化に特に有用で、荷物の取り扱いや仕分けを行うシステムの開発に役立ちます。

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

独自のデータセットをお持ちで、Ultralytics YOLO形式を使ってセグメンテーションモデルを学習したい場合は、「Ultralytics YOLO形式」で前述した形式に準拠していることを確認してください。アノテーションを必要な形式に変換し、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形式に変換できます。

使用するデータセットがモデルと互換性があり、必要な形式規則に準拠していることを必ず再確認してください。セグメンテーションモデルの学習を成功させるには、データセットが適切にフォーマットされていることが重要です。

自動アノテーション#

自動アノテーションは、学習済みの検出モデルを使ってセグメンテーションデータセットを生成できる重要な機能です。手動でラベル付けする必要なく、多数の画像にすばやく正確にアノテーションを付けられるため、時間と労力を節約できます。

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

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重複するボックスを除外するための非最大値抑制のIoUしきい値。
imgszint640画像のリサイズに使用する入力サイズ(必要に応じて32の倍数に切り上げられます)。
max_detint300メモリ効率を高めるための、画像ごとの検出数の最大値。
classeslist[int]None検出するクラスインデックスのリスト(例:人物と自転車の場合は[0, 1])。
output_dirstrNoneアノテーションの保存ディレクトリ(デフォルト:兄弟ディレクトリの<data>_auto_annotate_labels)。

auto_annotate関数には画像のパスを指定します。また、学習済みの検出モデル(例:YOLO26、YOLO11、その他のモデル)、セグメンテーションモデル(例:SAM、SAM 2、MobileSAM、SAM 3)、モデルを実行するデバイス、アノテーション結果を保存する出力ディレクトリも、オプション引数で指定できます。

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

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

モデルを学習する前に、データセットのアノテーションを可視化して正しいことを確認すると役立つ場合があります。Ultralyticsは、この目的のためのユーティリティ関数を提供しています。この関数が読み取るのは検出形式のボックスラベル(<class-index> <x_center> <y_center> <width> <height>)のみであり、セグメンテーションのポリゴンラベルファイルは解析できません。

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # アノテーション済みのクラスラベルをすべて含むラベルマップを定義します。
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # 入力画像のパス。
    "path/to/annotations.txt",  # 画像のアノテーションファイルのパス。
    label_map,
)

この関数はバウンディングボックスを描画し、クラス名でオブジェクトにラベルを付け、読みやすくなるようにテキストの色を調整します。学習前にアノテーションの誤りを見つけて修正するのに役立ちます。

セグメンテーションマスクのYOLO形式への変換#

各ピクセル値がクラスインデックス + 1(0は背景)を表すグレースケールマスク画像がある場合は、以下を使用してYOLOセグメンテーション形式に変換できます。

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# COCOのように80クラスを持つデータセットの場合
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形式です。データセット内の各画像には、複数行(オブジェクトごとに1行)でオブジェクト情報を記述した対応するテキストファイルが必要です。このファイルには、クラスインデックスと正規化されたポリゴン座標を記載します。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モデルの学習に使用できるようにします。詳細については、ラベル形式の移植または変換をご覧ください。

  • 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形式のセクションをご覧ください。

  • 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")  # または sam_model="mobile_sam.pt"

    この関数はアノテーションプロセスを自動化し、より迅速かつ効率的にします。詳細については、自動アノテーションのリファレンスをご覧ください。

コメント