← M07 NLP / CV / 多模態 M07 NLP / CV / 多模態

M07.04|物件偵測與影像辨識:從分類到定位

不只說『這張圖有貓』,還要畫出貓在哪裡

L2-AI技術應用-物件偵測 L2-AI技術應用-影像辨識應用
物件偵測 影像辨識 YOLO Faster R-CNN mAP IoU 邊界框 錨點框
📋

本講學習重點

影像分類和物件偵測的根本差異在哪裡?
IoU 是什麼?計算邏輯是什麼?
兩階段偵測和單階段偵測各有何取捨?
YOLO 系列是如何做到實時偵測的?
mAP 為何比準確率更適合評估偵測模型?

物件偵測 = 分類(是什麼)+ 定位(在哪裡),輸出:類別 + 邊界框 (x, y, w, h)

IoU(交並比)= 兩個框的交集面積 / 聯集面積,IoU > 0.5 通常算偵測正確

兩階段(Faster R-CNN):RPN 找候選框 → 分類器精確分類;精度高,速度慢

單階段(YOLO):直接預測所有格子的類別和框,速度快,精度略低(已縮小差距)

NMS(非極大值抑制):去掉對同一物體的重複偵測框

mAP:各類別 AP(平均精確度)的平均值,考慮精確率-召回率曲線

YOLOv8 (2023):無錨點設計,支援偵測/分割/姿態三種任務,業界標準

📌 物件偵測結合了影像分類和位置定位,需要同時輸出每個目標的類別標籤和邊界框座標。關鍵概念包括 IoU(衡量邊界框重疊程度)和 mAP(偵測模型的標準評估指標)。架構上分為兩階段(Faster R-CNN,精度高)和單階段(YOLO,速度快),YOLO 系列持續演進已成為實時偵測的業界標準。選擇架構時需根據應用場景在速度與精度之間取得平衡。
物件偵測與影像辨識:從分類到定位

🎙️ Podcast(中文)

0:00 / 0:00

一句話搞懂

物件偵測比影像分類多做了一件事:不只告訴你圖裡有什麼,還要在每個物件上畫出精確的邊界框——這讓它能從「理解一張靜態圖片」升級到「追蹤視頻中每個移動目標的即時位置」,成為工廠監控、自駕車、安防系統的核心技術。


白話解說

分類、偵測、分割:能力層次的差別

要理解物件偵測的價值,先明確它和影像分類的差異。假設有一張停車場的監控截圖,裡面有三輛車、兩個行人和一台摩托車:

影像分類只能說「這張圖有車」或最多「這張圖有車和行人」,無法告訴你有幾個、在哪裡。就像問「冰箱裡有什麼食物」,有人只回答「有蔬菜和肉」——你知道食材種類,但不知道數量和位置。

物件偵測則能說:「左上角有一台白色轎車(邊界框:x1,y1,x2,y2),中央有一個行人(邊界框:…),右下角有一輛摩托車(邊界框:…)……」它對每個偵測到的目標輸出一個邊界框(Bounding Box),標示目標的位置和大小,以及目標的類別和置信度分數。這種「定位 + 分類」的組合,讓物件偵測能驅動需要空間定位的應用:計算人群密度、監控違規停車、引導機械臂抓取特定物品。

語義分割則進一步到每個像素的層次,但物件偵測在大多數實際應用場景中已足夠,且計算效率遠高於分割,是現實部署中最廣泛使用的 CV 任務。

衡量偵測品質的核心指標:IoU 和 mAP

要評估一個偵測結果「夠不夠好」,需要兩個核心指標。

IoU(Intersection over Union,交並比) 衡量模型預測的邊界框和真實標注框的重疊程度。計算方式非常直觀:兩個矩形框的交集面積除以它們的聯集面積。完全重合時 IoU = 1.0;完全不重疊時 IoU = 0;兩個框只有一半重疊時 IoU 約 0.33(取決於形狀)。業界常用的閾值是 IoU ≥ 0.5:如果模型預測的框和真實框的 IoU 超過 0.5,就算偵測正確(True Positive);低於 0.5 則算錯誤(False Positive)。更嚴格的評估使用 IoU ≥ 0.75 或 COCO 評估標準(平均 IoU 0.5 到 0.95 之間多個閾值)。

mAP(mean Average Precision,平均精確度均值) 是物件偵測最常用的綜合評估指標。理解 mAP 需要先理解 AP(Average Precision):針對某一個類別,把所有偵測結果按置信度分數從高到低排列,逐步計算精確率(Precision)和召回率(Recall),繪製出 P-R 曲線,P-R 曲線下的面積就是這個類別的 AP。mAP 是所有類別 AP 的平均值。[email protected] 表示在 IoU 閾值為 0.5 時計算的 mAP,COCO mAP(mAP@[0.5:0.95])是更嚴格的標準,計算 IoU 從 0.5 到 0.95(每隔 0.05)十個閾值的 mAP 平均值。

一個在業界稱得上「實用」的物件偵測模型,通常 COCO mAP 需要達到 40 以上(滿分 100),但具體門檻依任務複雜度和場景特性而異。

兩種主要偵測架構路線

物件偵測的架構在過去十年分成兩大流派,各有不同的速度/精度取捨。

兩階段偵測器(Two-Stage Detectors)Faster R-CNN 為代表。顧名思義,分兩個階段:第一階段,區域候選網路(Region Proposal Network, RPN) 在圖像的 Feature Map 上快速掃描,提出幾百個「這裡可能有物件」的候選框(Region of Interest, RoI);第二階段,對每個候選框做精確的分類和邊界框微調。兩階段的好處是精度高(因為第二階段可以仔細分析每個候選框),缺點是速度相對慢(需要處理幾百個候選框)。Faster R-CNN 在 COCO mAP 上的表現依然是業界頂尖水準,適合對精度要求高、可接受較高延遲的場景(如醫療影像分析、衛星影像判讀)。

單階段偵測器(Single-Stage Detectors)YOLO(You Only Look Once) 為代表。YOLO 的核心思想是「一次前向傳播搞定一切」:將圖像分割成 S×S 的格子(Grid),每個格子同時預測固定數量的邊界框和類別機率。這個設計讓 YOLO 只需要對圖像做一次神經網路前向計算,就能輸出所有偵測結果,速度可達 30–100+ FPS,滿足即時應用需求。早期 YOLO(v1, 2016)在小物件偵測上精度不足,但經過多次迭代改進(v3, v4, v5, v8),精度已大幅提升,目前 YOLOv8 在速度和精度的平衡點上是業界標準的選擇。

YOLO 系列的演進邏輯

了解 YOLO 的演進,能幫助你在選型時做出正確決策:

YOLOv1(2016):開創性地提出單階段偵測的概念,速度驚人(45 FPS),但對小物件和密集場景表現差,因為每個格子只預測兩個框。

YOLOv3(2018):引入多尺度預測(三種不同大小的特徵圖),大幅改善小物件偵測效果;引入錨點框(Anchor Box)機制,讓每個格子預測的框更準確。成為業界廣泛使用的實用版本。

YOLOv5(2020):在 PyTorch 上重新實現,工程友善、部署簡單,有完整的模型大小系列(n/s/m/l/x),是台灣企業最廣泛部署的版本。

YOLOv8(2023,Ultralytics):引入無錨點(Anchor-Free)設計,取消預先定義錨點框的限制,直接預測物件中心點和框的大小,讓模型對各種形狀的物件更靈活;同時統一了偵測、語義分割、實例分割、姿態估計四種任務的訓練接口,是目前最推薦的起點。

後處理:非極大值抑制(Non-Maximum Suppression, NMS) 是所有偵測器都需要的步驟:模型通常對同一個物體生成多個重疊的候選框,NMS 的作用是保留置信度最高的框,刪除與它 IoU 超過閾值的重複框,確保每個物體最終只輸出一個偵測結果。


應用場景

應用場景 偵測目標 為何選物件偵測 典型架構選擇
工廠產線品管 電路板焊點缺陷(位置 + 類型) 需要知道缺陷位置才能指引機械臂修復 YOLOv8n(邊緣部署)
交通違規偵測 闖紅燈車輛、壓線、逆向行駛 需要定位車輛和違規位置,觸發截圖取證 YOLOv8 + 追蹤
醫療 X 光判讀 肺部結節定位 需要精確框出結節位置,供醫師確認 Faster R-CNN
無人商店結帳 購物籃中的商品辨識 多個商品同時出現,需各別識別和計價 EfficientDet
農業無人機 作物害蟲偵測 在大片農田空拍圖中定位蟲害發生區域 YOLOv8 + 空拍影像
人臉門禁系統 人臉定位 + 辨識 先偵測臉的位置,再擷取對齊後的臉做辨識 MTCNN 偵測 + ArcFace 辨識
自駕車感知 行人/車輛/號誌即時偵測 需要 30+ FPS 的即時偵測和距離估算 YOLO + 3D 點雲融合

常見誤區

誤區 1:「用最新版的 YOLO 就一定比舊版效果好,直接用 YOLOv8 就對了」

新版 YOLO 通常在標準 Benchmark(COCO 資料集)上的指標確實更好,但你的業務場景不一定是 COCO 資料集。決定使用哪個版本應考慮:部署環境的計算資源(邊緣設備可能只能跑 YOLOv5n 或更輕量的版本)、遷移學習的預訓練模型可用性(某些特定領域如醫療或衛星影像,可能有在特定資料集上預訓練好的 YOLOv5 模型,直接微調效果更好)、以及既有系統的工程整合成本。不要盲目追新,應根據部署條件和資源限制選擇合適的版本,然後在自己的資料集上做基準測試,實際效果才是唯一的評判標準。

誤區 2:「IoU 閾值設 0.5 就夠了,模型夠用了」

IoU 閾值 0.5 是一個寬鬆的標準,足以讓邊界框有大約一半的重疊就算正確。但在許多精度要求高的場景中,0.5 的 IoU 可能遠遠不夠。例如:醫療影像中腫瘤的精確邊界對手術規劃至關重要;工廠中需要機械臂按照偵測結果抓取零件,若邊界框偏差太大,機械臂會抓空。這些場景應使用更嚴格的 IoU 閾值(0.75 或 0.9)評估,並觀察 COCO mAP(同時考慮 0.5 到 0.95 的所有閾值)。另外,IoU 本身並不能告訴你模型在小物件上的表現——一個 COCO mAP 很高的模型,在偵測小物件(如遠距離行人)上可能表現差。評估時應拆分大中小物件的 AP,確保符合實際需求。

誤區 3:「物件偵測模型訓練好後就能直接部署,不需要再調整」

訓練好的偵測模型在研究環境(GPU 伺服器)上運行順暢,不代表可以直接部署到生產環境。幾個常見的部署挑戰:速度與硬體匹配——模型在 A100 GPU 上跑 100 FPS,但生產線使用工業相機 + Jetson Nano,可能只有 5 FPS,需要做模型量化(INT8)或架構精簡;持續的準確率衰退(Model Drift)——隨著生產環境的光線條件、物件外觀、背景雜訊發生變化,模型的準確率會逐漸下降,需要定期補充新資料重新訓練(Active Learning);閾值調優——訓練時預設的置信度閾值(通常 0.5)在實際場景中未必最佳,生產環境中的 False Positive(誤報)和 False Negative(漏報)的成本不同,需要根據業務邏輯調整閾值。部署物件偵測系統,MLOps(機器學習運維) 和持續監控是長期維護品質不可缺少的部分。


小練習

練習 1:計算 IoU 並判斷偵測結果

假設在一張 100×100 像素的圖像中,有一個真實的狗的邊界框(Ground Truth):

  • 真實框:左上角 (20, 30),右下角 (70, 80)(面積 = 50×50 = 2500)

模型輸出了以下三個候選偵測結果,請計算每個候選框與真實框的 IoU,並判斷哪個算偵測成功(IoU ≥ 0.5):

  • 候選框 A:左上角 (25, 35),右下角 (75, 85)
  • 候選框 B:左上角 (50, 60),右下角 (90, 95)
  • 候選框 C:左上角 (10, 15),右下角 (40, 55)
查看答案 **計算步驟:** IoU = 交集面積 / 聯集面積 **候選框 A** vs 真實框: - 交集:左上角 = max(20,25)=25, max(30,35)=35;右下角 = min(70,75)=70, min(80,85)=80 - 交集面積 = (70-25) × (80-35) = 45 × 45 = **2025** - 聯集面積 = 2500 + 50×50 - 2025 = 2500 + 2500 - 2025 = **2975** - **IoU(A) = 2025 / 2975 ≈ 0.68** → 超過 0.5,**偵測成功**(框 A 只是稍微偏移,重疊度高) **候選框 B** vs 真實框: - 交集:左上角 = max(20,50)=50, max(30,60)=60;右下角 = min(70,90)=70, min(80,95)=80 - 交集面積 = (70-50) × (80-60) = 20 × 20 = **400** - 候選框 B 面積 = (90-50) × (95-60) = 40 × 35 = **1400** - 聯集面積 = 2500 + 1400 - 400 = **3500** - **IoU(B) = 400 / 3500 ≈ 0.11** → 低於 0.5,**偵測失敗**(框 B 只有右下角小部分與真實框重疊) **候選框 C** vs 真實框: - 交集:左上角 = max(20,10)=20, max(30,15)=30;右下角 = min(70,40)=40, min(80,55)=55 - 交集面積 = (40-20) × (55-30) = 20 × 25 = **500** - 候選框 C 面積 = (40-10) × (55-15) = 30 × 40 = **1200** - 聯集面積 = 2500 + 1200 - 500 = **3200** - **IoU(C) = 500 / 3200 ≈ 0.16** → 低於 0.5,**偵測失敗**(框 C 只覆蓋真實框的左上部分) **結論:** 只有候選框 A 算偵測成功。這說明即使模型在同一個物件上生成了三個偵測結果,只有位置最準確的那個才會被計算為 True Positive,其餘算 False Positive——這正是為什麼「偵測結果的數量多」不等於「偵測效果好」,準確的定位才是關鍵。

練習 2:選擇合適的偵測架構

台灣一家農業科技新創正在為芒果農場開發三個不同的 AI 偵測應用。請為每個應用推薦最合適的偵測架構策略,並說明選擇原因:

應用 需求描述 推薦架構策略
A. 無人機空拍即時偵測芒果是否成熟(黃色 vs 青色),需在無人機上即時執行,電池有限  
B. 每日上午的靜態高解析圖像分析:精確圈出每一顆芒果的位置,統計果樹總掛果數量,用於產量預測  
C. 電商平台驗貨:拍攝芒果禮盒照片,偵測每顆芒果是否有碰傷或黑斑(需要精確定位且有完整品管記錄)  
查看答案 **應用 A:YOLOv8n(nano 版)或 YOLOv5s(small 版)+ INT8 量化,部署在 Jetson Nano 或 TF Lite** 選擇原因:無人機上的計算資源極為有限(電池、晶片算力都受限),必須使用最輕量的模型版本;「成熟/未熟」的二類顏色差異是視覺上相對簡單的辨識任務,不需要複雜的大模型;無人機飛行時需要即時輸出結果(至少 15 FPS),速度是首要指標。INT8 量化可讓模型大小壓縮到 1/4,推理速度提升 2–4 倍,精度損失通常可接受在 1–2% mAP 以內。 **應用 B:Faster R-CNN 或 YOLOv8l(large 版)在伺服器端執行** 選擇原因:這是離線分析任務(每日一次,不需要即時),可以用較慢但精度更高的架構;空拍圖中的芒果果實是相對較小的物件(高空俯拍,每顆芒果可能只佔數十到百來個像素),Faster R-CNN 的兩階段精確框選對小物件優勢明顯;產量統計需要高召回率(漏掉任何果實都會低估產量),精度指標優先。在伺服器上跑幾分鐘處理一張高解析圖是完全可接受的。 **應用 C:YOLOv8m(medium 版)+ 高解析度輸入(1280px)+ 嚴格 IoU 閾值(0.75)** 選擇原因:電商品管需要同時兼顧速度(每天可能要驗數百箱)和精度(漏掉黑斑影響品牌信譽);使用 medium 版本在速度和精度之間取得平衡;提高輸入解析度(從預設 640px 提升到 1280px)可以改善對細小碰傷的偵測能力;調高 IoU 閾值確保邊界框精確(黑斑位置需要準確才能決定是否整顆剔除);同時建立完整的偵測記錄(截圖 + 時間戳 + 置信度)供品管追溯,這是管理需求,架構設計需預留資料儲存接口。

關鍵字自我檢核

✅ 物件偵測 ✅ Object Detection ✅ 影像辨識 ✅ 邊界框 ✅ Bounding Box ✅ IoU ✅ mAP ✅ Anchor Box ✅ YOLO ✅ YOLOv8 ✅ Faster R-CNN ✅ 兩階段偵測 ✅ 單階段偵測 ✅ 無錨點偵測 ✅ 非極大值抑制 ✅ NMS ✅ 實時偵測