YOLOv3とYOLOv3u#
概要#
このドキュメントでは、密接に関連する3つの物体検出モデル、YOLOv3、YOLOv3-Ultralytics、YOLOv3uの概要を紹介します。
-
YOLOv3: YOLO(You Only Look Once)物体検出アルゴリズムの第3版です。Joseph Redmonによって開発されたYOLOv3は、マルチスケール予測や3種類の検出カーネルサイズなどの機能を導入し、先行モデルを改良しました。
-
YOLOv3-Ultralytics: UltralyticsによるYOLOv3のPyTorch実装で、ultralytics/yolov3リポジトリでメンテナンスされています。元のアンカーベースのアーキテクチャを維持しながら、より多くの事前学習済みモデルと、より簡単なカスタマイズ機能を追加しています。
-
YOLOv3u: YOLOv8モデルで使用されている、アンカーフリーかつオブジェクトネスフリーの分割ヘッドを取り入れた、YOLOv3-Ultralyticsのアップデート版です。YOLOv3uはYOLOv3と同じバックボーンとネックのアーキテクチャを維持しつつ、YOLOv8の最新の検出ヘッドを採用しています。

主な機能#
-
YOLOv3: 検出に3種類のスケールを導入し、13x13、26x26、52x52の3種類の検出カーネルサイズを活用します。これにより、サイズの異なる物体の検出精度が大幅に向上しました。さらに、各バウンディングボックスに対するマルチラベル予測や、より優れた特徴抽出ネットワークなどの機能も追加されました。
-
YOLOv3u: このアップデートモデルは、YOLOv8のアンカーフリーかつオブジェクトネスフリーの分割ヘッドを採用しています。事前定義されたアンカーボックスとオブジェクトネススコアが不要になるため、この検出ヘッド設計によって、さまざまなサイズや形状の物体を検出するモデルの能力が向上します。その結果、YOLOv3uは物体検出タスクにおいて、より堅牢で高精度なモデルになります。
サポート対象のタスクとモード#
YOLOv3は、物体検出タスクに特化して設計されています。Ultralyticsは、YOLOv3の3つのバリアント、yolov3u、yolov3-tinyu、yolov3-sppuをサポートしています。名称に含まれるuは、元のアンカーベースのアーキテクチャとは異なり、これらのモデルがYOLOv8のアンカーフリーヘッドを使用していることを示します。これらのモデルは精度と速度のバランスに優れ、さまざまな実環境で高い効果を発揮します。各バリアントには独自の機能と最適化があり、幅広い用途に適しています。
3つすべてのモデルが包括的なモード一式をサポートしており、モデルのデプロイや開発のさまざまな段階で柔軟に活用できます。これらのモードには、推論、検証、トレーニング、エクスポートが含まれており、効果的な物体検出に必要なツール一式を提供します。
| モデルタイプ | 事前学習済み重み | サポートされるタスク | トレーニング | 検証 | 推論 | エクスポート |
|---|---|---|---|---|---|---|
| YOLOv3(u) | yolov3u.pt | 物体検出 | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-Tiny(u) | yolov3-tinyu.pt | 物体検出 | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-SPP(u) | yolov3-sppu.pt | 物体検出 | ✅ | ✅ | ✅ | ✅ |
この表では、各YOLOv3バリアントの機能を一覧で確認でき、物体検出ワークフローにおけるさまざまなタスクや運用モードへの適応性と適性を示しています。
使用例#
この例では、YOLOv3のトレーニングと推論の基本的な使用方法を紹介します。これらのモードやその他のモードの詳細については、Predict、Train、Val、Exportのドキュメントページをご覧ください。
PyTorchの事前学習済み*.ptモデルと構成*.yamlファイルをYOLO()クラスに渡すことで、Pythonでモデルインスタンスを作成できます。
from ultralytics import YOLO
# COCOで事前学習済みのYOLOv3uモデルを読み込みます
model = YOLO("yolov3u.pt")
# モデル情報を表示(任意)
model.info()
# COCO8サンプルデータセットでモデルを100エポック学習する
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 「bus.jpg」画像に対してYOLOv3uモデルで推論を実行します
results = model("path/to/bus.jpg")引用と謝辞#
研究でYOLOv3を使用する場合は、オリジナルのYOLO論文とUltralytics YOLOv3リポジトリを引用してください。
@article{redmon2018yolov3,
title={YOLOv3: An Incremental Improvement},
author={Redmon, Joseph and Farhadi, Ali},
journal={arXiv preprint arXiv:1804.02767},
year={2018}
}オリジナルのYOLOv3を開発したJoseph Redmon氏とAli Farhadi氏に感謝します。
よくある質問#
YOLOv3は、Joseph Redmon氏が開発したYOLO(You Only Look Once)物体検出アルゴリズムの第3世代です。精度と速度のバランスに優れ、検出に3種類のスケール(13x13、26x26、52x52)を使用します。YOLOv3-UltralyticsはUltralyticsによるYOLOv3の改良版で、より多くの事前学習済みモデルをサポートし、モデルを簡単にカスタマイズできます。YOLOv3uはYOLOv3-Ultralyticsのアップグレード版で、YOLOv8のアンカーフリーかつオブジェクトネスフリーの分割ヘッドを取り入れ、さまざまなサイズの物体に対する検出の堅牢性と精度を向上させています。各バリアントの詳細については、YOLOv3シリーズをご覧ください。
UltralyticsでのYOLOv3モデルのトレーニングは簡単です。PythonまたはCLIを使用してモデルをトレーニングできます。
例from ultralytics import YOLO # COCOで事前学習済みのYOLOv3uモデルを読み込みます model = YOLO("yolov3u.pt") # COCO8サンプルデータセットでモデルを100エポック学習する results = model.train(data="coco8.yaml", epochs=100, imgsz=640)より包括的なトレーニングオプションとガイドラインについては、Trainモードのドキュメントをご覧ください。
YOLOv3uは、YOLOv8モデルで使用されているアンカーフリーかつオブジェクトネスフリーの分割ヘッドを取り入れることで、YOLOv3とYOLOv3-Ultralyticsを改良しています。このアップグレードにより、事前定義されたアンカーボックスとオブジェクトネススコアが不要になり、さまざまなサイズや形状の物体をより正確に検出できるようになります。そのため、YOLOv3uは複雑で多様な物体検出タスクに適しています。詳細については、主な機能のセクションをご覧ください。
YOLOv3モデルを使用した推論は、PythonスクリプトまたはCLIコマンドで実行できます。
例from ultralytics import YOLO # COCOで事前学習済みのYOLOv3uモデルを読み込みます model = YOLO("yolov3u.pt") # 「bus.jpg」画像に対してYOLOv3uモデルで推論を実行します results = model("path/to/bus.jpg")YOLOモデルの実行方法について詳しくは、推論モードのドキュメントをご覧ください。
YOLOv3、YOLOv3-Tiny、YOLOv3-SPPは、主に物体検出タスクをサポートしています。これらのモデルは、推論、検証、トレーニング、エクスポートなど、モデルのデプロイや開発におけるさまざまな段階で使用できます。サポートされるタスクの一覧と詳細については、物体検出タスクのドキュメントをご覧ください。
研究でYOLOv3を使用する場合は、オリジナルのYOLO論文とUltralytics YOLOv3リポジトリを引用してください。BibTeXによる引用例:
引用@article{redmon2018yolov3, title={YOLOv3: An Incremental Improvement}, author={Redmon, Joseph and Farhadi, Ali}, journal={arXiv preprint arXiv:1804.02767}, year={2018} }引用の詳細については、引用と謝辞のセクションをご覧ください。