OB前言筆記整理

這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容原文於文末參考

Introduction

RPN是一個要提出proposals的小model,而這個小model需要我們先訂出不同尺度、比例的proposal的邊界匡的雛形。而這些雛形就叫做anchor。
ob
anchor-based和anchor-free的最大差異就在有沒有利用anchor提取候選目標框。

Anchor-based

anchor就是預先定義的方框,通常是一次使用k個。透過網路對每個點預測k個方框的正反結果與修正向量,更白話點就是這個anchor(1) 是不是接近ground truth的bounding box、(2) 與ground truth的bounding box之間的差異(通常是平移+縮放)。

使用anchor上有三個明顯優勢:

  1. 透過 不同尺度的anchor,可以減少面對物件scale和aspect ratio變化範圍大的問題。
  2. 透過控制anchor數量,可以降低image pyramid層數並依情況調整運算量。
  3. 可以透過調整anchor的尺度與密度,適應不同類型的任務。

雖然挾帶著如此多的優勢,anchor-based的劣勢其實也是很顯著的,最大的問題就是:

  1. 設計anchor的hyper parameter不易調整
  2. 訓練階段計算anchor的IOU( Intersection Over Union)需要消耗大量的時間與memory。甚至從調適角度出發,先前提到的優點
  3. 感覺也不再是優點了。

Anchor-free

Anchor Free的第一個問題就是面對不同尺度的物件辨識困難,這點在過去多半是會透過導入多尺度的image pyramid改善。但越多層的image pyramid等同造成訓練與部屬時都需額外且大量的計算量。2016年FPN(Feature Pyramid Networks)橫空出世,讓多尺度的問題有了更精簡且更加類神經感的解決方法。
ob
Anchor Free的第二個問題是在訓練時過多的負樣本數會導致網路訓練變得困難,這部分也是以往anchor base方法可以透過計算IoU以平衡樣本數的優勢。2017年一行簡單的數學式 Focal Loss(RetinaNet)讓樣本數不均的one-stage展現快速且不輸two-stage的成果。這部分的想法也在後來被anchor-free的方法陸續採用,也一定程度地解決的anchor-free樣本數不均的問題。

多尺度與樣本數問題是anchor-free方法需要面對的困境,而FPN與focal loss都只是其中一種最廣為推薦的解決方法,並不是唯一,在未來也可能不再是最適用。

Free v.s. Based

  1. Anchor可以依照任務預先設定,大幅舒緩尺度與比例問題。這部分FPN幫助了anchor free方法。
  2. Anchor可以藉由計算IoU,舒緩背景導致的正負樣本數不均問題。這部分focal loss幫助了free方法。

anchor-based的代表是fasterRCNN、SSD、YoloV2/V3等
anchor-free的代表是CornerNet、ExtremeNet、CenterNet、FCOS等

References

  1. [物件偵測] S3: Faster R-CNN 簡介
  2. Object Detection 錨點之爭: Anchor Free大爆發的2019年