1. 程式人生 > >FCOS : 找到訣竅了,anchor-free的one-stage目標檢測演算法也可以很準 | ICCV 2019

FCOS : 找到訣竅了,anchor-free的one-stage目標檢測演算法也可以很準 | ICCV 2019

論文提出anchor-free和proposal-free的one-stage的目標檢測演算法FCOS,不再需要anchor相關的的超引數,在目前流行的逐畫素(per-pixel)預測方法上進行目標檢測,根據實驗結果來看,FCOS能夠與主流的檢測演算法相比較,達到SOTA,為後面的大熱的anchor-free方法提供了很好的參考

來源:【曉飛的演算法工程筆記】 公眾號

論文: FCOS: Fully Convolutional One-Stage Object Detection

  • 論文地址:https://arxiv.org/abs/1904.01355

Introduction


  大多目標檢測網路都是anchor-based,雖然anchor能帶來很大的準確率提升,但也會帶來一些缺點:

  • 準確率對anchor的尺寸、長寬比和數量較為敏感,這些超參都會人工細調
  • anchor的尺寸和長寬是固定的,如果目標的相關屬性相差較大,會比較難預測
  • 為了高召回,通常會使用密集的anchor佈滿輸入,大多為負樣本,導致訓練不平衡
  • anchor需要如IOU的複雜計算

  近期,FCNs在各視覺任務中都有不錯的表現,但目標檢測由於anchor的存在,不能進行純逐畫素預測,於是論文拋棄anchor,提出逐畫素全卷積目標檢測網路FCOS網路,總結如下:

  • 效仿前期的FCNs-based網路,如DenseBox,每個畫素迴歸一個4D向量指代預測框相對於當前畫素位置的偏移,如圖1左
  • 為了預測不同尺寸的目標,DenseBox會縮放或剪裁生成影象金字塔進行預測,而且當目標重疊時,會出現畫素不知道負責預測哪個目標的問題,如圖1右。在對問題進行研究後,論文發現使用FPN能解決以上問題,後面會細講
  • 由於預測的結果會產生許多低質量的預測結果,論文采用center-ness分支來預測當前畫素與對應目標中心點的偏離情況,用來去除低質量預測結果以及進行NMS

Our Approach


Fully Convolutional One-Stage Object Detector

  讓$F_i\in \mathbb{R}^{H\times W\times C}$為層$i$的特徵圖,$s$為層的總stride,輸入的GT為${B_i}$,$B_i=(x_0{(i)},y_0{(i)},x_1{(i)},y_1{(i)},c^{(i)})\in \mathbb{R}^4\times {1,2...C }$分別為box的左上角和右下角座標以及類別,$C$為類別數。特徵圖$F_i$的每個位置$(x,y)$,可以通過$(\lfloor\frac{s}{2}\rfloor + xs, \lfloor\frac{s}{2}\rfloor + ys)$映射回原圖,FCOS直接預測相對於當前畫素的box位置,而不是anchor的那樣將畫素作為中心再回歸

  當畫素$(x,y)$落在GT中則認為是正樣本,將類別$c*$設定為目標類別,否則設定為0。除了類別,還有4D向量$t=(l*,t,r*,b*)$作為迴歸目標,分別為box的四條邊與畫素的距離。當畫素落在多個GT中時,直接選擇區域最小的作為迴歸目標。相對於anchor-based的IOU判斷,FCOS能生成更多的正樣本來訓練迴歸器

  • Network Outputs

  網路最終輸出80D分類標籤向量$p$和4D box座標向量$t=(l,t,r,b)$,訓練$C$個二分類器而不是多分類器,在最後特徵後面分別接4個卷積層用於分類和定位分支,在定位分支使用$exp(x)$保證結果為正,整體輸出比anchor-based少9x倍

  • Loss Function

  $L_{cls}$為focal loss,$L_{reg}$為UnitBox中的IOU loss,$N_{pos}$為正樣本數,$\lambda$為平衡權重,公式2計算特徵圖上的所有結果

  • Inference

  對於輸入圖片,推理得到特徵圖$F_i$的分類分數$p_{x,y}$以及迴歸預測$t_{x,y}$,然後取$p_{x,y}>0.05$的作為正樣本,公共公式1得到預測框位置

Multi-level Prediction with FPN for FCOS

  下面講下FCOS如何使用FPN來解決之前提到的問題:

  • 由於large stride,通常最後的特徵圖都會面臨較低的最大可能召回(best possible recall, BPR)問題。在anchor based detector中,可以通過降低IOU閾值來彌補,而實驗發現,FCN-based的FCOS本身就能在large stride情況下還有更好的BPR,加上FPN,BPR則會更高
  • 目標框重疊會導致難解的歧義,例如不知道畫素對應哪個迴歸目標,論文使用多層預測來解決這個問題,甚至FCN-based效果比anchor-based要好

  如圖2,FPN使用${P_3,P_4,P_5,P_6,P_7 }$層特徵,其中$P_3$、$P_4$和$P_5$分別通過$C_3$、$C_4$和$C_5$的$1\times 1$卷積以及top-down connection生成,$P_6$和$P_7$則是分別通過$P_5$和$P_6$進行stride為2的$1\times1$卷積生成,各特徵的stride分別為8,16,32,64和128
  anchor-based方法對不同的層使用不同的大小,論文則直接限制每層的bbox迴歸範圍。首先計算$l*$,$t$,$r*$和$b$,如果滿足$max(l*,t,r8,b)>m_i$或$max(l*,t,r8,b)<m_{i-1}$,則設為負樣本,不需要進行bbox迴歸。$m$為層$i$的最大回歸距離,$m_2$,$m_3$,$m_4$,$m_5$,$m_6$和$m_7$分別為0,64,128,256,512和$\infty$。如果在這樣設定下,畫素仍存在歧義,則選擇區域最小的作為迴歸目標,從實驗來看,這樣設定的結果很好
  最後,不同層間共享head,不僅減少引數,還能提高準確率。而由於不同的層負責不同的尺寸,所以不應該使用相同的head,因此,論文將$exp(x)$改為$exp(s_ix)$,新增可訓練的標量$s_i$來自動調整不同層的指數基底

Center-ness for FCOS

  使用FPN後,FCOS與anchor-based detector仍然存在差距,主要來源於低質量的預測box,這些box的大多由距離目標中心點相當遠的畫素產生。因此,論文提出新的獨立分支來預測畫素的center-ness,用來評估畫素與目標中心點的距離

  center-ness的gt計算如公式3,取值$(0,1]$,使用二值交叉熵進行訓練。在測試時,最終的分數是將分類分數與center-ness進行加權,低質量的box分數會降低,最後可能通過NMS進行過濾

  center-ness的另一種形式是在訓練時僅用目標框的中心區域畫素作為正樣本,這會帶來額外的超引數,目前已經驗證效能會更好

Experiments


Ablation Study

  • Multi-level Prediction with FPN

  best possible recall(BPR)定義為檢測器能夠迴歸的gt比例,如果gt被賦予某個預測結果,即為能夠迴歸。從表1看來,不用FPN的FCOS直接有95.55%,而anchor-based的經典實現只有86.82%,加上FPN後就提高到98.40%

  在原始FCOS中,正樣本中歧義目標的比例為23.16%,使用FPN後能夠降低到7.14%。這裡論文提到,同類別目標的歧義是沒關係的,因為不管預測為哪個目標,都是正確的,預測漏的目標可以由其它更靠近他的畫素來預測。所以,只考慮不同類別的歧義比例大概為17.84%,使用FPN後可降為3.75%。而在最終結果中,僅2.3%的框來自於歧義畫素,考慮不同類別的歧義,則僅有1.5%的,所以歧義不是FCN-based FCOS的問題

  • With or Without Center-ness

  center-ness分支能夠將AP從33.5%升為37.1%,比直接從迴歸結果中計算的方式要好

  • FCOS vs. Anchor-based Detectors

  相對於RetinaNet,之前FCOS使用了分組卷積(GN)和使用$P_5$來產生$P_6$和$P_7$,為了對比,去掉以上的改進進行實驗,發現準確率依舊比anchor-based要好

  • Comparison with State-of-the-art Detectors

Extensions on Region Proposal Networks


  將anchor-based的RPNs with FPN替換成FCOS,能夠顯著提高$AR{100}$和$AR{1k}$

Class-agnostic Precision-recall Curves


Visualization for Center-ness


CONCLUSION


  論文提出anchor-free和proposal-free的one-stage的目標檢測演算法FCOS,不再需要anchor相關的的超引數,在目前流行的逐畫素(per-pixel)預測方法上進行目標檢測,根據實驗結果來看,FCOS能夠與主流的檢測演算法相比較,達到SOTA,為後面的大熱的anchor-free方法提供了很好的參考



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】

相關推薦

FCOS : 找到訣竅anchor-free的one-stage目標檢測演算法可以 | ICCV 2019

論文提出anchor-free和proposal-free的one-stage的目標檢測演算法FCOS,不再需要anchor相關的的超引數,在目前流行的逐畫素(per-pixel)預測方法上進行目標檢測,根據實驗結果來看,FCOS能夠與主流的檢測演算法相比較,達到SOTA,為後面的大熱的anchor-fre

【C#公共幫助類】JsonHelper 操作幫助類 以後再也不用滿地Json拿來直接用

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Linq; using System.Web.Script.Serialization; usi

黑馬程式設計師_終於Eclipse使用技巧!!!

1. ctrl+shift+r:開啟資源     這可能是所有快捷鍵組合中最省時間的了。這組快捷鍵可以讓你開啟你的工作區中任何一個檔案,而你只需要按下檔名或mask名中的前幾個字母,比如applic*.xml。美中不足的是這組快捷鍵並非在所有檢視下都能用。 2.

現在越來越喜歡用ajax傳值這樣能讓網站的體驗性今天就總結一下常用的

click put nbsp index.php 常用 體驗 code size .get 這是不用循環的方法 就是傳過來的是一位數組 //編輯黨建分類 function gk_bj(id){ $.post("{:U(‘Luser/lei_edlt

Relation-Network目標檢測演算法詳細總結分析(one/two-stage)(深度學習)(CVPR 2018)

論文名稱:《 Single-Shot Refinement Neural Network for Object Detection 》 論文下載:https://arxiv.org/abs/1711.06897 論文程式碼:https://github.com/sfzhang1

Faster R-CNN 目標檢測演算法詳細總結分析(two-stage)(深度學習)(NIPS 2015)

論文名稱:《 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 》 論文下載:https://papers.nips.cc/paper/5638-faster-r-cnn-t

Fast R-CNN 目標檢測演算法詳細總結分析(two-stage)(深度學習)(ICCV 2015)

論文名稱:《 Fast R-CNN 》 論文下載:https://arxiv.org/pdf/1504.08083.pdf 論文程式碼:https://github.com/rbgirshick/fast-rcnn 一、 網路結構:

R-CNN 目標檢測演算法詳細總結分析(two-stage)(深度學習)(CVPR 2014)

論文名稱:《 Rich feature hierarchies for accurate object detection and semantic segmentation 》 論文下載:https://arxiv.org/pdf/1311.2524.pdf 論文程式碼:ht

YOLOv3 目標檢測演算法詳細總結分析(one-stage)(深度學習)(CVPR 2018)

論文名稱:《 YOLOv3: An Incremental Improvement 》 論文下載:https://pjreddie.com/media/files/papers/YOLOv3.pdf 論文程式碼:   https://github.com/pjredd

YOLOv2 目標檢測演算法詳細總結分析(one-stage)(深度學習)(CVPR 2017)

論文名稱:《 YOLO9000: Better, Faster, Stronger 》 論文下載: https://arxiv.org/abs/1612.08242  論文程式碼: http://pjreddie.com/yolo9000/  一、演算法

YOLOv1目標檢測演算法詳細總結分析(one-stage)(深度學習)(CVPR 2016)

論文名稱: 《 You Only Look Once: Unified, Real-Time Object Detection 》 論文連線:https://github.com/pjreddie/darknet  程式碼連線:http://arxiv.or

RFBNet目標檢測演算法詳細總結分析(one/two-stage)(深度學習)(ECCV 2018)

論文名稱:《 Receptive Field Block Net for Accurate and Fast Object Detection 》 論文下載:https://arxiv.org/pdf/1711.07767.pdf 論文程式碼:https://github.co

SSD 目標檢測演算法詳細總結分析(one-stage)(深度學習)(ECCV 2016)

論文名稱:《 SSD: Single Shot MultiBox Detector 》 論文下載:https://arxiv.org/pdf/1512.02325.pdf 論文程式碼:https://github.com/weiliu89/caffe/tree/ssd

Soft-NMS目標檢測演算法詳細總結分析(one/two-stage)(深度學習)(ICCV 2017)

論文:《 Improving Object DetectionWith One Line of Code 》 論文下載:https://arxiv.org/abs/1704.04503 論文程式碼:https://github.com/bharatsingh430/soft-nms

YOLT目標檢測演算法詳細總結分析(one-stage)(深度學習)(CVPR 2018)

論文名稱:《 You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery 》 論文下載:https://arxiv.org/abs/1805.09512 論文程式碼:https://g

目標檢測演算法另一分支的發展(one stage檢測演算法):YOLO、SSD、YOLOv2/YOLO 9000、YOLOv3

目標檢測可以理解為是物體識別和物體定位的綜合,不僅僅要識別出物體屬於哪個分類,更重要的是得到物體在圖片中的具體位置。 目前的目標檢測演算法分為兩類: 一類是two-stage,two-stage檢測演算法將檢測問題劃分為兩個階段,首先產生候選區域(region proposals),然後

目標檢測演算法的演進(two-stage檢測演算法):R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、Mask R-CNN

什麼是目標檢測(object detection): 目標檢測(object detection),就是在給定的一張圖片中精確找到物體所在的位置,並標註出物體的類別。所以,目標檢測要解決的問題就是物體在哪裡以及是什麼的整個流程問題。 但是,在實際照片中,物體的尺寸變化範圍很大,擺放物體的

論文筆記:目標檢測演算法(R-CNNFast R-CNNFaster R-CNNYOLOv1-v3)

R-CNN(Region-based CNN) motivation:之前的視覺任務大多數考慮使用SIFT和HOG特徵,而近年來CNN和ImageNet的出現使得影象分類問題取得重大突破,那麼這方面的成功能否遷移到PASCAL VOC的目標檢測任務上呢?基於這個問題,論文提出了R-CNN。 基本步驟:如下圖

基於深度學習的目標檢測演算法綜述(二)—Two/One stage演算法改進之R-FCN

基於深度學習的目標檢測演算法綜述(一):https://blog.csdn.net/weixin_36835368/article/details/82687919 目錄 1、Two stage 1.1 R-FCN:Object Detection via Region-based

深度學習(目標檢測)---從RCNN到SSD這應該是最全的一份目標檢測演算法盤點

目標檢測是很多計算機視覺任務的基礎,不論我們需要實現影象與文字的互動還是需要識別精細類別,它都提供了可靠的資訊。本文對目標檢測進行了整體回顧,第一部分從RCNN開始介紹基於候選區域的目標檢測器,包括Fast R-CNN、Faster R-CNN 和 FPN等。第二部分則重點討