Ultralytics YOLOによる物体検出#
物体検出は、画像またはビデオストリーム内の物体の位置とクラスを特定するタスクです。
物体検出器の出力は、画像内の物体を囲むバウンディングボックスの集合と、各ボックスのクラスラベルおよび信頼度スコアです。シーン内で関心のある物体を特定する必要があるものの、物体の正確な位置や形状までは必要ない場合、物体検出が適しています。
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) |
|---|---|---|---|---|---|---|---|
| YOLO26n | 640 | 40.9 | 40.1 | 38.9 ± 0.7 | 1.7 ± 0.0 | 2.4 | 5.5 |
| YOLO26s | 640 | 48.6 | 47.8 | 87.2 ± 0.9 | 2.5 ± 0.0 | 9.5 | 20.9 |
| YOLO26m | 640 | 53.1 | 52.5 | 220.0 ± 1.4 | 4.7 ± 0.1 | 20.4 | 68.4 |
| YOLO26l | 640 | 55.0 | 54.4 | 286.2 ± 2.0 | 6.2 ± 0.2 | 24.8 | 86.8 |
| YOLO26x | 640 | 57.5 | 56.9 | 525.8 ± 4.0 | 11.8 ± 0.2 | 55.7 | 194.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 boxPredictページで、predict モードの詳細をすべて確認できます。
結果の出力#
物体検出は、画像ごとに1つのResultsオブジェクトを返します。主な予測フィールドはresult.boxesで、検出された各物体のボックス座標、クラスID、信頼度スコアが含まれます。
| 属性 | 型 | 形状 | 説明 |
|---|---|---|---|
result.boxes | Boxes | (N) | 検出ボックスです。 |
result.boxes.data | torch.float32 | (N,6/7) | 生の[x1,y1,x2,y2,conf,cls]と、オプションのトラックIDです。 |
result.boxes.xyxy | torch.float32 | (N,4) | xyxyのピクセルボックスです。 |
result.boxes.conf | torch.float32 | (N,) | 信頼度スコア。 |
result.boxes.cls | torch.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 | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz、quantize、dynamic、nms、batch、device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz、quantize、dynamic、simplify、opset、nms、batch、data、fraction、device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz、quantize、dynamic、nms、batch、data、fraction、device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz、quantize、dynamic、simplify、opset、workspace、nms、batch、data、fraction、device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz、dynamic、quantize、nms、batch、device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz、keras、quantize、opset、nms、batch、data、fraction、device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz、opset、batch、device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz、quantize、opset、data、fraction、device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz、batch、device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz、batch、dynamic、quantize、simplify、opset、nms、device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz、quantize、batch、device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz、quantize、data、fraction、nms、device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz、batch、device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz、batch、quantize、data、fraction、device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz、quantize、simplify、opset、data、optimize、device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz、quantize、batch、data、fraction、device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz、name、quantize、data、fraction、simplify、conf、iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz、batch、name、quantize、opset、simplify、nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz、batch、quantize |
nms=None は、外部 NMS の場合は生出力をデフォルトとします。nms=False を設定して利用可能な NMS なしのヘッドを選択します。サポートされていないフォーマットは、ネイティブ出力パスにフォールバックします。上記の nms エントリは、nms=True を使用して NMS を埋め込むことができるフォーマットを特定します。
Exportページで、export の詳細をすべて確認できます。
FAQ#
はい。Ultralytics Platformクイックスタートでは、ブラウザベースのワークフローを使用してデータセットにアノテーションを付け、クラウドGPU上で検出モデルをトレーニングし、推論エンドポイントにデプロイする方法を説明しています。
カスタムデータセットでYOLO26モデルをトレーニングするには、いくつかの手順が必要です。
- データセットを準備する: データセットがYOLO形式であることを確認します。手順については、Dataset Guideを参照してください。
- モデルを読み込む: Ultralytics YOLOライブラリを使用して事前学習済みモデルを読み込むか、YAMLファイルから新しいモデルを作成します。
- モデルをトレーニングする: 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は、物体検出、インスタンスセグメンテーション、セマンティックセグメンテーション、姿勢推定で最先端のパフォーマンスを提供するよう設計されています。主な利点を以下に示します。
- 事前学習済みモデル: COCOやImageNetなどの一般的なデータセットで事前学習されたモデルを利用し、開発を迅速化できます。
- 高精度: 優れたmAPスコアを実現し、信頼性の高い物体検出を可能にします。
- 速度: リアルタイム推論向けに最適化されており、高速な処理が求められるアプリケーションに適しています。
- 柔軟性: ONNXやTensorRTなどさまざまな形式にモデルをエクスポートし、複数のプラットフォームにデプロイできます。
YOLO26の活用例や成功事例については、ブログをご覧ください。