コンテンツにスキップ

傾斜バウンディングボックス物体検出

Orientedオブジェクト検出は、画像内のオブジェクトをより正確に特定するために、追加の角度を導入することにより、標準のオブジェクト検出よりもさらに一歩進んでいます。

方向性オブジェクト検出器の出力は、画像内のオブジェクトを正確に囲む回転されたバウンディングボックスのセットであり、各ボックスのクラスラベルと信頼度スコアが含まれます。回転されたバウンディングボックスは、オブジェクトがさまざまな角度で表示される場合に特に役立ちます。たとえば、航空写真では、従来の軸に沿ったバウンディングボックスには不要な背景が含まれる場合があります。

ヒント

YOLO26 OBBモデルは -obb 接尾辞、すなわち、 yolo26n-obb.pt、そして事前学習されています DOTAv1.



見る: Ultralytics YOLOを用いた指向性バウンディングボックスによる物体検出 (YOLO-OBB)

視覚的なサンプル

OBB を使用した船舶検出OBBを使用した車両検出
OBB を使用した船舶検出OBBを使用した車両検出

モデル

ここにYOLO26の事前トレーニング済みOBBモデルを示します。これらはDOTAv1データセットで事前トレーニングされています。

モデルは、最初の使用時に最新のUltralytics リリースから自動的にダウンロードされます。

モデルサイズ
(ピクセル)
mAPtest
50-95(e2e)
mAPtest
50(e2e)
速度
CPU ONNX
(ms)
速度
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B)
YOLO26n-obb102452.478.997.7 ± 0.92.8 ± 0.02.514.0
YOLO26s-obb102454.880.9218.0 ± 1.44.9 ± 0.19.855.1
YOLO26m-obb102455.381.0579.2 ± 3.810.2 ± 0.321.2183.3
YOLO26l-obb102456.281.6735.6 ± 3.113.0 ± 0.225.6230.0
YOLO26x-obb102456.781.71485.7 ± 11.530.5 ± 0.957.6516.5
  • 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

トレーニング

DOTA8データセットで、画像サイズ640、100 エポックでYOLO26n-obbをトレーニングします。利用可能な引数の完全なリストについては、設定ページを参照してください。

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.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=yolo26n-obb.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolo26n-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=yolo26n-obb.yaml pretrained=yolo26n-obb.pt epochs=100 imgsz=640



見る: Ultralyticsプラットフォームを使用した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

トレーニング済みYOLO26n-obbモデルの検証 精度 DOTA8データセットで実行します。引数は必要ありません。 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
yolo obb val model=yolo26n-obb.pt data=dota8.yaml         # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml # val custom model

予測

学習済みの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 box
yolo obb predict model=yolo26n-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 モードの詳細については、 予測 ページ。

エクスポート

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")
yolo export model=yolo26n-obb.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model

利用可能なYOLO26-obbのエクスポート形式は以下の表に示されています。任意の形式にエクスポートするには、 format 引数、すなわち、 format='onnx' または format='engine'。エクスポートされたモデルで直接予測または検証できます。つまり、 yolo predict model=yolo26n-obb.onnxエクスポート完了後、モデルの使用例が表示されます。

形式format 引数モデルメタデータ引数
PyTorch-yolo26n-obb.pt-
TorchScripttorchscriptyolo26n-obb.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-obb.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-obb_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-obb_saved_model/imgsz, keras, int8, nms, batch, device
TF GraphDefpbyolo26n-obb.pbimgsz, batch, device
TF Litetfliteyolo26n-obb.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tfliteimgsz, device
TF.jstfjsyolo26n-obb_web_model/imgsz, half, int8, nms, batch, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/imgsz, batch, device
MNNmnnyolo26n-obb.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-obb_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-obb_imx_model/imgsz, int8, data, fraction, device
RKNNrknnyolo26n-obb_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/imgsz, device
Axeleraaxelerayolo26n-obb_axelera_model/imgsz, int8, data, fraction, device

詳細な export 詳細は エクスポート ページ。

現実世界のアプリケーション

YOLO26によるobb検出は、様々な産業において数多くの実用的なアプリケーションがあります。

  • 海事および港湾管理: フリート管理と監視のために、さまざまな角度で船舶を検出。
  • 都市計画: 航空画像からの建物とインフラストラクチャの分析。
  • 農業: ドローン映像からの作物および農業機器の監視。
  • エネルギーセクター: さまざまな方向でのソーラーパネルと風力タービンの検査。
  • 交通:さまざまな視点からの道路や駐車場での車両の追跡。

これらのアプリケーションは、OBBがあらゆる角度でオブジェクトを正確にフィットさせ、従来のバウンディングボックスよりも正確な検出を提供できるという利点があります。

よくある質問

指向性バウンディングボックス(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)
yolo obb train data=path/to/custom_dataset.yaml model=yolo26n-obb.pt epochs=100 imgsz=640

その他のトレーニング引数については、Configurationセクションをご確認ください。

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")
yolo export model=yolo26n-obb.pt 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")
yolo obb val model=yolo26n-obb.pt data=dota8.yaml

検証の詳細については、Valセクションを参照してください。



📅 2年前に作成 ✏️ 2日前に更新
glenn-jocherBurhan-QY-T-GRizwanMunawarambitious-octopusLaughing-qUltralyticsAssistantpderrengerjk4eMatthewNoyceAyushExel

コメント