傾斜バウンディングボックス物体検出
Orientedオブジェクト検出は、画像内のオブジェクトをより正確に特定するために、追加の角度を導入することにより、標準のオブジェクト検出よりもさらに一歩進んでいます。
方向性オブジェクト検出器の出力は、画像内のオブジェクトを正確に囲む回転されたバウンディングボックスのセットであり、各ボックスのクラスラベルと信頼度スコアが含まれます。回転されたバウンディングボックスは、オブジェクトがさまざまな角度で表示される場合に特に役立ちます。たとえば、航空写真では、従来の軸に沿ったバウンディングボックスには不要な背景が含まれる場合があります。
ヒント
YOLO11 OBBモデルは、 -obb
サフィックス(例:) yolo11n-obb.pt
で事前トレーニングされています。 DOTAv1.
見る: Ultralytics YOLOを用いた指向性バウンディングボックスによる物体検出 (YOLO-OBB)
視覚的なサンプル
OBB を使用した船舶検出 | OBBを使用した車両検出 |
---|---|
![]() |
![]() |
モデル
ここに表示されているのは、YOLO11の学習済みOBBモデルで、DOTAv1データセットで事前学習されています。
モデルは、最初の使用時に最新のUltralytics リリースから自動的にダウンロードされます。
モデル | サイズ (ピクセル) |
mAPtest 50 |
速度 CPU ONNX (ms) |
速度 T4 TensorRT10 (ms) |
params (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLO11n-obb | 1024 | 78.4 | 117.6 ± 0.8 | 4.4 ± 0.0 | 2.7 | 17.2 |
YOLO11s-obb | 1024 | 79.5 | 219.4 ± 4.0 | 5.1 ± 0.0 | 9.7 | 57.5 |
YOLO11m-obb | 1024 | 80.9 | 562.8 ± 2.9 | 10.1 ± 0.4 | 20.9 | 183.5 |
YOLO11l-obb | 1024 | 81.0 | 712.5 ± 5.0 | 13.5 ± 0.6 | 26.2 | 232.0 |
YOLO11x-obb | 1024 | 81.3 | 1408.6 ± 7.7 | 28.6 ± 1.0 | 58.8 | 520.2 |
- mAPtest 値は、シングルモデルのマルチスケールにおける DOTAv1 データセット。
再現方法yolo val obb data=DOTAv1.yaml device=0 split=test
そして、マージされた結果を以下に送信します。 DOTA評価. - 速度 を使用してDOTAv1 val画像で平均化 Amazon EC2 P4d インスタンス。
再現方法yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu
トレーニング
画像サイズ640でDOTA8データセット上でYOLO11n-obbを100エポック学習させます。利用可能な引数の完全なリストは、設定ページを参照してください。
注
OBBの角度は0~90度(90を除く)の範囲に制約される。90度以上の角度はサポートされない。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.yaml") # build a new model from YAML
model = YOLO("yolo11n-obb.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo11n-obb.yaml").load("yolo11n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolo11n-obb.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml pretrained=yolo11n-obb.pt epochs=100 imgsz=640
見る: Ultralytics HUBを使用してDOTAデータセットでUltralytics YOLO-OBB(Oriented Bounding Boxes)モデルをトレーニングする方法
データセット形式
OBBデータセット形式の詳細は、データセットガイドに記載されています。YOLO OBB形式では、4つの角の点を座標で指定してバウンディングボックスを定義し、座標は0から1の間で正規化され、次の構造に従います。
class_index x1 y1 x2 y2 x3 y3 x4 y4
内部的には、YOLOは損失と出力を以下で処理します。 xywhr
形式は、以下を表します。 バウンディングボックスの中心点(xy)、幅、高さ、および回転です。
Val
学習済み YOLO11n-obb モデルの検証 精度 DOTA8データセットで実行します。引数は必要ありません。 model
学習内容を保持 data
および引数をモデル属性として。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="dota8.yaml") # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # a list contains map50-95(B) of each category
yolo obb val model=yolo11n-obb.pt data=dota8.yaml # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml # val custom model
予測
トレーニング済みの YOLO11n-obb モデルを使用して、画像に対する予測を実行する。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/boats.jpg") # predict on an image
# Access the results
for result in results:
xywhr = result.obb.xywhr # center-x, center-y, width, height, angle (radians)
xyxyxyxy = result.obb.xyxyxyxy # polygon format with 4-points
names = [result.names[cls.item()] for cls in result.obb.cls.int()] # class name of each box
confs = result.obb.conf # confidence score of each box
yolo obb predict model=yolo11n-obb.pt source='https://ultralytics.com/images/boats.jpg' # predict with official model
yolo obb predict model=path/to/best.pt source='https://ultralytics.com/images/boats.jpg' # predict with custom model
見る: Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA を使用して貯蔵タンクを検出および追跡する方法
詳細な predict
モードの詳細については、 予測 ページ。
エクスポート
YOLO11n-obbモデルをONNX、CoreMLなどの異なる形式にエクスポートします。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom trained model
# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model
利用可能なYOLO11-obbのエクスポート形式は、以下の表に記載されています。以下の方法で、任意の形式にエクスポートできます。 format
引数、つまり format='onnx'
または format='engine'
エクスポートされたモデルで直接予測または検証できます。例: yolo predict model=yolo11n-obb.onnx
エクスポート完了後、モデルの使用例が表示されます。
形式 | format 引数 |
モデル | メタデータ | 引数 |
---|---|---|---|---|
PyTorch | - | yolo11n-obb.pt |
✅ | - |
TorchScript | torchscript |
yolo11n-obb.torchscript |
✅ | imgsz , half , dynamic , optimize , nms , batch , device |
ONNX | onnx |
yolo11n-obb.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch , device |
OpenVINO | openvino |
yolo11n-obb_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data , fraction , device |
TensorRT | engine |
yolo11n-obb.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data , fraction , device |
CoreML | coreml |
yolo11n-obb.mlpackage |
✅ | imgsz , half , int8 , nms , batch , device |
TF SavedModel | saved_model |
yolo11n-obb_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch , device |
TF GraphDef | pb |
yolo11n-obb.pb |
❌ | imgsz , batch , device |
TF Lite | tflite |
yolo11n-obb.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Edge TPU | edgetpu |
yolo11n-obb_edgetpu.tflite |
✅ | imgsz , device |
TF.js | tfjs |
yolo11n-obb_web_model/ |
✅ | imgsz , half , int8 , nms , batch , device |
PaddlePaddle | paddle |
yolo11n-obb_paddle_model/ |
✅ | imgsz , batch , device |
MNN | mnn |
yolo11n-obb.mnn |
✅ | imgsz , batch , int8 , half , device |
NCNN | ncnn |
yolo11n-obb_ncnn_model/ |
✅ | imgsz , half , batch , device |
IMX500 | imx |
yolo11n-obb_imx_model/ |
✅ | imgsz , int8 , data , fraction , device |
RKNN | rknn |
yolo11n-obb_rknn_model/ |
✅ | imgsz , batch , name , device |
詳細な export
詳細は エクスポート ページ。
現実世界のアプリケーション
YOLO11を使用したOBB検出には、さまざまな業界にわたって多数の実用的な応用例があります。
- 海事および港湾管理: フリート管理と監視のために、さまざまな角度で船舶を検出。
- 都市計画: 航空画像からの建物とインフラストラクチャの分析。
- 農業: ドローン映像からの作物および農業機器の監視。
- エネルギーセクター: さまざまな方向でのソーラーパネルと風力タービンの検査。
- 交通:さまざまな視点からの道路や駐車場での車両の追跡。
これらのアプリケーションは、OBBがあらゆる角度でオブジェクトを正確にフィットさせ、従来のバウンディングボックスよりも正確な検出を提供できるという利点があります。
よくある質問
指向性バウンディングボックス(OBB)とは何ですか?また、通常のバウンディングボックスとどのように異なりますか?
傾斜バウンディングボックス(OBB)は、画像内のオブジェクトのローカリゼーション精度を高めるための追加の角度を含みます。軸に沿った長方形である通常のバウンディングボックスとは異なり、OBBは回転してオブジェクトの向きにより良く適合できます。これは、航空写真や衛星写真など、正確なオブジェクト配置を必要とするアプリケーションに特に役立ちます(データセットガイド)。
カスタムデータセットを使用して YOLO11n-obb モデルをトレーニングするにはどうすればよいですか?
カスタムデータセットでYOLO11n-obbモデルを学習させるには、pythonまたはCLIを使用して以下の例に従ってください。
例
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo11n-obb.pt")
# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)
yolo obb train data=path/to/custom_dataset.yaml model=yolo11n-obb.pt epochs=100 imgsz=640
その他のトレーニング引数については、Configurationセクションをご確認ください。
YOLO11-OBBモデルのトレーニングには、どのようなデータセットを使用できますか?
YOLO11-OBBモデルは、DOTAv1のようなデータセットで事前トレーニングされていますが、OBB用にフォーマットされた任意のデータセットを使用できます。OBBデータセット形式の詳細については、データセットガイドを参照してください。
YOLO11-OBBモデルをONNX形式にエクスポートするにはどうすればよいですか?
YOLO11-OBBモデルをONNX形式にエクスポートするには、PythonまたはCLIを使用すると簡単です。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt")
# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx
その他のエクスポート形式と詳細については、Exportページを参照してください。
YOLO11n-obbモデルの精度を検証するにはどうすればよいですか?
YOLO11n-obbモデルを検証するには、以下に示すようにpythonまたはCLIコマンドを使用できます。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")
yolo obb val model=yolo11n-obb.pt data=dota8.yaml
検証の詳細については、Valセクションを参照してください。