🔖 キーワード索引
物体検出(Object Detection)を深く理解するために、 本ページで扱う主要キーワードを並べます。 クリックで該当セクションへジャンプ:
💡 30秒で分かる結論
🍰 まずはやさしく
画像の中の物を探す技術です。
物の場所と名前を同時に知るために使います。
スマホで写真の人物を囲む機能に似ています。
この章では仕組みと評価の方法を学びます。
- 物体検出とは、 画像 1 枚から「どこに(座標)」「何が(クラス)」「どれくらい確信して(信頼度)」あるかを同時に出力するタスク。
- 出力は bounding box(矩形, x_min, y_min, x_max, y_max) + クラスラベル + 信頼度スコア の三つ組。
- 性能評価の中心指標は IoU(Intersection over Union) と mAP(mean Average Precision)。 IoU≥0.5 を正解と見なすのが mAP@0.5。
- 代表モデル: Faster R-CNN(2 段階, 高精度), YOLO 系(1 段階, 高速), DETR(Transformer ベース)。
- 分類(classification)との違いは「位置情報の出力」、 セグメンテーションとの違いは「ピクセル単位ではなく矩形」。
📍 文脈 — どこで使う概念か
🍰 まずはやさしく
画像認識という分野の主要な技術です。
どこに何があるかを正確に答えるために使います。
自動運転で歩行者を見つける時に役立ちます。
他の似た技術との違いについて解説します。
物体検出(Object Detection)は、 画像認識の中核タスクの 1 つ。 単純な「画像分類」(猫か犬か)より一段難しく、 「画像のどこに何があるか」を答えます。 自動運転(周辺車両・歩行者)、 監視カメラ、 製造業の品質検査など 産業応用が極めて多い領域です。
📍 文脈ボックス:あなたが今見ているもの
あなたは今、 コンピュータビジョン(CV)の中核タスクの一つである「物体検出」のページにいます。 CV のタスクは以下の階層で整理できます:
- 画像分類(Image Classification): 画像 1 枚 → 1 ラベル(例: 「猫」)。位置情報なし。
- 物体検出(Object Detection): 画像 1 枚 → 複数の (矩形, ラベル, スコア)。← 今ここ
- セマンティックセグメンテーション: 画像 1 枚 → ピクセル単位のクラスマップ。 個体は区別しない。
- インスタンスセグメンテーション: 画像 1 枚 → ピクセル単位 + 個体区別(Mask R-CNN 等)。
- パノプティックセグメンテーション: 上記の統合(モノとモノでないものを区別)。
物体検出は自動運転(人・車・標識検知)、 監視カメラ、 医療画像(病変検出)、 小売(棚卸し)、 農業(果実検出)など実応用の多くで採用されています。
🎨 直感で掴む — 具体例で理解する
🍰 まずはやさしく
写真に付箋を貼るような作業です。
物の種類と自信の強さを記録するために使います。
部活の集合写真から友達を探す感覚です。
機械にとってなぜ難しいのかを考えます。
画像認識タスクの階層:
| タスク | 出力 | 例 |
| 画像分類 | 1 つのラベル | 「この画像は猫」 |
| 物体検出 | 複数のボックス + ラベル | 「(100,50,200,150) に猫、 (300,100,400,300) に犬」 |
| セマンティックセグメンテーション | ピクセル単位のラベル | 「このピクセル群が猫」 |
| インスタンスセグメンテーション | ピクセル + 個体ID | 「猫1、 猫2 を区別」 |
物体検出は「いくつあるか分からない物体を検出」する必要があり、 アルゴリズム設計が複雑。 主流は 1 段階検出器(YOLO, SSD)と 2 段階検出器(Faster R-CNN)に分かれます。
🎨 直感で掴む
物体検出を「画像にラベル付き付箋を貼る作業」と考えてみましょう。 写真の中の犬・人・自転車それぞれに長方形の付箋を貼り、 「犬 92%」「人 88%」「自転車 76%」と書き込みます。 これがまさに物体検出器の出力です。
人間は瞬時にこれを行えますが、 機械にとっては難題です。 なぜなら:
- 位置の探索空間が膨大: 1024×768 画像なら矩形候補は 10 億通り超。
- スケール変化: 同じ「人」でも手前は 500 px、 遠景は 20 px。
- オクルージョン: 物体同士が重なり、 一部しか見えない。
- クラス間の曖昧さ: 子犬と狼、 自転車とバイク等。
そこで近年のモデルは「① 候補矩形を多数生成 → ② 各候補をクラス分類 + 矩形微調整 → ③ 重複矩形を間引く(NMS)」という流れで処理します。 これを 1 段階で同時にやるのが YOLO、 2 段階に分けるのが Faster R-CNN です。
| モデル系 | 代表 | 特徴 | 速度 | 精度 |
| 2 段階検出 | Faster R-CNN, Mask R-CNN | 候補抽出 → 分類の二段構え | 中 | 高 |
| 1 段階検出 | YOLO v3-v10, SSD, RetinaNet | grid + anchor で一発推論 | 高 | 中〜高 |
| Transformer 系 | DETR, Deformable DETR | NMS 不要・end-to-end | 中 | 高 |
| Anchor-free | FCOS, CenterNet | アンカー不要、 中心点予測 | 高 | 中〜高 |
🔬 記号・要素の読み解き
🔬 数式を言葉で読み解く
「数式を言葉で読み解く」ことは、 数学アレルギーを乗り越える最良の方法です。 各記号の意味を日本語で並べ直します:
| 記号 | 意味 | 物体検出での実体 |
| A, B | 2 つの矩形(集合) | 予測 box と正解 box |
| A ∩ B | 共通部分(重なり領域) | 交差矩形の面積 |
| A ∪ B | 和集合(合体領域) | 予測と正解の総面積 |
| IoU=1 | 完全一致 | 予測 = 正解 |
| IoU=0 | 重なりゼロ | 完全外れ |
| TP, FP, FN | 真陽性 / 偽陽性 / 偽陰性 | IoU≥0.5 で正解 → TP、 過検出 → FP、 見落とし → FN |
| P(r) | Recall=r での Precision | PR 曲線の高さ |
| C | クラス数 | COCO なら 80, PASCAL VOC なら 20 |
| τ_nms | NMS の IoU 閾値 | 通常 0.45〜0.5 |
読み下し例: 「IoU = (重なりの面積) ÷ (合体の面積)。 IoU が 0.5 以上なら『当たり』とみなし、 PR 曲線を作って積分すると AP、 それをクラス平均すると mAP」。
🧮 数値例・実値計算
YOLOv5 等の代表モデルの性能比較(COCO データセット):
| モデル | mAP | 速度 (FPS) | パラメータ数 |
| YOLOv5s | 37.4 | 140 | 7.2M |
| YOLOv5x | 50.7 | 32 | 87M |
| Faster R-CNN | 42.0 | 5 | 41M |
| DETR | 44.9 | 10 | 41M |
| YOLOv8x | 53.9 | 40 | 68M |
速度と精度はトレードオフ。 リアルタイム用途(自動運転)は YOLO 系、 精度重視は R-CNN 系。
🧮 数式に値を入れて手で計算する: mAP の計算
合成データでクラス別 AP と平均 (mAP) を計算する。
Step 1: クラス別 AP
| クラス | AP |
| person | 0.85 |
| car | 0.78 |
| dog | 0.92 |
| cat | 0.65 |
Step 2: mAP
mAP = (0.85+0.78+0.92+0.65)/4 = 3.20/4 = 0.80
🐍 Python で再現
| import numpy as np
ap = np.array([0.85, 0.78, 0.92, 0.65])
print(f"mAP: {ap.mean():.3f}")
|
📤 実行結果
mAP: 0.800
💬 手計算 (Step 2) 0.80 と Python 出力が完全一致。
🐍 Python 実装例
最小コードで動かしてみる例:
1
2
3
4
5
6
7
8
9
10
11
12
13 | from ultralytics import YOLO
# 事前学習済み YOLOv8 で物体検出
model = YOLO('yolov8n.pt')
# 画像で推論
results = model('image.jpg')
# 検出結果(バウンディングボックス + クラス + 信頼度)
for r in results:
print(r.boxes.xyxy) # 座標
print(r.boxes.cls) # クラスID
print(r.boxes.conf) # 信頼度
|
⚠️ よくある落とし穴
❌ 小さい物体の検出
高解像度画像での小物体は見逃しやすい。 マルチスケール検出や FPN を使う。
❌ クラス不均衡
「人」が大量、 「飛行機」が少しのデータだと学習が偏る。 Focal Loss や重み付け。
❌ アノテーションの質
境界ボックスの定義が人間でも揺れる。 アノテーションガイドラインを厳密に。
❌ 照明・角度変化
学習データと違う環境では性能が落ちる。 データ増強で頑健化。
❌ リアルタイム性
車両等の用途では遅延が致命的。 速度 vs 精度のバランスを慎重に。
⚠️ 落とし穴 - 拡張版
上記の基本的な落とし穴に加え、 現場で実際に遭遇する 10 個の追加注意点を解説。
- train/val リーク: 同じシーンの連続フレームを train と val に分けると擬似的に val 精度が高くなる。 シーン単位で分割すべし。
- 長尾分布の罠: COCO の上位 10 クラスで全インスタンスの 60% を占める。 LVIS では極端な long-tail のため class-balanced sampling 必須。
- アノテーション仕様の揺れ: 「自動車」を「車体のみ」とするか「窓・ミラー含む」とするかで box が変わる。 ガイドライン文書化が必須。
- 重複物体カウントエラー: 群衆検出で 1 人を 2 つに数える / 2 人を 1 つに数えるエラー。 Soft-NMS や Crowd-NMS で改善。
- 動的シーンへの過適合: 学習データが特定の街路パターンに偏ると未知シーンで一気に精度低下。 ドメイン多様性を確保。
- ラベルノイズ: アノテーターのミスで 5-10% のラベルが誤っているのは珍しくない。 Label cleaning, co-teaching 等で対応。
- 計算リソース過大評価: 「YOLO は 200 FPS」とあるが入力サイズ・バッチ・前処理を含めると実 30 FPS のことも。 自前環境での測定必須。
- 動画の時間整合性問題: 単フレーム検出を動画に適用すると、 同じ物体の box が小刻みにブレる。 時間平滑化 / トラッキング統合で対策。
- カラー空間問題: BGR / RGB の取り違えで精度激減。 OpenCV と PIL の違いに注意。
- 適切なライセンス確認: YOLOv5/v8 は GPL-3.0、 商用利用には別途ライセンス購入が必要。 プロジェクト初期に確認。
🌐 関連手法・派生
- セマンティックセグメンテーション: ピクセル単位のクラス分け。 U-Net / DeepLab。
- インスタンスセグメンテーション: ピクセル + 個体区別。 Mask R-CNN / YOLACT / Cascade Mask R-CNN。
- キーポイント検出: 人物姿勢推定 (OpenPose) / 顔ランドマーク。
- 3D 物体検出: 自動運転で LiDAR 点群から 3D box を推定。 PointPillars / VoxelNet。
- Tracking-by-Detection: 連続フレームの検出を ID で繋ぐ。 SORT / DeepSORT / ByteTrack。
- Open-vocabulary Detection: 事前定義クラスに縛られず、 任意のテキストで検出。 GLIP / Grounding DINO / OWL-ViT。
🏛 主要アーキテクチャ詳細解説
代表的な物体検出モデル 6 系統について、 アーキテクチャ・損失関数・推論速度を比較します。
▶ Faster R-CNN(2015, Ren et al.)
2 段階検出の金字塔。 ResNet 等のバックボーンで特徴抽出 → RPN(Region Proposal Network)が候補矩形を 300〜2000 個提案 → 各候補を ROI Pooling で固定サイズに変換 → 分類 head + 回帰 head で最終出力。 学習は 4 つの損失の和:
$$L = L_{cls}^{RPN} + L_{reg}^{RPN} + L_{cls}^{head} + L_{reg}^{head}$$
L_cls はクロスエントロピー、 L_reg は Smooth L1。 速度は 5-10 FPS(リアルタイム未満)、 精度は mAP@0.5 ≈ 73% (PASCAL VOC)。 「速度より精度」が求められる医療・衛星画像で今も現役。
▶ YOLO v1-v10(2016-2024)
「You Only Look Once」: 画像を S×S グリッドに分け、 各セルで B 個の box とクラス確率を一発予測。 損失:
$$L_{YOLO} = \lambda_{coord}\sum (x-\hat x)^2 + \lambda_{coord}\sum (\sqrt w - \sqrt{\hat w})^2 + \sum L_{obj} + \lambda_{noobj}\sum L_{noobj} + \sum L_{cls}$$
v3 で multi-scale + anchor、 v5 で PyTorch 化 + 学習効率改善、 v8 で anchor-free、 v10 で NMS 除去。 速度は 50-200 FPS、 精度も近年は Faster R-CNN を超える。 自動運転・監視カメラ・スマホアプリで広く採用。
▶ SSD(Single Shot Detector, 2016)
VGG16 を改造し、 異なる解像度の特徴マップ(38×38, 19×19, 10×10, 5×5, 3×3, 1×1)から各々検出することで小物体〜大物体を同時に扱う。 YOLO v1 より精度高く、 Faster R-CNN より高速。 軽量で組込み機器向け。
▶ RetinaNet(2017)
1 段階検出の弱点「背景クラスが loss を支配する問題」を Focal Lossで解決:
$$FL(p_t) = -\alpha_t (1 - p_t)^\gamma \log(p_t)$$
γ=2 で「簡単サンプルの loss を抑制、 難しいサンプルに集中」させる。 これにより 1 段階検出でも Faster R-CNN を超える精度を達成。 不均衡データ全般で有効な loss として現在も広く利用。
▶ DETR(Detection Transformer, 2020)
Transformer の attention で「N 個の box」を一括予測し、 Hungarian matchingで予測と正解を 1 対 1 対応させる。 NMS 不要・end-to-end 学習可能・anchor 設計不要。 ただし学習収束が遅い(500 epoch)ため Deformable DETR で改善。 現代的な検出器の主流ラインの起点。
▶ Grounding DINO / Open-vocabulary(2023-)
テキストプロンプトと画像を同時に入力し「prompt に書かれた物体だけ」を検出。 例: 「red car」と指定すると赤い車だけ box が出る。 CLIP の image-text alignment を活用。 既存の閉じたクラスセットの限界を打破し、 任意物体検出を実現。
| モデル | 年 | タイプ | COCO mAP | FPS (V100) | パラメータ |
| Faster R-CNN R50-FPN | 2015 | 2 段階 | 37.4 | 12 | 41M |
| SSD512 | 2016 | 1 段階 | 28.8 | 22 | 36M |
| RetinaNet R50-FPN | 2017 | 1 段階 | 36.5 | 14 | 38M |
| YOLOv5l | 2020 | 1 段階 | 49.0 | 99 | 47M |
| DETR R50 | 2020 | Transformer | 42.0 | 28 | 41M |
| YOLOv8x | 2023 | 1 段階, anchor-free | 53.9 | 120 | 68M |
| Grounding DINO-L | 2023 | Open-vocab | 63.0 | 10 | 341M |
📊 評価指標の詳細
物体検出の評価は「IoU 閾値」「Precision/Recall 計算法」「平均の取り方」の組み合わせで決まります。
▶ AP の計算方法(VOC 2007 vs COCO)
- VOC 2007 風 11 点補間: Recall ∈ {0, 0.1, 0.2, ..., 1.0} の各点で Precision の最大値を取り平均。 AP = (1/11)·Σ P_max(r)
- COCO 風 101 点補間: Recall ∈ {0, 0.01, 0.02, ..., 1.0} の 101 点で平均。 細かいぶん厳密。
- VOC 2010+ 連続積分: PR 曲線の正確な階段積分。
▶ mAP@0.5 vs mAP@[0.5:0.95]
COCO ベンチマークでは IoU 閾値を 0.5, 0.55, ..., 0.95 の 10 段階で評価し平均する mAP@[0.5:0.95](または単に mAP)が標準。 これにより「位置ずれにも厳しい」評価が可能。 mAP@0.5 は緩い指標で、 mAP@0.75 は厳密性を強調する用途。
▶ サイズ別 AP(COCO)
- AP_S: 小物体(area < 32×32 px²)
- AP_M: 中物体(32×32 ≤ area < 96×96 px²)
- AP_L: 大物体(area ≥ 96×96 px²)
小物体の AP_S は一般に最も低く、 検出器設計の最大のチャレンジ。 FPN(Feature Pyramid Network)・高解像度入力・PANet 等が改善策。
🛠 アノテーションツールとデータセット
物体検出モデルは膨大なアノテーション付きデータが必要です。
| データセット | 画像数 | クラス数 | 主な用途 |
| PASCAL VOC 2012 | 11,540 | 20 | 汎用、 ベンチマーク用 |
| MS COCO 2017 | 123K | 80 | 最も標準的なベンチマーク |
| Open Images V7 | 9M | 600 | 大規模事前学習 |
| LVIS | 164K | 1203 | Long-tail 分布の研究 |
| KITTI | 15K | 8 | 自動運転 |
| WIDER FACE | 32K | 1 (face) | 顔検出専用 |
主要アノテーションツール: LabelImg(無料・矩形のみ)、 CVAT(OSS, web UI, ビデオ対応)、 Labelbox(商用, AI assisted)、 Roboflow(商用, データ管理 + 学習)、 SAM-based auto-annotation(半自動)。
💼 実応用での運用ノウハウ
- 転移学習が基本: COCO 事前学習済モデルを自社データで fine-tune。 ゼロから学習するより 10-100 倍データ効率が良い。
- データ拡張は強力: Mosaic(YOLOv4+), MixUp, CutMix, RandAugment, Copy-Paste は精度を 2-5 pt 押し上げる。
- 推論最適化: TensorRT / ONNX Runtime / OpenVINO で 2-5 倍高速化。 量子化 (INT8) でさらに 2-4 倍。
- エッジ展開: NVIDIA Jetson, Coral Edge TPU, RaspberryPi + Hailo 等で組込み推論可能。 モデルは YOLOv5n/v8n 等の軽量版を選ぶ。
- 監視・モニタリング: 本番投入後はデータドリフト(撮影条件変化)で精度劣化するため定期再学習が必須。 mAP, P, R を週次ダッシュボード化。
- 説明可能性: Grad-CAM 等で「なぜこの矩形を検出したか」を可視化。 医療・自動運転では必須。
- プライバシー: 人物検出の場合、 顔モザイク等の後処理を組み合わせる。 GDPR / 個人情報保護法に注意。
🎓 学習・損失関数の深掘り
物体検出の学習は「分類 (classification) loss」+「位置回帰 (regression) loss」の組合せ。 さらに anchor based vs anchor-free、 IoU loss の改良など、 多くの工夫があります。
▶ 分類 loss の系譜
| loss | 特徴 | 使用モデル |
| Cross Entropy (CE) | 標準。 不均衡時は弱い。 | Faster R-CNN head |
| Focal Loss (FL) | 難しいサンプル重み付け、 γ=2 | RetinaNet, YOLOv8 |
| Varifocal Loss (VFL) | FL + IoU-aware | VFNet, YOLOX |
| Quality Focal Loss (QFL) | 分類とローカリゼーション品質の統合 | GFL, PP-YOLOE |
▶ 位置回帰 loss の進化
(a) L1 / Smooth L1: 各座標を独立に回帰。 シンプル。
$$L_{smoothL1}(x) = \begin{cases} 0.5x^2 & |x| < 1 \\ |x| - 0.5 & \text{otherwise} \end{cases}$$
(b) IoU Loss: 直接 IoU を最大化(loss は 1 - IoU)。 box の総合的な重なりを最適化。
$$L_{IoU} = 1 - \mathrm{IoU}(B_{pred}, B_{gt})$$
(c) GIoU Loss: IoU=0 のときも勾配が流れるように改良。
$$L_{GIoU} = 1 - \mathrm{IoU} + \frac{|C \setminus (A \cup B)|}{|C|}$$
ここで C は A∪B を覆う最小矩形。
(d) DIoU / CIoU Loss: 中心点距離・縦横比のずれも penalize。 YOLOv4+ で標準。
$$L_{CIoU} = 1 - \mathrm{IoU} + \frac{\rho^2(b, b^{gt})}{c^2} + \alpha v$$
▶ Anchor based vs Anchor-free
Anchor based(Faster R-CNN, SSD, YOLOv3-v5, RetinaNet): 事前定義したアスペクト比・サイズの矩形(anchor)を画像にばら撒き、 各 anchor からの相対値を回帰。 ハイパーパラメータ調整が必要。
Anchor-free(FCOS, CenterNet, YOLOX, YOLOv8): 各画素から直接 (l, t, r, b) の 4 距離を予測。 anchor 不要で簡潔。 近年の主流。
▶ Label Assignment(GT と予測の対応付け)
- Max-IoU matching(古典): IoU 最大の anchor を正例とする。
- ATSS(2020): 統計的に閾値を自動決定。
- OTA / SimOTA(YOLOX): 最適輸送理論で動的に対応付け。
- TAL(Task-Aligned Learning)(YOLOv8): 分類スコアと IoU の両方が高い予測を正例に。
📂 実応用ケーススタディ
▶ ケース 1: 自動運転(NVIDIA DRIVE)
前方カメラ・サラウンドカメラ・LiDAR・レーダーを統合し、 人・車・自転車・標識・信号・路面表示を 60+ FPS で検出。 安全要件 ASIL-D(最高ランク)を満たすため冗長化・フォーマル検証・実走行テスト数百万 km が必要。 mAP より「危険シーンでの false negative」を最小化する設計。
▶ ケース 2: 医療画像(皮膚癌スクリーニング)
皮膚科医の診察画像から悪性メラノーマ等の病変を検出。 Stanford DDI dataset 等で学習。 病変の小ささ・クラス不均衡・肌色バイアスへの対応が課題。 Faster R-CNN + Focal Loss + 肌色分布補正で皮膚科医平均 ≈ 84% 一致率を達成 (2023 報告)。
▶ ケース 3: 小売(アマゾン Just Walk Out)
店舗天井のカメラ群で来店客の手と商品をリアルタイム追跡し、 「誰が・いつ・何を取ったか」を物体検出 + Tracking で記録。 レジ不要決済を実現。 検出は YOLOv8 系を改造、 ID 紐付けは ByteTrack + Re-ID。 1 店舗あたり 100+ カメラ・GPU クラスタ規模。
▶ ケース 4: 農業(果実カウント)
ドローン撮影画像からリンゴ・オレンジを検出し収穫量を推定。 葉による occlusion・光線変化・スケール変化が課題。 YOLOv5 + Mosaic 拡張 + multi-view stitching で誤差 ±5% 以内に収まる事例多数 (PlantSci 2024)。
▶ ケース 5: スポーツ(サッカー選手追跡)
FIFA・J リーグの中継映像で選手・ボールを検出 → 各選手の走行距離・スプリント回数・ボール保持時間を自動集計。 観客との分離・選手 ID 維持・遮蔽からの復帰が技術的山場。 Faster R-CNN + DeepSORT + Re-ID embedding が定番。
📜 物体検出 歴史年表
| 年 | モデル / 手法 | 貢献 |
| 2001 | Viola-Jones | Haar 特徴 + AdaBoost。 初の実用的リアルタイム顔検出 |
| 2005 | HOG + SVM | 勾配ヒストグラムによる人検出 |
| 2014 | R-CNN | CNN 特徴 + Selective Search。 PASCAL VOC で大幅性能向上 |
| 2015 | Fast R-CNN / Faster R-CNN | ROI Pooling, RPN による高速化 |
| 2016 | YOLO v1, SSD | 1 段階検出の登場。 リアルタイム化 |
| 2017 | FPN, Mask R-CNN, RetinaNet | マルチスケール特徴 + Focal Loss |
| 2019 | FCOS, CenterNet | Anchor-free の確立 |
| 2020 | DETR, YOLOv4, EfficientDet | Transformer ベース + 高度な拡張 |
| 2022 | DINO, YOLOv7 | COCO mAP 60+ 達成 |
| 2023 | Grounding DINO, YOLOv8, SAM | Open-vocabulary, prompt 駆動検出 |
| 2024 | YOLOv10, RT-DETR v2 | NMS-free YOLO、 効率と精度両立 |
❓ よくある質問
- Q. 物体検出と画像分類はどう違う? A. 分類は「画像 1 枚 → 1 ラベル」。 検出は「画像 1 枚 → 複数の (box, ラベル, スコア)」。 検出は分類より位置情報を出力するぶん難しい。
- Q. 何枚あれば学習できる? A. 事前学習モデルからの fine-tune なら 1 クラス 100-500 枚で実用レベル。 ゼロからなら数千〜数万枚必要。
- Q. リアルタイム検出に必要な FPS は? A. ビデオストリーム処理なら 30 FPS 以上、 自動運転なら 60 FPS 以上が目安。 YOLOv8n なら CPU でも 30 FPS、 GPU なら 200 FPS 可能。
- Q. mAP@0.5 が 90% でも実用化できる? A. 用途次第。 顔検出ならほぼ OK、 自動運転なら 99.9% 必要。 false negative の許容度で判断。
- Q. アノテーションを楽にする方法は? A. SAM (Segment Anything Model) で自動マスク生成 → 矩形に変換、 弱教師あり学習で画像レベルラベルから学習、 active learning で重要サンプルだけ手動ラベル等。
🚀 先進トピック
▶ 3D 物体検出(自動運転)
2D 検出が画像上の矩形を求めるのに対し、 3D 検出は世界座標系の (x, y, z, w, h, l, yaw)(中心位置 + 寸法 + 回転)を推定。 入力は LiDAR 点群・ステレオカメラ・モノクロカメラ + 深度推定など。 代表モデルは PointPillars, VoxelNet, CenterPoint, BEVFormer。 自動運転の Tesla / Waymo / Nuro はすべて 3D 検出をコアに採用。
▶ Few-shot / Zero-shot Detection
新クラスのラベル付き画像が 数枚以下でも検出可能にする手法。 Meta-learning, prototypical network, CLIP embedding 活用などがある。 Zero-shot は「全く見たことのないクラス」をテキスト記述だけで検出。 OWL-ViT, Grounding DINO 等。
▶ Domain Adaptation
学習データ(例: 晴天の街路)と運用データ(例: 雨夜の街路)の分布差を吸収する手法。 Adversarial domain adaptation, self-training, pseudo-labeling 等。 産業応用の最大の障壁を緩和する重要技術。
▶ Self-supervised Pretraining
ラベルなし画像で事前学習 → 少量のラベルで fine-tune する流れ。 DINO v2, MAE, SimMIM 等。 検出 head を追加して COCO で fine-tune すると、 完全教師あり学習と同等以上の精度を達成可能。
▶ Multi-task Learning
「検出 + セグメンテーション + 深度推定」を 1 モデルで同時学習。 共有特徴で推論効率改善。 自動運転の Tesla HydraNet, BEVFormer 等が採用。
▶ Video Object Detection
単フレーム検出に時間的整合性を加え、 ぶれや遮蔽からの復帰を改善。 Optical flow 利用、 ConvLSTM, Temporal Transformer 等。 監視カメラ・スポーツ解析で重要。
📈 ベンチマーク詳細比較(COCO test-dev 2017)
この表について:下の数値は COCO データセットでの公表ベンチマーク値で、この教材の中では再現できません(COCO の画像も学習済みモデルも同梱していないため)。モデルの性能は年々更新されるので、最新の値は各モデルの論文や公式リポジトリで確認してください。
読み取ってほしいのは個々の数字ではなく、「小さな物体(APs)はどのモデルでも苦手」という関係のほうです。
| モデル | Backbone | AP | AP50 | AP75 | APs | APm | APl |
| Faster R-CNN | R-50-FPN | 37.4 | 58.1 | 40.4 | 21.2 | 41.0 | 48.1 |
| Mask R-CNN | R-101-FPN | 40.4 | 61.6 | 44.2 | 23.2 | 44.7 | 52.4 |
| RetinaNet | R-101-FPN | 39.1 | 59.1 | 42.3 | 21.8 | 42.7 | 50.2 |
| FCOS | R-101-FPN | 41.5 | 60.7 | 45.0 | 24.4 | 44.8 | 51.6 |
| DETR | R-101 | 43.5 | 63.8 | 46.4 | 21.9 | 48.0 | 61.8 |
| Deformable DETR | R-50 | 46.2 | 65.2 | 50.0 | 28.8 | 49.2 | 61.7 |
| YOLOv5x | CSPDarknet | 50.7 | 68.9 | 55.2 | 34.5 | 55.3 | 64.0 |
| YOLOv8x | YOLOv8 | 53.9 | 71.3 | 58.4 | 36.2 | 58.7 | 68.2 |
| DINO | Swin-L | 63.3 | 80.0 | 69.0 | 46.8 | 67.3 | 77.4 |
| Co-DETR | ViT-L | 66.0 | 82.4 | 72.1 | 50.1 | 70.2 | 80.5 |
2024 年時点で COCO mAP は 66+ まで上昇。 ただし小物体(APs)は依然として中物体・大物体より大幅に低く、 検出器設計の課題は残る。
🏢 産業導入事例リスト
| 分野 | 用途 | 代表企業 | 使用モデル例 |
| 自動運転 | 人・車・標識検出 | Tesla / Waymo / Mobileye | HydraNet, CenterPoint |
| 小売 | 無人決済・棚卸し | Amazon Go / Standard Cognition | YOLOv8 + ByteTrack |
| 医療 | 病変・組織検出 | PathAI / Tempus / 富士フィルム | Faster R-CNN + Focal Loss |
| 農業 | 果実カウント・雑草検出 | John Deere / Yara | YOLOv5, EfficientDet |
| スポーツ | 選手・ボール追跡 | Hawk-Eye / Second Spectrum | Faster R-CNN + DeepSORT |
| セキュリティ | 監視カメラ侵入検知 | Hikvision / Avigilon | YOLOv7 |
| 製造業 | 欠陥検査 | Cognex / Keyence | 独自 CNN, YOLOv5 |
| 物流 | 荷物識別・体積測定 | FedEx / 楽天 / Amazon Robotics | Mask R-CNN, PointNet |
| 環境 | 野生動物・植生モニタリング | WWF / Google Earth | YOLOv8, MegaDetector |
| エンタメ | AR フィルタ・顔エフェクト | Snapchat / TikTok / Meta | MediaPipe, MobileNet-SSD |
📖 学習リソース
- 論文: Faster R-CNN (Ren+ 2015), YOLO (Redmon+ 2016), Focal Loss (Lin+ 2017), DETR (Carion+ 2020), YOLOv8 (Ultralytics 2023)
- 書籍: 「物体検出と画像セグメンテーションのための機械学習」, 「PyTorch ではじめる物体検出」, Howard et al. "Deep Learning for Coders"
- OSS: Ultralytics YOLO, Detectron2 (Meta), MMDetection (OpenMMLab), torchvision.models.detection
- データセット: MS COCO, PASCAL VOC, Open Images, LVIS, KITTI, Cityscapes
- コンペ: Kaggle: Open Images Detection, Global Wheat Detection, RSNA Pneumonia Detection
- 講義: Stanford CS231n, Carnegie Mellon 16-720, Coursera "Deep Learning Specialization"
📔 用語ミニ辞典
| 用語 | 意味 |
| Anchor | 事前定義した矩形テンプレート。 anchor-based 検出で使用 |
| BBox | Bounding Box の略。 (xmin,ymin,xmax,ymax) または (cx,cy,w,h) 形式 |
| Backbone | 特徴抽出ネットワーク。 ResNet, EfficientNet, Swin Transformer 等 |
| FPN | Feature Pyramid Network。 異なる解像度の特徴を統合 |
| Head | 最終予測層。 分類 head + 回帰 head が典型 |
| Neck | Backbone と Head の間の中間層 (FPN, PAN 等) |
| RPN | Region Proposal Network。 Faster R-CNN の候補生成ネット |
| ROI | Region of Interest。 候補矩形領域 |
| ROI Pooling / Align | 候補領域を固定サイズに変換する操作 |
| NMS | Non-Maximum Suppression。 重複矩形削除 |
| Soft-NMS | スコアを下げて残す改良型 NMS。 密集物体に有効 |
| IoU | Intersection over Union。 矩形の重なり指標 |
| mAP | mean Average Precision。 物体検出の標準指標 |
| PR Curve | Precision-Recall 曲線 |
| Focal Loss | クラス不均衡対策の loss |
| Anchor-free | Anchor を使わない検出方式 |
| Open-vocabulary | 事前定義クラスに縛られない検出 |
🔭 今後のトレンド (2025-)
- NMS-free 検出: YOLOv10 等が NMS を学習で代替し、 真の end-to-end 推論を実現。
- マルチモーダル検出: テキスト・音声・画像の融合で「赤い消防車を探せ」を直接実行。
- 3D 統合: 単眼カメラから 3D box を高精度推定 (BEVDet, PETR)。
- 自己教師あり事前学習の拡大: DINOv2, SAM 系の zero-shot 化が標準に。
- エッジ AI 拡大: モバイルチップ (Snapdragon AI engine, Apple Neural Engine) で 60+ FPS 検出が標準化。
- 動画・時系列融合: 単フレーム検出から動画 Transformer ベースの追跡へ統合。
- 法規制対応: 顔検出・人物検出の利用にプライバシー保護機構(差分プライバシー、 連合学習)が必須化。
✅ 実装チェックリスト
プロジェクトで物体検出を導入する際の確認事項を、 フェーズ別に整理:
▶ Phase 1: 要件定義
- 検出対象クラス数の確定(10 以下なら fine-tune 軽量、 100+ なら大規模事前学習必要)
- 許容誤検出率・見逃し率の数値化(医療なら recall 重視、 監視なら precision 重視)
- 推論レイテンシ要件の確定(<100ms / <33ms / <10ms)
- デプロイ環境決定(クラウド GPU / エッジ CPU / モバイル / 組込み)
- プライバシー・規制要件の確認(GDPR, HIPAA, 個人情報保護法)
▶ Phase 2: データ収集・アノテーション
- 各クラス最低 100 枚(理想 500-1000 枚)のアノテーション画像
- 多様性確保: 時間帯・天候・角度・距離・遮蔽の網羅
- train/val/test 分割の決定(典型 7:1.5:1.5、 ストラタファイ)
- クラスバランスの確認、 不均衡なら oversampling / class-balanced sampling
- アノテーション品質: 二人検証 (inter-annotator agreement > 0.8) を推奨
▶ Phase 3: モデル選定・学習
- 速度優先 → YOLOv8n/m、 精度優先 → DINO / Co-DETR、 中庸 → YOLOv8x / DETR
- 事前学習: COCO ベース fine-tune が基本(ゼロから学習は 100 倍データ必要)
- データ拡張: Mosaic, MixUp, RandAugment を全モデルで適用
- 学習率スケジューラ: cosine, warmup 5 epoch
- 早期終了: val mAP が 10 epoch 改善なしで停止
▶ Phase 4: 評価・チューニング
- mAP@0.5, mAP@0.75, mAP@[0.5:0.95] を全クラスで報告
- クラス別 AP の確認(最低 AP クラスは追加データ収集)
- サイズ別 AP(小・中・大物体)の確認
- 失敗ケースの可視化(高 IoU だが分類ミス、 低 IoU だが正しいクラス、 等)
- 信頼度閾値のチューニング(precision-recall trade-off)
▶ Phase 5: デプロイ・運用
- ONNX / TensorRT / OpenVINO 変換
- 量子化(INT8/FP16)で速度 2-4 倍化
- 本番モニタリング: mAP の週次計算、 input drift 検出
- 3 ヶ月ごとの再学習サイクル設定
- 異常検出: 検出数の急変・confidence 分布シフトをアラート
🔀 他 CV タスクとの徹底比較
| タスク | 出力 | 難易度 | 代表モデル | 主要指標 | アノテコスト |
| 画像分類 | 1 ラベル | ★ | ResNet, EfficientNet, ViT | Top-1/5 Accuracy | 低(5 秒/枚) |
| 物体検出 | 複数 (box, class, score) | ★★★ | YOLO, Faster R-CNN, DETR | mAP@0.5, mAP@[0.5:0.95] | 中(30 秒/物体) |
| セマンティックセグメ | pixel-class map | ★★★ | U-Net, DeepLab, Mask2Former | mIoU, Dice | 高(数分/枚) |
| インスタンスセグメ | 個体別マスク | ★★★★ | Mask R-CNN, SOLOv2 | mask mAP | 最高(10 分/枚) |
| 姿勢推定 | キーポイント座標 | ★★★ | OpenPose, HRNet | OKS, PCK | 中(1 分/人) |
| 深度推定 | pixel-depth map | ★★★★ | MiDaS, DPT, ZoeDepth | RMSE, AbsRel | 最高(LiDAR/ステレオ必要) |
物体検出は分類より位置情報のぶん難しく、 セグメンテーションよりアノテーションコストが低いという「中庸ポジション」。 そのため実応用では最も多く採用される CV タスクと言える。
🔗 用語間ネットワーク
物体検出は CV エコシステムの中核に位置し、 以下の用語と密接に関連します。 矢印は依存関係:
[基礎技術]
畳み込み (convolution.html) → CNN (cnn.html) → ResNet → Faster R-CNN
Attention (attention.html) → Transformer (transformer.html) → ViT (vision-transformer.html) → DETR
[周辺タスク]
画像分類 (image-classification.html) ← 物体検出 → セグメンテーション (semantic-segmentation.html)
物体検出 → トラッキング (object-tracking.html) → 行動認識 (action-recognition.html)
[評価指標]
混同行列 (confusion-matrix.html) → Precision/Recall → AP → mAP
IoU → GIoU/DIoU/CIoU
[学習技法]
Cross Entropy (cross-entropy.html) → Focal Loss → Varifocal/Quality Focal Loss
データ拡張 (data-augmentation.html) → Mosaic / MixUp / Copy-Paste
転移学習 (transfer-learning.html) → 事前学習 → fine-tune
[応用]
物体検出 → 自動運転 / 監視 / 医療 / 小売 / 農業 / スポーツ
📚 関連グループ教材
この用語の全体像を学ぶには、 まず横断的な教材で文脈を掴むのが効率的です:
📚 主要参考文献
- Ren, S. et al. (2015). "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks." NeurIPS.
- Redmon, J. et al. (2016). "You Only Look Once: Unified, Real-Time Object Detection." CVPR.
- Liu, W. et al. (2016). "SSD: Single Shot MultiBox Detector." ECCV.
- Lin, T.-Y. et al. (2017). "Focal Loss for Dense Object Detection." ICCV.
- Lin, T.-Y. et al. (2017). "Feature Pyramid Networks for Object Detection." CVPR.
- He, K. et al. (2017). "Mask R-CNN." ICCV.
- Tian, Z. et al. (2019). "FCOS: Fully Convolutional One-Stage Object Detection." ICCV.
- Carion, N. et al. (2020). "End-to-End Object Detection with Transformers." ECCV.
- Zhu, X. et al. (2021). "Deformable DETR." ICLR.
- Zhang, H. et al. (2023). "DINO: DETR with Improved DeNoising Anchor Boxes." ICLR.
- Liu, S. et al. (2024). "Grounding DINO: Open-Set Object Detection." ECCV.
- Wang, A. et al. (2024). "YOLOv10: Real-Time End-to-End Object Detection." arXiv.
🧠 セルフチェッククイズ
理解度を確認する 10 問。 答えは下にあります。
- Q1. IoU=0.6 の場合、 mAP@0.5 では TP / FP どちらに分類されるか?
- Q2. 1 段階検出と 2 段階検出の最大の違いを 1 行で説明せよ。
- Q3. Focal Loss の γ パラメータを大きくする効果は?
- Q4. NMS の τ_nms 閾値を下げると検出数はどう変化するか?
- Q5. COCO の mAP@[0.5:0.95] は何段階の IoU 閾値で平均しているか?
- Q6. DETR の特徴を Faster R-CNN との対比で 2 つ挙げよ。
- Q7. Anchor-free 検出のメリットを 1 つ説明せよ。
- Q8. Mosaic データ拡張の利点を 1 行で説明せよ。
- Q9. Open-vocabulary 検出が従来手法と異なる点は?
- Q10. 小物体検出が一般に難しい理由を 1 つ挙げよ。
▶ 解答を表示
- A1: TP(IoU≥0.5 を満たすため)
- A2: 1 段階は候補抽出と分類を同時に、 2 段階は候補抽出 → 分類の二段構えで行う
- A3: 簡単サンプルの loss 寄与をより強く抑制する
- A4: 検出数が減少(同物体の重複削減が強くなる)
- A5: 10 段階(0.5, 0.55, 0.6, ..., 0.95)
- A6: ① NMS 不要 ② end-to-end 学習可能(アンカー設計不要も可)
- A7: アンカーのハイパーパラメータ調整が不要で設計が簡潔
- A8: 4 枚の画像をモザイク状に合成し、 1 度に多様な物体を学習できる
- A9: テキストプロンプトで任意のクラスを検出可能(事前定義クラスに縛られない)
- A10: 特徴マップ解像度不足で物体が消える / アンカーサイズが大きすぎ覆えない 等
📋 補足: 用語の追加深掘り
物体検出に関連する重要概念をさらに 8 つ補足解説します。
▶ ROI Align(vs ROI Pooling)
Faster R-CNN の ROI Pooling は座標を整数化するため精度損失が生じる。 Mask R-CNN で提案された ROI Alignは bilinear interpolation で連続座標を保ち、 セグメンテーション精度を大きく改善。 現代の検出器も RoIAlign が標準。
▶ Feature Pyramid Network(FPN)
CNN の浅い層(高解像度・低意味性)と深い層(低解像度・高意味性)を融合し、 各解像度で検出可能にする仕組み。 小物体検出には浅い層、 大物体には深い層を使う。 FPN 以前は単一解像度で検出していたため小物体に弱かった。
▶ PANet(Path Aggregation Network)
FPN は top-down のみだが、 PANet は bottom-up パスを追加して情報を双方向に流す。 YOLOv4+ の neck で標準採用。 小物体検出を更に改善。
▶ Soft-NMS
通常の NMS は重複矩形を捨てるが、 Soft-NMS はスコアを「IoU に応じて減衰」させて残す。 これにより密集物体(群衆)でも個別物体を区別しやすくなる。
▶ Distribution Focal Loss(DFL)
回帰値を「単一値」でなく「離散分布」として予測する手法。 GFL / PP-YOLOE で採用。 box 境界の曖昧性を表現でき、 精度向上に寄与。
▶ Knowledge Distillation
大型 teacher モデルから小型 student モデルへ知識を移す手法。 物体検出では teacher の予測 box / 分類確率を soft target として student に学ばせる。 エッジ展開時に必須。
▶ Test-Time Augmentation(TTA)
推論時に画像を複数回フリップ・リサイズ・回転して結果を平均する手法。 mAP を 1-3 pt 改善することがあるが推論時間は数倍。 コンペでは定番。
▶ Hard Negative Mining
背景クラスのうち「分類が難しい」サンプルだけを選んで学習する手法。 背景の大部分は簡単に分類できるため、 全てを学習に使うと簡単サンプルが loss を支配。 SSD / RetinaNet で活用。
📚 関連グループ教材(補足)
物体検出の理解を深めるには、 周辺の用語ページもセットで読むのが効果的です:
🧪 物体検出パイプライン徹底解剖(YOLO / R-CNN / DETR の核を比較)
物体検出は単一の手法ではなく、領域提案・特徴抽出・分類・回帰の 4 工程をどう組み合わせるかで系統が分かれる。 ここでは代表 3 系統 (YOLO / Faster R-CNN / DETR) を一段深く掘り下げ、 実務でアーキ選定するときの判断軸を示す。
🔬 数式を言葉で読み解く:IoU と mAP の本質
IoU (Intersection over Union) は 2 つの矩形の重なり比率で、
$$\mathrm{IoU} = \frac{|B_{\text{pred}} \cap B_{\text{gt}}|}{|B_{\text{pred}} \cup B_{\text{gt}}|}$$
分子は予測矩形と正解矩形の 共通面積、 分母は 合計面積。 0.5 を超えれば「ほぼ当たり」、 0.75 以上で「精密」と評価する慣行。 mAP は IoU 閾値ごとに Precision-Recall 曲線を描き、 その平均面積をクラスごとに取りさらに平均した量。 COCO ベンチでは mAP@[.5:.95] のように 10 段階を平均する。
🎯 系統別の判断基準テーブル
| 系統 | 速度 | 精度 | 小物体 | 向く用途 |
| YOLOv8 | ◎ (60 FPS+) | ○ | △ | リアルタイム監視、 ロボティクス |
| Faster R-CNN | △ (10 FPS) | ◎ | ○ | 医療画像、 衛星画像 |
| DETR | △ | ○ | △ | post-process 不要な end-to-end 系 |
🖼 物体検出の核心を 3 枚の図で押さえる
図 1: バウンディングボックス検出のイメージ(散布点 → 矩形)
→ 物体検出は「クラス分類 + 位置回帰」を同時に行うタスク。 各点が候補物体の中心、 周囲の矩形がバウンディングボックス。 検出結果は (x, y, w, h, class, score) の組として出力される。 IoU で正解箱と比較し、 mAP で総合評価する。
図 2: ROC 曲線(信頼度閾値と Precision-Recall)
→ 物体検出ではスコア閾値を変えながら Precision-Recall 曲線を作り、 AP(平均精度)を測る。 ROC は通常二値分類で使うが、 検出でも「閾値選択トレードオフ」を視覚化する手段として有効。 mAP は各クラスの AP を平均した指標。
図 3: 信頼区間(検出評価の不確実性)
→ mAP の点推定だけでなく、 ブートストラップで 95% 信頼区間を出すと「モデル A の mAP=42.1±1.3、 B の mAP=42.8±1.5 → 統計的有意差なし」と判断できる。 大会上位はモデル差が信頼区間幅内に収まることが多い。
🧪 理解度チェック — 物体検出
以下 5 問を解いて理解度を確認してください。 回答は本文の該当セクションを参照。
- Q1. 物体検出と画像分類の違いを 1 行で。 出力形式(次元数)の違いも併記すること。
- Q2. IoU(Intersection over Union)の定義を式で示し、 IoU=0.5 と 0.75 のどちらが「より厳しい」評価か説明せよ。
- Q3. NMS(Non-Maximum Suppression)が必要な理由と、 IoU 閾値を 0.3 にすると 0.7 と何が変わるか。
- Q4. YOLO(1 段階)と Faster R-CNN(2 段階)の違いを「速度」「精度」「小物体」の 3 軸で比較せよ。
- Q5. COCO 流の mAP@[.5:.95] と PASCAL VOC の mAP@0.5 の差を述べよ。 同じモデルで通常どちらが小さくなるか。
📊 主要検出モデルの比較(補足表)
| モデル | 段階 | 速度 (FPS) | COCO mAP | 主用途 |
| Faster R-CNN | 2 段階 | 5-10 | 36-42 | 高精度・研究ベンチ |
| YOLOv5/v8 | 1 段階 | 100-300 | 37-53 | リアルタイム・エッジ |
| SSD | 1 段階 | 30-50 | 25-30 | モバイル |
| DETR | Transformer | 15-25 | 42-49 | NMS 不要・密集物体 |
| RetinaNet | 1 段階 | 10-30 | 36-40 | Focal Loss 提案元 |
→ リアルタイム要件 ≥30 FPS なら YOLO、 研究で精度上限を狙うなら DETR / Faster R-CNN。 物体検出は事前学習済みモデル(COCO 80 class)を fine-tuning するのが定石で、 ゼロから学習するケースはほぼない。
関連: 画像分類 / CNN / 画像認識 / アノテーション / 分類 / ディープラーニング
📖 上級補足: 物体検出の歴史と評価指標の深掘り
物体検出の系譜は 2001 年の Viola-Jones(Haar 特徴量 + AdaBoost)に遡る。 デジタルカメラの顔検出として広く使われたこの手法は、 計算量の小ささ・実時間性で画期的だった。 2012 年の AlexNet で画像分類が DL に置き換わると、 物体検出も急速に DL 化が進み、 2013 年の R-CNN、 2014 年の SPP-Net、 2015 年の Fast R-CNN・Faster R-CNN と「2 段階検出器」が発展した。 一方、 2016 年に Redmon が発表した YOLO(You Only Look Once)は「画像をグリッドに分け、 各セルでクラスとボックスを同時推定」する 1 段階方式を導入し、 リアルタイム検出の時代を切り開いた。 SSD(2016)も同時期に登場し、 モバイル展開の標準となった。
評価指標 mAP(mean Average Precision)は PASCAL VOC(2007-2012)で標準化された。 PASCAL VOC では IoU ≥ 0.5 を「正解」とし、 各クラスの Precision-Recall 曲線下面積(AP)を計算、 全クラスで平均する。 一方、 COCO(2014 以降)はより厳しく、 IoU 閾値を 0.5 から 0.95 まで 0.05 刻みで 10 段階評価し、 各 AP を平均する mAP@[.5:.95] を採用した。 これにより「ボックスが正解にぴったり一致する」性能を測れるようになった。 また、 小物体(< 32×32 px)・中物体・大物体での性能を AP_S / AP_M / AP_L として分けて評価することで、 検出器の弱点(多くが小物体検出に弱い)を明らかにする設計となっている。
2020 年代に入り、 Facebook AI Research が提案した DETR(DEtection TRansformer)は、 Transformer の Self-Attention 機構を物体検出に応用し、 NMS(Non-Maximum Suppression)を不要にした画期的なアーキテクチャである。 集合予測(set prediction)として物体検出を定式化し、 Hungarian Matching で予測ボックスと正解ボックスを 1 対 1 対応させる。 ただし学習が遅い(500 epoch 以上)という弱点があり、 Deformable DETR・DINO などの改良版が次々登場している。 産業応用では「精度・速度・モデルサイズ」のトリレンマがあり、 例えば自動運転は速度優先で YOLO 系、 医療画像は精度優先で DETR 系、 エッジデバイスはサイズ優先で MobileNet-SSD という棲み分けが見られる。 SSDSE-B-2026 のような統計データでは物体検出は使われないが、 衛星画像から農地・建物を検出して都道府県別の集計に変換する応用は実際に進んでいる。
🔭 visual-r273-objdet:物体検出を「使える形」で押さえ直す補足
物体検出は「画像分類」と「位置推定(バウンディングボックス回帰)」を同時に行うタスクである。 ここでは、 前段で説明した YOLO・SSD・Faster R-CNN・DETR の差を、 SSDSE-B-2026 のような統計データを扱う側の視点から整理する。 物体検出は SSDSE には直接含まれないが、 衛星画像(農林水産業の作付け面積把握)・店舗カメラ(来店者数集計)・ドローン映像(インフラ点検)を「都道府県別の数値」に変換する前処理として産業で広く使われている。
📊 1 段階 vs 2 段階:選び方の基準
2 段階検出器(Faster R-CNN 系)は 領域提案 → 分類 の 2 段構成で精度が高い反面、 1 枚あたり数百ミリ秒かかる。 1 段階検出器(YOLO・SSD 系)は 1 回の forward で全候補を同時推定するため 30 FPS 以上の実時間処理が可能だが、 小物体・重なる物体に弱い傾向がある。 自動運転は「人命に関わる即時性」が必須なので 1 段階、 医療画像の腫瘍検出は「見逃しゼロが至上命題」なので 2 段階、 と棲み分けるのが原則である。
📐 IoU と mAP の落とし穴
IoU(Intersection over Union)は 重なり面積 ÷ 和集合面積で、 0.5 が伝統的な「合格点」だが、 自動運転のように「数 cm のずれで衝突回避を誤る」用途では IoU ≥ 0.75 や 0.9 を要求することもある。 mAP は IoU 閾値に依存するため、 「PASCAL VOC の mAP=0.85 と COCO の mAP=0.45」を直接比較してはいけない。 報告書を読むときは 必ず IoU 閾値・テストセット・クラス数を確認すること。
🧭 関連項目(実在ページのみ)
前提として 画像認識・CNN を押さえ、 評価系列として AUC・混同行列・評価指標、 派生として 画像認識(セグメンテーションを含む上位概念)・CNN(特徴抽出の基幹) を順に辿るとよい。
🗺 概念マップ:物体検出を取り巻く知識マップ
物体検出を中心にした関連概念のツリーマップ:
物体検出 (Object Detection)
├── 入力
│ ├── 静止画 (RGB / RGB-D / グレースケール / マルチスペクトル)
│ ├── 動画 (連続フレーム)
│ └── 点群 (LiDAR / ステレオ / RGB-D 深度)
├── アーキテクチャ
│ ├── 2 段階 (Faster R-CNN, Mask R-CNN, Cascade R-CNN)
│ ├── 1 段階 anchor-based (SSD, RetinaNet, YOLO v1-v5)
│ ├── 1 段階 anchor-free (FCOS, CenterNet, YOLOX, YOLOv8)
│ ├── Transformer (DETR, Deformable DETR, DINO, Co-DETR)
│ └── Open-vocab (OWL-ViT, Grounding DINO, GLIP)
├── 構成要素
│ ├── Backbone (ResNet, EfficientNet, Swin, ViT)
│ ├── Neck (FPN, PAN, BiFPN)
│ ├── Head (classification + regression)
│ └── Post-processing (NMS, Soft-NMS, score thresholding)
├── 学習
│ ├── 損失 (CE, Focal, Smooth L1, GIoU, CIoU)
│ ├── 対応付け (Max-IoU, ATSS, OTA, TAL)
│ ├── データ拡張 (Mosaic, MixUp, Copy-Paste, RandAugment)
│ └── 事前学習 (COCO pretrain, self-supervised)
├── 評価
│ ├── IoU / GIoU / DIoU / CIoU
│ ├── Precision / Recall / F1
│ ├── AP (11-point / 101-point / continuous)
│ └── mAP (@0.5, @0.75, @[0.5:0.95], AP_S/M/L)
├── デプロイ
│ ├── クラウド (GPU/TPU)
│ ├── エッジ (Jetson, Coral, Hailo)
│ ├── モバイル (CoreML, TFLite, ONNX Runtime Mobile)
│ └── 最適化 (TensorRT, INT8 量子化, pruning, distillation)
└── 応用
├── 自動運転 (人・車・標識・信号)
├── 監視 (侵入・異常行動)
├── 医療 (病変・組織)
├── 小売 (商品・客)
├── 農業 (果実・雑草)
├── スポーツ (選手・ボール)
├── 製造 (欠陥・部品)
└── 環境 (野生動物・植生)
🎯 まとめ
物体検出(Object Detection)は CV の中核タスクであり、 画像 1 枚から複数の (矩形, クラス, 信頼度) を出力する。 評価は IoU と mAP が中心で、 代表モデルは Faster R-CNN(2 段階)、 YOLO(1 段階)、 DETR(Transformer)の 3 系統。 予測ボックスと正解ボックスの IoU が 0.5 を超えれば正解 (TP) と判定され、 位置ずれが大きくなるほど mAP は急激に低下する。 実応用では精度と速度のトレードオフ、 アノテーションコスト、 ドメインギャップに注意。 産業導入では自動運転・医療・小売・農業・スポーツなど幅広い分野で実用化されている。
📑 クイックリファレンス(チートシート)
現場で素早く参照できる物体検出チートシート:
| 状況 | 推奨モデル | 理由 |
| リアルタイム必須 (60+ FPS) | YOLOv8n/s, YOLOv10n | 軽量・高速 |
| 精度最優先 | DINO-Swin-L, Co-DETR | COCO mAP 60+ |
| バランス重視 | YOLOv8m/l, Faster R-CNN-FPN | 速度・精度両立 |
| 少データ (1 クラス<100 枚) | 転移学習 + 強力なデータ拡張 | pre-trained 重要 |
| 小物体多数 | FPN/PAN 付きモデル, 高解像度入力 | multi-scale が鍵 |
| クラス不均衡 | Focal Loss + class-balanced sampling | long-tail 対策 |
| 未知クラス検出 | Grounding DINO, OWL-ViT | open-vocab |
| エッジ展開 | YOLOv8n + INT8 量子化 | 省メモリ・低遅延 |
| 医療画像 | Faster R-CNN + Focal Loss | recall 重視 |
| 産業欠陥検査 | 独自学習 YOLOv5 + ハードネガ採掘 | false alarm 削減 |
▶ よく使うコマンド・スニペット
# YOLOv8 ワンライナー推論
yolo detect predict model=yolov8n.pt source='path/to/image.jpg'
# YOLOv8 学習
yolo detect train data=dataset.yaml model=yolov8n.pt epochs=100 imgsz=640
# YOLOv8 検証
yolo detect val model=runs/detect/train/weights/best.pt data=dataset.yaml
# YOLOv8 → ONNX 変換
yolo export model=best.pt format=onnx
# TensorRT 変換
trtexec --onnx=best.onnx --saveEngine=best.engine --fp16
# Detectron2 (Faster R-CNN) 推論例
python demo/demo.py --config-file configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml \\
--input image.jpg --output output.jpg \\
--opts MODEL.WEIGHTS detectron2://COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl
🔗 隣接手法への橋渡し
「物体検出」は単独で完結せず、 前後の手法と組み合わさって価値が発揮される。 入力データの準備 (上流)・同目的の代替手法との比較 (並列)・結果の活用 (下流) という 3 軸で隣接領域を整理する。
- 上流 (入力の準備): 画像データ の収集、 アノテーション (バウンディングボックス付与)、 データ拡張
- 並列 (同目的の代替): 画像分類 (画像全体のラベル)、 セマンティックセグメンテーション (画素単位)、 インスタンスセグメンテーション が並列タスク
- 下流 (結果の活用): IoU・mAP での評価、 NMS による重複除去、 トラッキング・行動認識への接続
この上流・並列・下流の対応を地図化することで、 「物体検出」を中核に据えた分析パイプライン (データ準備 → 手法選択 → 結果の検証と展開) の全体像が見えてくる。
🌳 手法選択フロー
「物体検出」を実際に使うとき、 何をどう選ぶかを順に判断する。 上から順に答えていくと、 使うべき手法と評価の仕方が決まる。
- 位置まで要るのか、 有無だけでよいか
「写っているか」だけなら画像分類で足りる。 「どこに、 いくつ」が要るときに初めて物体検出を使う。 検出は学習データの作成コストが桁違いに高い。
- アノテーションを用意できるか
矩形を 1 つずつ描く作業が要る。 数千枚なら数百時間規模。 用意できないなら、 学習済みモデルで検出できる一般物体に問題を寄せられないか検討する。
- 速さと精度のどちらが要るか
映像をリアルタイムで処理するなら 1 段階検出(YOLO 系)。 精度を優先し 1 枚ずつ処理してよいなら 2 段階検出。
- 評価をどう定義したか
検出は「どれくらい重なれば正解か」(IoU の閾値)で数値が大きく変わる。 閾値を明記しないと mAP は比較できない。
物体検出は分類より一段コストが高い。 「位置が本当に必要か」を最初に確かめると、 分類で済んで工数が数分の一になることがある。