前言:
任意目標檢測網絡提高inference效率的兩個方向:
- 減少處理的像素數量。
- 減少每個像素的處理過程。
CornerNet-Saccade:通過減少處理的像素個數來提高inference的效率。
實現方式:使用注意力機制(attention)消除了對圖像的所有像素進行處理的需要,將cornernet單階段檢測器變爲兩階段檢測器。首先經過一個下采樣後的輸入圖像,生成一個attention map,接着再將進行放大處理,然後進行後續的處理。
一、CornerNet-Saccade
Saccades:(掃視運動),模仿人類視覺眼睛的掃視,這裏是指在推理時選擇性的裁剪和處理圖像區域。
- R-CNN系列論文中:saccades機制爲single-type和single-objdet,即產生proposal的時候爲單類型(前景類)、單目標(每個proposal中僅含有一個物體或沒有)。
- CornerNet-Saccade中:saccades是single type和multi-objdet(每個裁剪區域中可以含有多個目標物體)。
估計目標位置(Estimating Object Locations)
CornerNet-Saccade第一階段:通過下采樣圖片預測attention maps和coarse bounding box(粗糙邊界框 ),以獲得圖片中物體的位置和粗略尺寸,這種降採樣方式有助於減少推理時間和便於上下文信息獲取。
流程細節:
1、首先將原始圖片縮小到兩種尺寸:長邊爲255或192像素,192填充0像素到255,然後並行處理。
2、經過hourglass-54(由3個hourglass module組成),在hourglass-54的上採樣層預測3個attention maps(分別接一個3×3 Conv-ReLU module和一個1×1 Conv-Sigmoid module),分別用於小(小於32)中(32-96之間)大(大於96)物體預測,預測不同大小尺寸便於後面crop的時候控制尺寸(finer尺度預測小物體,coarser尺度預測大物體),訓練時使用α= 2的focal loss,設置gt bbox的中點爲positive,bbox其餘爲負樣本,測試時大於閾值t=0.3的生成物體中心位置。
檢測目標(Detecting Objects)
Crop區域的獲取:
CornerNet-Saccade第二階段:精細檢測第一階段在原圖(高分辨率下)crop區域的目標。
- 從Attention maps獲取到粗略中心位置:可以根據物體尺寸選擇放大倍數(小物體放大更多,ss>sm>sl,ss=4,sm=2,sl=1),在每個可能位置(x,y),放大下采樣圖像si倍,i根據物體大小在(s,m,l)中選擇,最後將此時的下采樣圖像映射回原圖,以(x,y)爲中心點取255×255大小爲crop區域。
- 從coarse bounding box獲取的位置:可以通過邊界框尺寸決定放大尺寸,比如邊界框的長邊在放大後小物體應該達到24,中物體爲64,大物體爲192。
最終檢測框生成
最終的檢測框通過CornerNet-Saccade第二階段的角點檢測機制生成,與cornernet中完全一致,最後也是通過預測crop區域的corner heatmaps, embeddings and offsets,merge後坐標映射回原圖。
冗餘框消除
算法最後採用soft-nms消除冗餘框,soft-nms無法消除crop區域中與邊界接觸的檢測框,如下圖figure3(這種檢測框框出來的物體是不完整的,並與完整檢測框iou較小,因此需要人工設置邏輯刪除),可以在程序中直接刪除與邊界接觸的框。
精度和效率權衡:
根據分數高低來排列第一階段獲取到的物體位置,取前Top K個區域送入第二階段精檢測網絡,通過設置K的數量平衡精度和效率。
抑制冗餘目標位置:
當物體接近時,如下圖figure4中的紅點和藍點所代表的人,會生成兩個crop區域(紅框和藍框),作者通過類nms處理此類情況,首先通過分數排序位置,然後取分數最大值crop區域,消除與該區域iou較大的區域。
骨幹網絡:
本文提出由3個hourglass module組成的Hourglass-54作爲主幹網絡,相比cornernet的hourglass-104主幹網絡(2個hourglass module)更輕量。下采樣步長爲2,在每個下采樣層跳連接,上採樣層都有一個殘差模塊,每個hourglass module在下采樣部分縮小三倍尺寸同時增加通道數(384,384,512),module中部的512通道也含有一個殘差模塊。
訓練細節:
在4塊1080ti上使用batch size爲48進行訓練,超參數與cornernet相同,loss function優化策略也是adam。
二、CornerNet-Squeeze
CornerNet-Squeeze:通過減少每個像素的處理過程來加速inference,結合SqueezeNet和MobileNet的思想。
PS:在CornerNet-Squeeze基礎上結合Saccades並不會進一步提高其效率。
原因:有Saccade的存在,網絡需要能夠產生足夠的attention map,而CornerNet-squeeze這種超輕量結構沒有這種能力。
前言知識:SqueezeNet的三點設計理念:
- 將部分3x3卷積核替換爲1x1卷積核;
- 削減3x3卷積的輸入通道數;
- 延遲下采樣。
SqueezeNet中使用的fire module囊括了前兩點設計理念。
CornerNet-Squeeze主要操作是:
1)受SqueezeNet啓發,CornerNet-Squeeze將residual block替換爲SqueezeNet中的Fire module。
2)受MobileNet啓發,CornerNet-Squeeze將第二層的3x3標準卷積替換爲3x3深度可分離卷積(depth-wise separable convolution)。
下表是CornerNet-Squeeze中fire module和CornerNet中residual block的詳細比較:
實驗
測試硬件環境爲:1080ti GPU + Intel Core i7-7700k CPU。
表table2對比CornerNet和CornerNet-Saccade訓練效率,可以看出在gpu的內存使用上節省了將近60%。
表table3表明attention maps對於預測準確性的重要性,表3中將預測attention maps用真實的ground truth attention替代,AP值得到很大提升。作者表示,這也說明關於attention maps預測的方面還有改進提升的空間。
表table4爲表明主幹網絡hourglass-54相比hourglass-104的性能提升,以及它對於attention maps預測的意義。
表table5是CornerNet-Squeeze與yolov3對比,可以看出無論是python還是效率更高的C版本yolo都弱於CornerNet-Squeeze
表table6爲CornerNet-Squeeze的消融實驗:
表table7中證明無法將本論文中的兩種網絡機制聯合,原因是CornerNet-Squeeze沒有足夠的能力提供對CornerNet-Saccade貢獻巨大的attention maps的預測。
表table8表明本文中的兩種網絡架構,CornerNet-Squeeze在精度和速度方面對標YOLOv3完勝,CornerNet-Saccade主要在精度方面對標CornerNet完勝(速度意義不大)。