今年的圖像領域的頂會CVPR收錄了很多目標檢測的論文,Cascade R-CNN: Delving into High Quality Object Detection這篇文章關注的是IOU的最優選擇,很小的trick,不過在效果上有不錯的提高。git
目標檢測中,須要肯定IOU的閾值來區分正樣本和負樣本。低的閾值如0.5訓練網絡,易產生檢測噪聲,但隨着IOU閾值的增長,檢測性能會下降。兩個主要的因素:1)在訓練期間過擬合,致使正樣本指數消失;2)檢測算法最佳的IOU和假設的IOU之間不匹配。在多階段目標檢測架構中,爲了解決以上兩個問題,提出了級聯R-CNN算法。該算法由一系列隨着IOU閾值增長而訓練的檢測器組成,按部就班的對close false positive更具選擇性。檢測器被階段性的訓練,若是檢測器的輸出是一個好的分佈,則用於訓練下一個階段更好的檢測器。對逐漸改進的假設進行重採樣,保證全部的檢測器由一組同等大小的正樣本組成,緩解過擬合問題。在假設階段應用一樣的級聯程序,使得每個階段的假設和檢測器的質量有一更匹配的性能,級聯R-CNN算法的簡單實現,在COCO數據集上檢測性能超過了全部單模型對象檢測算法。實驗還代表,級聯R-CNN可普遍用於不一樣的檢測架構,得到與基準檢測器強度無關的增益。代碼地址爲:github.com/zhaoweicai/…。github
檢測問題和分類問題有很大的不一樣,檢測問題要經過IOU區分正負樣本,所以IOU的選擇對train和inference有很大的影響。做者作了一組實驗算法
如圖(a),閾值爲0.5會有大量的噪聲,這個閾值很難區分與正樣本類似的誤檢測;而一個較好的閾值,檢測算法基本上沒有誤報。圖c中,橫軸是proposal的IOU,縱軸是通過box reg訓練後獲得的新的IOU,不一樣的線條表明不一樣的閾值訓練出的檢測器。三條線的總體趨勢都顯示,IOU越高,檢測器的迴歸性更好。在0.55~0.6之間時,0.5的閾值訓練出的檢測器性能最好,在0.6~0.75之間,0.6的閾值性能最好,而在0.75以上,0.7的閾值訓練出的檢測器性能最好。經過以上分析代表,當proposal自身的IOU閾值與訓練時的閾值接近時,檢測器的性能最好。然而這會帶來一個問題:目標檢測中訓練和測試的數據集是大量的,若使用單一的IOU閾值,以經常使用的0.5爲例。在proposal時,全部IOU大於0.5的都會被認爲是正樣本,在0.6到0.95之間的proposal上,0.5的閾值表現會比較糟糕。而若是選用0.7的閾值,單純看圖(c)0.7的閾值也有較好的表現,可是圖(d)中,0.7的閾值表現是最糟糕的,緣由是0.7的閾值會使訓練樣本大幅減小,過擬合的現象會很是嚴重。網絡
爲了解決以上的問題,做者提出了級聯R-CNN框架,用一個stage的輸出訓練下一個stage。仍是圖(c)中,三條線的大部分區域都在y=x這條線之上,說明proposal在通過box reg訓練以後,IOU是增長的。所以,做者想到能夠將多個檢測器級聯起來,例如將三個IOU分別爲0.5.0.6和0.7的檢測器串起來,對於IOu爲0.55的proposal,在通過0.5的detector後,IOU變爲了0.7;再通過0.6的檢測器,IOU變爲了0.85;再通過0.7的檢測器,IOU變爲了0.89。這種訓練方式比任何一個單獨的檢測器的結果要好。除了改善IOU外,通過多個檢測器,proposal的IOU變高,正樣本的質量會更好,即便下一個檢測器的IOU閾值設置的較高,也不會有太多的樣本被捨棄,能有效的緩解過擬合現象。架構
做者將本身的工做與其他的幾種工做作了對比實驗。框架
上圖中,==H0==表明區域建議網絡,==H1==表明ROI池化層,==C==表明分類得分,==B==表明邊界框迴歸 圖(a)是經典的Faster R-CNN框架模型,這篇文章的網絡模型 也是在Faster R-CNN模型的基礎上進行擴展;圖(b)的Interarive BBox採用了級聯的結構對Box迴歸,但能夠看到ROI檢測網絡部分是相同的結構「H1」,即採用的級聯結構徹底相同. 其中邊界框迴歸部分的公式與Faster R-CNN中相同,這裏再也不贅述。上圖中第一行橫縱軸分別爲迴歸目標中box的x和y方向的偏移量,第二行橫縱軸分別爲迴歸目標中box的寬高誤差量。能夠看到在級聯中從1st stage到2st stage,proposal的分佈發生了很大的變化,有不少噪聲在通過box reg訓練以後提升了IOU,在2st stage和3st stage中那些紅點屬於異常值。所以須要在後續的級聯結構中提升閾值去除噪聲干擾。 但前面提到提升閾值會減小正樣本的數量,在前言部分對此給出了感性的解釋,做者又給出了更相信的理論依據。性能
從上圖能夠看到在1st stage中大於0.5的部分,與2st stage中大於0.6的部分,還有3st stage中大於0.7的部分在數量上基本一致。而Figure3中的圖(c)的Interative Loss沒有級聯結構,該結構使用了不一樣閾值分類,而後融合多個結果進行分類推理,並且只取了一個結果作邊界框迴歸。做者指出,Figure4的1st stage部分能夠看出,當IOU越高,proposal佔的比重越小,所以Interative Loss的結構不能從根本上克服過擬合的現象。測試
做者提出的級聯結構在Figure 3的(d)中已經給出,做者採用的結構是一個RPN網絡加上3個檢測器(閾值分別爲0.5/0.6/0.7)。在這三個級聯檢測器中,每一個檢測器的輸入都是上一層檢測器邊界框迴歸以後的結果。 在COCO數據集上實驗結果以下:優化
做者的方法效果仍是很驚豔的,做者也比較了網絡的耗時 能夠看到使用級聯雖然在必定程度上增長了參數,但對效率的影響還在能夠接受的範圍。目標檢測與分類任務很大的不一樣就在於數據集的樣本沒有明確的區分正負樣本,在檢測任務中是經過設置IOU的值區分正負樣本,這就涉及到一個調參的問題,能夠想象做者在調IOU參數作對比實驗時時所受的折磨。做者作的對比實驗中,也比較了一些關於優化IOU參數前人作的結構調整,Cascade R-CNN所提的方法,在前人的基礎上更進了一步,作的理論分析也十分的合理。cdn
最後打個廣告:歡迎關注個人掘金帳號和我的博客沖弱's Blog。