YOLO(You Only Look Once)とは? – 高速物体検出アルゴリズムの解説
1. はじめに
YOLO(You Only Look Once)は、物体検出(Object Detection)を行うための深層学習アルゴリズムの一つであり、リアルタイムでの物体検出に適しています。
通常の物体検出アルゴリズムは、画像内の物体を検出するために複数回の処理を必要としますが、YOLOは画像全体を一度のパスで処理することで高速な推論を実現します。
本記事では、YOLOの基本概念、動作原理、導入方法、実装例、さらには最新バージョンについて解説します。
2. YOLOの概要
YOLOは、2016年にJoseph Redmonらによって発表され、現在までにいくつかのバージョンが登場しています。
以下のような特長があります。
YOLOの特長
- 高速処理: 一度の畳み込みニューラルネットワーク(CNN)処理で物体を検出
- エンドツーエンドの学習: 画像全体を一度に処理し、座標・クラスを予測
- 高い汎用性: 小型デバイスやエッジデバイスにも適用可能
- 比較的低い精度: 他の物体検出手法(Faster R-CNNなど)と比べると、精度が若干低いことがある
3. YOLOの動作原理
YOLOの基本的な仕組みは以下のようになります。
画像をグリッドに分割
- 入力画像をS×Sのグリッドに分割し、それぞれのセルで物体の有無を判定する。
バウンディングボックス(BBOX)の予測
- 各グリッドセルが物体の位置(x, y, w, h)とクラス確率を予測。
信頼スコアの計算
- 物体が存在する確率と、バウンディングボックスの信頼度を掛け合わせる。
Non-Maximum Suppression(NMS)
- 重複したバウンディングボックスを除外し、最も信頼度の高いものを残す。
例えば、以下のような画像に適用すると、各オブジェクトをリアルタイムで検出できます。
4. YOLOのバージョン別の違い
YOLOにはいくつかのバージョンがあり、それぞれの改良点があります。
バージョン | 主な改良点 |
---|---|
YOLOv1 (2016) | 初版。高速だが精度は低い |
YOLOv2 (2017) | 精度向上(バッチ正規化、アンカー) |
YOLOv3 (2018) | マルチスケール予測を導入 |
YOLOv4 (2020) | CSPDarknetを採用し、精度と速度の向上 |
YOLOv5 (2020) | PyTorch実装により使いやすさ向上 |
YOLOv6 (2022) | モデルサイズの最適化とさらなる高速化 |
YOLOv7 (2022) | 軽量かつ高精度を実現 |
YOLOv8 (2023) | 最新の改良版で、オブジェクト検出・セグメンテーション対応 |
現在ではYOLOv8が最新であり、精度・速度ともにバランスの取れたアルゴリズムとして人気があります。
5. YOLOの導入方法
YOLOを使うには、PyTorchやTensorFlowなどのライブラリを活用します。
インストール
pip install ultralytics
YOLOv8の利用
from ultralytics import YOLO # YOLOv8のモデルを読み込む model = YOLO("yolov8n.pt") # 画像を入力して物体検出 results = model("image.jpg") # 結果を表示 results.show()
6. まとめ
YOLOは、リアルタイム物体検出に最適なアルゴリズムであり、バージョンごとに改良が進んでいます。
特にYOLOv8は、精度と速度のバランスが良く、エッジデバイスや小型コンピュータでも動作可能です。
今後もさらなる進化が期待されるYOLOを活用し、さまざまなアプリケーションに応用していきましょう。