1. 程式人生 > >『計算機視覺』物體檢測之RefineDet

『計算機視覺』物體檢測之RefineDet

校準 描述 得到 影響 only tran 分類器 ipo normal

Two Stage 的精度優勢

二階段的分類:二步法的第一步在分類時,正負樣本是極不平衡的,導致分類器訓練比較困難,這也是一步法效果不如二步法的原因之一,也是focal loss的motivation。而第二步在分類時,由於第一步濾掉了絕大部分的負樣本,送給第二步分類的proposal中,正負樣本比例已經比較平衡了,所以第二步分類中不存在正負樣本極度不平衡的問題。即二步法可以在很大程度上,緩和正負樣本極度不平衡的分類問題
二階段的回歸:二步法中,第一步會先對初始候選框進行校正,然後把校正過的候選框送給第二步,作為第二步校正的初始候選框,再讓第二步進一步校正
二階段的特征:在二步法中,第一步和第二步法,除了共享的特征外,他們都有自己獨有的特征,專註於自身的任務。具體來說,這兩個步驟獨有的特征,分別處理著不同難度的任務,如第一步中的特征,專註於處理二分類任務(區分前景和背景)和粗略的回歸問題;第二步的特征,專註於處理多分類任務和精確的回歸問題

特征校準:在二步法中,有一個很重要的RoIPooling扣特征的操作,它把候選區域對應的特征摳出來,達到了特征校準的目的,而一步法中,特征是對不齊的

一、RefineDet 論文介紹

發表於CVPR2018,題目是single-shot refinement neural network for object detection

1、網絡介紹

網絡框架如下,由於和SSD、FPN的思想一脈相承,很好理解所以我不多介紹了,直接貼作者的描述:

這個是RefineDet的檢測框架。該框架由兩個模塊組成,即上面的Anchor Refinement Module(ARM)和下面的Object Detection Module(ODM),它倆是由Transfer Connection Block(TCB)連接。

• 在這個框架中,ARM模塊專註於二分類任務,為後續ODM模塊過濾掉大量簡單的負樣本;同時進行初級的邊框校正,為後續的ODM模塊提供更好的邊框回歸起點。ARM模塊模擬的是二步法中第一個步驟,如Faster R-CNN的RPN。

•ODM模塊把ARM優化過的anchor作為輸入,專註於多分類任務和進一步的邊框校正。它模擬的是二步法中的第二個步驟,如Faster R-CNN的Fast R-CNN。

• 其中ODM模塊沒有使用類似逐候選區域RoIPooling的耗時操作,而是直接通過TCB連接,轉換ARM的特征,並融合高層的特征,以得到感受野豐富、細節充足、內容抽象的特征,用於進一步的分類和回歸。因此RefineDet屬於一步法,但是具備了二步法的二階段分類、二階段回歸、二階段特征這3個優勢。

作者覺得two stage方法的第二步(逐區域檢測)由於並行很多inference的原因,效率很低,所以對其進行了改進。作者認為他們是對one stage方法的改進,我倒是覺得這個更接近two stage的方法,對此作者也有解釋(作者準備真充分……):

當時RefineDet提出來的時候,有不少人說,RefineDet不屬於一步法,畢竟有兩階段的分類和回歸。我們認為,二步法之所以精度比較高,是因為它有一個逐區域操作的第二步,這個操作非常有效果,但也比較耗時,而RefineDet在沒有用逐區域操作的情況下,獲得了同等的效果。因此我們認為,區分一步法和二步法的關鍵點:是否有逐區域的操作。

2、性能分析

技術分享圖片
速度和SSD相近,精度明顯更高,精度更高沒什麽好說的,速度在多了下面一部分卷積層和反卷積層的情況下沒有明顯下降,作者分析有兩點原因,anchors較少以及基礎網絡後的附加網路層數少、特征選取層更少(4個,我記得SSD有5個),作者原文:

1. 我們使用了較少的anchor,如512尺度下,我們總共有1.6W個框,而SSD有2.5W個框。我們使用較少anchor也能達到高精度的原因是二階段回歸。雖然我們總共預設了4個尺度(32,,64,128,256,)和3個比例(0.5,1,2),但是經過第一階段的回歸後,預設的anchor被極大的豐富了,因此用於第二階段回歸的anchor,具備著豐富的尺度和比例。

2. 第2個原因是,由於顯存限制,我們只在基礎網絡的基礎上,新加了很少的卷積層,並只選了4個卷積層作為檢測層。如果增加更多卷積層,並選擇更多檢測層,效果應該還能得到進一步提升。

3、經驗總結

作者有關訓練的總結:
Ø 首先輸入尺度越大效果越好,在小目標多的任務上體現的更明顯
Ø 小batch會影響BN層的穩定
有關BN層和batch的事我們多提一句,由於目標檢測輸入圖尺寸大、網絡尺寸大(如ResNet),一個batch可能就1、2張圖片,所以目標檢測任務的BN層基本都是不開放訓練的,優化思路一般是:多卡BN同步(曠世論文MegDet),使用固定的BN參數(參考某個數據集得出),或者幹脆是提出其他的BN層變種(如何凱明的group normalization之類),作者提到何凱明論文Rethinking ImageNet Pre-training 有講到或者應用這三種方法。

二、後續改進

a、SRN

這是作者後續的文章,繼續上篇文章進行了探討,不過這幾篇文章是人臉檢測領域
技術分享圖片
Shifeng Zhang, Xiangyu Zhu, Zhen Lei, Hailin Shi, Xiaobo Wang, Stan Z. Li, S3FD: Single Shot Scale-invariant Face Detector, ICCV, 2017
Shifeng Zhang, Longyin Wen, Hailin Shi, Zhen Lei, Siwei Lyu, Stan Z. Li, Single-Shot Scale-Aware Network for Real-Time Face Detection, IJCV

網絡介紹

網絡設置如下,註意P5、P6和P7之間的關系:C2->C5是backbone,P5->P2是反向backbone,而C6、C7、P6、P7都是在backbone後面額外添加的3*3卷積層。
技術分享圖片
按照作者的說法,他將第二階段的分類、回歸操作進行了解耦:
a. Conduct the two-step classification only on the lower pyramid levels (P2, P3, P4)
b. Perform the two-step regression only on the higher pyramid levels (P5, P6, P7)
原因如下:如果實際去計算一下,可以發現anchors選取的過程中,淺層的占比要遠大於深層的占比(空間分辨率大),這導致大量的負樣本集中在淺層,所以對其進行預分類是必要的;而深層感受野本身很大,分類相比之下很容易,沒必要進行兩次分類。
這篇論文是人臉分類的文章,其具體流程原文說的也不甚詳細,我的理解是C2->C4僅進行分類,C5->C7僅進行回歸,而P系列則完全和RefineDet一致。

b、AlignDet

之前提到了one stage相較於two stage的四個劣勢,refine解決了前三個,最後的特征校準遺留了下來,這裏作者把它補上了(又成了一篇文章233),由於原理很簡單沒什麽好說的,貼張圖自己理解一下吧:
技術分享圖片

三、討論

更快的速度
更高的準確率
a. 小物體檢測:人臉檢測的主要難題就是小物體檢測
b. 遮擋問題: 行人檢測的主要問題就是遮擋去除
多任務
例如檢測+分割(最終目標:實例分割、全景分割)
視頻目標檢測
利用視頻的連續性:精度提升
利用視頻的冗余性:速度提升

『計算機視覺』物體檢測之RefineDet