1 概要と基本原理

1.1 物体検出問題の定義

物体検出は、画像中に存在する特定の物体(人、車、動物など)の位置を矩形の枠(バウンディングボックス)で特定し、その物体のクラスを分類するコンピュータビジョンタスクである。入力画像に対して、出力は「物体が存在する領域の座標」と「各領域に割り当てられたクラスラベル」の集合となる。

1.2 YOLOのアプローチ:One-Stage検出

YOLOは、画像を一度だけニューラルネットワークに通すことで、物体の位置とクラスを同時に推定する「One-Stage検出器」である。従来の二段階方式(領域提案+分類)とは異なり、推論が単一の順伝搬で完了するため、処理速度が極めて高い。

1.2.1 グリッド分割とバウンディングボックス予測

入力画像をS×Sのグリッドに分割し、各グリッドセルが自身の領域内にある物体を担当する。各セルはB個のバウンディングボックスを予測し、それぞれのボックスについて中心座標(x, y)、幅w、高さh、およびそのボックスに物体が含まれる確信度信頼スコア)を出力する。

1.2.2 信頼度スコアとクラス確率

信頼度スコアは、予測されたバウンディングボックスが物体を含む確率と、そのボックスと正解の重なり具合(IoU)を掛け合わせた値として定義される。また、各グリッドセルはC個のクラス確率を同時に出力し、最終的な検出結果は信頼度スコアとクラス確率の積で重み付けされる。これにより、クラスごとに信頼度の高い検出のみが残る。

1.3 従来手法との比較(R-CNN、SSDなど)

従来のR-CNN系(R-CNN, Fast R-CNN, Faster R-CNN)は、領域提案ネットワークで候補領域を抽出した後に個別に分類を行うため精度は高いが、処理が遅い。一方、SSD(Single Shot MultiBox Detector)もOne-Stage検出器でありYOLOと類似するが、YOLOは全結合層を用いたグローバルな特徴利用により文脈情報を捉えやすい。YOLOは特に速度面で優れ、リアルタイム性が重視される用途に適する。

2 開発の歴史とバージョン

2.1 YOLOv1(2015年)

Joseph Redmonらが発表した最初のバージョン。GoogleNetをベースにした畳み込みネットワークを用い、448×448の入力画像から7×7のグリッド、各グリッド2つのバウンディングボックスを予測した。Pascal VOCデータセット上で45FPSを達成し、リアルタイム物体検出の可能性を示した。

2.2 YOLOv2(YOLO9000、2016年)

YOLOv2は大幅な改良が加えられ、より高速かつ高精度になった。

2.2.1 改良点:バッチ正規化アンカーボックス

バッチ正規化を導入し学習を安定化させ、全結合層を除去してアンカーボックス(事前に定義された形状テンプレート)を採用した。また、WordTreeを用いた階層的なクラス分類により、9000種類以上の物体を検出できる「YOLO9000」モデルも提案された。

2.3 YOLOv3(2018年)

YOLOv3はマルチスケール検出を導入し、小物体の検出性能が向上した。

2.3.1 マルチスケール検出とDarknet-53

バックボーンとして新たに設計されたDarknet-53(53層の畳み込み層)を採用。3つの異なるスケールで特徴マップを出力し、それぞれのスケールで検出を行うことで、異なる大きさの物体に対応した。ロジスティック回帰によるクラス分類も導入された。

2.4 YOLOv4(2020年)

Alexey Bochkovskiyらによって開発され、精度と速度のバランスを大幅に改善した。

2.4.1 転移学習とBag of Freebies / Bag of Specials

Bag of Freebies(データ拡張正則化などの学習時にコストをかけずに精度を向上させる手法)とBag of Specials(推論時の速度低下をわずかに許容して大きな精度向上を得る手法)を体系的に導入。CSPDarknet53をバックボーンとし、PANetやSAMなどのモジュールを組み合わせた。

2.5 YOLOv5~YOLOv8とコミュニティ派生

2.5.1 YOLOv5(Ultralytics版)

Ultralytics社がPyTorch実装として公開。YOLOv4の研究を基にした非公式バージョンであるが、使いやすさとパフォーマンスの高さから広く普及した。自動アンカーチューニングやMosaicデータ拡張などが標準実装された。

2.5.2 YOLOv6・v7・v8の特徴

YOLOv6はメカトロニクス研究所(Meituan)が開発し、効率的な構造(RepVGGスタイル)を採用。YOLOv7はObjectBoxなど独自のアーキテクチャにより精度と速度を両立。YOLOv8(Ultralytics)はアンカーフリーの検出ヘッドやタスクヘッド統合など、さらなる改良が加えられ、物体検出・インスタンスセグメンテーションポーズ推定などマルチタスクに対応している。

3 ネットワークアーキテクチャ

3.1 バックボーン(特徴抽出器)

バックボーンは入力画像から高次元の特徴マップを抽出する役割を担う。YOLOv1ではGoogleNet派生、YOLOv3ではDarknet-53、YOLOv4以降ではCSPDarknet53が用いられ、畳み込み層と残差接続を組み合わせて層を深くしながらも勾配消失を抑える。

3.2 ネック(特徴ピラミッド、PANetなど)

ネックはバックボーンが出力した複数スケールの特徴マップを融合し、検出に適した表現に変換する。YOLOv3ではFPN(Feature Pyramid Network)、YOLOv4ではPANet(Path Aggregation Network)を採用。これにより、浅い層の細かい位置情報と深い層の意味情報を統合し、大小さまざまな物体の検出を可能にする。

3.3 ヘッド(検出層)

ヘッドはネックから得られた特徴マップを基に、最終的なバウンディングボックス座標、信頼度、クラス確率を出力する。YOLOv4までは1×1畳み込みで直接予測する方式だったが、YOLOv8ではアンカーフリーの方式に変更され、各グリッドセルが直接中心点を予測する。

4 学習と最適化

4.1 損失関数(座標・信頼度・クラス)

YOLOの損失関数は、次の三つの項で構成される。

  • 座標誤差:予測バウンディングボックスと正解ボックスの中心座標および幅・高さの差を二乗和で計算。小さいボックスの誤差を重視するため、幅と高さには平方根が取られる。
  • 信頼度誤差:物体を含むセルと含まないセルの信頼度スコアの差を二乗誤差で計算。物体を含まないセルには重みを小さくする。
  • クラス誤差:各セルにおける予測クラス確率と正解クラス(one-hot)の二乗誤差。

YOLOv3以降では、クラス誤差にバイナリクロスエントロピー(ロジスティック回帰)が使われ、マルチラベル分類に対応している。

4.2 データ拡張と学習戦略

学習時には、ランダムな切り抜き、色空間の調整(彩度・明度・コントラストの変化)、反転、回転、モザイク合成(Mosaic augmentation)などが行われる。YOLOv4ではさらにCutMixやLabel smoothing、CIoU損失などが導入され、過学習を抑制しながら汎化性能を高めている。

5 性能評価

5.1 精度指標(mAP、FPS)

物体検出の性能評価には、平均適合率(mAP: mean Average Precision)と每秒フレーム数(FPS)が主に用いられる。mAPは各クラスの適合率-再現率曲線下の面積の平均で、検出の正確さを示す。FPSは処理速度を表し、リアルタイム性の尺度となる。YOLOはこれら二つの指標のトレードオフを改善してきた。

5.2 ベンチマークデータセット(COCO、Pascal VOC)

標準的な評価データセットとして、Pascal VOC(20クラス)とMS COCO(80クラス)が使われる。COCOは小物体やオクルージョンを含む難しいシーンが多く、特にmAP@[.5:.95](IoU閾値を0.5から0.95まで段階的に変化させた平均)が指標として重視される。YOLOv8の最新モデルはCOCO上で50%以上のmAPを超える。

6 応用分野

6.1 自動運転と運転支援

自動運転車は歩行者・車両・信号・標識などをリアルタイムに検出する必要がある。YOLOの高速性はカメラ映像の各フレームをほぼ遅延なく処理できるため、衝突防止や走行制御に適している。

6.2 監視・セキュリティ

防犯カメラ映像からの不審者検出、異常行動の自動検知、人流計測などに利用される。エッジデバイスへの軽量モデルの実装も進んでおり、クラウドへの負荷を減らしながら24時間監視が可能となる。

6.3 産業検査とロボットビジョン

製造ラインでの製品欠陥検出、倉庫内の在庫管理、農業での果実収穫ロボットなどで用いられる。YOLOのリアルタイム性により、高速コンベア上の不良品を即座に除去するシステムが構築できる。

6.4 インタラクティブアートとエンターテイメント

カメラ入力に応じてリアルタイムに反応するアート作品や、ゲーム内でのジェスチャー認識、ARフィルターのトリガーなど、創造的な分野でも使用されている。軽量なバージョンはスマートフォン上でも動作する。

7 文化的側面とネーミング

7.1 “You Only Live Once”との関連

YOLOの正式名称「You Only Look Once」は、インターネットスラング「You Only Live Once(人生は一度きり)」をもじったものである。開発者のJoseph Redmonは、このネーミングで「一度だけ見る」というアルゴリズムの本質を遊び心を持って表現した。

7.2 インターネットミームとしての広がり

YOLOという名前のキャッチーさや、「人生一度きり」の語感は、技術コミュニティ以外にも広まった。ミームとして、YOLOの論文や実装がSNSで拡散され、「YOLOを試してみる」という軽いノリの投稿がしばしば見られる。また、物体検出を「YOLOする」と動詞化して使う文化も生まれた。

7.3 学術界とコミュニティでの受容

学術論文としては厳密な命名であるが、そのユーモアは好意的に受け入れられている。ただし、研究の厳粛さを損なうという意見も一部にあるが、多くの研究者はこのネーミングが技術の普及に貢献したと評価している。また、YOLOの派生モデル(YOLOX, PP-YOLOなど)にもパロディ的な名前が継承される傾向がある。

8 今後の展望と課題

8.1 軽量化とエッジデバイス実装

スマートフォン、ドローン、IoTカメラなど限られた計算資源で動作させるため、モデル圧縮(量子化、プルーニング、知識蒸留)が進められている。NanoやTinyバージョンはすでに実用化されているが、さらなる高速化と省電力化が求められる。

8.2 小物体検出とオクルージョン対応

現在のYOLOは小物体や重なった物体の検出が苦手である。高解像度入力の活用、Transformerアーキテクチャの導入、Attention機構の強化などで改善が試みられている。

8.3 自己教師あり学習との融合

大規模なラベル付けコストを削減するため、自己教師あり学習や半教師あり学習とYOLOを組み合わせる研究が進んでいる。これにより、未知のクラスや希少物体への対応力が向上すると期待される。