傾きを持つバウンディングボックスによるObject Detection#
指向性物体検出は、従来の物体検出を一歩進め、追加の角度を導入することで画像内の物体をより正確に特定します。
指向性物体検出器の出力は、画像内の物体を正確に囲む回転されたバウンディングボックスのセットであり、それに加えて各ボックスのクラスラベルと信頼度スコアが含まれます。指向性バウンディングボックスは、航空画像のように物体がさまざまな角度で出現する場合に特に有用であり、従来の軸に合わせたバウンディングボックスでは不要な背景が含まれてしまうような状況で力を発揮します。
YOLO26 OBBモデルは -obb サフィックス(例:yolo26n-obb.pt)を使用し、DOTAv1で事前学習されています。
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
可視化のサンプル#
| OBBを使用した船舶の検出 | OBBを使用した車両の検出 |
|---|---|
![]() | ![]() |
モデル#
ここにYOLO26の事前学習済みOBBモデルを示します。これらはDOTAv1データセットで事前学習されています。
モデルは、初回使用時に最新の 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 evaluationに提出してください。 - Speed は、Amazon EC2 P4dインスタンスを使用してDOTAv1の検証画像で平均化されたものです。
yolo val obb data=DOTAv1.yaml batch=1 device=0|cpuで再現します - Params および FLOPs の値は、
model.fuse()後の融合済みモデルに対するものです。これは Conv レイヤーと BatchNorm レイヤーを結合し、エンドツーエンドモデルの場合は補助的な一対多検出ヘッドを削除します。事前学習済みのチェックポイントは完全なトレーニングアーキテクチャを保持するため、より高い数値を示す場合があります。
トレーニング#
DOTA8データセットでYOLO26n-obbを100epochs、画像サイズ640でトレーニングします。利用可能な引数の完全なリストについては、Configurationページを参照してください。
OBBとその180°の回転は同一であるため、回転は180°を法として定義され、ボックスに向きはありません。トレーニングラベルは長辺形式に正規化されます。ボックスの幅 w が長い方の辺であり、角度は正のx軸から w の辺の向きまで時計回りに測定され、ラジアン単位で [-π/4, 3π/4)([-45°, 135°))に格納されます。予測は正規化されないため、予測されたボックスでは短い辺が w として報告される場合があります。Results Outputを参照してください。[0°, 90°) 形式は正則化されたDOTAスタイルの規約であり、トレーニングや推論時には適用されません。
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データセット形式の詳細については、Dataset Guideをご覧ください。YOLO OBB形式は、この構造に従って、座標が0から1の間に正規化された4つのコーナードットによってバウンディングボックスを指定します。Ultralytics Platform annotationは、専用の傾きを持つバウンディングボックス描画ツールによるOBBラベルをサポートしています:
class_index x1 y1 x2 y2 x3 y3 x4 y4内部的に、YOLOは xywhr 形式で損失と出力を処理します。これは、bounding boxの中心点(xy)、幅、高さ、および回転を表します。
検証#
DOTA8データセットでトレーニング済みYOLO26n-obbモデルのaccuracyを検証します。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予測#
学習済み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 ページを参照してください。
結果の出力#
傾きを持つバウンディングボックス検出は、画像ごとに1つの Results オブジェクトを返します。主要な予測フィールドは result.obb であり、検出された各オブジェクトの回転されたボックス、クラスID、信頼度スコアが含まれています。
| 属性 | タイプ | 形状 | 説明 |
|---|---|---|---|
result.obb | OBB | (N) | 指向性ボックス(OBB)。 |
result.obb.data | torch.float32 | (N,7/8) | 信頼度/クラスを含む生の回転ボックス。 |
result.obb.xywhr | torch.float32 | (N,5) | xywhr 回転ボックス。 |
result.obb.xyxyxyxy | torch.float32 | (N,4,2) | 4つのコーナーポイント。 |
result.obb.conf | torch.float32 | (N,) | 確信度スコア。 |
ラベルは長辺の規約に正規化されますが、予測は正規化されないため、result.obb.xywhr では w が h よりも小さく報告され、短い辺から角度が測定される場合があります。どちらの形式も同じ長方形を表しているため、どちらの方式でも result.obb.xyxyxyxy は正しくなります。ダウンストリームコードで長辺形式が必要な場合はコーナーを元に戻しますが、ボックスパラメータを書き換えるとコーナーの順序が循環的にシフトする場合があることに注意してください:
from ultralytics.utils.ops import xyxyxyxy2xywhr
xywhr = xyxyxyxy2xywhr(result.obb.xyxyxyxy) # w >= h, rotation in [-pi/4, 3pi/4)すべてのタスクに共通するタスク固有の Results フィールドについては、Predict Results by Task セクションを参照してください。
エクスポート#
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, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-obb.onnx | ✅ | imgsz、quantize、dynamic、simplify、opset、nms、batch、data、fraction、device |
| OpenVINO | openvino | yolo26n-obb_openvino_model/ | ✅ | imgsz、quantize、dynamic、nms、batch、data、fraction、device |
| TensorRT | engine | yolo26n-obb.engine | ✅ | imgsz、quantize、dynamic、simplify、opset、workspace、nms、batch、data、fraction、device |
| CoreML | coreml | yolo26n-obb.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz、keras、quantize、opset、nms、batch、data、fraction、device |
| TF GraphDef | pb | yolo26n-obb.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-obb_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-obb_paddle_model/ | ✅ | imgsz、batch、device |
| MNN | mnn | yolo26n-obb.mnn | ✅ | imgsz、batch、dynamic、quantize、simplify、opset、nms、device |
| NCNN | ncnn | yolo26n-obb_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-obb_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-obb_rknn_model/ | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| ExecuTorch | executorch | yolo26n-obb_executorch_model/ | ✅ | imgsz、batch、device |
| Axelera | axelera | yolo26n-obb_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-obb_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-obb_qnn.onnx | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| LiteRT | litert | yolo26n-obb.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-obb_hailo_model/ | ✅ | imgsz、name、quantize、data、fraction、simplify、conf、iou |
| Huawei Ascend | ascend | yolo26n-obb_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
詳細な export については、Export ページをご覧ください。
実際のアプリケーション#
YOLO26によるOBB検出には、さまざまな業界で多くの実用的なアプリケーションがあります:
- 海上および港湾管理: fleet managementおよび監視のために、さまざまな角度で船舶や船を検出します。
- 都市計画: 航空画像から建物やインフラを分析します。
- 農業: ドローン映像から農作物や農業機器を監視します。
- エネルギー部門: 異なる向きの太陽光パネルや風力タービンを検査します。
- 交通: さまざまな視点から道路や駐車場内の車両を追跡します。
これらのアプリケーションは、どのような角度の物体にも正確にフィットするOBBの能力により、従来のバウンディングボックスよりも正確な検出が可能という恩恵を受けています。
よくある質問 (FAQ)#
指向性バウンディングボックス(OBB)とは何ですか?また、通常のバウンディングボックスとどう違いますか?#
傾きを持つバウンディングボックス(OBB)には、画像内のオブジェクトのローカライズ精度を向上させるための追加の角度が含まれています。軸に平行な長方形である通常のバウンディングボックスとは異なり、OBBはオブジェクトの向きに合わせて回転できます。これは、航空写真や衛星画像など、正確なオブジェクト配置を必要とするアプリケーションに特に役立ちます(Dataset Guide)。
カスタムデータセットを使用して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)その他のトレーニング引数については、Configurationセクションを確認してください。
YOLO26-OBBモデルの学習にはどのデータセットを使用できますか?#
YOLO26-OBBモデルはDOTAv1などのデータセットで事前学習されていますが、OBB用にフォーマットされた任意のデータセットを使用できます。OBBデータセット形式の詳細については、Dataset Guideをご覧ください。
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")その他のエクスポート形式と詳細については、Exportページを参照してください。
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セクションを参照してください。

