Ultralytics YOLOv5#
概要#
YOLOv5uは、物体検出手法の進歩を示すモデルです。Ultralyticsが開発した基盤アーキテクチャであるYOLOv5モデルをベースに、YOLOv5uはYOLOv8モデルで初めて導入された、アンカーフリーかつobjectnessフリーの分離ヘッドを統合しています。この変更によりモデルアーキテクチャが洗練され、物体検出タスクにおける精度と速度のトレードオフが改善されています。実証結果と派生機能を踏まえると、YOLOv5uは研究用途と実用用途の両方で堅牢なソリューションを求める方に、効率的な選択肢を提供します。

Ultralyticsは、YOLOv5モデルのアンカーフリー版を提供しています。ultralytics/yolov5リポジトリでトレーニングしたモデルは、ultralytics/ultralyticsライブラリで読み込めません。ここでYOLOv5を使用するには、Ultralytics YOLOv5uのチェックポイント(例: yolov5su.pt)から新しいモデルをトレーニングしてください。
Ultralytics PlatformでYOLOv5モデルを直接確認し、実行できます。
主な機能#
-
アンカーフリーのUltralytics分離ヘッド: 従来の物体検出モデルでは、オブジェクトの位置を予測するために、事前定義されたアンカーボックスを使用します。一方、YOLOv5uはこのアプローチを近代化しています。アンカーフリーのUltralytics分離ヘッドを採用することで、より柔軟で適応性の高い検出メカニズムを実現し、さまざまなシナリオでのパフォーマンスを向上させています。
-
精度と速度のトレードオフを最適化: 速度と精度はしばしば相反します。しかし、YOLOv5uはこのトレードオフを改善します。バランスを調整し、精度を損なうことなくリアルタイム検出を実現します。この機能は、自動運転車、ロボティクス、リアルタイム動画分析など、迅速な応答が求められるアプリケーションで特に役立ちます。
-
多様な事前トレーニング済みモデル: タスクごとに必要なツールが異なることを踏まえ、YOLOv5uでは豊富な事前トレーニング済みモデルを用意しています。推論、検証、トレーニングのいずれを行う場合でも、用途に合わせたモデルを利用できます。この多様性により、万能型のソリューションではなく、固有の課題に合わせて微調整されたモデルを使用できます。
サポート対象のタスクとモード#
さまざまな事前トレーニング済み重みを備えたYOLOv5uモデルは、物体検出タスクで優れた性能を発揮します。幅広いモードに対応しているため、開発からデプロイまで、多様な用途に適しています。
| モデルタイプ | 事前学習済み重み | タスク | トレーニング | 検証 | 推論 | エクスポート |
|---|---|---|---|---|---|---|
| YOLOv5u | yolov5nu, yolov5su, yolov5mu, yolov5lu, yolov5xu, yolov5n6u, yolov5s6u, yolov5m6u, yolov5l6u, yolov5x6u | 物体検出 | ✅ | ✅ | ✅ | ✅ |
この表では、YOLOv5uの各モデルバリアントについて、物体検出タスクへの適用性と、推論、検証、トレーニング、エクスポートなど、さまざまな運用モードへの対応状況を詳しくまとめています。幅広いシナリオにおける物体検出で、ユーザーがYOLOv5uモデルの機能を最大限に活用できるよう、包括的にサポートしています。
性能指標#
これらのモデルをCOCOでトレーニングした使用例については検出ドキュメントをご覧ください。これらのモデルには80個の事前学習済みクラスが含まれています。COCOについてもご確認ください。
| モデル | YAML | サイズ (ピクセル) | mAPval 50-95 | 速度 CPU ONNX (ms) | 速度 A100 TensorRT (ms) | パラメーター (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| yolov5nu.pt | yolov5n.yaml | 640 | 34.3 | 73.6 | 1.06 | 2.6 | 7.7 |
| yolov5su.pt | yolov5s.yaml | 640 | 43.0 | 120.7 | 1.27 | 9.1 | 24.0 |
| yolov5mu.pt | yolov5m.yaml | 640 | 49.0 | 233.9 | 1.86 | 25.1 | 64.2 |
| yolov5lu.pt | yolov5l.yaml | 640 | 52.2 | 408.4 | 2.50 | 53.2 | 135.0 |
| yolov5xu.pt | yolov5x.yaml | 640 | 53.2 | 763.2 | 3.81 | 97.2 | 246.4 |
| yolov5n6u.pt | yolov5n6.yaml | 1280 | 42.1 | 211.0 | 1.83 | 4.3 | 31.3 |
| yolov5s6u.pt | yolov5s6.yaml | 1280 | 48.6 | 422.6 | 2.34 | 15.3 | 97.6 |
| yolov5m6u.pt | yolov5m6.yaml | 1280 | 53.6 | 810.9 | 4.36 | 41.2 | 261.3 |
| yolov5l6u.pt | yolov5l6.yaml | 1280 | 55.7 | 1470.9 | 5.47 | 86.1 | 549.4 |
| yolov5x6u.pt | yolov5x6.yaml | 1280 | 56.8 | 2436.5 | 8.98 | 155.5 | 1002.8 |
使用例#
この例では、YOLOv5のトレーニングと推論の簡単な例を紹介します。これらのモードやその他のモードに関する詳細なドキュメントについては、予測、トレーニング、検証、エクスポートのドキュメントページをご覧ください。
PyTorchの事前学習済み*.ptモデルと構成*.yamlファイルをYOLO()クラスに渡すことで、Pythonでモデルインスタンスを作成できます。
from ultralytics import YOLO
# COCOで事前トレーニングされたYOLOv5nuモデルを読み込みます
model = YOLO("yolov5nu.pt")
# モデル情報を表示(任意)
model.info()
# COCO8サンプルデータセットでモデルを100エポック学習する
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 'bus.jpg'画像に対してYOLOv5nuモデルで推論を実行します
results = model("path/to/bus.jpg")引用と謝辞#
モデルが急速に進化しているため、UltralyticsはYOLOv5に関する正式な研究論文を発表していません。静的なドキュメントの作成よりも、技術の進歩と使いやすさの向上に注力しています。YOLOアーキテクチャ、機能、使用方法に関する最新情報については、GitHubリポジトリおよびドキュメントをご覧ください。
研究でYOLOv5またはYOLOv5uを使用する場合は、次のようにUltralytics YOLOv5リポジトリを引用してください。
@software{yolov5,
title = {Ultralytics YOLOv5},
author = {Glenn Jocher},
year = {2020},
version = {7.0},
license = {AGPL-3.0},
url = {https://github.com/ultralytics/yolov5},
doi = {10.5281/zenodo.3908559},
orcid = {0000-0001-5950-6979}
}YOLOv5モデルは、AGPL-3.0ライセンスおよびEnterpriseライセンスで提供されていることにご注意ください。
よくある質問#
YOLOv5uのアンカーフリーのUltralyticsヘッドは、事前定義されたアンカーボックスへの依存をなくすことで、物体検出パフォーマンスを向上させます。これにより、さまざまなサイズや形状のオブジェクトをより効率的に処理できる、柔軟で適応性の高い検出メカニズムを実現します。この機能強化は精度と速度のバランスに直接貢献し、YOLOv5uをリアルタイムアプリケーションに適したモデルにしています。アーキテクチャの詳細については、主な機能をご覧ください。
YOLOv5uモデルのパフォーマンス指標は、使用するプラットフォームとハードウェアによって異なります。たとえば、YOLOv5nuモデルはCOCOデータセットで34.3 mAPを達成し、CPU(ONNX)では73.6 ms、A100 TensorRTでは1.06 msの速度です。さまざまなYOLOv5uモデルの詳しいパフォーマンス指標は、各種デバイスを包括的に比較したパフォーマンス指標のセクションで確認できます。
事前トレーニング済みモデルを読み込み、データセットを指定してトレーニングコマンドを実行すると、YOLOv5uモデルをトレーニングできます。簡単な例を紹介します。
例from ultralytics import YOLO # COCOで事前トレーニングされたYOLOv5nuモデルを読み込みます model = YOLO("yolov5nu.pt") # モデル情報を表示(任意) model.info() # COCO8サンプルデータセットでモデルを100エポック学習する results = model.train(data="coco8.yaml", epochs=100, imgsz=640)詳しい手順については、使用例をご覧ください。