リアルタイムの物体検出器「YOLO」シリーズの変遷を解説

2023年12月4日掲載

今回は、リアルタイム物体検出技術の代表的手法であるYOLOについてまとめます。

本記事はソフトバンク アドベントカレンダー 2023 の 4日目の記事です。

YOLOは、v1から最新版のv8まで進化し続けており、その過程で様々なアイデアを取り入れてきました。

本記事では、YOLOシリーズに影響を与えた革新的なアイデアを、バージョンごとに紹介していきます

目次

YOLOシリーズの変遷

各バージョンの解説に入る前に、シリーズ全体の概要を図で紹介します。

図の上部の矢印では、YOLOのバージョン更新の歴史を時系列に沿って示しています。2015年のYOLOから2023年1月のYOLOv8に至るまでに11個ものバージョンが発表されていることがわかります。(ここに掲載されていないYOLOの派生系も多数存在します。)

その下には、各バージョンの主要な貢献者の名前を記しています。これにより、それぞれのバージョンの持つ特徴が理解しやすくなります。

さらにその下には、各バージョンの平均精度(AP)を示しています。このデータによると、YOLOv5までは精度が顕著に向上している一方、その後はある程度の飽和状態にあることが窺えます。

YOLOv1

YOLO(v1)は、"You Only Look Once"の頭文字を取って名付けられ、画像全体を一度だけ見るという単一のニューラルネットワークを提案しました。これは、当時最先端だったFaster-RCNNとは異なるアプローチで、Faster-RCNNが物体領域の抽出とクラス分類を2段階で処理していたのに対し、YOLOはBBox(Bounding Box)回帰とクラス分類を同時に処理する革新的なアプローチでした。画像全体を一度に処理することは、リアルタイムの物体検出が可能になっただけでなく、画像全体の特徴に基づいたクラス分類ができるようになり、物体検出分野に新しいパラダイムが生まれました。また、実装には著者のJoseph Redomonが作成したC言語のライブラリDarknetが用いられ、以降のYOLOシリーズのほとんどで同様のライブラリが採用されています。

YOLOv2

YOLOv1の著者 Joseph Redmon が発表したYOLOv2では、SSDの手法を参考にアンカーボックスという新しい概念が導入されました。アンカーボックスとは、各クラス固有のサイズやアスペクト比に基づいて予測をサポートする固定されたBoxです。YOLOv2はアンカーボックスからBBoxの位置を相対的に予測することで学習効率を向上させました。しかしこの段階では精度の低下が見られ、最終的なモデルには採用はされませんでした。

YOLOv3

またしても Joseph Redmon が発表したYOLOv3は、FPN(Feature Pyramid Network)に触発され、マルチレベルのHead(検出部分)を導入しました。マルチスケールの特徴ピラミッドを構築し、各レベルの特徴量を独立してHeadに入れることで、異なるスケールの物体をより正確に検出します。これによってアンカーボックスの導入による精度向上が認められたため、アンカーボックスが正式に採用されました。しかしJoseph Redmonは、物体検出が反倫理的な目的で利用され始めたことに責任を感じ、YOLOv3を最後に研究の最前線から退きました。

YOLOv4

YOLOv4では、推論コストを増大させることなく精度を向上させるBoF手法(Bag of Freebies)が採用されました。具体的には、CutMixやMosaicなどのデータ拡張の追加や、BBox回帰損失からIoU損失への変更が含まれます。またこの手法は、YOLOシリーズのモデル構造をBackbone、Neck、Headの3つに独立して整理し、以降のYOLOシリーズの論文に影響を与えました。

YOLOv5

YOLOv5は、ultralyticがリリースした2023年10月時点で公式な論文が存在しないものの、その実装の利便性から広く利用されています。特に、モデルの実装にDarknetではなくPyTorch(深層学習の主流フレームワーク)が採用されたこと、数行のコードで学習・推論が可能であることが特徴です。現時点でGithubのスター数は42.2kに達し、Contributorsは324人に上っています。

Scaled-YOLOv4

YOLOv4の著者 Alexey Bochkovskiy が発表したScaled-YOLOv4では、今まで手作業だったモデルのスケーリングを理論的に最適化しました。これによって、異なるモデルサイズにおいても高速かつ高精度な検出を実現しました。ただし、モデルアーキテクチャそのものや手法自体は、基本的にYOLOv4と同様です。

YOLOR

YOLORでは、YOLOモデルに暗黙知を組み込むことで精度を向上させました。このアプローチは、「あるタスクの特徴表現は、マルチタスクで学習された高次元多様体上の特徴表現の射影によって得られる」という主張に基づいています。Head(検出部分)で特徴量をカーネル空間に変換しマルチタスク学習を実施することで、物体検出タスクの推論時に暗黙知が利用できます。

YOLOX

YOLOXは、YOLOv2以降採用されてきたアンカーボックスを排除し、YOLOシリーズの裏で発展してきたアンカーフリー手法の物体検出器FCOSの技術を取り入れました。これにより、アンカーボックスのサイズやアスペクト比がドメインに依存するという問題が解決され、推論速度も向上しました。また、BBox回帰とクラス分類を統合しないHead(検出部分)が導入され、学習の収束速度を大幅に上昇させました。

さらに、アンカーボックスの撤廃に合わせて、ラベルの割り当て手法も最適輸送問題に基づくsimOTAに変更されました。これは、アンカーフリー手法特有の問題である、同一物体に対して中心点の異なるBBoxを大量に予測してしまう問題を解決するものでした。

YOLOv6

YOLOv6では、2021年にRepVGGで提案された再パラメータ化(re-parameterization)を適用し、推論時間を短縮しました。ResNet等にみられるResidual構造は、枝別れ先の各特徴ブロック情報が、枝が統合されるまでメモリを占有していました。しかし、推論時にResidual構造を等価の単一ブロックに変換することで、メモリ最適化を実現しました。

YOLOv7

YOLOv4とYOLOv7の著者 Alexey Bochkovskiy が発表した YOLOv7は、YOLORをベースにBoF手法を更に追加したモデルです。YOLOv6と同様の再パラメータ化や、学習のみでの補助Headの導入がされています。その結果、YOLOv7はGPU V100上で30FPS以上の推論時間を保ちながら 56.8%APの精度を達成しています。これはYOLOシリーズにおける現時点での最高精度です。

YOLOv8

YOLOv8は、YOLOv5と同じく ultralytic がリリースしたソースコードです。今回新たに実装されたyoloコマンドにより、コードを書かずにYOLOモデルの学習や推論が可能になりました。さらに、物体検出の後段タスク「物体追跡」や「骨格推定」も併せて推論できるため、実アプリケーションへの適用がクイックにできるようになりました。

まとめ

YOLOシリーズは、YOLOv1の登場から数々の進化を遂げ、物体検出の分野に多大な影響を与えています。アンカーボックスの導入、マルチレベルのHead、IoUロスの導入など、多くの革新的なアプローチが提案されました。特にYOLOv4とYOLOXでは、推論コストに影響を与えないBoF手法やアンカーフリーアプローチという革新的なアイデアが導入され、大幅な高速化と高精度化に成功しました。また、YOLOv5とYOLOv8のコードはユーザビリティの高さから多くの開発者に支持されています。これらの進化を踏まえ、今後も、YOLOシリーズの更なるアップデートに注目が集まっています。

では、ソフトバンク アドベントカレンダー 2023 の 5日目にバトンを渡します。

おすすめの記事

条件に該当するページがございません