指向性バウンディングボックス オブジェクト検出
指向性オブジェクト検出は、標準的なオブジェクト検出を一歩進めたもので、追加の角度を導入することで画像内のオブジェクトをより正確に特定します。
指向性オブジェクト検出器の出力は、画像内のオブジェクトを正確に囲む回転したバウンディングボックスのセットであり、各ボックスのクラスラベルと信頼スコアも含まれます。指向性バウンディングボックスは、航空画像のようにオブジェクトがさまざまな角度で出現する場合に特に有用であり、従来の軸に並行なバウンディングボックスでは不要な背景が含まれてしまう可能性があります。
YOLO26 OBBモデルは -obb サフィックスを使用します(例: yolo26n-obb.pt)。これらは DOTAv1 で事前学習済みです。
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
視覚的サンプル
| OBBを使用した船舶の検出 | OBBを使用した車両の検出 |
|---|---|
![]() | ![]() |
モデル
ここに、DOTAv1 データセットで事前学習されたYOLO26事前学習済みOBBモデルを示します。
モデルは、初回使用時に最新のUltralytics リリースから自動的にダウンロードされます。
| モデル | サイズ (ピクセル) | mAPtest 50-95(e2e) | mAPtest 50(e2e) | 速度 CPU ONNX (ms) | 速度 T4 TensorRT10 (ms) | パラメータ (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-obb | 1024 | 52.4 | 78.9 | 97.7 ± 0.9 | 2.8 ± 0.0 | 2.5 | 14.0 |
| YOLO26s-obb | 1024 | 54.8 | 80.9 | 218.0 ± 1.4 | 4.9 ± 0.1 | 9.8 | 55.1 |
| YOLO26m-obb | 1024 | 55.3 | 81.0 | 579.2 ± 3.8 | 10.2 ± 0.3 | 21.2 | 183.3 |
| YOLO26l-obb | 1024 | 56.2 | 81.6 | 735.6 ± 3.1 | 13.0 ± 0.2 | 25.6 | 230.0 |
| YOLO26x-obb | 1024 | 56.7 | 81.7 | 1485.7 ± 11.5 | 30.5 ± 0.9 | 57.6 | 516.5 |
- mAPtest 値は DOTAv1 データセットでのシングルモデル・マルチスケールの結果です。
yolo val obb data=DOTAv1.yaml device=0 split=testで再現し、統合された結果を DOTA評価 に提出してください。 - 速度 は Amazon EC2 P4d インスタンスを使用してDOTAv1の検証画像で平均化されたものです。
yolo val obb data=DOTAv1.yaml batch=1 device=0|cpuで再現可能です。 - ParamsおよびFLOPsの値は、
model.fuse()後の融合モデルに対するものです。これはConv層とBatchNorm層をマージし、エンドツーエンドモデルの場合は補助的な1対多の検出ヘッドを削除します。事前学習済みチェックポイントは完全な学習アーキテクチャを保持しており、より高い値を示す場合があります。
Train
DOTA8データセットでYOLO26n-obbを100 エポック(画像サイズ640)で学習します。利用可能な引数の全リストについては、設定 ページを参照してください。
OBBの角度は 0~90度 (90度を含まない)の範囲に制限されます。90度以上の角度はサポートされていません。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.yaml") # build a new model from YAML
model = YOLO("yolo26n-obb.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-obb.yaml").load("yolo26n-obb.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)Watch: How to Train Ultralytics YOLO-OBB (Oriented Bounding Boxes) Models on DOTA Dataset using Ultralytics Platform
データセット形式
OBBデータセット形式の詳細については、データセットガイド を参照してください。YOLO OBB形式は、この構造に従い、0から1の間で正規化された座標を持つ4つの頂点によってバウンディングボックスを指定します。Ultralytics Platform は、専用の指向性バウンディングボックス描画ツールによるOBBアノテーションをサポートしています。
class_index x1 y1 x2 y2 x3 y3 x4 y4
内部的に、YOLOは xywhr 形式で損失を処理し出力します。これは バウンディングボックス の中心点(xy)、幅、高さ、および回転を表します。
Val
DOTA8データセットで学習済みYOLO26n-obbモデルの 精度 を検証します。model が学習時の data と引数をモデル属性として保持しているため、引数は不要です。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-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 containing mAP50-95(B) for each category
metrics.box.image_metrics # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN推論 (Predict)
学習済みYOLO26n-obbモデルを使用して画像に対する推論を実行します。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-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 boxWatch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA
predictモードの詳細については、Predictページを参照してください。
Export
YOLO26n-obbモデルをONNX、CoreMLなどの異なる形式にエクスポートします。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")利用可能なYOLO26-obbエクスポート形式を以下の表に示します。format 引数(例: format='onnx' または format='engine')を使用して任意の形式にエクスポートできます。エクスポートされたモデルで直接予測や検証を行うことも可能です(例: yolo predict model=yolo26n-obb.onnx)。エクスポート完了後、モデルの使用例が表示されます。
| 形式 | format 引数 | モデル | メタデータ | 引数 |
|---|---|---|---|---|
| PyTorch | - | yolo26n-obb.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-obb.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-obb.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n-obb_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-obb.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-obb.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-obb.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-obb.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-obb_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-obb_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-obb_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-obb.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-obb_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-obb_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-obb_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n-obb_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-obb_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DeepX | deepx | yolo26n-obb_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
完全なexportの詳細については、エクスポートページを参照してください。
実世界の応用例
YOLO26を使用したOBB検出には、さまざまな業界で多くの実用的な応用があります。
- 海運および港湾管理: フリート管理 や監視のために、さまざまな角度の船舶や艦船を検出します。
- 都市計画: 航空画像から建物やインフラを分析します。
- 農業: ドローン映像から農作物や農業機器を監視します。
- エネルギー部門: さまざまな向きにあるソーラーパネルや風力タービンを点検します。
- 交通: さまざまな視点から道路や駐車場内の車両を追跡します。
これらの応用は、OBBがどのような角度のオブジェクトにも正確に適合する能力の恩恵を受けており、従来のバウンディングボックスよりも正確な検出を提供します。
FAQ
指向性バウンディングボックス(OBB)とは何ですか?また、通常のバウンディングボックスとどう違いますか?
指向性バウンディングボックス(OBB)には、画像内のオブジェクト特定精度を高めるための追加の角度が含まれています。軸に並行な長方形である通常のバウンディングボックスとは異なり、OBBは回転してオブジェクトの向きによりよく適合できます。これは、航空画像や衛星画像のように、正確なオブジェクト配置が必要な用途に特に有用です(データセットガイド)。
カスタムデータセットを使用してYOLO26n-obbモデルを学習するにはどうすればよいですか?
カスタムデータセットでYOLO26n-obbモデルを学習するには、PythonまたはCLIを使用して以下の例に従ってください。
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-obb.pt")
# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)その他の学習引数については、設定 セクションを確認してください。
YOLO26-OBBモデルの学習にはどのデータセットを使用できますか?
YOLO26-OBBモデルは DOTAv1 のようなデータセットで事前学習されていますが、OBB用にフォーマットされた任意のデータセットを使用できます。OBBデータセット形式の詳細情報は データセットガイド で確認できます。
YOLO26-OBBモデルをONNX形式にエクスポートするにはどうすればよいですか?
YOLO26-OBBモデルをONNX形式にエクスポートするのは、PythonまたはCLIを使用して簡単に行えます。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Export the model
model.export(format="onnx")その他のエクスポート形式や詳細については、エクスポート ページを参照してください。
YOLO26n-obbモデルの精度を検証するにはどうすればよいですか?
YOLO26n-obbモデルを検証するには、以下に示すPythonまたはCLIコマンドを使用できます。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")完全な検証の詳細については、Val セクションを参照してください。

