JA EN

物体検出の概要 - YOLO、SSD、Faster R-CNN のアーキテクチャと性能比較

· 約 9 分で読めます

物体検出とは - 画像中の物体を見つけて分類する技術

物体検出 (Object Detection) は、画像中に存在する物体の位置 (バウンディングボックス) とカテゴリ (クラス) を同時に推定するタスクです。画像分類が「画像全体に何が写っているか」を判定するのに対し、物体検出は「どこに何があるか」を特定します。自動運転、監視カメラ、医療画像診断、小売業の在庫管理など、産業応用が最も進んでいる画像認識技術です。

物体検出の出力: 各検出結果は以下の情報を含みます。

評価指標:

検出器の分類:

Faster R-CNN - 高精度な 2 段階検出器

Faster R-CNN (2015) は、Region Proposal Network (RPN) を導入した 2 段階物体検出器で、高精度な検出が求められる場面で依然として広く使用されています。R-CNN → Fast R-CNN → Faster R-CNN と進化し、エンドツーエンドの学習が可能になりました。

アーキテクチャ:

FPN (Feature Pyramid Network): マルチスケール検出の鍵となる技術です。Backbone の各解像度レベルの特徴マップをトップダウンで統合し、小さな物体から大きな物体まで均一に検出できるようにします。

性能: COCO データセットで mAP 42-47% (ResNet-101 + FPN)。処理速度は約 5-15 FPS (GPU)。精度は最高クラスですが、リアルタイム処理には不向きです。

Cascade R-CNN (2018): Faster R-CNN の改良で、複数の検出ヘッドを段階的に適用し、IoU 閾値を徐々に上げることで高精度な検出を実現します。mAP で 2-4% の改善が得られます。

適用場面: 精度が最優先で速度制約が緩い場面 (医療画像診断、衛星画像解析、オフラインのバッチ処理) に最適です。

YOLO シリーズ - リアルタイム物体検出の進化

YOLO (You Only Look Once) は 2016 年に登場した 1 段階検出器で、画像全体を 1 回のフォワードパスで処理し、リアルタイムの物体検出を実現しました。v1 から v11 まで進化を続け、速度と精度の両面で大幅に改善されています。

YOLO の基本原理: 入力画像を SxS のグリッドに分割し、各グリッドセルが B 個のバウンディングボックスと C クラスの確率を同時に予測します。全ての予測が 1 回の CNN フォワードパスで完了するため、非常に高速です。

YOLOv5 (2020): Ultralytics が開発した PyTorch 実装で、実務での使いやすさを重視しています。モデルサイズのバリエーション (n/s/m/l/x) があり、用途に応じて速度と精度のバランスを選択できます。

YOLOv8 (2023): アンカーフリー設計を採用し、アンカーボックスの事前定義が不要になりました。Decoupled Head (分類と回帰を分離) により精度が向上し、COCO で mAP 53.9% (YOLOv8x) を達成しています。

YOLO11 (2024): 最新バージョンで、C3k2 ブロックと SPPF の改良により、YOLOv8 と同等の精度を 22% 少ないパラメータで実現しています。エッジデバイスでの推論に最適化されています。

実装例:

from ultralytics import YOLO

model = YOLO('yolov8n.pt')

results = model('image.jpg', conf=0.5)

SSD と RetinaNet - 1 段階検出器のバリエーション

YOLO 以外の 1 段階検出器として、SSD と RetinaNet を解説します。それぞれ異なるアプローチでマルチスケール検出と精度向上を実現しています。

SSD (Single Shot MultiBox Detector, 2016): 複数の解像度の特徴マップから同時に検出を行うマルチスケール検出器です。VGG-16 をベースに、追加の畳み込み層で段階的に解像度を下げながら、各レベルで検出を実行します。

特徴: (1) 6 つの異なる解像度の特徴マップで検出 (38x38, 19x19, 10x10, 5x5, 3x3, 1x1)。(2) 各位置で 4-6 個のデフォルトボックス (アンカー) を使用。(3) 小さな物体は高解像度マップ、大きな物体は低解像度マップで検出。

性能: COCO mAP 25-28% (SSD300)、約 60 FPS。YOLO v1 より高精度で、Faster R-CNN より高速という位置づけでしたが、現在は YOLOv5 以降に性能で劣ります。

RetinaNet (2017): Focal Loss を導入し、1 段階検出器の精度を 2 段階検出器と同等レベルに引き上げた画期的なモデルです。

クラス不均衡問題: 1 段階検出器は画像全体の全位置で検出を試みるため、背景 (負例) が圧倒的に多く (正例の 1000 倍以上)、学習が背景に支配されます。

Focal Loss: FL(p) = -α(1-p)^γ × log(p)。簡単な例 (背景) の損失を下げ、難しい例 (物体) の損失を相対的に上げることで、クラス不均衡を解決します。γ=2, α=0.25 がデフォルトです。

性能: COCO mAP 40.4% (ResNet-101 + FPN)、約 8 FPS。Faster R-CNN と同等の精度を 1 段階で達成した最初のモデルです。Focal Loss のアイデアは後続の多くの検出器に採用されています。

EfficientDet (2020): EfficientNet をバックボーンに、BiFPN (Bidirectional FPN) で効率的なマルチスケール特徴統合を実現。パラメータ効率が高く、モバイルデバイスからサーバーまで幅広いスケールに対応します。

最新動向 - Transformer ベースの検出器と基盤モデル

2020 年以降、Vision Transformer の導入により物体検出のパラダイムが変化しています。アンカーフリー、NMS フリーの検出器や、大規模事前学習モデルの活用が主流になりつつあります。

DETR (Detection Transformer, 2020): Facebook が提案した Transformer ベースの検出器で、物体検出を集合予測問題として定式化しました。NMS (Non-Maximum Suppression) が不要で、エンドツーエンドの学習が可能です。

アーキテクチャ: CNN Backbone → Transformer Encoder → Transformer Decoder → 予測ヘッド。Decoder の Object Query (学習可能なクエリ) が各物体に対応し、Hungarian マッチングで正解と対応付けます。

DINO (2022): DETR の改良で、Deformable Attention と対照学習を組み合わせ、COCO で mAP 63.3% を達成しました。Faster R-CNN を大幅に上回る精度で、Transformer ベース検出器の優位性を確立しました。

RT-DETR (2023): リアルタイム DETR で、YOLO と同等の速度 (100+ FPS) で DETR レベルの精度を実現します。NMS 不要のため後処理が簡潔で、デプロイが容易です。

Grounding DINO (2023): テキストプロンプトで検出対象を指定できるオープンボキャブラリ検出器です。「赤い車」「眼鏡をかけた人」など、事前に学習していないカテゴリも検出可能です。SAM と組み合わせることで、テキスト指示によるセグメンテーションも実現します。

YOLO-World (2024): YOLO にオープンボキャブラリ機能を追加したモデルで、リアルタイムのテキスト指定検出が可能です。事前定義のクラスに限定されず、任意のテキストで検出対象を指定できます。

基盤モデルの活用: DINOv2、SAM、CLIP などの大規模事前学習モデルを特徴抽出器として使用し、少量のタスク固有データでファインチューニングするアプローチが主流になっています。

実務での選択基準とデプロイ戦略

物体検出モデルの選択は、精度要件、速度要件、デプロイ環境、データ量によって決まります。実務での判断基準とデプロイ時の最適化手法を解説します。

用途別推奨モデル:

デプロイ最適化:

エッジデバイスでの推論: Jetson Nano/Xavier、Raspberry Pi、スマートフォンでの推論には、モデルの軽量化が必須です。YOLOv8n (1.9M パラメータ) は Jetson Nano で 25 FPS、iPhone 15 Pro で 60 FPS を達成します。

カスタムデータでの学習: 独自のデータセットで物体検出モデルを学習する場合、最低 300-500 枚のアノテーション画像が必要です。転移学習 (COCO 事前学習モデルからのファインチューニング) により、少量データでも高精度なモデルが構築可能です。アノテーションツールとして Roboflow、CVAT、Label Studio が広く使用されています。

関連記事

画像セグメンテーションの基礎 - 領域分割の原理と応用を理解する

画像セグメンテーションの基本概念から深層学習ベースの最新手法まで解説。セマンティック、インスタンス、パノプティックの違いと Web での活用事例を紹介します。

画像圧縮アルゴリズムの深層 - DCT、ウェーブレット変換、予測符号化の仕組み

画像圧縮の核心技術を深掘り解説。JPEG の DCT、JPEG 2000 のウェーブレット変換、H.265/AV1 の予測符号化、エントロピー符号化の数学的原理を理解します。

画像の自動タグ付け技術 - 物体検出、シーン認識、キャプション生成の仕組み

画像認識 AI による自動タグ付けの技術を解説。物体検出 (YOLO)、シーン認識、画像キャプション生成の仕組みと、Web アプリケーションへの実装方法を具体例とともに紹介します。

セマンティックセグメンテーション入門 - U-Net と DeepLab の仕組みを徹底解説

画像のピクセル単位分類を実現するセマンティックセグメンテーションの基礎から U-Net、DeepLab の構造まで、実装例を交えて解説します。

機械学習向けデータ拡張の実践 - 画像 Augmentation で精度を高める手法

機械学習の画像分類・物体検出で不可欠なデータ拡張 (Data Augmentation) の手法を体系的に解説。幾何変換からミックス系まで実装例とともに紹介します。

深層学習による超解像技術 - SRCNN から Real-ESRGAN までの進化と実践

深層学習を用いた画像超解像技術の発展を体系的に解説。SRCNN から Real-ESRGAN までの主要モデルの原理、性能比較、実務での導入方法を紹介します。

関連用語