论文阅读|训练过程中动态改变训练方案的Dynamic R-CNN
目錄
- 論文相關信息
- Abstract。
- 1 Introduction
- 2 Related Work
- 3 Dynamic Quality in the Training Procedure
- 3.1 Proposal Classification
- 3.2 Bounding Box Regression
- 4 Dynamic R-CNN
- 4.1 Dynamic Label Assignment
- 4.2 Dynamic SmoothL1 Loss
- 5 Experiments
- 5.1 Dataset and Evaluation Metrics
- 5.2 Implementation Details
- 5.3 Main Results
- 5.4 Ablation Experiments
- 5.5 Studies on the effect of hyperparameters
- 5.6 Universality
- 5.7 Comparison with State-of-the-Arts
- 6 Conclusion
- 參考
論文相關信息
1.論文題目:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training
2.發表時間:2020.04
3.文獻地址:https://arxiv.org/abs/2004.06002
4.論文源碼:https://github.com/hkzhang95/DynamicRCNN
論文貢獻:
Abstract。
作者指出two-stage detectors固定的網絡設置和動態的訓練過程存在不一致問題,使得網絡性能下降,例如固定的標簽分配策略和回歸損失函數就無法擬合動態變化的proposal分布,進而不利于訓練一個高質量的檢測器。因此,作者提出Dynamic R-CNN,能夠基于訓練中的proposals的統計數據來自動地調整標簽分配標準(IoU閾值)和回歸損失函數的形式(Smooth L1 Loss的參數)。這種動態的設計能夠更好的利用訓練樣本,促使檢測器能夠擬合更多高質量的樣本。該方法使得基于ResNet-90-FPN在MS COCO數據集上AP提高 1.9%,AP90提高 5.5%。
這里的高質量檢測器指的是檢測結果是在高IoU下的。
1 Introduction
無論是one-stage還是two-stage 的檢測器,其pipeline都可以看作是訓練一個classifier和一個regressor。對于classifier的訓練,主要問題是如何判斷proposals是正樣本還是負樣本,之前傳統的方法是通過proposals和gt之間的IoU閾值來判斷。但是正如Cascade R-CNN中所述,以一個固定的IoU閾值訓練得到的檢測器在應用其它的IoU閾值時表現會下降。然而也不能開始訓練時就設置很大的IoU閾值,否則會導致正樣本過少,Cascade R-CNN中的方法是通過IoU閾值逐漸增大的幾個階段來組件的精煉proposals,這種方法雖然有效,但是time-consuming。對于regressor來說,問題是相似的,雖然在訓練的過程中proposals的質量不斷提高,但是Smooth L1 Loss的參數卻是固定不變的,訓練得到的檢測器離高質量檢測器仍有距離。
首先作者觀察到一個被忽略的事實,即在訓練的過程中proposals的質量是在提高的。如圖1所示,即使在不同的IoU閾值下,隨著訓練過程的進行,正樣本的數量都在顯著提高。
圖1.a和b圖都證實了訓練過程中proposals的質量得到提高。
受此觀察的啟發,作者提出Dynamic R-CNN,其由兩部分組成:Dynamic Label Assignment和Dynamic Smooth L1 Loss,分別對應分類和回歸分支。
對于classifier,基于訓練時proposals分布逐漸調整IoU閾值來得到一個能夠區分高IoU建議框的分類器。將閾值設置為讓proposals 的IoU保持一定的比例,這樣能夠反映總體分布的質量。
對于regressor來說,改變回歸損失函數的形狀,來適應性地擬合回歸目標的分布變化,確保高質量樣本對訓練的貢獻。因為β控制著小誤差梯度的大小,所以這里會基于回歸目標的分布來調整Smooth L1中的β。
通過這套動態方案,不僅能夠緩解訓練開始時缺少數據的問題,同時還能夠享受高IoU訓練的好處。這兩個模塊對于檢測器的不同部分,因此能夠合作工作來得到一個高質量的目標檢測器。該模型簡單高效,能夠泛化到其它任務上,推斷時不會引入額外的代價。
2 Related Work
這部分簡單介紹R-CNN系列檢測器,指出目標檢測中常用到的分類方法以及邊界框回歸方法。
Region-based object detectors.基于區域的目標檢測器一般將目標檢測器任務分為邊框分類和回歸問題。其中為代表的檢測器是R-CNN,Fast R-CNN,Faster R-CNN等,他們首先生成大量的候選建議框,然后從這些候選框中按照一定的正負樣本比例隨機采樣一個batch送入第二階段同時進行分類和回歸。之后出現了采用全卷積來提高速度的R-FCN,使用top-down連接結合多尺度特征的FPN。此外,近年來還有其它的改進。
Classification in object detection.近期研究者聚焦于從各個方面來改進目標分類器,檢測器的分類得分不只是決定了每個proposal的語義類別,同樣也隱含了位置的精確度,因為NMS開始使用的是分類得分來排序的,然后根據得分排序抑制低置信度的邊框。然而正如IoU-Net中提到的,分類得分和位置精度間存在較小的關聯,這使得排序時存在一些噪音,并且性能受限。因此IoU-Net采用了一個額外的分支來預測IoU 得分和精煉分類置信度。Soft NMS則是設計了一個KL loss來直接建模邊框回歸的變化,將loss加入NMS排序的考慮因子。另一種提高分類的方向是通過提高IoU閾值來訓練得到高質量的分類器,但是這種方式的會導致正義不數量減少從而難以訓練,正如Cascade R-CNN中提到一樣,后面Cascasde R-CNN采用了多階段不同IoU閾值的方式解決該問題,但是這種方式較慢。
**Bounding box regression。**模型的性能取決于多任務學習中不同loss 的相對權重。Cascade R-CNN也采用不同的回歸歸一化因子在不同階段調整回歸項的適應性。此外還有Libra R-CNN和SABL等。但是他們都主要聚焦于一個固定的方案,忽略了訓練時學習對象的動態分布。
Dynamic training。當前的動態訓練方案中尚無解決目標檢測核心問題的。
3 Dynamic Quality in the Training Procedure
目標檢測任務包含兩個子任務:識別和定位,本節將從這兩個子任務出發探索他們的訓練過程來得到一個高質量的目標檢測器。
3.1 Proposal Classification
對于目標檢測中的分類器來說,如何分配標簽是一個關鍵的問題。通常會基于IoU進行標簽分類,而這種方法可以總結為以下的公式:
其中b指代一個邊框,G指真實框的集合,T+,T?T_+,T_-T+?,T??分別指代正負樣本的IoU閾值。1,0,-1分別指代正樣本、負樣本和被忽略的樣本。本質上來說,正負樣本的定義是人為的,如Faster R-CNN中T+,T?T_+,T_-T+?,T??默認設置為0.5.因為分類器的目標是區分正樣本和負樣本,以不同的IoU閾值訓練則會得到相應的質量。因此,為了得到高質量的目標檢測器,我們需要以高的IoU閾值來訓練分類器,然和人Cascade R-CNN中已經提到這樣的缺點,至于其級聯的多階段解決方案雖然有效,但是time-consuming。
前面提到訓練過程中,建議框的質量實際上是不斷的提高的,所以可以采用一種逐步的訓練方法。初始時高質量的proposals不夠,則可以在第二個階段使用一個低IoU閾值來適應低質量的proposals,隨著訓練進行,proposals質量逐步提高,就能得到足夠的高質量proposals。最后就能增加IoU閾值來更好的利用他們來訓練一個高質量的檢測器。具體的過程在下一節介紹。
3.2 Bounding Box Regression
邊框回歸的任務是將正候選邊框b回歸到目標真實框g,該過程通過回歸損失函數LregL_{reg}Lreg?監督來學習。為了促進回歸目標對尺度和位置的不變性,LregL_{reg}Lreg?基于偏移Δ=(σx,σy,σw,σh)\Delta=(\sigma_x,\sigma_y,\sigma_w,\sigma_h)Δ=(σx?,σy?,σw?,σh?)計算,其中偏移定義如下:
由于邊框回歸基于偏移計算,σx,σy,σw,σh\sigma_x,\sigma_y,\sigma_w,\sigma_hσx?,σy?,σw?,σh?的絕對值可能非常小,為了平衡多任務學習中的不同項,許多工作中廣泛的使用預定義的均值和標準方差來歸一化Δ\DeltaΔ。
然而我們發現訓練過程中回歸目標的分布在轉移,如圖2 所示,相同的IoU閾值下,均值和方差隨著訓練進行proposals質量改善而減小,相同的歸一化因子下,在SmoothL1 Loss函數的定義下,這些高質量樣本的貢獻將減小(由于均值和方差均減小,預測的偏移也會減小即損失值減小,而此時正樣本的比例是在不斷變大的。即相對減小了高質量的正樣本在訓練過程中的貢獻),這不利于訓練高質量的回歸器。此外,在更高的IoU閾值下,正樣本的質量進一步提高,所以他們的貢獻也被進一步減小,極大的限制了全局的性能。因此,為了訓練出高質量的目標檢測器,我們應該擬合proposals的分布變化,調整回歸損失函數的形式來抵消高質量proposals的增加。
圖2.不同的迭代次數和IoU閾值下的Δ分布,第1,2列對比可知隨著訓練進行,回歸目標分布更加集中,第2,3列對比課之相同迭代次數下增加IoU閾值會顯著改變分布。
4 Dynamic R-CNN
為了更好的探索訓練過程的動態屬性,提出了Dynamic R-CNN,如圖3所示。我們的關鍵點是調整了第二階段分類器和回歸器來擬合proposals的分布變化。這兩部分會在下文詳述。
4.1 Dynamic Label Assignment
Dynamic Label Assignment(DLA)過程由圖3(a)所示。基于前面的正負樣本標簽分配的等式,動態標簽分配(DLA)模塊可以被歸納為如下式子:
其中TnowT_{now}Tnow? 表示當前的IoU閾值。考慮到訓練時propsals的分布會時刻變化,我們的DLA基于proposals的統計數據自動地更新來擬合這個分布變化。
具體而言,我們首先計算proposals和他們的目標真實框之間的IoUs得到集合I,然后選擇I中第K個最大的值KI?thK_I-thKI??th作為TnowT_{now}Tnow?。隨著訓練的進行,TnowT_{now}Tnow?會逐漸地增加,這兒反映了proposals質量的改進。實踐中,我們首先計算每個batch的I中的KI?thK_I-thKI??th,然后每C個iteration使用這C個iteration的KI?thK_I-thKI??th的均值來更新TnowT_{now}Tnow?,這樣能增加網絡的魯棒性。最終訓練時使用的IoU閾值如圖3(a)所示。
圖3.Dynamic R-CNN的整體工作流。根據其訓練時的動態性,Dynamic R-CNN主要可分為兩部分:(a)Dynamic Label Assignment(DLA)過程和(b)Dynamic SmoothL1 Loss(DSL)。圖片的左部分(a)中我們可以發現,隨著訓練進行會有更多高質量的proposals。隨著proposals質量的提高,DLA會基于proposal分布來自動地增加IoU閾值。與此同時,為了擬合部分的變化以及補償高質量proposals的增加,回歸損失函數的形式也要相應的變化,如圖中(b)所示。
4.2 Dynamic SmoothL1 Loss
目標檢測的定位任務由通常使用的SmoothL1 Loss監督,其定義如下:
這里,x指代的是回歸對象,β是個超參數,控制著在哪個范圍內應該使用softer loss函數,如l1l_1l1? loss而不是原來的l2l_2l2? loss。為了訓練魯棒性,β默認設置為1.0來防止初始階段未訓練好的網絡出現爆炸性的損失。β的影響如圖4所示,其中改變β會得到一個不同的損失曲線和梯度,實際上更小的β能夠更快的達到梯度大小的飽和,使得好的樣本對網絡的訓練有更大的貢獻。
圖4.不同的β下SmoothL1 Loss的(a)loss曲線和(b)梯度曲線。在R-CNN部分β默認設置為1.0。
如3.2節分析一樣,我們需要擬合分布變化并調整回歸損失函數來補償高質量樣本。所以提出了Dynamic SmoothL1 Loss(DSL)來改變損失函數的形式來逐漸聚焦于高質量樣本,如下所示:
和DLA相似,DSL會根據反映定位準確度的回歸對象統計數據來改變βnow\beta_{now}βnow?。具體來說,我們首先獲得proposals和它們的目標真實框之間的回歸對象E,然后在E中選擇第Kβ?thK_\beta -thKβ??th小的值來更新等式4中的βnow\beta_{now}βnow?。相似的,我們也每C個周期,用每個batch的第Kβ?thK_\beta -thKβ??th小的值的中位數來更新βnow\beta_{now}βnow?,這里使用中位數而不是分類器中的mean是因為我們在回歸標簽中發現了更多的異常值。通過這種動態的方式,將會采用適當的βnow\beta_{now}βnow?,正如圖3(b)所示。這樣能夠更好的探索訓練樣本并且實現一個高質量的回歸器。
概括整個方法的話,可以用如下的算法1來描述Dynamic R-CNN。除了proposals P和真實框G,Dynamic R-CNN還有3個參數:前k大的IoU 閾值 KIK_IKI?,前K小的β KβK_\betaKβ?以及更新的iteration數C。和baseline檢測器相比我們只多引入了一個超參數,而且實際上結果對這些超參數有很強的魯棒性。
5 Experiments
5.1 Dataset and Evaluation Metrics
MSCOCO2017數據集,訓練時在COCO train split上(~118k圖片),消融實驗在val split上(~5k圖片)。將主要結果上傳到評估服務器上在test-dev split上測試最終的結果。評估標準采用的是COCO格式的AP,即0.5到0.95,間隔0.05的IoU閾值。
5.2 Implementation Details
PyTorch實現的,使用maskrcnn-benchmark和SimpleDet框架。采用基于FPN的,使用ImageNet上預訓練的ResNet-50做骨干網的Faster R-CNN作為baseline。所以模型在COCO2017 train上訓練,在val上測試,不做說明則圖片最短邊800像素。由于缺少正樣本,所有實驗中的RPN的NMS閾值有0。7改為0.85。
5.3 Main Results
實驗證明Dynamic R-CNN可以和不同的骨干網結合,并且兼容其它的訓練和測試技巧,如延長訓練iteration,多尺度測試和可變性卷積。在最好的結合下,Dynamic R-CNN達到了49.2% AP,比Faster R-CNN的baseline高2.3。
5.4 Ablation Experiments
為了展示我們提出的方法每個部分的有效性,做了如表2所示的消融實驗。
動態訓練的圖示。下圖展示了Dynamic R-CNN在不同設置下訓練的過程中IoU閾值和SmoothL1 β變化趨勢。顯然總體的IoU閾值的趨勢是增加的,而SmoothL1 β的趨勢是下降的。這些結果證明提出的方法如預期工作。
5.5 Studies on the effect of hyperparameters
其它超參數的影響:
復雜度與速度。如算法1所示,主要的計算復雜度在于IoUs和回歸對象的計算,而這些在原來的方法中就已經完成,額外的工作只有計算均值和中位數,而這個基本不會增加訓練時間。此外,該方法只改變訓練過程,推斷的速度不會下降,表6比較了該方法的推斷時間。
5.6 Universality
能應用的實例分割領域。
5.7 Comparison with State-of-the-Arts
和SOTA檢測器的比較,由于不同的檢測器使用了不同的骨干網和訓練/測試設置,這里使用兩個版本的Dynamic R-CNN做比較。
一個是FPN-based Faster R-CNN with ResNet-101as backbone,達到了42% AP,另一個是Dynamic R-CNN* adopts image pyramid scheme (multi-scale training and testing), deformable convolutions and Soft-NMS,其結果提高到了50.1% AP,超過所有之前的檢測器。
6 Conclusion
該論文詳細的分析了檢測器的訓練過程并發現正是其固定的訓練方案限制了檢測器的整體性能。于是作者基于動態性的先進觀點,提出了Dynamic R-CNN來更好地探索訓練過程。其簡單但有效的組件Dynamic Label Assignment(DLA)和Dynamic SmoothL1 Loss(DSL),能夠隨著訓練的進行,動態的改變基于IoU標簽分配的IoU閾值和回歸損失函數的形式,使得Dynamic R-CNN在不引入額外代價的情況下性能得到重大的提高。通過在不同檢測器和骨干網上的實驗驗證了Dynamic R-CNN的通用性和有效性。
該方法中更具IoU等統計數據來自適應的選擇閾值和ATSS中的思路有些相似,和Cascade R-CNN相比,二者都采用了優化proposals來得到更多高質量proposals進而訓練更好檢測器的思路,不同的是Cascade R-CNN是通過額外的網絡頭來級聯優化proposals,而Dynamic R-CNN則是通過iteration的迭代來優化的,相比起來,前者由于多了額外網絡頭,訓練更費時,后者至少需要更多的iteration來優化proposals,而且推斷時沒有額外代價,整體更加高效。
參考
Zhang H, Chang H, Ma B, et al. Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training[J]. arXiv preprint arXiv:2004.06002, 2020.
(二十一)論文閱讀 | 目標檢測之Dynamic RCNN
論文閱讀|Cascade R-CNN
總結
以上是生活随笔為你收集整理的论文阅读|训练过程中动态改变训练方案的Dynamic R-CNN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剪辑视频,教你简单操作添加视频背景图
- 下一篇: arm芯片中的浮点运算(一)