コンテンツへスキップ

OBBを含むDOTAデータセット

DOTAは、空撮画像における物体検出に特化したデータセットである。DOTAシリーズのデータセットに由来し、様々な航空シーンを捉えた画像にOBB(Oriented Bounding Boxes)を用いて注釈を付けている。

DOTAクラス・ビジュアル

主な特徴

  • 様々なセンサーとプラットフォームからのコレクションで、画像サイズは800×800から20,000×20,000ピクセルまで。
  • 18カテゴリー、170万以上のバウンディングボックスを収録。
  • マルチスケールの物体検出を含む。
  • インスタンスは専門家によって任意の(8d.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チャレンジ2019」に向けて発表。

DOTA-v2.0

  • Google Earth、GF-2 Satellite、その他の航空写真からのコレクション。
  • 18の共通カテゴリーを収録。
  • 11,268の画像、1,793,658のインスタンスからなる。
  • 新しいカテゴリーを導入:「空港」と「ヘリポート」。
  • 画像の分割:
    • トレーニング:1,830画像、268,627インスタンス。
    • 検証:593画像、81,048インスタンス。
    • Test-dev: 2,792イメージ、353,346インスタンス。
    • テストチャレンジ:6,053画像、1,090,637インスタンス。

データセット構造

DOTAは、OBBオブジェクト検出の課題に合わせた構造化されたレイアウトを示す:

  • 画像多様な地形や構造物を捉えた高解像度の航空画像の膨大なコレクション。
  • オリエンテッドバウンディングボックス:回転した長方形の形をした注釈で、向きに関係なくオブジェクトを囲みます。飛行機、船、建物などのオブジェクトをキャプチャするのに理想的です。

アプリケーション

DOTAは、空撮画像解析に特化したモデルをトレーニングし評価するためのベンチマークとして機能する。OBBの注釈を含めることで、ユニークな課題を提供し、空中画像のニュアンスに対応した特殊な物体検出モデルの開発を可能にする。

データセット YAML

通常、データセットには、データセットの設定を詳細に記述したYAML (Yet Another Markup Language) ファイルが含まれている。DOTA v1とDOTA v1.5では、Ultralytics 。 DOTAv1.yaml そして DOTAv1.5.yaml ファイルを参照してください。これらとDOTA v2についての詳細は、DOTAの公式リポジトリとドキュメントを参照してください。

DOTAv1.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 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 (2GB)

# 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: ../datasets/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の分割画像

DOTAデータセットを学習するために、高解像度のオリジナルDOTA画像をマルチスケールで1024x1024の解像度の画像に分割した。

分割画像

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 v1データセットでモデルを学習するには、以下のコード・スニペットを利用します。利用可能な引数の完全なリストについては、常にモデルのドキュメントを参照してください。

警告

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

列車の例

from ultralytics import YOLO

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

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

サンプルデータと注釈

データセットを一目見れば、その深さがわかる:

データセットサンプル画像

  • DOTAの例:このスナップショットは、空撮シーンの複雑さと、オブジェクトを自然な向きで捉えるOrientedBounding Boxアノテーションの重要性を強調しています。

このデータセットの豊富さは、航空画像に特有の物体検出の課題に対する貴重な洞察を与えてくれる。

引用と謝辞

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の公式ウェブサイトをご覧ください。

よくあるご質問

DOTAデータセットとはどのようなもので、なぜ空撮画像の物体検出に重要なのでしょうか?

DOTAデータセットは、空撮画像における物体検出に特化したデータセットである。このデータセットはOBB(Oriented Bounding Boxes)を特徴としており、様々な航空シーンの注釈付き画像を提供する。DOTAは、170万件の注釈と18のカテゴリにまたがるオブジェクトの向き、スケール、形状の多様性により、監視、環境モニタリング、災害管理などで使用されるような、航空画像解析用に調整されたモデルの開発と評価に理想的です。

DOTAデータセットは、画像の異なるスケールや向きをどのように扱うのか?

DOTAはアノテーションにOBB(Oriented Bounding Boxes)を利用する。OBBは回転した長方形で表現され、オブジェクトの向きに関係なく内包される。この方法により、対象物が小さくても、角度が異なっていても、正確に捉えることができる。データセットの画像は800×800ピクセルから20,000×20,000ピクセルのマルチスケールであるため、小さな物体から大きな物体まで効果的に検出することができる。

DOTAデータセットを使ってモデルをトレーニングするには?

DOTAデータセットでモデルを学習するには、Ultralytics YOLO 、次の例を使うことができる:

列車の例

from ultralytics import YOLO

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

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt 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 Satelliteからのアノテーションでさらに拡張され、11,268の画像と1,793,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の画像をご覧ください。

📅作成:1年前 ✏️更新:1ヶ月前

コメント