コンテンツにスキップ

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

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

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

Ultralytics YOLO形式

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

  1. 画像ごとに1つのテキストファイル:データセット内の各画像には、画像ファイルと同じ名前で、拡張子「.txt」が付いた対応するテキストファイルがあります。
  2. オブジェクトごとに1行:テキストファイルの各行は、画像の1つのオブジェクトインスタンスに対応します。
  3. 行ごとのオブジェクト情報:各行には、オブジェクトインスタンスに関する次の情報が含まれています。
    • オブジェクトクラスのインデックス:オブジェクトのクラスを表す整数(例:0は人物、1は車など)。
    • オブジェクトのバウンディング座標:マスク領域の周囲のバウンディング座標で、0から1の間に正規化されています。

セグメンテーションデータセットファイル内の単一行の形式は次のとおりです。

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

この形式では、 <class-index> は、オブジェクトのクラスのインデックスであり、 <x1> <y1> <x2> <y2> ... <xn> <yn> は、オブジェクトのセグメンテーションマスクの正規化されたポリゴン座標である。 [0, 1] 画像の幅と高さに対する相対座標)。座標はスペースで区切られる。

以下は、3点segment 5点segmentなる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>

データセットのYAML形式

Ultralytics フレームワークは、YAML ファイル形式を使用して、セグメンテーションモデルをトレーニングするためのデータセットとモデル構成を定義します。以下は、セグメンテーションデータセットを定義するために使用される YAML 形式の例です。

ultralyticsyaml

# 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は、インスタンスセグメンテーションタスク用のさまざまなデータセットをサポートしています。最も一般的に使用されるもののリストを次に示します。

  • Carparts-seg: 自動車部品のセグメンテーションに特化したデータセットで、自動車関連のアプリケーションに最適です。さまざまな車種が含まれており、個々の自動車部品の詳細なアノテーションが付いています。
  • COCO: 幅広いカテゴリにわたる20万枚以上のラベル付き画像を特徴とする、object detection、segmentation、キャプション作成用の包括的なデータセットです。
  • COCO8:COCO コンパクトな8画像のサブセットは、セグメンテーションモデルのトレーニングを素早くテストするために設計されており、CIチェックやワークフローの検証に最適です。 ultralytics リポジトリ。
  • COCO128-seg: instance segmentationタスク用の小規模なデータセットで、segmentationアノテーションが付いたCOCO画像128枚のサブセットが含まれています。
  • 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")
引数種類デフォルト説明
datastr必須アノテーションまたはセグメンテーションの対象となる画像を含むディレクトリへのパス。
det_modelstr'yolo11x.pt'初期オブジェクト検出のための YOLO 検出モデルのパス。
sam_modelstr'sam_b.pt'セグメンテーション用のSAM モデルパス (SAM、SAM2 バリアント、mobile_sam モデルをサポート)。
devicestr''計算デバイス(例:'cuda:0'、'cpu'、または自動デバイス検出の場合は'')。
conffloat0.25YOLO 検出における、弱い検出を除外するための信頼度閾値。
ioufloat0.45重複するボックスをフィルタリングするための非最大抑制のIoU しきい値。
imgszint640画像リサイズ時の入力サイズ(32の倍数にする必要があります)。
max_detint300メモリ効率のための画像あたりの最大検出数。
classeslist[int]Nonedetect するクラス・インデックスのリスト(例. [0, 1] 人および自転車用)。
output_dirstrNoneアノテーションの保存先ディレクトリ(デフォルトはデータパスに対する相対パスで'./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 フォーマットに変換するには?

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構成の例を次に示します。

# 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"

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



📅 2年前に作成されました✏️ 1日前に更新されました
glenn-jocherjk4efcakyonLaughing-qY-T-GRizwanMunawarUltralyticsAssistantMatthewNoyceBurhan-Q

コメント