Ultralytics YOLOによる物体検出#
物体検出は、画像や動画ストリーム内の物体の位置とクラスを特定するタスクです。
物体検出器の出力は、画像内の物体を囲むバウンディングボックスの集合で、各ボックスにはクラスラベルと信頼度スコアが含まれます。シーン内で関心のある物体を特定したいものの、正確な形状を把握する必要がない場合、物体検出が適しています。
視聴: 学習済み Ultralytics YOLO モデルによる物体検出。
YOLO26 DetectモデルはデフォルトのYOLO26モデル、すなわちyolo26n.ptであり、COCOで事前学習されています。
モデル#
COCOデータセットで事前学習されたYOLO26 Detectモデルを以下に示します。
モデルは、初回使用時に最新のUltralytics リリースから自動的にダウンロードされます。
| モデル | サイズ (ピクセル) | mAPval 50-95 | mAP検証 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 detect val data=coco.yaml device=0で再現できます。e2e列を再現するにはnms=Falseを追加してください。 - 速度は、COCO val画像に対してONNXをCPUで、TensorRT10をNVIDIA T4 GPUで使用した場合の平均値です。
yolo detect val data=coco.yaml batch=1 device=0|cpu nms=Falseで再現できます。 - ParamsとFLOPsの値は、Conv/BatchNormのfoldingと未使用の検出ブランチの削除を適用した後の、融合済みモデルの値です。事前学習済みチェックポイントにはトレーニング時のアーキテクチャ全体が保持されているため、より大きな値が表示される場合があります。
予備的なCOCO検出結果については、未リリースのYOLO27プレビューをご覧ください。
学習#
COCO8データセットでYOLO26nを、画像サイズ640で100エポックトレーニングします。利用可能な引数の一覧については、Configurationページをご覧ください。
from ultralytics import YOLO
# モデルを読み込む
model = YOLO("yolo26n.yaml") # YAMLから新しいモデルを構築します
model = YOLO("yolo26n.pt") # 事前トレーニング済みモデルを読み込みます(トレーニングにはこちらを推奨します)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # YAMLからモデルを構築し、重みを転送します
# モデルをトレーニングする
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Trainページでtrainモードの詳細をご確認ください。検出モデルは、Ultralytics Platformのクラウドトレーニングでもトレーニングできます。
データセットのフォーマット#
YOLO検出データセットのフォーマットの詳細は、Dataset Guideをご覧ください。既存のCOCO JSONデータセットをYOLOフォーマットに変換するには、COCOからYOLOへのガイドで説明されている組み込みのconvert_coco関数を使用します。Ultralytics PlatformのAI支援アノテーションツールを使って、検出データセットにアノテーションを付けたり管理したりすることもできます。
検証#
トレーニング済みのYOLO26nモデルの精度を検証します。modelにはトレーニング時のdataと引数がモデル属性として保持されるため、引数を指定する必要はありません。Trainの例にあるpath/to/best.ptは、COCO8で検証します。公式の重みには、使用しているマシン上に存在しないトレーニングデータセットのパスが記録されているため、警告を表示したうえで、タスクのデフォルトであるcoco8.yamlにフォールバックします。別のデータセットで検証するには、dataを渡してください。
from ultralytics import YOLO
# モデルを読み込む
model = YOLO("yolo26n.pt") # 公式モデルを読み込みます
model = YOLO("path/to/best.pt") # カスタムモデルを読み込む
# モデルを検証します
metrics = model.val() # データセットと設定が記憶されるため、引数は不要です
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # カテゴリごとのmAP50-95を含むリスト
metrics.box.image_metrics # 画像ごとのprecision、recall、F1、TP、FP、FNを含む指標辞書推論#
トレーニング済みのYOLO26nモデルを使用して、画像に対する予測を実行します。
from ultralytics import YOLO
# モデルを読み込む
model = YOLO("yolo26n.pt") # 公式モデルを読み込みます
model = YOLO("path/to/best.pt") # カスタムモデルを読み込む
# モデルで予測します
results = model("https://ultralytics.com/images/bus.jpg") # 画像に対して予測します
# 結果にアクセスします
for result in results:
xywh = result.boxes.xywh # 中心x、中心y、幅、高さ
xywhn = result.boxes.xywhn # normalized
xyxy = result.boxes.xyxy # 左上x、左上y、右下x、右下y
xyxyn = result.boxes.xyxyn # normalized
names = [result.names[cls.item()] for cls in result.boxes.cls.int()] # 各ボックスのクラス名
confs = result.boxes.conf # 各ボックスの信頼度スコアPredictページでpredictモードの詳細をご確認ください。
結果の出力#
物体検出では、画像ごとにResultsオブジェクトが1つ返されます。主な予測フィールドは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
# モデルを読み込む
model = YOLO("yolo26n.pt") # 公式モデルを読み込みます
model = YOLO("path/to/best.pt") # カスタムモデルを読み込む
# モデルをエクスポートする
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 |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, 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 |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, 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 |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
nms=None は外部NMS向けにraw出力をデフォルトで使用します。利用可能なNMSフリーヘッドを選択するには、nms=Falseを設定してください。未対応のフォーマットでは、ネイティブの出力パスにフォールバックします。上記のnmsの項目は、nms=Trueを使用してNMSを埋め込めるフォーマットを示しています。
詳細なexport情報については、Exportページをご覧ください。
よくある質問#
はい。Ultralytics Platformのクイックスタートでは、ブラウザー上でデータセットにアノテーションを付け、クラウドGPUで検出モデルをトレーニングし、推論エンドポイントにデプロイするワークフローを紹介しています。
カスタムデータセットでYOLO26モデルをトレーニングするには、いくつかの手順があります。
- データセットを準備する: データセットがYOLOフォーマットであることを確認してください。手順については、Dataset Guideをご覧ください。
- モデルを読み込む: Ultralytics YOLOライブラリを使用して、事前学習済みモデルを読み込むか、YAMLファイルから新しいモデルを作成します。
- モデルをトレーニングする: Pythonでは
trainメソッドを、CLIではyolo detect trainコマンドを実行します。
例from ultralytics import YOLO # 事前トレーニング済みモデルを読み込む model = YOLO("yolo26n.pt") # カスタムデータセットでモデルをトレーニングします model.train(data="my_custom_dataset.yaml", epochs=100, imgsz=640)設定オプションの詳細については、Configurationページをご覧ください。
Ultralytics YOLO26では、物体検出、インスタンスセグメンテーション、セマンティックセグメンテーション、深度推定、分類、姿勢推定、方向付きバウンディングボックスに対応する、さまざまな事前学習済みモデルを提供しています。これらのモデルは、COCOデータセット、セマンティックセグメンテーション用のCityscapes、深度推定用の複数データセットの混合、分類用のImageNet、またはOBB用のDOTAv1で事前学習されています。利用可能なモデルの例を以下に示します。
モデルの詳細な一覧とパフォーマンス指標については、Modelsセクションをご覧ください。
トレーニング済みのYOLO26モデルの精度を検証するには、Pythonで
.val()メソッドを使用するか、CLIでyolo detect valコマンドを実行します。これにより、mAP50-95やmAP50などの指標が得られます。例from ultralytics import YOLO # モデルを読み込みます model = YOLO("path/to/best.pt") # モデルを検証します metrics = model.val() print(metrics.box.map) # mAP50-95検証の詳細については、Valページをご覧ください。
Ultralytics YOLO26は、物体検出、インスタンスセグメンテーション、セマンティックセグメンテーション、姿勢推定で最先端のパフォーマンスを実現するよう設計されています。主なメリットは次のとおりです。
- 事前学習済みモデル: COCOやImageNetなどの一般的なデータセットで事前学習されたモデルを活用することで、開発を迅速化できます。
- 高精度: 優れたmAPスコアを達成し、信頼性の高い物体検出を実現します。
- 速度: リアルタイム推論向けに最適化されているため、高速処理が必要な用途に最適です。
- 柔軟性: ONNXやTensorRTなど、さまざまなフォーマットにモデルをエクスポートして、複数のプラットフォームにデプロイできます。
YOLO26の活用事例や成功事例については、ブログをご覧ください。