OBB を使用した DOTA データセット

DOTA は、航空画像における物体検出に特化したデータセットです。DOTA シリーズのデータセットを基盤としており、Oriented Bounding Boxes (OBB) を使用して、多様な航空シーンを捉えたアノテーション済み画像を提供しています。

航空検出のための DOTA データセットの物体クラス

主な特徴



Watch: How to Train Ultralytics YOLO26 on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
  • さまざまなセンサーやプラットフォームから収集されており、画像サイズは 800 × 800 ピクセルから 20,000 × 20,000 ピクセルまで多岐にわたります。
  • 18 カテゴリにわたり、170 万以上の Oriented Bounding Boxes を備えています。
  • 画像ごとの物体サイズの広がりにより、マルチスケールの物体検出に対応しています。
  • インスタンスは専門家によって任意の (8 d.o.f.) 四角形でアノテーションされており、さまざまなスケール、向き、形状の物体を捉えています。

データセットのバージョン

DOTA-v1.0

  • 15 の一般的なカテゴリを含みます。
  • 2,806 枚の画像と 188,282 個のインスタンスで構成されています。
  • 分割比率: トレーニング用に 1/2、検証用に 1/6、テスト用に 1/3 となっています。

DOTA-v1.5

  • DOTA-v1.0 と同じ画像を含みます。
  • 非常に小さなインスタンス (10 ピクセル未満) もアノテーションされています。
  • 新しいカテゴリ「コンテナクレーン」が追加されました。
  • 合計 403,318 個のインスタンスが含まれます。
  • DOAI Challenge 2019 on Object Detection in Aerial Images のために公開されました。

DOTA-v2.0

  • Google Earth、GF-2 衛星、およびその他の航空画像からのコレクションです。
  • 18 の一般的なカテゴリを含みます。
  • 11,268 枚の画像と 179 万 3,658 個という膨大なインスタンスで構成されています。
  • 新しいカテゴリとして「空港」と「ヘリパッド」が導入されました。
  • 画像分割:
    • トレーニング: 1,830 枚の画像、268,627 個のインスタンス。
    • 検証: 593 枚の画像、81,048 個のインスタンス。
    • Test-dev: 2,792 枚の画像、353,346 個のインスタンス。
    • Test-challenge: 6,053 枚の画像、1,090,637 個のインスタンス。

データセットの構造

DOTA は、OBB 物体検出の課題向けに最適化された構造レイアウトを備えています。

  • 画像: さまざまな地形や構造物を捉えた、広大な高解像度航空画像コレクションです。
  • Oriented Bounding Boxes: 飛行機、船舶、建物などの物体を捉えるのに最適な、向きに関係なく物体を囲む回転矩形形式のアノテーションです。

アプリケーション

DOTA は、航空画像解析に特化したモデルをトレーニングおよび評価するためのベンチマークとして機能します。OBB アノテーションが含まれているため、航空画像特有のニュアンスに対応した特殊な物体検出モデルの開発を可能にするユニークな課題を提供します。このデータセットは、リモートセンシング、監視、および環境モニタリングのアプリケーションにおいて特に価値があります。

データセットYAML

データセットの YAML (Yet Another Markup Language) ファイルは、画像/ラベルのルート、クラス名、その他の重要なメタデータを指定します。Ultralytics は、最も一般的に使用される 2 つのリリース向けに公式の YAML ファイルを維持管理しています。

ダウンロードしたリリースに対応する YAML を使用してください。DOTA-v2 やその他の派生データセットを使用する場合は、カスタム YAML を作成してください。

DOTAv1.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DOTA 1.0 dataset https://captain-whu.github.io/DOTA/index.html for object detection in aerial images by Wuhan University
# Documentation: https://docs.ultralytics.com/datasets/obb/dota-v2/
# Example usage: yolo train model=yolov8n-obb.pt data=DOTAv1.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── dota1 ← downloads here (2 GB)

# 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: DOTAv1 # dataset root dir
train: images/train # train images (relative to 'path') 1411 images
val: images/val # val images (relative to 'path') 458 images
test: images/test # test images (optional) 937 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/DOTAv1.zip

DOTA 画像の分割

元の画像は通常 1 辺が 10,000 ピクセルを超えるため、YOLO にデータを供給する前にタイリングが必要です。以下のヘルパーを使用して、ソース画像を複数のスケールで重なり合う 1024 × 1024 のクロップに分割し、アノテーションを同期させてください。

画像の分割
from ultralytics.data.split_dota import split_test, split_trainval

# Split train and val set, with labels.
split_trainval(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)
# Split test set, without labels.
split_test(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)
ヒント

出力ディレクトリを標準の YOLO レイアウト (images/train, labels/train など) に整理しておくことで、データセット YAML から直接参照できます。

使用方法

DOTA v1 データセットでモデルをトレーニングするには、以下のコードスニペットを利用できます。利用可能な引数の詳細なリストについては、必ずモデルのドキュメントを参照してください。まずは小さなサブセットで実験したい場合は、迅速なテスト用に 8 枚の画像のみを含む DOTA8 データセットの使用を検討してください。

警告

DOTAv1 データセットのすべての画像と関連するアノテーションは学術目的で使用可能ですが、商用利用は禁止されていることに注意してください。データセット作成者の意向をご理解いただき、尊重していただきますようお願いいたします。

トレーニングの例
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 データセット

  • DOTA の例: このスナップショットは、航空シーンの複雑さと、物体を自然な向きで捉えるための Oriented Bounding Box アノテーションの重要性を強調しています。

このデータセットの豊富さは、航空画像特有の物体検出の課題に関する貴重な洞察を提供します。DOTA-v2.0 データセットは、その包括的なアノテーションと多様な物体カテゴリにより、リモートセンシングや航空監視プロジェクトで特に人気があります。

引用と謝辞

DOTA を研究で使用する場合は、関連する研究論文を引用してください。

引用
@article{9560031,
  author={Ding, Jian and Xue, Nan and Xia, Gui-Song and Bai, Xiang and Yang, Wen and Yang, Michael and Belongie, Serge and Luo, Jiebo and Datcu, Mihai and Pelillo, Marcello and Zhang, Liangpei},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  title={Object Detection in Aerial Images: A Large-Scale Benchmark and Challenges},
  year={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3117983}
}

このデータセットをキュレーションする上で称賛に値する努力をされた、DOTAデータセットの背後にいるチームに心から感謝いたします。データセットとそのニュアンスの詳細については、公式DOTAウェブサイトをご覧ください。

FAQ

DOTA データセットとは何か、そしてなぜ航空画像における物体検出にとって重要なのですか?

DOTA データセットは、航空画像における物体検出に特化したデータセットです。Oriented Bounding Boxes (OBB) を特徴としており、多様な航空シーンのアノテーション済み画像を提供します。DOTA は、170 万件のアノテーションと 18 カテゴリにわたる物体の向き、スケール、形状の多様性により、監視、環境モニタリング、災害管理などで使用される、航空画像解析に最適化されたモデルの開発と評価に適しています。

DOTA データセットは画像内の異なるスケールや向きをどのように処理しますか?

DOTA はアノテーションに Oriented Bounding Boxes (OBB) を使用しています。これは、向きに関係なく物体を囲む回転矩形で表現されます。この手法により、小さな物体や異なる角度にある物体も正確に捉えることができます。800 × 800 から 20,000 × 20,000 ピクセルまでのマルチスケール画像により、小さな物体と大きな物体の両方を効果的に検出できます。このアプローチは、物体がさまざまな角度やスケールで現れる航空画像において特に価値があります。

DOTA データセットを使用してモデルをトレーニングするにはどうすればよいですか?

DOTA データセットでモデルをトレーニングするには、Ultralytics YOLO を使用した以下の例を参照してください。

トレーニングの例
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 画像の分割と前処理の詳細については、DOTA 画像の分割セクションを参照してください。

DOTA-v1.0、DOTA-v1.5、および DOTA-v2.0 の違いは何ですか?

  • DOTA-v1.0: 2,806 枚の画像と 188,282 個のインスタンスにわたり、15 の一般的なカテゴリを含みます。データセットはトレーニング、検証、テストセットに分割されています。
  • DOTA-v1.5: DOTA-v1.0 をベースに、非常に小さなインスタンス (10 ピクセル未満) のアノテーションを追加し、新しいカテゴリ「コンテナクレーン」を追加して、合計 403,318 個のインスタンスを含みます。
  • DOTA-v2.0: Google Earth および GF-2 衛星からのアノテーションでさらに拡張され、11,268 枚の画像と 179 万 3,658 個のインスタンスを特徴としています。これには「空港」や「ヘリパッド」などの新しいカテゴリが含まれます。

詳細な比較および追加の仕様については、データセットのバージョンセクションを確認してください。

トレーニングのために高解像度の DOTA 画像を準備するにはどうすればよいですか?

非常に大きな DOTA 画像は、効率的なトレーニングのために小さな解像度に分割されます。画像を分割するための Python スニペットを以下に示します。

from ultralytics.data.split_dota import split_test, split_trainval

# split train and val set, with labels.
split_trainval(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)
# split test set, without labels.
split_test(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)

このプロセスにより、トレーニング効率とモデルのパフォーマンスが向上します。詳細な手順については、DOTA 画像の分割セクションにアクセスしてください。

コメント