雷鋒網註:本文作者李瑜,中科院計算所前瞻研究實驗室跨媒體組碩博士生,碩士導師唐勝副研究員,博士導師李錦濤研究員。2016年,作為360+MCG-ICT-CAS_DET團隊核心主力參加了ImageNet大規模視覺識別挑戰賽(ILSVRC)的 DET任務並獲得第四名。目標檢測相關工作受邀在ECCV 2016 ImageNet和COCO視覺識別挑戰賽聯合工作組會議上做大會報告。
計算機視覺領域權威評測——ImageNet大規模圖像識別挑戰賽(Large Scale Visual Recognition Challenge)自2010年開始舉辦以來,一直備受關注。2016年,在該比賽的圖像目標檢測任務中,國內隊伍大放異彩,包攬該任務前五名(如圖1所示)。我們將根據前五名參賽隊伍提交的摘要與公開發表的論文或技術文檔,簡析比賽中用到的圖像目標檢測方法。
圖1. ILSVRC2016目標檢測(無額外數據)任務比賽結果
總體上說,參賽隊伍大多採用ResNet/Inception網絡+Faster R-CNN框架,注重網絡的預訓練,改進RPN,並利用Context信息,測試時結合普遍被使用的多尺度測試、水平翻轉、窗口投票等方法,最終融合多個模型得到結果。
下面我們將細數參賽方法中的諸多亮點。
一、利用Context信息
1、GBD-Net
GBD-Net(Gated Bi-Directional CNN)是CUImage團隊的成果,也是今年DET任務中的一大亮點。該方法利用雙向門控的CNN網絡在不同尺度的上下文窗口中選擇性地傳遞信息,以此對context建模。
GBD-Net的研究動機源於對context信息在候選窗口分類過程中起到的作用的仔細分析。首先,Context信息在對窗口分類時能起到關鍵的作用,如圖2(a)(b)所示,圖中的紅框必須結合Context信息才能準確判斷其類別(包括判斷為背景)。所以很多時候,我們可以利用context信息作出如圖1(c)所示的判斷。但是如圖1(d)所示,並不是所有的context信息都能給我們正確的指導,所以context信息需要選擇性的利用。
圖2. GBD-Net的研究動機
基於這一點,CUImage提出了GBD-Net。如圖3所示,GBD-Net採集Context信息的方式與[2][3]一脈相承,直接在目標窗口基礎上放大窗口以獲得更多的context信息,或縮小窗口以保留更多的目標細節,以此得到多個support region,雙向連接的網絡讓不同尺度和解析度的信息在每個support region之間相互傳遞,從而綜合學習到最優的特徵。然而如研究動機中所說,並非所有的上下文信息都能給決策帶來「正能量」,所以在雙向互通的連接上都加了一個「門」,以此控制context信息的相互傳播。GBD-Net在ImageNet DET數據集上,在ResNet-269為基礎網絡,帶來了2.2%的mAP提升。
圖3. GBD-Net框架圖
2、Dilation as context
360+MCG-ICG-CAS_DET團隊將用膨脹卷積獲取context信息的方法遷移至目標檢測任務,將8個膨脹卷積層削減到3層,在ROI pooling前就組織好每個像素點對應的context信息,如圖4,省去了對每個ROI反覆提取context特徵的操作。該方法在VOC07數據集上,以Res50為基礎網絡,能獲得1.5%的提升。
圖4. Dilation as context方法示意圖
3、Global context
2015年提出利用ROI pooling對全圖進行pooling獲取context信息的方法,Hikvision團隊在此基礎上進一步細化,提出了圖5(a)所示的global context方法,在ILSVRC DET驗證集上獲得了3.8%的mAP性能提升。該方法此前的文章中有詳細描述,此處不再贅述。
除了基於ROI pooling的global context方法,CUImage沿用[6]中提到的global context方法,為每個ROI加入全局的分類結果信息,如圖5(b)示。該方法在GBD-net局部context的基礎上又加入了全局的context信息,進一步將mAP提高了1.3%。
圖5. Global context方法示意圖
二、改進分類損失
360+MCG-ICG-CAS_DET團隊提出了兩種改進的softmax損失:將背景類分成若干隱式子類別(Implicit sub-categories for background)、必要時加入sink類別(Sink class when necessary)。
Faster R-CNN中將所有與Ground Truth的IOU大於0.5的窗口當做正樣本,IOU介於0.1~0.4之間的當做背景類別樣本,所以雖然正常目標類別的樣本之間有較大的相似性,但背景類別的樣本之間差異卻非常大,在這種情況下,仍然同等對待目標類別和背景類別對背景類別來說是不公平的。所以背景隱式子類別方法將背景類別分為若干個子類別,想讓更多的參數去描述多變的背景,在softmax之前重新將所有子類別聚合為一個背景類,以避免顯式定義各個子類別的問題(如圖6(a)所示)。
圖6 改進分類損失
另外,由於訓練數據本身的一些衝突性(比如同樣的圖像內容在不同場景下會同時成為正樣本和負樣本,或不同類別的樣本之間非常相似),對於某些窗口,ground truth類別的得分始終不是很高,而其他一些錯誤類別的得分會超過ground truth類別。所以sink方法加入一個sink類,在ground truth得分不在Top-K時,同時優化sink類別和ground truth類別,否則正常優化ground truth類別。以此將那些錯誤類別上的得分引流到sink類別上,使得在對窗口分類時,即使ground truth類別得分不是特別高,仍然可以高於其他類別,如圖6(b)所示。
三、改進RPN
CUImage和Hikvision都提出改進RPN,並且兩者的改進策略都源於CRAFT(如圖7所示),在RPN之後再連接一個二分類的Fast R-CNN,進一步減少窗口數量並提高定位精度。
圖7 CRAFT
CUImage進一步將CRAFT升級為CRAFT-v3,訓練過程加入隨機crop,測試中採取多尺度策略,並且平衡正負樣本比例,用2個模型進行融合,將ILSVRC DET val2上的recall@300 proposal提升到95.3%。
Hikvision則是直接按照box refinement的思想,直接在RPN網絡基礎上進行一次級聯,如圖8所示。同時他們注意到,Faster R-CNN在理想情況下希望PRN的正負樣本比是1:1,而實際運行中,正樣本數量往往較少,使得正負樣本比差異較大,所以將正負樣本比強制限制在不超過1:1.5後,recall提升3%。
圖8 級聯的RPN
四、網絡選擇與訓練技巧
自ILSVRC2015後,ResNet和後續的Inception v4,Identity mapping由於其強大的分類性能,被廣泛使用到目標檢測、場景分割等應用中。不同的網絡通常能收斂到不同的極值點,這種網絡差異性是模型融合獲得較大提升的關鍵。CUImage、Hikvision、Trimps Soushen、360+MCG-ICT-CAS_DET、NUIST都用不同的基礎網絡訓練了多個模型用於融合。
在訓練目標檢測模型之前,具有針對性的模型預訓練通常可以使得最後訓練的目標檢測模型能收斂到更優的位置。Hikvision提到在初始化global context的分支時使用預訓練的模型效果遠遠好於隨機初始化。另外,他們用ILSVRC LOC的數據首先在1000個類別上預訓練一個精細分類的目標檢測模型,再遷移到DET數據上訓練200類的模型。CUImage同樣提到模型預訓練的重要性。他們在1000類Image-centric方式訓練分類網絡後,又採取基於ROI-Pooling的Object-centric方式訓練分類網絡,預訓練網絡使最終目標檢測模型的mAP提升約1%。
此外,Hikvision提出在訓練過程中強制平衡正負樣本比會產生積極的影響。OHEM、多尺度訓練等技巧都是簡單有效的提高mAP的方式。
五、測試技巧
測試過程中可採用的技巧很多,會對最終目標檢測結果起到錦上添花的作用。多尺度測試、水平翻轉、窗口微調與多窗口投票、多模型融合、NMS閾值調整、多模型融合等方法被廣泛使用,並經過普遍驗證證明了其有效性。
Trimps Soushen、360+MCG-ICT-CAS_DET採用了Feature Maxout的方法融入多尺度測試,儘量讓每個窗口都縮放到接近224x224的尺度上進行測試,充分利用預訓練網絡的性能。窗口微調與多窗口投票(box refinement and box voting)方法首先利用Fast R-CNN系列框架中對窗口進行回歸的這個過程,反覆迭代,然後用所有窗口投票,決定最終的目標類別與位置。在往年比賽中很少提到目標檢測如何進行模型融合,ILSVRC2016中,CUImage、Hikvision、Trimps Soushen、360+MCG-ICT-CAS_DET都採用了幾乎一致的融合策略,即先用一個或多個模型的RPN網絡產生固定的ROI,再把這些ROI經過不同模型得到的分類和回歸結果相加,得到最終的融合結果。經過多種融合方法的實驗,分數相加的方式能獲得較好的融合性能。
總結
本文對2016年ILSVRC DET任務中用到的方法進行了概括性的歸納和介紹。目標檢測系統步驟甚多,過程繁瑣,其中的每一個細節都非常重要。研究過程中,在把握整體結構的同時,如何處理好重要的細節會成為一種方法是否有效的關鍵。