傾きを持つバウンディングボックス(OBB)データセットの概要

傾きを持つバウンディングボックス(OBB)を使用して高精度な物体検出モデルをトレーニングするには、網羅的なデータセットが必要です。このガイドでは、Ultralytics YOLOモデルと互換性のある様々なOBBデータセット形式について解説し、その構造、用途、および形式変換の方法について説明します。

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

YOLO OBB形式

YOLO OBB形式では、バウンディングボックスを0から1の範囲で正規化された4つの頂点の座標で指定します。形式は以下の通りです:

class_index x1 y1 x2 y2 x3 y3 x4 y4

内部的に、YOLOは xywhr 形式で損失を処理し出力します。これは バウンディングボックス の中心点(xy)、幅、高さ、および回転を表します。

Oriented bounding box annotation format examples

上記の画像に対応する*.txtラベルファイルの例(クラス0のオブジェクトがOBB形式で含まれる場合)は以下のようになります:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

データセットYAML形式

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

ultralytics/cfg/datasets/dota8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DOTA8 dataset (8 images from the DOTAv1 split) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── dota8 ← 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: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images

# Classes for DOTA 1.0
names:
  0: plane
  1: ship
  2: storage tank
  3: baseball diamond
  4: tennis court
  5: basketball court
  6: ground track field
  7: harbor
  8: bridge
  9: large vehicle
  10: small vehicle
  11: helicopter
  12: roundabout
  13: soccer ball field
  14: swimming pool

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8.zip

使用方法

これらのOBB形式を使用してモデルをトレーニングするには:

from ultralytics import YOLO

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

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

現在、以下の傾きを持つバウンディングボックスを用いたデータセットがサポートされています:

  • DOTA-v1:DOTAデータセットの最初のバージョンで、物体検出用の傾きを持つバウンディングボックスを備えた航空画像の包括的なセットを提供します。
  • DOTA-v1.5:DOTAデータセットの中間バージョンで、DOTA-v1よりもアノテーションが追加され、物体検出タスクが改善されています。
  • DOTA-v2:DOTA (A Large-scale Dataset for Object Detection in Aerial Images) のバージョン2です。航空視点からの検出を重視しており、170万件のインスタンスと11,268枚の画像に傾きを持つバウンディングボックスが含まれています。
  • DOTA8ultralyticsリポジトリにおけるOBBトレーニングのワークフローテストおよび継続的インテグレーション(CI)チェックに適した、8枚の画像からなるDOTAデータセットのサブセットです。
  • DOTA128:trainフォルダ内の全画像(学習用と検証用の両方に使用)を含むDOTAデータセットの128枚のサブセットであり、OBBモデルのテストにおけるサイズと多様性の優れたバランスを提供します。

独自のOBBデータセットの組み込み

独自のOBBデータセットを導入する場合は、前述の「YOLO OBB形式」との互換性を確保してください。アノテーションをこの必要な形式に変換し、対応するYAML構成ファイルでパス、クラス、クラス名を指定してください。

ラベル形式の変換

DOTAデータセット形式からYOLO OBB形式へ

DOTAデータセット形式からYOLO OBB形式へのラベル変換は、以下のスクリプトで実現できます:

from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

この変換メカニズムはDOTA形式のデータセットにとって重要であり、Ultralytics YOLO OBB形式との整合性を保証します。

データセットとモデルの互換性を検証し、必要な形式規則に従うことが不可欠です。適切に構造化されたデータセットは、傾きを持つバウンディングボックスを用いた効率的な物体検出モデルをトレーニングするために極めて重要です。

FAQ

傾きを持つバウンディングボックス(OBB)とは何ですか?また、それらはUltralytics YOLOモデルでどのように使用されますか?

傾きを持つバウンディングボックス(OBB)は、軸に沿った単純な矩形ではなく、検出対象に合わせて回転可能なバウンディングボックスのアノテーション形式です。これは、オブジェクトが画像軸と一致しない可能性がある航空画像や衛星画像で特に役立ちます。Ultralytics YOLOモデルでは、OBBはYOLO OBB形式における4つの頂点によって表現されます。これにより、バウンディングボックスがオブジェクトにフィットするように回転できるため、より正確な物体検出が可能になります。

既存のDOTAデータセットのラベルを、Ultralytics YOLO26で使用するためにYOLO OBB形式に変換するにはどうすればよいですか?

Ultralyticsが提供するconvert_dota_to_yolo_obb関数を使用して、DOTAデータセットのラベルをYOLO OBB形式に変換できます。この変換によりUltralytics YOLOモデルとの互換性が確保され、OBB機能を活用して物体検出を強化できます。簡単な例を以下に示します:

from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

このスクリプトは、DOTAのアノテーションをYOLO互換形式に再フォーマットします。

自分のデータセットを使用して、傾きを持つバウンディングボックス(OBB)を用いたYOLO26モデルのトレーニングを行うにはどうすればよいですか?

OBBを用いたYOLO26モデルのトレーニングには、データセットがYOLO OBB形式であることを確認した上で、Ultralytics APIを使用してモデルをトレーニングします。PythonとCLIでの使用例を以下に示します:

from ultralytics import YOLO

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

# Train the model on the custom dataset
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)

これにより、モデルが詳細なOBBアノテーションを活用し、検出精度を向上させることができます。

現在、Ultralytics YOLOモデルのOBBトレーニングでサポートされているデータセットは何ですか?

現在、UltralyticsはOBBトレーニング向けに以下のデータセットをサポートしています:

  • DOTA-v1:DOTAデータセットの最初のバージョンで、物体検出用の傾きを持つバウンディングボックスを備えた航空画像の包括的なセットを提供します。
  • DOTA-v1.5:DOTAデータセットの中間バージョンで、DOTA-v1よりもアノテーションが追加され、物体検出タスクが改善されています。
  • DOTA-v2:このデータセットには、170万件のOBBインスタンスと11,268枚の画像が含まれており、主に航空物体検出に焦点を当てています。
  • DOTA8:テストおよび継続的インテグレーション(CI)チェックに使用される、8枚の画像からなるDOTAデータセットの小型サブセットです。
  • DOTA128:trainフォルダ内の全画像(学習用と検証用の両方に使用)を含む128枚のサブセットであり、DOTA8よりも多様性が高く、初期のOBBモデル開発や実験に適した管理可能なサイズです。

これらのデータセットは、航空画像や衛星画像の解析など、OBBが大きな利点となるシナリオに合わせて調整されています。

独自の傾きを持つバウンディングボックス付きデータセットをYOLO26トレーニングに使用できますか?また、その方法は?

はい、独自の傾きを持つバウンディングボックス付きデータセットをYOLO26のトレーニングに使用できます。データセットのアノテーションをYOLO OBB形式(4つの頂点でバウンディングボックスを定義する形式)に変換してください。その後、データセットのパス、クラス、その他必要な詳細を指定したYAML構成ファイルを作成します。データセットの作成と構成に関する詳細は、サポートされているデータセットセクションを参照してください。

コメント