YOLO(You Only Look Once)とは?わかりやすく解説
YOLOは、画像や動画から「何がどこにあるか」を驚異的な速さで検出するリアルタイム物体検出アルゴリズムです。この記事では、YOLOの基本的な考え方、そのユニークな検出の仕組み、メリット・デメリットを、専門用語をできるだけ使わずにわかりやすく解説します。AIによる高速な物体認識に興味がある方におすすめです。
YOLO(You Only Look Once)とは何か
YOLO(You Only Look Once、ヨロと読みます)は、コンピュータが画像や動画の中から**「何が(物体の種類)」「どこに(物体の位置と大きさ)」あるのかを認識するための「物体検出」アルゴリズム**の一つです。特に、その名前が示す通り「一度見るだけ」で検出処理を完結させるというアプローチにより、非常に高速なリアルタイム物体検出を実現したことで世界的に有名になりました。
従来の物体検出手法の多くは、画像を複数の領域に分割し、それぞれの領域に対して「ここに何か物体があるか?」を順番に調べていくという、複数のステップを踏むアプローチ(例えば、R-CNNファミリーなど)が主流でした。これらの手法は高い精度を達成できる一方で、処理に時間がかかるという課題がありました。
YOLOは、この物体検出という問題を、画像全体を一度だけニューラルネットワークに通すだけで、全ての物体の位置(バウンディングボックスと呼ばれる矩形の枠)と種類(クラス)を同時に予測する、いわば「一つの回帰問題」として捉え直しました。これにより、処理のパイプラインが大幅にシンプルになり、劇的な高速化を達成したのです。
例えば、監視カメラの映像からリアルタイムで不審者を検出したり、自動運転車が周囲の車両や歩行者を瞬時に認識したりといった、素早い判断が求められる多くのアプリケーションでYOLOおよびその派生技術が活用されています。
つまり、YOLOは 「画像を一目見ただけで、そこに何が、どこにあるのかをパッと当てる」 という、人間の視覚に近い直感的な方法をコンピュータで実現しようとする、非常に効率的な物体検出の仕組みと言えるでしょう。
処理の流れ
YOLOがどのようにして「一度見るだけ」で画像内の物体を検出し、その位置と種類を特定するのか、そのユニークな処理のステップを見ていきましょう。
1. 画像をグリッドに分割する
まず、入力された画像を、例えば のような格子状の領域(グリッドセル)に分割します。イメージとしては、画像の上に碁盤の目のような線を引く感じです。
2. 各グリッドセルが予測を担当する
ここからがYOLOの面白いところです。各グリッドセルは、自分の領域内に「物体の中心」が存在する場合、その物体を検出する責任を負います。 それぞれのグリッドセルは、以下の情報を予測しようとします。
-
バウンディングボックス(Bounding Boxes):
- 各グリッドセルは、いくつかの「バウンディングボックス」の候補を予測します。バウンディングボックスとは、検出された物体を囲む長方形の枠のことです。
- 予測されるのは、各バウンディングボックスの中心座標 (x, y)(グリッドセル内での相対位置)、幅 (w)、高さ (h)(画像全体に対する相対的な大きさ)の4つの数値です。
- さらに、各バウンディングボックスに対して 「信頼度スコア(Confidence Score)」 という値も予測します。このスコアは、以下の2つの情報を反映します。
- そのバウンディングボックス内に実際に何らかの物体が存在する確率。
- 予測されたバウンディングボックスが、実際の物体の位置や大きさをどれだけ正確に捉えているかの度合い(専門用語ではIoU: Intersection over Union と呼ばれる指標が関連します)。 つまり、信頼度スコアが高いほど、「この枠内には確かに何か物体があって、しかも枠の位置や大きさもかなり合っているぞ」という意味になります。
-
クラス確率(Class Probabilities):
- 各グリッドセルは、もし自分の領域内に物体の中心が存在する場合、その物体がどのクラス(種類、例えば「犬」「猫」「車」など)に属するかの確率も予測します。
- 例えば、検出対象のクラスが20種類ある場合、各グリッドセルは20個の確率値(それぞれのクラスに属する確率)を出力します。これは、バウンディングボックスごとに予測されるのではなく、グリッドセルごとに予測されるのが初期のYOLOの特徴です。
3. 全ての予測を一つのニューラルネットワークで行う
驚くべきことに、上記のグリッド分割から、各グリッドセルによるバウンディングボックスの予測、信頼度スコアの予測、クラス確率の予測まで、これら全てが一つの畳み込みニューラルネットワーク(CNN)を画像データが一回通過するだけで、同時に行われます。これが「You Only Look Once(一度見るだけ)」の所以です。ネットワークの最終出力層には、これらの予測情報がまとめてエンコードされています。
4. Non-Maximum Suppression (NMS) による最終選別
一つの物体に対して、複数のグリッドセルや複数のバウンディングボックスが「自分がこの物体を検出した!」と主張することがよくあります。その結果、同じ物体に対してたくさんの重複したバウンディングボックスが予測されてしまいます。
そこで、最後に「Non-Maximum Suppression (NMS、非最大値抑制)」という後処理を行います。NMSの基本的な手順は以下の通りです。
- まず、信頼度スコアが非常に低いバウンディングボックス(明らかに何も捉えていないような枠)を足切りします。
- 残ったバウンディングボックスの中で、最も信頼度スコアが高いものを選びます。これを最終的な検出結果の一つとします。
- 次に、選ばれたバウンディングボックスと大きく重なっている(IoUがある閾値以上の)他のバウンディングボックスを全て取り除きます。これらは同じ物体を指している可能性が高いと見なされるためです。
- このプロセスを、残りのバウンディングボックスがなくなるまで繰り返します。
このNMS処理を経ることで、重複した検出が整理され、各物体に対して最も確からしい一つのバウンディングボックスだけが最終的な検出結果として残ります。
このように、YOLOは画像をグリッドに分割し、各セルが物体の位置・サイズ・信頼度・クラス確率を一度のネットワーク処理で予測し、最後にNMSで結果を整理するという、非常に効率的な流れで物体検出を実現しています。
良いところ(メリット)
YOLOがリアルタイム物体検出の分野で広く採用され、大きな影響を与えたのには、いくつかの明確な利点があるからです。
-
非常に高速である(リアルタイム性): これがYOLOの最大の特長であり、名前の由来(You Only Look Once)そのものです。画像全体を一度だけニューラルネットワークに通すだけで、物体の位置と種類を同時に予測するため、従来の複数ステップを踏む物体検出手法(例えばR-CNNシリーズなど)と比較して、処理速度が格段に速いです。初期のバージョンでも、標準的なGPU上でリアルタイム処理(動画に対して秒間数十フレーム)が可能であり、その後の改良版ではさらに高速化と高精度化が進んでいます。この高速性は、自動運転、ロボットビジョン、監視システムなど、即時性が求められる多くのアプリケーションにとって不可欠です。
-
シンプルな構造とエンドツーエンドの学習: YOLOは、物体検出のパイプライン全体(特徴抽出、バウンディングボックス予測、クラス分類)を単一の畳み込みニューラルネットワークに統合しています。これにより、モデルの構造が比較的シンプルになり、学習も入力画像から最終的な検出結果までを一貫して行う「エンドツーエンド(end-to-end)」で行うことができます。これは、途中のコンポーネントを個別に最適化する必要があった従来の手法と比べて、学習プロセスを簡素化し、全体の最適化を容易にします。
-
画像全体を見て判断する(グローバルな文脈の利用): YOLOは、予測を行う際に画像全体からの情報を利用します。これは、画像の一部だけを切り出して処理する手法(スライディングウィンドウ方式や領域提案方式など)とは対照的です。画像全体の文脈を考慮できるため、物体とその周囲の背景との関係性を暗黙的に学習し、背景領域を物体として誤検出する「偽陽性(False Positive)」が比較的少ない傾向にあると言われています(特に初期の論文で主張されました)。
-
汎化能力が高い(新しいドメインへの適用性): YOLOは、学習データに含まれる特定の物体だけでなく、ある程度一般的な「物体らしさ」を学習する傾向があるとされています。そのため、芸術作品のような、通常の写真とは異なるドメインの画像に対しても、他の手法よりもうまく物体を検出できる場合があることが報告されています。
-
オープンソースで利用しやすい: YOLOの原著論文の著者たちは、ソースコードや学習済みモデルを公開しており、研究コミュニティや開発者が容易に利用・改善できるようになっています。これにより、YOLOをベースとした多くの改良版(YOLOv2, YOLOv3, YOLOv4, YOLOv5, YOLOX, YOLOv8, YOLOv9など多数)が次々と開発され、性能が継続的に向上しています。
これらのメリットにより、YOLOは学術界だけでなく産業界においても、リアルタイム物体検出の標準的な選択肢の一つとしての地位を確立しました。
悪いところ(デメリット)
非常に高速で革新的なYOLOですが、特に初期のバージョンにおいては、いくつかの苦手な点や限界も指摘されていました。後のバージョンで多くは改善されていますが、基本的な特性として理解しておくことは重要です。
-
小さな物体の検出が苦手な傾向: YOLOは画像をグリッドに分割し、各グリッドセルが少数のバウンディングボックスを予測する仕組みです。そのため、グリッドセルよりも小さい物体や、密集している小さな物体の群れなどを個別に精度良く検出するのが難しい場合があります。グリッドの解像度があるため、微細な位置合わせが苦手という側面もあります。
-
近接する物体の検出が難しい場合がある: 各グリッドセルは、限られた数のバウンディングボックスしか予測できません(初期のYOLOv1では2つ)。そのため、一つのグリッドセル内に複数の異なる小さな物体が密集している場合、それら全てを同時に検出するのが困難になることがあります。例えば、鳥の群れや、棚に並んだ小さな商品などが該当します。
-
バウンディングボックスの精度が粗い場合がある(特に初期バージョン): 高速性を重視した設計のため、特に初期のバージョンでは、他の精度重視の手法(例えばFaster R-CNNなど)と比較して、物体の位置を囲むバウンディングボックスの精度(位置の正確さや、物体の形状へのフィット感)がやや劣る傾向がありました。物体の正確な輪郭や位置が非常に重要なタスクでは、この点が課題となることがありました。
-
新しいアスペクト比やサイズの物体への対応: YOLOは、学習データに含まれる物体の形状やアスペクト比(縦横比)のパターンを学習します。そのため、学習データにあまり出現しなかったような、極端に細長い物体や、通常とは異なるアスペクト比の物体に対しては、うまくバウンディングボックスを予測できないことがありました。(後のバージョンではアンカーボックスという概念の導入などで改善されています。)
-
リコール率が比較的低い傾向(見逃しが多い): 初期のYOLOは、精度(検出したもののうち、本当に正しいものの割合=Precision)は比較的高いものの、再現率(本当に存在する物体のうち、どれだけ検出できたかの割合=Recall)が他の手法に比べて低い傾向がありました。つまり、誤検出は少ないが、見逃してしまう物体がやや多い、という特性です。
-
損失関数の調整の難しさ: YOLOの損失関数は、位置誤差、信頼度誤差、分類誤差といった複数の要素を組み合わせており、これらのバランスを取るための重み付けが性能に影響します。この調整が必ずしも容易ではないという側面もありました。
これらの課題の多くは、YOLOv2以降の様々な改良版(YOLOv3、YOLOv4、YOLOv5、そしてそれ以降の多くの派生モデル)で、アンカーボックスの導入、特徴抽出ネットワークの改善、損失関数の改良など、様々な工夫によって大幅に改善されてきています。しかし、アルゴリズムの基本的な特性として、これらの点を念頭に置いておくと、適用するタスクや期待する性能との適合性を判断する上で役立ちます。
まとめ
YOLO(You Only Look Once)は、画像や動画の中から「何が」「どこに」あるのかを、文字通り「一度見るだけ」で検出することを可能にした、非常に高速なリアルタイム物体検出アルゴリズムです。従来の複数ステップを要する手法とは異なり、物体検出を単一のニューラルネットワークによる回帰問題として捉え直したことで、処理速度に革命をもたらしました。
処理の流れは以下の通りです。
- 入力画像を固定サイズのグリッドに分割します。
- 各グリッドセルが、自分の領域内に物体の中心が存在する場合、その物体の位置とサイズを示す複数のバウンディングボックス候補と、各ボックスの信頼度スコア(物体が存在する確からしさとボックスの正確さ)を予測します。
- 同時に、各グリッドセルは、そこに物体が存在する場合のクラス確率(犬、猫、車などの種類に属する確率)も予測します。
- これら全ての予測は、単一の畳み込みニューラルネットワーク(CNN)を画像が一回通過するだけで同時に行われます。
- 最後に、重複して検出された多数のバウンディングボックスを整理するために、Non-Maximum Suppression (NMS) という後処理を行い、最終的な検出結果を得ます。
YOLOの良いところは、
- とにかく処理が非常に高速で、リアルタイムでの物体検出が可能であること
- 物体検出のパイプライン全体が単一のネットワークに統合されており、構造がシンプルでエンドツーエンド学習が可能であること
- 画像全体を見て判断するため、背景の誤検出が比較的少ない傾向があること
- オープンソースで広く利用可能であり、多数の改良版が開発されていること などが挙げられます。
一方で、特に初期のバージョンにおける悪いところとしては、
- 小さな物体や密集した物体の検出が苦手な場合があること
- バウンディングボックスの位置精度が他の手法に比べてやや粗いことがあること
- リコール率(検出漏れの少なさ)が比較的低い傾向があったこと などが挙げられました(これらの多くは後のバージョンで大幅に改善されています)。
YOLOは、その登場以来、物体検出技術の発展に大きな影響を与え、自動運転、セキュリティ、ロボティクス、医療画像解析など、幅広い分野で応用されています。現在も活発に研究開発が続けられており、より速く、より正確な物体検出を目指して進化を続けています。
YOLO開発入門: v10/v11/v12対応: YOLOの基本的な使用方法からアプリの実装まで: Python
本書は、YOLOを実際に動かしながら学んでいきます。まずは基本的な使用方法からスタートし、段階的に理解を深めながら、最終的にはYOLOを活用したリアルタイム物体検出アプリケーションの作成に挑戦していきます。
▶ Amazonで見るお仕事のご依頼・ご相談はこちら
フロントエンドからバックエンドまで、アプリケーション開発のご相談を承っております。
まずはお気軽にご連絡ください。
関連する記事
L1正則化(ラッソ回帰)とは?不要な情報を見つけ出すAIの賢い選択術をわかりやすく解説
L1正則化(ラッソ回帰)は、多くの情報の中から本当に重要なものだけを選び出し、予測モデルをシンプルにする統計学の手法です。この記事では、L1正則化の基本的な考え方やメリット・デメリットを、数式を使わずに初心者にも分かりやすく解説します。
KAN(Kolmogorov-Arnold Networks)とは?わかりやすく解説
AIの新しいアーキテクチャ「KAN(Kolmogorov-Arnold Networks)」とは何か?従来のニューラルネットワーク(MLP)との違いや、その革新的な仕組み、そしてなぜ注目されているのかを、専門用語を極力使わずに丁寧に解説します。AIの未来を担う可能性を秘めたKANの基本を、この入門記事で学びましょう。
k近傍法(k-NN)とは?わかりやすく解説
k近傍法(k-NN)の基本的な考え方や仕組み、メリット・デメリットを初心者にも理解できるように、専門用語を避けて丁寧に解説します。機械学習の第一歩として最適なアルゴリズムです。
ガウス混合モデル(GMM)とは?わかりやすく解説
ガウス混合モデル(GMM)の基本を初心者にも理解できるように、専門用語を避け、図解や具体例を交えながら丁寧に解説します。データ分析や機械学習におけるクラスタリング手法の一つであるGMMの仕組みとメリットを学びましょう。
DQN (Deep Q-Network)とは?わかりやすく解説
「DQNって何?難しそう…」と感じているあなたへ。この記事では、DQNの基本的な考え方や仕組みを、専門用語をできるだけ使わずに、やさしく解説します。AIの学習方法の一つであるDQNについて、その魅力に触れてみましょう。