YOLO(You Only Look Once)とは?リアルタイム物体検出の革命的アルゴリズムを徹底解説

YOLO(You Only Look Once、ユー・オンリー・ルック・ワンス)は、画像や映像から物体を高速に検出できるリアルタイム物体検出アルゴリズムです。
「一度見るだけで良い」という名前の通り、画像全体を一度処理するだけで、複数の物体を同時に検出・識別できます。
2015年にワシントン大学で発表されて以来、物体検出分野で最も広く使われているAIモデルとなっており、自動運転、監視カメラ、医療画像解析など様々な分野で活用されています。

スポンサーリンク

YOLOとは

YOLO(You Only Look Once)は、リアルタイムで物体を検出するための機械学習モデルです。
画像や映像の中から「何が映っているか」と「どこに映っているか」を素早く見つけられる技術です。

基本概念

名前の由来:
YOLOは「You Only Look Once(一度見るだけで良い)」という英文の頭文字を取って作られた造語です。
人間のように一目見ただけで物体検出ができることを指しています。

また、「You Only Live Once(人生一度きり)」という有名な格言にかけて作られた言葉でもあります。

物体検出とは:
物体検出(Object Detection)は、画像内のどこに何が写っているかを識別するコンピュータビジョン技術です。
通常の画像認識が「何が写っているか」を判別するだけなのに対し、物体検出は「何が写っているか」と「どこに写っているか」の両方を検出します。

開発の歴史

開発者:
YOLOは、2015年にアメリカのワシントン大学に在籍していたJoseph Redmon(ジョセフ・レッドモン)氏とAli Farhadi(アリ・ファルハディ)氏によって開発されました。

初期の論文:
Redmon氏らの研究チームは「You Only Look Once: Unified, Real-Time Object Detection」という画期的な論文を発表し、従来の物体検出を一新するアイデアを示しました。

オープンソース化:
YOLOv1は2016年に論文発表され、Darknetと呼ばれるC言語ベースのフレームワーク上で実装されました。
ソースコードも含めオープンソースで公開されたため、多くの研究者・開発者が利用し発展に寄与しました。

YOLOの進化:バージョンの歴史

YOLOは統一した組織や企業のもとで開発されてきたわけではなく、それぞれ独立した組織や研究者が独自の開発思想のもとで各バージョンを開発してきました。

Joseph Redmon系列(オリジナル)

YOLOv1(2016年):

  • 開発者: Joseph Redmon
  • 特徴: 物体検出を回帰問題として定式化、画像全体を一度に処理
  • 処理速度: 画像1枚あたり約22ミリ秒
  • ネットワーク: GoogLeNetをベースにした独自アーキテクチャ(24層の畳み込み層+4層のmax-pooling層)

YOLOv2(2017年):

  • 別名: YOLO9000
  • 主な改良: バッチ正規化、アンカーボックスの導入、次元クラスタ
  • 検出可能クラス: 9,000以上のクラスを検出可能

YOLOv3(2018年):

  • 主な改良: マルチスケール検出の導入、より効率的なバックボーンネットワーク、複数のアンカー、空間ピラミッドプーリング
  • 小さい物体の検出精度が向上

独立開発系列

YOLOv4(2020年):

  • 開発者: Alexey Bochkovskiy
  • 主な改良: Mosaicデータ拡張、新しいアンカーフリー検出ヘッド、新しい損失関数
  • DarknetネイティブアップデートとしてリリースYOLOv3のアップデート版

YOLOv6(2022年):

  • 開発者: Meituan(美団)
  • 特徴: 産業応用に焦点

YOLOv7(2022年):

  • 開発者: 独立研究者チーム
  • 特徴: 最先端の速度と精度

YOLOv9(2024年):

  • 開発者: 独立研究者チーム
  • 特徴: 全く新しい独立進化系

YOLOv10(2024年):

  • 開発者: 清華大学研究者(UltralyticsのPythonパッケージを使用)
  • 主な改良: Non-Maximum Suppression(NMS)の要件を排除するEnd-to-Endヘッドを導入

Ultralytics系列(公式継続開発)

YOLOv5(2020年):

  • 開発元: Ultralytics
  • 特徴: PyTorchベースの実装、使いやすさと性能のバランス

YOLOv8(2023年):

  • 開発元: Ultralytics
  • 特徴: マルチタスクサポート(物体検出、セグメンテーション、分類、姿勢推定)

YOLO11(2024年9月30日リリース):

  • 開発元: Ultralytics
  • 主な改良:
  • YOLOv8mと比較して22%パラメータ削減
  • COCOデータセットでmAP(平均適合率)が向上
  • 処理速度が最大25%向上(レイテンシ削減)
  • C3k2ブロック(コンパクトCSPバリアント)導入
  • C2PSA(空間アテンション)モジュール導入
  • サポートタスク: 物体検出、インスタンスセグメンテーション、画像分類、姿勢推定、追跡、指向性境界ボックス(OBB)

YOLO26(2026年1月リリース):

  • 開発元: Ultralytics
  • 主な改良:
  • エンドツーエンドのNMSフリー推論
  • エッジデプロイメント最適化
  • DFL(Distribution Focal Loss)の削除
  • Progressive Loss Balancing(ProgLoss)
  • Small-Target-Aware Label Assignment(STAL)
  • MuSGD optimizer
  • CPU推論速度が大幅向上(YOLO26nはYOLO11nより約30%高速)

バージョン選択のポイント

本番環境推奨:
現時点では、YOLO26とYOLO11が安定した本番ワークロードに推奨されています。

バージョン系統の理解:
YOLOの開発は複数の独立した系統があるため、バージョン番号だけでなく、開発元も確認することが重要です。

YOLOの仕組み

基本アーキテクチャ

YOLOの物体検出は、以下の手順で行われます。

ステップ1: 画像のリサイズ:
入力画像を正方形(例: 448×448ピクセル、640×640ピクセル)にリサイズします。
アスペクト比はパディングを使用して保持されます。

ステップ2: グリッド分割:
画像をS×Sのグリッドセル(碁盤目状の領域)に分割します。
例えば、YOLOv1では7×7のグリッド(49個のセル)に分割します。

ステップ3: バウンディングボックスの予測:
各グリッドセルが、物体の中心がそのセル内にある場合、その物体の検出を担当します。
各セルがB個のバウンディングボックス(物体を囲む矩形)を予測します。

バウンディングボックスの情報:

  • x, y: バウンディングボックスの中心座標(グリッドセルの境界を基準)
  • w, h: バウンディングボックスの幅と高さ(画像全体のサイズに対する相対値)
  • confidence: そのバウンディングボックスが物体である信頼度スコア

ステップ4: クラス確率の予測:
各グリッドセルが、C種類の分類クラスのそれぞれに属する条件付き確率を予測します。
例えば、PASCAL VOCデータセットでは20種類のクラス(人、車、犬など)があります。

ステップ5: Non-Maximum Suppression(NMS):
重複するバウンディングボックスを、信頼度スコアの高いものを基準に選別します。
IoU(Intersection over Union)値が大きい(重なり度合いの高い)領域をしきい値で抑制します。

出力の計算

YOLOv1の例では、以下のパラメータで出力が計算されます。

  • S = 7(7×7のグリッド)
  • B = 2(各セルが2つのバウンディングボックスを予測)
  • C = 20(PASCAL VOCデータセットの20種類のクラス)

出力数 = S × S × (B × 5 + C) = 7 × 7 × (2 × 5 + 20) = 7 × 7 × 30 = 1,470

損失関数

YOLOの損失関数は、以下の3つの誤差の和として定義されます。

  1. バウンディングボックスの座標誤差: 位置の正確さ
  2. 信頼度の誤差: 物体である確率の正確さ
  3. クラス予測の誤差: クラス分類の正確さ

Sum-squared error(二乗和誤差)を使用し、最適化しやすい設計になっています。

YOLOの特徴とメリット

1. 圧倒的な処理速度

リアルタイム処理:
YOLOは画像1枚あたり約22ミリ秒(初期バージョン)で処理できます。
Faster R-CNNと比べて6〜7倍高速化が可能です。

一度の処理で完結:
画像全体を一度だけ解析して物体の種類と位置を同時に特定するため、効率的です。
従来の手法では、領域ごとに複数回処理が必要でした。

2. 高い検出精度

画像全体のコンテキストを考慮:
YOLOは画像全体を一度に見るため、背景や周囲の情報を踏まえた判断ができます。
これにより、誤検出が減りやすくなります。

継続的な精度向上:
YOLOv3以降では特徴ピラミッドネットワークの導入などで小さい物体への対応が改善されました。
YOLOv4ではアンサンブル的手法や損失関数の改良により、二段階モデルに匹敵する精度が報告されました。
最新世代のYOLO(v11など)では、精度と速度の両立がさらに進んでいます。

3. 物体の見逃しが少ない

均等な解析:
画像全体を均等にグリッドに分割し、全領域を同時に解析するため、物体を見逃すリスクが低くなります。

隠れた物体の検出:
物体の一部が隠れている場合でも、周囲の情報を基に物体を検出できます。

4. オープンソースで利用可能

無料で利用:
YOLOはオープンソースとして公開されており、誰でも無料で利用できます。

事前学習済みモデル:
事前に学習されたモデルが提供されているため、ユーザーが膨大な学習データを集める必要がありません。

活発なコミュニティ:
多くの研究者・開発者が継続的に改良を加え、さらに進化したバージョンを生み出しています。

5. マルチタスク対応(最新バージョン)

YOLO11では、以下のタスクをサポートしています。

  • 物体検出(Object Detection): 物体の種類と位置を検出
  • インスタンスセグメンテーション(Instance Segmentation): 物体の形状に合わせた検出
  • 画像分類(Image Classification): 画像をクラスに分類
  • 姿勢推定(Pose Estimation): 人間の姿勢を推定
  • 追跡(Tracking): 動画内の物体を追跡
  • 指向性境界ボックス(OBB): 回転可能なバウンディングボックス

YOLOのデメリット

1. 小さい物体の検出精度

初期のYOLOは、グリッドセルのサイズにより小さい物体の検出精度が劣る傾向がありました。
ただし、YOLOv3以降ではマルチスケール検出により、この問題は大幅に改善されています。

2. 位置推定エラー

YOLOは、R-CNNより高速である一方、位置推定エラーが多くなる傾向があります。
厳密な位置精度が必要なアプリケーションでは注意が必要です。

3. 密集した物体の検出

非常に密集した小さな物体(例: 群衆の中の個々の人物)の検出では、他の手法に劣る場合があります。

他の物体検出手法との比較

YOLO vs R-CNN系列

R-CNN(Region-based CNN):

  • アプローチ: 二段階検出(領域提案→分類)
  • 領域提案: 約2,000個の領域を提案
  • 処理速度: 遅い(1画像あたり2〜3秒)
  • 精度: 高精度

Fast R-CNN:

  • 改良点: R-CNNより高速化
  • 学習時間の短縮

Faster R-CNN:

  • 改良点: Region Proposal Network(RPN)を導入
  • さらなる高速化

YOLOの優位性:

  • 一段階検出により圧倒的に高速
  • バウンディングボックス予測が1画像あたり100個未満
  • バックグラウンドの誤検出が少ない
  • リアルタイム処理が可能

YOLO vs SSD

SSD(Single Shot MultiBox Detector):

  • 発表: 2016年(Liu et al.)
  • アプローチ: YOLOと同様に一段階検出
  • 特徴: 複数スケールの物体検出に強い

YOLOの優位性:

  • 全体最適な設計でより高い速度と精度の両立を目指している
  • ニューラルネットワークの構造や学習アプローチに独自の工夫

YOLO vs DETR

DETR(Facebook/Meta開発):

  • アプローチ: CNNとTransformerモデルを組み合わせ
  • 精度: Faster R-CNNに匹敵

YOLOの優位性:

  • より高速な推論速度
  • エッジデバイスでの実行に適している

YOLOの使い方

インストール

Ultralytics YOLOのインストール(Python):

pip install ultralytics

基本的な使用例

物体検出:

from ultralytics import YOLO

# モデルをロード
model = YOLO("yolo11n.pt")  # Nano、Small、Medium、Large、Xから選択可能

# 画像で推論
results = model("image.jpg")

# 結果を表示
results[0].show()

# 結果を保存
results[0].save("result.jpg")

動画での物体検出:

from ultralytics import YOLO

# モデルをロード
model = YOLO("yolo11n.pt")

# 動画で推論
results = model("video.mp4", stream=True)

# 結果をフレームごとに処理
for result in results:
    result.show()

カスタムデータセットでの学習:

from ultralytics import YOLO

# モデルをロード
model = YOLO("yolo11n.pt")

# カスタムデータセットで学習
results = model.train(
    data="custom_data.yaml",
    epochs=100,
    imgsz=640
)

コマンドラインからの実行:

# 推論
yolo predict source='image.jpg' model=yolo11n.pt

# 学習
yolo train model=yolo11n.pt data='custom_data.yaml' epochs=100 imgsz=640

# 検証
yolo val model=yolo11n.pt data='custom_data.yaml'

# エクスポート
yolo export model=yolo11n.pt format=onnx

モデルサイズの選択

YOLO11では、5つの異なるモデルサイズが提供されています。

  • YOLO11n(Nano): 2.6百万パラメータ、最も軽量、エッジデバイス向け
  • YOLO11s(Small): 小規模アプリケーション向け
  • YOLO11m(Medium): バランス型
  • YOLO11l(Large): 高精度が必要な場合
  • YOLO11x(Extra Large): 最高精度、大規模アプリケーション向け

YOLOの活用事例

1. 自動運転

用途:
車に搭載されたカメラが周囲の状況を撮影し、画像に映る標識や障害物、歩行者をYOLOが認識します。

実例:
TeslaのオートパイロットAIなど、自動運転車は物体検知を広く採用しています。
YOLOやSimpleNetのようなシンプルなアーキテクチャは速度が速いので、自動運転にとって理想的です。

課題:
複数カメラの情報を1つのチップに集積するなど、ハードウェアのコンパクト化や省電力化を通した物体検知の精度向上が今後の課題です。

2. 防犯・監視カメラ

用途:
防犯カメラの映像からリアルタイムに人物や車両、不審物を検出してアラートを上げるシステムに使われています。

実例:

  • 街中の監視カメラで人物や車を自動検知・追跡
  • 侵入や事故を素早く検知
  • 公共空間の安全管理や施設内の侵入者検知

3. 医療画像解析

用途:
医療画像(X線、CT、MRIなど)から病変や異常を検出します。

メリット:
リアルタイムでの診断支援が可能になります。

4. 製造業の品質管理

用途:
プリント基板(PCB)の欠陥検出など、製造ラインでの異常検知に活用されています。

メリット:
精度と効率が求められる分野で、YOLOの高速性が役立ちます。

5. 小売業のユーザー分析

用途:
店舗内のカメラで顧客の動線や商品への関心度を分析します。

メリット:
リアルタイムで分析できるため、即座に店舗運営に反映できます。

6. ロボット工学

用途:
ロボットが周囲の物体を認識し、適切に動作するために使用されます。

実例:
倉庫ロボット、サービスロボット、産業用ロボットなど

7. スポーツ分析

用途:
試合映像から選手やボールを追跡し、プレイ分析を行います。

YOLOのパフォーマンスベンチマーク

YOLO11のベンチマーク(COCOデータセット)

モデルサイズ別の性能:

  • YOLO11n: mAP 39.5%、レイテンシ 1.55ms(TensorRT10 FP16、NVIDIA T4 GPU)
  • YOLO11s: mAP 47.0%、レイテンシ 2.46ms
  • YOLO11m: mAP 51.5%、レイテンシ 4.70ms
  • YOLO11l: mAP 53.4%、レイテンシ 6.16ms
  • YOLO11x: mAP 54.7%、レイテンシ 11.31ms

YOLOv8との比較

YOLO11mの改善:

  • YOLOv8mと比較して22%パラメータ削減
  • COCOデータセットでより高いmAPを達成
  • 計算効率が向上

速度改善:
YOLO11nは、YOLOv8nと比較してCPU推論で約30%高速化しています。

YOLOのライセンス

Ultralyticsは、多様なユースケースに対応するために、2つのライセンスオプションを提供しています。

AGPL-3.0ライセンス

  • OSI承認のオープンソースライセンス
  • 学生や愛好家に最適
  • オープンコラボレーションと知識共有を促進
  • GitHubで無料利用可能

Enterpriseライセンス

  • 商用利用向けに設計
  • Ultralyticsソフトウェアとアル
    モデルを商用製品やサービスにシームレスに統合可能
  • AGPL-3.0のオープンソース要件をバイパス
  • 商用製品への組み込みが必要な場合は、Ultralytics Licensingに問い合わせ

最新動向と今後の展望

YOLO26の革新

2026年1月にリリースされたYOLO26は、以下の革新的な機能を導入しています。

NMSフリー推論:
Non-Maximum Suppressionを削除し、エンドツーエンドの推論を実現しました。

エッジ最適化:
エッジデバイスでのデプロイメントが大幅に最適化されました。

高速化:
CPU推論速度が大幅に向上し、YOLO26nはYOLO11nより約30%高速です。

Enterpriseモデルの導入

Ultralyticsは、初めてEnterpriseモデルを導入しました。
オープンソースモデルに加えて、より大規模な独自データセットで学習されたEnterpriseモデルが利用可能になります。

継続的な改善

YOLOシリーズは、以下の方向性で継続的に改善されています。

効率化:
少ないエポック、少ないデータ拡張、少ないデータでの学習を目指しています。

環境への配慮:
クリーンエネルギーへの移行を加速させるため、モデルの学習効率を向上させています。

マルチタスク対応:
物体検出だけでなく、セグメンテーション、分類、姿勢推定など、多様なタスクに対応しています。

まとめ

YOLOは、物体検出分野で最も広く使われているリアルタイムアルゴリズムです。

YOLOの強み

  1. 圧倒的な処理速度: 画像全体を一度に処理するため、リアルタイム検出が可能
  2. 高い検出精度: 継続的な改良により、精度と速度の両立を実現
  3. オープンソース: 誰でも無料で利用でき、活発なコミュニティが存在
  4. マルチタスク対応: 最新バージョンは検出、セグメンテーション、分類、姿勢推定など多様なタスクに対応
  5. 継続的な進化: ほぼ毎年新しいバージョンがリリースされ、性能が向上

YOLOが向いているケース

  • リアルタイム処理が必要なアプリケーション
  • 自動運転や監視カメラなど、速度が重視される用途
  • エッジデバイスでの推論が必要な場合
  • 複数の物体を同時に検出したい場合
  • オープンソースのソリューションを求めている場合

最新バージョンの選択

YOLO11(2024年9月):

  • 安定した本番ワークロードに推奨
  • YOLOv8から22%パラメータ削減、精度向上
  • マルチタスク対応

YOLO26(2026年1月):

  • エッジデプロイメントに最適
  • NMSフリー推論により高速化
  • 最新の革新的機能を搭載

今後の展望

YOLOは、物体検出の標準として今後も進化を続けます。
効率化、環境への配慮、マルチタスク対応の強化など、実用的な方向性で改善が進められています。

自動運転、監視カメラ、医療画像解析、製造業の品質管理など、様々な分野でYOLOの活用が拡大しており、リアルタイムコンピュータビジョンの未来を切り開く重要な技術として、その地位を確立しています。

参考情報

コメント

タイトルとURLをコピーしました