本ページは 物体検出(Object Detection)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。
物体検出(Object Detection)は、 画像認識の中核タスクの 1 つ。 単純な「画像分類」(猫か犬か)より一段難しく、 「画像のどこに何があるか」を答えます。 自動運転(周辺車両・歩行者)、 監視カメラ、 製造業の品質検査など 産業応用が極めて多い領域です。
画像認識タスクの階層:
| タスク | 出力 | 例 |
|---|---|---|
| 画像分類 | 1 つのラベル | 「この画像は猫」 |
| 物体検出 | 複数のボックス + ラベル | 「(100,50,200,150) に猫、 (300,100,400,300) に犬」 |
| セマンティックセグメンテーション | ピクセル単位のラベル | 「このピクセル群が猫」 |
| インスタンスセグメンテーション | ピクセル + 個体ID | 「猫1、 猫2 を区別」 |
物体検出は「いくつあるか分からない物体を検出」する必要があり、 アルゴリズム設計が複雑。 主流は 1 段階検出器(YOLO, SSD)と 2 段階検出器(Faster R-CNN)に分かれます。
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 系。
最小コードで動かしてみる例:
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) # 信頼度 |