物件偵測 Object Detection 概述

李謦伊
謦伊的閱讀筆記
13 min readJan 3, 2021

目前的物件偵測 Object Detection 演算法主要分為兩部分: Two-stage vs One-stage、Anchor-based vs Anchor-free

本文將會介紹一些各自的代表演算法、paper、code,還有我認為不錯的中文介紹。

source

Two-stage vs One-stage

  • Two-stage: 早期演算法以 Two-stage 為大宗,但因為物件位置檢測與分類分開進行,造成速度上有一定的限制,代表演算法有 R-CNNFast-RCNNFaster RCNN

🔖 中文介紹: Object Detection : R-CNN, Fast-RCNN, Faster RCNN

  • One-stage: 為了改善剛剛說的 Two-stage 檢測速度問題,而有了 One-stage 演算法。作法是將物件位置檢測與分類同時進行,代表演算法有 YOLO、SSD、RetinaNet、EfficientDet

🔖 YOLOv1、YOLOv2 介紹

🔖 YOLOv3 介紹

🔖 YOLOv4 介紹

🔖 Scaled-YOLOv4 介紹

🔖 SSD 介紹

🔖 RetinaNet 介紹

🔖 EfficientDet 介紹

Anchor-based vs Anchor-free

Anchor-based 與 Anchor-free 的區分就在於是否使用 anchor 進行提取目標候選框,而兩者之間的差異可以在 CVPR2020 ATSS 論文中看到。

📝 Paper: Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection

🔍 張士峰作者在知乎上的回答: 如何評價 zhangshifeng 最新的討論 anchor based/ free的論文?

🔖 中文介紹:

作者比較 RetinaNet (Anchor-based) 和 FCOS (Anchor-free) 的差別,認為主要是來自於正負樣本的選取方式不同,並提出了 ATSS (Adaptive Training Sample Selection) 方法,能夠根據 ground truth 的相關統計特徵選擇合適的 anchor 作為正樣本,大幅提升模型的準確率並且不增加計算量。

📌 Anchor-based

在進行提取目標候選框時,藉由滑窗方式產生 anchor 來預測 offset (座標的偏移值) 與 confidence scores (置信度)

優點:

  • 密集產生的 anchor 能提高 recall,在小物體檢測上有不錯的表現
  • 因為 anchor 等超參數為人工定義,因此在訓練上更容易訓練外也較穩定

缺點:

  • anchor 的尺度與 IOU 閾值是由人工定義的,超參數設置需要較強的先驗知識,並且對於不同的任務都必須要重新調整
  • 通常一張圖像的檢測目標並不是太多,而檢測器在每一次檢測時會生成非常多的候選框,在這樣大量產生 anchor 的情況下,容易造成正負樣本不均衡的問題,同時也導致運算複雜度增加

代表演算法有 Faster RCNN、SSD、RetinaNet、YOLOv2~v4、EfficientDet等

📌 Anchor-free

使用類似 segmentation 的方法來進行預測,其關鍵在於如何定義 ground truth。除了早期的 DenseBox (2015)、YOLOv1 (2016)、UnitBox (2016) 之外,目前 Anchor-free 模型主要分為基於 Keypoint 和基於 Anchor-Point

從 CVPR2018 的 CornerNet 拿到 SOTA 開始後,在 2019 年越來越多論文提出使用 Anchor-free 進行物件偵測

優點:

  • 不需手動設置 anchor 與 IOU,模型較為簡單
  • 避免了大量的 IOU 計算,能夠降低訓練時的記憶體使用率

缺點: (可參考 anchor-free存在什麼缺點?)

  • 早期 Anchor-free 方法的準確率不及 Anchor-based,但在 2017 年提出 Feature Pyramid Network (FPN) 與 Focal loss 後,對於 Anchor-free 有很大的幫助

→ 在每個位置只能預測一個框的條件下,藉由 FPN 進行多尺度預測 — 針對檢測物體大小做分配: 在大尺度的特徵圖上預測大物體,小尺度的特徵圖上預測小物體。這樣的方式解決了大小框在同一個中心點或有重合到的情形。

→ Focal loss 使得模型更著重於中心區域的預測,並有效解決了正負樣本嚴重不均勻的問題。

  • 容易得到過多的 false positive,而獲得高 recall、低 precision
  • 檢測結果較不穩定

代表演算法有分為早期、基於 Keypoint、基於 Anchor-Point 三部分

🔷 早期

DenseBox (2015)

YOLOv1 (2016)

UnitBox (2016)

🔷 基於 Keypoint

基於關鍵點檢測來處理物件偵測問題,主要思想來自多人姿態估計的論文。

CornerNet (2018)

CenterNet (2019)

CenterNet 在同一時期有兩篇論文,分別是 Objects as Points、Keypoint Triplets for Object Detection,其共通點都是基於 CornerNet 做改進

➰ CenterNet :Objects as Points

➰ CenterNet: Keypoint Triplets for Object Detection

  • 作者發現 CornerNet 很容易產生錯誤識別或是大量的偏移,原因可能是在於 CornerNet 沒辦法得到目標框內部的訊息,因此這篇 CenterNet 除了預測目標物的兩個角點外,還加入了目標物的中心點,也就是利用這三個點 (左上角、右下角、中心點) 進行預測目標邊界框 (bndBox)。
  • 此外,提出了 Center pooling 來捕捉更豐富的訊息以幫助預測中心點,以及使用 Cascade corner pooling 替代原本的 corner pooling 來改善角點對於 bndBox 邊緣較為敏感和內部訊息缺乏的問題。
  • Paper: https://arxiv.org/abs/1904.08189
  • Code: https://github.com/Duankaiwen/CenterNet
  • 中文介紹: CenterNet 閱讀

ExtremeNet (2019)

  • 作者認為 CornerNet 的角點通常在物體外圍,沒有強烈的局部特徵,因此將其改為預測目標物的四個極值點,即物體的最上點、最下點、最左點、最右點。
  • ExtremeNet 除了預測四個極值點外,還預測了中心點,所以對於每個類別總共預測了五個 heatmap。同時也對四個極值點 heatmap 預測其 offsets
  • Paper: https://arxiv.org/abs/1901.08043
  • Code: https://github.com/xingyizhou/ExtremeNet
  • 中文介紹: 論文學習筆記

CPNDet (Corner Proposal Network,2020)

  • CPNDet 以 CornerNet 和 CenterNet 為 baseline,是個 Anchor-free, Two-stage 的網路模型,可以提高召回率及準確率,並且在推理速度上也很快速,該篇文章收錄於 ECCV2020。其做法為以下 Stage1、Stage2
  • Stage1 是先藉由 CornerNet 進行角點 (左上角、右下角) 與 offsets 預測,然後選擇其中 top-k 對角點組合成目標候選框 (object proposal),而這兩個角點組合的判斷條件有二個:關鍵點是否屬於同一個類別、左上角點必須在右下角點的左上位置。
  • 由於這種提取 proposal 的方式會產生大量的錯誤配對,接著在 Stage2 中採用了兩步的分類方法:先經過輕量二值分類器過濾掉 80% proposal,再將剩餘的 proposal 送入多分類器進行類別預測。
  • Paper: https://arxiv.org/abs/2007.13816
  • Code: https://github.com/Duankaiwen/CPNDet
  • 中文介紹: ECCV 2020 | CPNDet

🔷 基於 Anchor-Point (Dense Prediction,Semantic Segmentation)

借鑑 FCN 的思想採用逐像素 (pixel-wise) 的方式進行預測,類似語義分割。

FCOS (2019)

  • 模型輸出有分類與檢測兩個分支,其中 Classification 為預測中心點位置的分類,而 Regression 則是預測該點到檢測框的上下左右距離 (維度為 4 維,有 t, b, l, r 值),並使用 FPN 解決重合的目標框問題。
  • 此外,引入 Center-ness 層,其方法為計算目標框中心點與 ground truth 中心點的距離,若距離越大,輸出值越大。最後將其值跟分類相乘來降低錯誤檢測的目標框。
  • Paper: https://arxiv.org/abs/1904.01355
  • Code: https://github.com/tianzhi0549/FCOS/
  • 中文介紹: FCOS 算法詳解

FoveaBox (2019)

FSAF (Feature Selective Anchor-Free ,2019)

Soft Anchor-Point Object Detection (SAPD,2020)

  • 作者探討在 Anchor-Point 上訓練結果較差的原因是在於 attention bias 和 feature selection,因此提出了兩種策略方式 soft-weighted anchor points 及 soft-selected pyramid levels,該篇文章收錄於 ECCV2020
  • 模型的整體框架與 FSAF 相似,soft-weighted anchor points 為對於每個不同位置的目標物賦予不同的權重;soft-selected pyramid levels 為對於不同解析度下的目標框賦予不同的權重,方法是先將預測目標框分配給各個 FPN 層 (不同解析度),然後利用 RoIAlign 提取特徵後進行 concat,之後送入 meta-selection net 學習出對應的權重。
  • Paper: https://arxiv.org/abs/1911.12448
  • Code: https://github.com/xuannianz/SAPD
  • 中文介紹: 目標檢測 | Anchor free的目標檢測進階版本
soft-selected pyramid levels

📚 RoIPooling、RoIAlign 比較

📚 Anchor-based 與 Anchor-free 比較圖

source

各種 Object Detection 論文整理

--

--