Ultralytics YOLO27:

Ultralytics YOLOによる物体検出#

Ultralytics YOLO object detection with bounding boxes

物体検出は、画像またはビデオストリーム内の物体の位置とクラスを特定するタスクです。

物体検出器の出力は、画像内の物体を囲むバウンディングボックスの集合と、各ボックスのクラスラベルおよび信頼度スコアです。シーン内で関心のある物体を特定する必要があるものの、物体の正確な位置や形状までは必要ない場合、物体検出が適しています。



Watch: Object Detection with Pretrained Ultralytics YOLO Model.
ヒント

YOLO26 DetectモデルはデフォルトのYOLO26モデル、つまりyolo26n.ptであり、COCOで事前学習されています。

モデル#

YOLO26の事前学習済みDetectモデルを以下に示します。Detect、Segment、PoseモデルはCOCOデータセットで、SemanticモデルはCityscapesで、ClassifyモデルはImageNetデータセットで事前学習されています。

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

モデルサイズ
(ピクセル)
mAPval
50-95
mAPval
50-95(e2e)
速度
CPU ONNX
(ms)
速度
T4 TensorRT10
(ms)
パラメーター数
(M)
FLOPs
(B)
YOLO26n64040.940.138.9 ± 0.71.7 ± 0.02.45.5
YOLO26s64048.647.887.2 ± 0.92.5 ± 0.09.520.9
YOLO26m64053.152.5220.0 ± 1.44.7 ± 0.120.468.4
YOLO26l64055.054.4286.2 ± 2.06.2 ± 0.224.886.8
YOLO26x64057.556.9525.8 ± 4.011.8 ± 0.255.7194.4
  • mAPval の値は、単一モデルおよび単一スケールの COCO val2017 データセットにおける値です。
    yolo val detect data=coco.yaml device=0 を使用して再現します。e2e 列を再現するには nms=False を追加します。
  • 速度は、Amazon EC2 P4dインスタンスを使用し、COCO valの画像全体で平均した値です。
    yolo val detect data=coco.yaml batch=1 device=0|cpu nms=Falseで再現できます。
  • Params および FLOPs の値は、Conv/BatchNorm の畳み込みとバッチ正規化の統合(折りたたみ)および未使用の検出ブランチの削除を行った後の、融合済みモデルの値です。事前学習済みチェックポイントは完全な学習アーキテクチャを維持しているため、より高い数値を示す場合があります。

COCO検出の予備結果については、未リリースのYOLO27プレビューをご覧ください。

トレーニング#

COCO8データセットで、画像サイズ640、100エポックのYOLO26nをトレーニングします。使用可能な引数の完全な一覧については、Configurationページを参照してください。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Trainページでtrainモードの詳細を確認できます。検出モデルは、Ultralytics Platformのクラウドトレーニングでもトレーニングできます。

データセット形式#

YOLOの検出データセットフォーマットの詳細については、Dataset Guideをご確認ください。既存のCOCO JSONデータセットをYOLOフォーマットに変換するには、COCO to YOLO guideで説明されている組み込みのconvert_coco関数を使用します。また、Ultralytics Platform's AI-assisted annotation toolsを使用して検出データセットにアノテーションを付与し、管理することもできます。

検証#

COCO8データセットで、トレーニング済みYOLO26nモデルの精度を検証します。modelにはトレーニング時のdataと引数がモデル属性として保持されているため、引数は必要ありません。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

推論#

トレーニング済みのYOLO26nモデルを使用して、画像に対する予測を実行します。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.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/bus.jpg")  # predict on an image

# Access the results
for result in results:
    xywh = result.boxes.xywh  # center-x, center-y, width, height
    xywhn = result.boxes.xywhn  # normalized
    xyxy = result.boxes.xyxy  # top-left-x, top-left-y, bottom-right-x, bottom-right-y
    xyxyn = result.boxes.xyxyn  # normalized
    names = [result.names[cls.item()] for cls in result.boxes.cls.int()]  # class name of each box
    confs = result.boxes.conf  # confidence score of each box

Predictページで、predict モードの詳細をすべて確認できます。

結果の出力#

物体検出は、画像ごとに1つのResultsオブジェクトを返します。主な予測フィールドはresult.boxesで、検出された各物体のボックス座標、クラスID、信頼度スコアが含まれます。

属性形状説明
result.boxesBoxes(N)検出ボックスです。
result.boxes.datatorch.float32(N,6/7)生の[x1,y1,x2,y2,conf,cls]と、オプションのトラックIDです。
result.boxes.xyxytorch.float32(N,4)xyxyのピクセルボックスです。
result.boxes.conftorch.float32(N,)信頼度スコア。
result.boxes.clstorch.float32(N,)クラスIDです。名前を取得するにはintにキャストします。

すべてのタスクにおけるタスク固有の Results フィールドについては、タスク別の予測結果セクションを参照してください。

エクスポート#

YOLO26nモデルをONNX、CoreMLなどの別の形式にエクスポートします。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

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

形式format 引数モデルメタデータ引数
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgszquantizedynamicnmsbatchdevice
ONNXonnxyolo26n.onnximgszquantizedynamicsimplifyopsetnmsbatchdatafractiondevice
OpenVINOopenvinoyolo26n_openvino_model/imgszquantizedynamicnmsbatchdatafractiondevice
TensorRTengineyolo26n.engineimgszquantizedynamicsimplifyopsetworkspacenmsbatchdatafractiondevice
CoreMLcoremlyolo26n.mlpackageimgszdynamicquantizenmsbatchdevice
TF SavedModelsaved_modelyolo26n_saved_model/imgszkerasquantizeopsetnmsbatchdatafractiondevice
TF GraphDefpbyolo26n.pbimgszopsetbatchdevice
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgszquantizeopsetdatafractiondevice
PaddlePaddlepaddleyolo26n_paddle_model/imgszbatchdevice
MNNmnnyolo26n.mnnimgszbatchdynamicquantizesimplifyopsetnmsdevice
NCNNncnnyolo26n_ncnn_model/imgszquantizebatchdevice
IMX500imxyolo26n_imx_model/imgszquantizedatafractionnmsdevice
RKNNrknnyolo26n_rknn_model/imgszbatchnamequantizesimplifyopsetdatafractiondevice
ExecuTorchexecutorchyolo26n_executorch_model/imgszbatchdevice
Axeleraaxelerayolo26n_axelera_model/imgszbatchquantizedatafractiondevice
DEEPXdeepxyolo26n_deepx_model/imgszquantizesimplifyopsetdataoptimizedevice
Qualcomm QNNqnnyolo26n_qnn.onnximgszbatchnamequantizesimplifyopsetdatafractiondevice
LiteRTlitertyolo26n.tfliteimgszquantizebatchdatafractiondevice
Hailohailoyolo26n_hailo_model/imgsznamequantizedatafractionsimplifyconfiou
Huawei Ascendascendyolo26n_ascend_model/imgszbatchnamequantizeopsetsimplifynms
Apple Core AIcoreaiyolo26n.aimodelimgszbatchquantize

nms=None は、外部 NMS の場合は生出力をデフォルトとします。nms=False を設定して利用可能な NMS なしのヘッドを選択します。サポートされていないフォーマットは、ネイティブ出力パスにフォールバックします。上記の nms エントリは、nms=True を使用して NMS を埋め込むことができるフォーマットを特定します。

Exportページで、export の詳細をすべて確認できます。

FAQ#

  • はい。Ultralytics Platformクイックスタートでは、ブラウザベースのワークフローを使用してデータセットにアノテーションを付け、クラウドGPU上で検出モデルをトレーニングし、推論エンドポイントにデプロイする方法を説明しています。

  • カスタムデータセットでYOLO26モデルをトレーニングするには、いくつかの手順が必要です。

    1. データセットを準備する: データセットがYOLO形式であることを確認します。手順については、Dataset Guideを参照してください。
    2. モデルを読み込む: Ultralytics YOLOライブラリを使用して事前学習済みモデルを読み込むか、YAMLファイルから新しいモデルを作成します。
    3. モデルをトレーニングする: Pythonでtrainメソッドを実行するか、CLIでyolo detect trainコマンドを実行します。
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n.pt")
    
    # Train the model on your custom dataset
    model.train(data="my_custom_dataset.yaml", epochs=100, imgsz=640)

    詳細な設定オプションについては、Configurationページを参照してください。

  • Ultralytics YOLO26では、物体検出インスタンスセグメンテーションセマンティックセグメンテーション姿勢推定用のさまざまな事前学習済みモデルを利用できます。これらのモデルは、COCOデータセット、セマンティックセグメンテーションにはCityscapes、分類タスクにはImageNetで事前学習されています。利用可能なモデルの一部を以下に示します。

    詳細な一覧とパフォーマンス指標については、Modelsセクションを参照してください。

  • トレーニング済みYOLO26モデルの精度を検証するには、Pythonで.val()メソッドを使用するか、CLIでyolo detect valコマンドを使用します。これにより、mAP50-95、mAP50などの指標が得られます。

    from ultralytics import YOLO
    
    # Load the model
    model = YOLO("path/to/best.pt")
    
    # Validate the model
    metrics = model.val()
    print(metrics.box.map)  # mAP50-95

    検証の詳細については、Valページを参照してください。

  • Ultralytics YOLO26では、さまざまなプラットフォームやデバイスとの互換性を確保するため、ONNXTensorRTCoreMLなど、さまざまな形式にモデルをエクスポートできます。

    from ultralytics import YOLO
    
    # Load the model
    model = YOLO("yolo26n.pt")
    
    # Export the model to ONNX format
    model.export(format="onnx")

    サポートされている形式と手順の完全な一覧は、Exportページで確認してください。

  • Ultralytics YOLO26は、物体検出インスタンスセグメンテーションセマンティックセグメンテーション姿勢推定で最先端のパフォーマンスを提供するよう設計されています。主な利点を以下に示します。

    1. 事前学習済みモデル: COCOImageNetなどの一般的なデータセットで事前学習されたモデルを利用し、開発を迅速化できます。
    2. 高精度: 優れたmAPスコアを実現し、信頼性の高い物体検出を可能にします。
    3. 速度: リアルタイム推論向けに最適化されており、高速な処理が求められるアプリケーションに適しています。
    4. 柔軟性: ONNXやTensorRTなどさまざまな形式にモデルをエクスポートし、複数のプラットフォームにデプロイできます。

    YOLO26の活用例や成功事例については、ブログをご覧ください。

コメント