FCOS 基于FPN之上的完全Anchor Free检测框架
目標檢測系列文章
yolo v1原理:https://blog.csdn.net/cjnewstar111/article/details/94035842
yolo v2原理:https://blog.csdn.net/cjnewstar111/article/details/94037110
yolo v3原理:https://blog.csdn.net/cjnewstar111/article/details/94037828
SSD原理:https://blog.csdn.net/cjnewstar111/article/details/94038536
FoveaBox:https://blog.csdn.net/cjnewstar111/article/details/94203397
FCOS:https://blog.csdn.net/cjnewstar111/article/details/94021688
FSAF: https://blog.csdn.net/cjnewstar111/article/details/94019687
FCOS的結構:
每一個FPN的分支都輸出一個H*W*C的類別預測,一個H*W*1的CenterNess,一個H*W*4的位置
CenterNess的作用:
為了消除離開中心點較遠的預測框。具體是如何實現的呢?如下圖所示,在預測中,分類模塊有兩個地方都輸出了狗的相應,然后結合對應位置的位置輸出,那么可以得到兩個預測框。實際上會得到更多,因為所有在狗范圍內的分類模塊都有輸出。那么如何抑制那些不好的預測框呢。答案就是使用CenterNess。CenterNess經過訓練之后,已經可以對中心點和遠離中心點做一個區分,那么結合Center Ness的輸出,就可以抑制掉圖中不好的預測框2#。只留下預測較好的框1#。
centerness的計算公式如下圖所示:離開中心點越近的像素點,其centerness越接近1,反之越接近0.那么經過訓練之后,CenterNess就能夠比較好的區分像素離開中心點的距離。
?
思考:為什么不能再H*W*C的結構上面直接結合CenterNess呢?何必在重新增加一個分支做CenterNess?
FCOS如何消除重疊現象:
anchor-free檢測的一個細節問題就是重疊。FCOS認為重疊一般是大物體和小物體發生。那么在訓練的時候,根據物體大小,使用不同的閾值,將不同大小的物體放在不同級別的特征圖上進行預測,以此來消除重疊現象。
?
為什么早期的densebox unitbox等也使用了類似的方案,卻沒有火起來:
可能是因為早期沒有使用FPN,導致只能在最頂層進行逐像素預測,從而丟失了淺層的小目標位置信息,效果沒有基于anchor的好。但是現在隨著FPN的使用,基于多個層級提取目標信息變得可能,從而使得這些原始的回歸方法又得到發展。另外DenseBox使用圖像金字塔,計算量太大。
?
參考資料:
論文:《https://arxiv.org/pdf/1904.01355.pdf》
CSDN:?? FCOS算法詳解? —— 技術挖掘者
?
?
?
?
總結
以上是生活随笔為你收集整理的FCOS 基于FPN之上的完全Anchor Free检测框架的全部內容,希望文章能夠幫你解決所遇到的問題。