YOLOとは
You Only Look Once
画像を1回のネットワーク推論で処理し、物体の位置と種類をリアルタイムに検出する物体検出モデル
ひとことで言うと
画像を1回見るだけで、物体の位置と種類を素早く見つけ出すAIモデル。
概要
YOLO(You Only Look Once)とは、入力画像全体を1回のニューラルネットワーク推論で処理し、画像内の物体の位置(矩形領域)とクラス(種類)を同時に予測する物体検出モデル。 従来の物体検出手法が候補領域の抽出と分類を別々のステップで行っていたのに対し、YOLOは画像をグリッドに分割し各グリッドセルが物体の矩形領域とクラス確率を直接予測する枠組みにまとめ、大幅な高速化を実現した。 推論速度の速さから、自動運転や監視カメラなど、リアルタイム性が求められる物体検出タスクで広く使われている。
背景
従来の物体検出手法は、物体候補領域の抽出と個々の領域の分類という複数ステージの処理を要し、リアルタイム用途には処理速度の面で不十分なことが多かった。 YOLOは、物体検出を1回の推論で完結する単一の回帰問題として定式化することで、精度を保ちながら大幅な高速化を実現するために考案された。
歴史
2016年: Redmonらが論文「You Only Look Once: Unified, Real-Time Object Detection」を発表し、YOLOの初期バージョンを公開。 以降、YOLOv2からYOLOv8等、コミュニティや企業によってバージョンアップが重ねられ、物体検出の代表的な手法の1つとして定着している。
アーキテクチャ
CNNバックボーンで画像から特徴マップを抽出した後、画像をS×Sのグリッドに分割し、各グリッドセルが物体の中心を含む場合にその物体の矩形領域(座標・幅・高さ)、物体らしさの確信度、クラス確率を出力する。 1枚の画像に対して多数の矩形候補が重複して出力されるため、確信度が最も高いものを残し重なりの大きい候補を除去する非最大抑制(NMS: Non-Maximum Suppression)を後処理として適用する。
ワークフロー
画像をCNNバックボーンに入力し特徴マップを抽出 → グリッドセルごとに矩形領域とクラス確率を予測 → 確信度が閾値未満の候補を除去 → 非最大抑制で重複する矩形領域を統合 → 最終的な検出結果(矩形領域とクラス)を出力する。
コード例
Ultralytics YOLOで物体検出を実行する
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
results = model("image.jpg")
results[0].show()利点
- 画像全体を1回の推論で処理するため、従来手法と比べて推論速度が非常に速い
- リアルタイム性が求められる自動運転・監視カメラ等の用途に適する
- オープンソースの実装が充実しており、独自データでの再学習(ファインチューニング)がしやすい
欠点
- 画像をグリッドに分割する仕組み上、小さい物体や密集した物体の検出精度が課題になりやすい
- 候補領域を段階的に絞り込む手法と比べ、位置検出の精度で劣る場合がある
- バージョンごとにアーキテクチャや学習方法が異なり、選定・運用時にバージョン間の違いを把握する必要がある
比較
関連用語
よくある質問
YOLOのバージョンはどれを選べばよい?
新しいバージョンほど精度・速度が改善されていることが多いが、開発元やライセンス体系がバージョンごとに異なるため、用途とライセンス条件を確認して選ぶ必要がある。
YOLOはなぜ高速なのか?
候補領域の抽出と分類を別々に行う従来の2段階の手法と異なり、画像全体から矩形領域とクラスを1回の推論でまとめて予測するため。
参考文献
- Research PaperYou Only Look Once: Unified, Real-Time Object Detection
- GitHubUltralytics YOLO