計算機視覺 物體檢測之RefineDet系列

2022-05-05 23:27:16 字數 3658 閱讀 4012

二階段的分類:二步法的第一步在分類時,正負樣本是極不平衡的,導致分類器訓練比較困難,這也是一步法效果不如二步法的原因之一,也是focal loss的motivation。而第二步在分類時,由於第一步濾掉了絕大部分的負樣本,送給第二步分類的proposal中,正負樣本比例已經比較平衡了,所以第二步分類中不存在正負樣本極度不平衡的問題。即二步法可以在很大程度上,緩和正負樣本極度不平衡的分類問題

二階段的回歸:二步法中,第一步會先對初始候選框進行校正,然後把校正過的候選框送給第二步,作為第二步校正的初始候選框,再讓第二步進一步校正

二階段的特徵:在二步法中,第一步和第二步法,除了共享的特徵外,他們都有自己獨有的特徵,專注於自身的任務。具體來說,這兩個步驟獨有的特徵,分別處理著不同難度的任務,如第一步中的特徵,專注於處理二分類任務(區分前景和背景)和粗略的回歸問題;第二步的特徵,專注於處理多分類任務和精確的回歸問題

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

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

refinedet演算法筆記

網路框架如下,由於和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在沒有用逐區域操作的情況下,獲得了同等的效果。因此我們認為,區分一步法和二步法的關鍵點:是否有逐區域的操作。

速度和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個卷積層作為檢測層。如果增加更多卷積層,並選擇更多檢測層,效果應該還能得到進一步提公升。

作者有關訓練的總結:

ø 首先輸入尺度越大效果越好,在小目標多的任務上體現的更明顯

ø 小batch會影響bn層的穩定

有關bn層和batch的事我們多提一句,由於目標檢測輸入圖尺寸大、網路尺寸大(如resnet),乙個batch可能就1、2張,所以目標檢測任務的bn層基本都是不開放訓練的,優化思路一般是:多卡bn同步(曠世**megdet),使用固定的bn引數(參考某個資料集得出),或者乾脆是提出其他的bn層變種(如何凱明的group

normalization之類),作者提到何凱明**rethinking imagenet pre-training

有講到或者應用這三種方法。

這是作者後續的文章,繼續上篇文章進行了**,不過這幾篇文章是人臉檢測領域

網路介紹

網路設定如下,注意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一致。

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

計算機視覺 三代物體檢測 簡要總結

特徵提取 selective search 小區域 合併 大區域 小框 合併 大框 所有的框 都跑一遍 卷積神經網路 特徵提取 固化 分類,回歸 定位 慢,開篇之作,低效 問題 時間很長,每個小框都要跑一次神經網路,加上分類器 解決 先進行卷積 共享 先對整個圖跑一遍神經網路,卷積 再把框對映過來到...

(計算機視覺)計算機視覺基礎

opencv cximage cimg freeimage opencv中vc庫的版本與visual studio版本的對應關係 vc8 2005 vc9 2008 vc10 2010 vc11 2012 vc12 2013 vc14 2015 vc15 2017 visual studio中的輔助...

計算機視覺之紋理

一 區域性紋理表示 每個畫素點形成乙個紋理描述 找到紋理基元,紋理基元通常是由子元素構成的 點和條形 可以使用不同方向 尺度 相位的濾波尋找子元素,再通過找到的子元素的近鄰來描述影象中的每個點 高斯濾波可實現 演算法 1.選定n個關於子元素的濾波器 不同尺度 方向 2.對影象的每個畫素點計算不同濾波...