今年的影像領域的頂會CVPR收錄了不少目標檢測的論文,Cascade R-CNN: Delving into High Quality Object Detection這篇文章關注的是IOU的最優選擇,很小的trick,不過在效果上有不錯的提升。
摘要
目標檢測中,需要確定IOU的閾值來區分正樣本和負樣本。低的閾值如0.5訓練網路,易產生檢測噪聲,但隨著IOU閾值的增加,檢測效能會降低。兩個主要的因素:1)在訓練期間過擬合,導致正樣本指數消失;2)檢測演算法最佳的IOU和假設的IOU之間不匹配。在多階段目標檢測架構中,為了解決以上兩個問題,提出了級聯R-CNN演算法。該演算法由一系列隨著IOU閾值增加而訓練的檢測器組成,循序漸進的對close false positive更具選擇性。檢測器被階段性的訓練,如果檢測器的輸出是一個好的分佈,則用於訓練下一個階段更好的檢測器。對逐漸改進的假設進行重取樣,保證所有的檢測器由一組同等大小的正樣本組成,緩解過擬合問題。在假設階段應用同樣的級聯程式,使得每一個階段的假設和檢測器的質量有一更匹配的效能,級聯R-CNN演算法的簡單實現,在COCO資料集上檢測效能超過了所有單模型物件檢測演算法。實驗還表明,級聯R-CNN可廣泛用於不同的檢測架構,獲得與基準檢測器強度無關的增益。程式碼地址為:github.com/zhaoweicai/…。
方法概述
檢測問題和分類問題有很大的不同,檢測問題要通過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所提的方法,在前人的基礎上更進了一步,做的理論分析也十分的合理。
最後打個廣告:歡迎關注我的掘金賬號和個人部落格沖弱`s Blog。