AI-For-Beginners/translations/hk/lessons/4-ComputerVision/11-ObjectDetection
leestott 0a7f88c514 🌐 Update translations via Co-op Translator 2025-08-24 22:28:16 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-24 22:28:16 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-24 22:28:16 +00:00

README.md

物件偵測

我們之前處理的影像分類模型,會接收一張圖片並產生一個分類結果,例如在 MNIST 問題中分類為「數字」的類別。然而,在許多情況下,我們不僅僅想知道圖片中有什麼物件,還希望能夠確定它們的精確位置。這正是物件偵測的目的。

課前小測驗

物件偵測

圖片來源:YOLO v2 網站

一個簡單的物件偵測方法

假設我們想在一張圖片中找到一隻貓,一個非常簡單的物件偵測方法如下:

  1. 將圖片分割成多個小區塊。
  2. 對每個區塊進行影像分類。
  3. 將分類結果中激活值足夠高的區塊視為包含目標物件的區域。

簡單的物件偵測

圖片來源:練習筆記本

然而,這種方法遠非理想,因為它只能非常粗略地定位物件的邊界框。若要更精確地定位,我們需要進行某種回歸分析來預測邊界框的座標,而這需要特定的數據集。

用於物件偵測的回歸分析

這篇部落格文章對於偵測形狀提供了一個很好的入門介紹。

物件偵測的數據集

在執行這項任務時,你可能會遇到以下數據集:

  • PASCAL VOC - 包含 20 個類別
  • COCO - 常見物件上下文數據集,包含 80 個類別、邊界框和分割遮罩

COCO

物件偵測的評估指標

交集比聯集 (Intersection over Union, IoU)

對於影像分類來說,衡量演算法的表現相對簡單;但對於物件偵測,我們需要同時衡量類別的正確性以及推測邊界框位置的精確性。後者使用所謂的交集比聯集 (IoU) 來衡量,這是一種用來評估兩個框(或任意兩個區域)重疊程度的指標。

IoU

圖片來源:這篇優秀的 IoU 部落格文章

概念很簡單將兩個區域的交集面積除以它們的聯集面積。對於完全相同的區域IoU 值為 1對於完全不相交的區域IoU 值為 0。其他情況下IoU 值介於 0 到 1 之間。我們通常只考慮 IoU 超過某個值的邊界框。

平均準確率 (Average Precision, AP)

假設我們想衡量某個類別 C 的物件被識別的效果。為此,我們使用平均準確率 (AP) 指標,其計算方式如下:

  1. 考慮準確率-召回率曲線,該曲線顯示了檢測閾值(從 0 到 1對準確率的影響。
  2. 根據閾值的不同,我們會在圖片中檢測到更多或更少的物件,並得到不同的準確率和召回率值。
  3. 該曲線看起來如下:

圖片來源:NeuroWorkshop

對於給定類別 C 的平均準確率是該曲線下的面積。更精確地說,召回率軸通常被分成 10 個部分,並對這些點的準確率取平均值:


AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})

AP 與 IoU

我們只考慮那些 IoU 超過某個值的檢測。例如,在 PASCAL VOC 數據集中,通常假設 \mbox{IoU Threshold} = 0.5,而在 COCO 數據集中AP 是針對不同的 \mbox{IoU Threshold} 值進行測量的。

圖片來源:NeuroWorkshop

平均平均準確率 (Mean Average Precision, mAP)

物件偵測的主要評估指標是平均平均準確率 (mAP)。它是所有物件類別的平均準確率,有時也包括不同 \mbox{IoU Threshold} 的平均值。更詳細的 mAP 計算過程可以參考這篇部落格文章),以及這裡的程式碼範例

不同的物件偵測方法

物件偵測演算法主要分為兩大類:

  • 區域提議網路 (Region Proposal Networks, R-CNN, Fast R-CNN, Faster R-CNN)。主要的想法是生成感興趣區域 (ROI),並對其執行 CNN尋找最大激活值。這與簡單方法有些相似但 ROI 是以更聰明的方式生成的。這類方法的主要缺點是速度較慢,因為需要對圖片進行多次 CNN 分類。
  • 單次通過 (One-pass) 方法(如 YOLO、SSD、RetinaNet。這些架構設計為在一次通過中同時預測類別和 ROI。

R-CNN: 基於區域的 CNN

R-CNN 使用 Selective Search 生成 ROI 區域的層次結構,然後通過 CNN 特徵提取器和 SVM 分類器來確定物件類別,並使用線性回歸確定邊界框座標。官方論文

RCNN

圖片來源van de Sande et al. ICCV11

RCNN-1

圖片來源:這篇部落格

F-RCNN - 快速 R-CNN

這種方法與 R-CNN 類似,但區域是在應用卷積層後定義的。

FRCNN

圖片來源:官方論文arXiv2015

Faster R-CNN

這種方法的主要想法是使用神經網路來預測 ROI稱為區域提議網路論文2016

FasterRCNN

圖片來源:官方論文

R-FCN: 基於區域的全卷積網路

這種演算法比 Faster R-CNN 更快。主要想法如下:

  1. 使用 ResNet-101 提取特徵。
  2. 特徵經過位置敏感分數圖處理。每個來自 C 類別的物件被劃分為 k\times k 區域,並訓練預測物件的部分。
  3. 對於來自 k\times k 區域的每個部分,所有網路對物件類別進行投票,選擇得票最多的類別。

r-fcn image

圖片來源:官方論文

YOLO - You Only Look Once

YOLO 是一種實時單次通過的演算法。主要想法如下:

  • 將圖片劃分為 S\times S 區域。
  • 對於每個區域,CNN 預測 n 個可能的物件、邊界框座標以及置信度=概率 * IoU。

YOLO

圖片來源:官方論文

其他演算法

✍️ 練習:物件偵測

繼續學習以下筆記本:

ObjectDetection.ipynb

結論

在這節課中,你快速瀏覽了各種實現物件偵測的方法!

🚀 挑戰

閱讀以下關於 YOLO 的文章和筆記本,並嘗試自己實現:

課後小測驗

複習與自學

作業:物件偵測

免責聲明
本文件已使用人工智能翻譯服務 Co-op Translator 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。如涉及關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋概不負責。