OBB付きDOTAデータセット#
DOTAデータセットは、航空画像の物体検出における大規模ベンチマークで、3つのバージョン(v1.0、v1.5、v2.0)が公開されています。多様な航空センサーやプラットフォームで撮影された画像に対し、18カテゴリにわたる最大170万件の回転バウンディングボックス(OBB)アノテーションが含まれています。
Ultralytics Platformで公式にホストされているDOTA v1.5およびDOTA v1.0データセットを確認し、回転アノテーションをプレビューしたり、統計を調べたり、複製してトレーニングに利用したりできます。

主な機能#
視聴: Google Colab で DOTA データセットを使って Ultralytics YOLO をトレーニングし、回転バウンディングボックスを扱う方法
- さまざまなセンサーやプラットフォームから収集されており、画像サイズは800 × 800ピクセルから20,000 × 20,000ピクセルまであります。
- 18カテゴリにわたる170万件以上の回転バウンディングボックスを含みます。
- 画像ごとの物体サイズの幅が広いため、マルチスケール物体検出に対応しています。
- インスタンスには専門家が任意の四辺形(自由度8)でアノテーションを付与し、さまざまなスケール、向き、形状の物体を捉えています。
データセットのバージョン#
DOTA-v1.0#
- 一般的な15カテゴリが含まれています。
- 2,806枚の画像と188,282件のインスタンスで構成されています。
- 分割比率:トレーニング用が1/2(1,411枚)、検証用が1/6(458枚)、テスト用が1/3(937枚)です。
DOTA-v1.5#
- DOTA-v1.0と同じ画像を使用しています。
- 10ピクセル未満の非常に小さなインスタンスにもアノテーションが付与されています。
- 新しいカテゴリ「コンテナクレーン」が追加されています。
- インスタンスの合計は403,318件です。
- 2019年の航空画像物体検出に関するDOAIチャレンジ向けに公開されました。
DOTA-v2.0#
- Google Earth、GF-2衛星、その他の航空画像から収集されています。
- 一般的な18カテゴリが含まれています。
- 11,268枚の画像と、なんと1,793,658件のインスタンスで構成されています。
- 新たに「空港」と「ヘリポート」のカテゴリが追加されています。
- 画像の分割:
- トレーニング: 1,830枚の画像、268,627個のインスタンス。
- 検証: 593枚の画像、81,048個のインスタンス。
- Test-dev: 2,792枚の画像、353,346個のインスタンス。
- Test-challenge: 6,053枚の画像、1,090,637個のインスタンス。
データセットの構成#
DOTAは、OBB物体検出の課題に特化した構造化レイアウトを採用しています。
- 画像: 多様な地形や構造物を捉えた、高解像度の航空画像を豊富に収録しています。
- 回転バウンディングボックス: 物体の向きにかかわらず物体を囲む、回転した矩形形式のアノテーションです。飛行機、船舶、建物などの物体の捉え方に適しています。
用途#
DOTAは、航空画像解析に特化したモデルのトレーニングと評価のベンチマークとして機能します。OBBアノテーションを含むことで独自の課題を提供し、航空画像特有の性質に対応する専門的な物体検出モデルの開発を可能にします。このデータセットは、リモートセンシング、監視、環境モニタリングの用途で特に有用です。
データセットYAML#
データセットのYAMLファイルでは、画像とラベルのルート、クラス名、その他の重要なメタデータを指定します。Ultralyticsは、最も広く使われている2つのリリース向けに公式YAMLファイルを管理しています。
ダウンロードしたリリースに対応するYAMLを使用してください。DOTA-v2やその他の派生版を使用する場合は、カスタムYAMLを作成してください。どちらのリリースも、初回のトレーニング時にUltralyticsのGitHubアセットから自動的にダウンロードされます(2 GB)。
# 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
# └── DOTAv1 ← 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.zipDOTA画像の分割#
元画像は一辺が10,000ピクセルを超えることが多いため、YOLOにデータを渡す前にタイル分割することをおすすめします。以下のヘルパーを使用すると、アノテーションとの対応を保ちながら、元画像を複数のスケールで重なり合う1024 × 1024のクロップ画像に分割できます。
from ultralytics.data.split_dota import split_test, split_trainval
# ラベル付きでトレーニングセットと検証セットを分割します。
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(
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データセットでモデルをトレーニングするには、以下のコードスニペットを使用できます。利用可能な引数の全リストについては、必ずモデルのドキュメントを参照してください。まず小規模なサブセットで試したい場合は、素早くテストでき、Ultralytics Platformで閲覧できる、わずか8枚の画像を含むDOTA8データセットをお試しください。
DOTAv1データセット内のすべての画像と関連アノテーションは学術目的で使用できますが、商用利用は禁止されています。データセット作成者の意向をご理解いただき、尊重していただけますようお願いいたします。
from ultralytics import YOLO
# 事前学習済みのYOLO26n-OBBモデルを読み込む
model = YOLO("yolo26n-obb.pt")
# DOTAv1データセットでモデルをトレーニングする
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)サンプルデータとアノテーション#
データセットを少し見るだけでも、その豊富さがわかります。

- DOTAの例: このスナップショットは、航空シーンの複雑さと、物体を自然な向きで捉える方向付きバウンディングボックスアノテーションの重要性を示しています。
このデータセットの豊富な内容は、航空画像特有の物体検出の課題について貴重な知見をもたらします。包括的なアノテーションと多様な物体カテゴリを備えた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={2022},
volume={44},
number={11},
pages={7778-7796},
doi={10.1109/TPAMI.2021.3117983}
}このデータセットを作成したDOTAデータセットチームの尽力に、心より感謝します。データセットとその特性について詳しく知るには、DOTA公式ウェブサイトをご覧ください。
よくある質問#
DOTAデータセットは、航空画像の物体検出に特化したデータセットです。方向付きバウンディングボックス(OBB)を採用し、多様な航空シーンの画像にアノテーションを付与しています。170万件のアノテーションと18のカテゴリにわたり、物体の向き、スケール、形状が多様なDOTAは、監視、環境モニタリング、災害管理などの航空画像解析に特化したモデルの開発と評価に適しています。
DOTAでは、物体の向きにかかわらず物体を囲む回転矩形で表現される方向付きバウンディングボックス(OBB)をアノテーションに使用します。この方法により、小さな物体やさまざまな角度の物体を正確に捉えられます。さらに、800 × 800から20,000 × 20,000ピクセルに及ぶマルチスケール画像により、小さな物体から大きな物体まで効果的に検出できます。このアプローチは、物体がさまざまな角度やスケールで現れる航空画像で特に有用です。
Ultralytics YOLOを使った以下の例を参考に、DOTAデータセットでモデルをトレーニングできます。
トレーニング例from ultralytics import YOLO # 事前学習済みのYOLO26n-OBBモデルを読み込む model = YOLO("yolo26n-obb.pt") # DOTAv1データセットでモデルをトレーニングする results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)DOTA画像の分割と前処理の詳細については、DOTA画像の分割セクションを参照してください。
- DOTA-v1.0: 2,806枚の画像に、15の一般的なカテゴリと188,282個のインスタンスを含みます。データセットはトレーニング、検証、テストの各セットに分割されています。
- DOTA-v1.5: DOTA-v1.0を基に、非常に小さなインスタンス(10ピクセル未満)にアノテーションを付与し、「コンテナクレーン」という新しいカテゴリを追加しており、合計403,318個のインスタンスを収録しています。
- DOTA-v2.0: Google EarthとGF-2衛星からのアノテーションを追加してさらに拡張され、11,268枚の画像と1,793,658個のインスタンスを収録しています。「空港」や「ヘリポート」などの新しいカテゴリも含まれています。
詳細な比較と追加情報については、データセットのバージョンのセクションをご確認ください。
DOTA画像は非常に大きい場合があるため、トレーニングで扱いやすいサイズに分割します。画像を分割するPythonスニペットを以下に示します。
例from ultralytics.data.split_dota import split_test, split_trainval # ラベル付きでトレーニングセットと検証セットを分割します。 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( data_root="path/to/DOTAv1.0/", save_dir="path/to/DOTAv1.0-split/", rates=[0.5, 1.0, 1.5], # multiscale gap=500, )この処理により、トレーニング効率とモデルの性能が向上します。詳しい手順については、DOTA画像の分割セクションをご覧ください。



