YOLO進化の系譜 — "You Only Look Once"の10年史
2025-04-28
そもそもYOLOとは?
You Only Look Once
入力画像を"一度"だけCNNに通し、バウンディングボックス+クラスを同時に出力するワンステージ検出器。
キーワードは 「リアルタイム × 高精度 × 単純構造」。
10年でどう進化した?
地下鉄路線図風タイムライン ✏️
mAP@0.5: 63.4 / FPS: 45
mAP@0.5: 76.8 / FPS: 40
mAP@0.5: 80.6 / FPS: 30
mAP@0.5: 83.0 / FPS: 62
mAP@0.5: 88.5 / FPS: 140 (v5n)
mAP@0.5:0.95: 43.1 / FPS: 120
mAP@0.5:0.95: 51.4 / FPS: 160
mAP@0.5:0.95: 53.9 / FPS: 165
mAP@0.5:0.95: 56.1 / FPS: 180
mAP@0.5:0.95: 58.7 / FPS: 190
路線図の見かた
- 青線=アーキテクチャ改良
- 緑線=学習トリック
- 赤線=ハードウェア最適化
- v5以降は"枝線"でNano / Small / Medium / Largeなどモデルサイズ展開
主な改良ポイントを初心者向けに分解
改良カテゴリ | キーワード | ざっくり説明 |
---|---|---|
Backbone | Darknet → CSP → ViT | "特徴抽出器"。深く/広く/自己注意化で表現力UP |
Neck & Head | FPN, PAN, Decoupled Head | マルチスケール融合+分類と回帰を分離し学習効率UP |
Loss関数 | IoU → GIoU → CIoU | "ズレ"をより厳密に評価、収束を高速化 |
Data Augment | Mosaic, MixUp, AutoAugment | 画像4枚合成や色変換で汎化性能UP |
ハード最適化 | TensorRT, ncnn, ONNX | 量子化・プルーニングでスマホやEdge TPUでも動作 |
実装ステップ(Ultralytics YOLOv10例)
yolov10n/s/m/l... Nano〜Large。nは0.9 MBでモバイルOK、lは精度重視。
custom.yamlにクラス名とアノテーションパスを記述するだけでトレーニング開始。
バージョン選びの指針
使用条件 | 推奨バージョン |
---|---|
スマホ/Edgeで30 FPS | YOLOv5n, v8n, v10n |
GPUで最高精度 | YOLOv10l + Rerank |
研究・新機能検証 | YOLOv9/v10(ViT & DETR融合) |
C++組込み | YOLOv4-CSP, v7-tiny (ncnn) |
学習コスト重視 | YOLOv3/v4(低メモリ、データ少量でも安定) |
よくあるQ&A
"v5は公式じゃない"って聞きました
経緯: v1–v4はJoseph Redmon & AlexeyAB、v5はUltralyticsがPyTorchで独自開発。
実務的には: ドキュメント・拡張が充実しており、今やデファクト。
YOLOとDETR系はどう違う?
YOLO: CNN主体、Anchor Boxあり/なし両対応、超高速。
DETR: Transformer+セット損失でAnchorフリー、学習コスト高いが高精度。
最新: YOLOv10がDETRのアイデアを取り込み"いいとこ取り"。
学習データはどのくらい必要?
1クラスなら1,000枚×20 epochでも実用精度可。
マルチクラスや小物体は5,000〜10,000枚を推奨。
応用事例ベスト5
業界 | 事例 | 効果 |
---|---|---|
物流 | パレット荷姿検査 (v5n) | 誤積載率 -70% |
リテール | 棚在庫&価格タグ確認 (v8s) | 棚卸工数 -50% |
農業 | 果実成熟度検出 (v7-tiny on Jetson) | 収穫タイミング最適化 |
医療 | レントゲン異常陰影検出 (v10l) | 読影時間 -30% |
交通 | 信号無視車両検出 (v9m, Multi-Cam) | 違反検出精度 +25% |
まとめ
- YOLOは毎年進化し、速度・精度・ハード適応性をアップデート
- Nano〜Largeまでサイズが細分化、Edgeからクラウドまでカバー
- 最新YOLOv10はViT + DETRヘッドで高精度&高速を両立
- 選定ポイントは 推論速度・モデルサイズ・アノテ花費 のバランス
- 最初はpip install ultralytics → yolo predictで触ってみよう!