【目標檢測】CornerNet-Lite檢測網絡

前言:

任意目標檢測網絡提高inference效率的兩個方向:

  1. 減少處理的像素數量。
  2. 減少每個像素的處理過程。

CornerNet-Saccade:通過減少處理的像素個數來提高inference的效率。

實現方式:使用注意力機制(attention)消除了對圖像的所有像素進行處理的需要,將cornernet單階段檢測器變爲兩階段檢測器。首先經過一個下采樣後的輸入圖像,生成一個attention map,接着再將進行放大處理,然後進行後續的處理。

一、CornerNet-Saccade

Saccades:(掃視運動),模仿人類視覺眼睛的掃視,這裏是指在推理時選擇性的裁剪和處理圖像區域。

  1. R-CNN系列論文中:saccades機制爲single-type和single-objdet,即產生proposal的時候爲單類型(前景類)、單目標(每個proposal中僅含有一個物體或沒有)。
  2. CornerNet-Saccade中:saccades是single type和multi-objdet(每個裁剪區域中可以含有多個目標物體)。

估計目標位置(Estimating Object Locations)

         CornerNet-Saccade第一階段:通過下采樣圖片預測attention mapscoarse 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區域的目標。

  1. 從Attention maps獲取到粗略中心位置:可以根據物體尺寸選擇放大倍數(小物體放大更多,ss>sm>sl,ss=4,sm=2,sl=1),在每個可能位置(x,y),放大下采樣圖像si倍,i根據物體大小在(s,m,l)中選擇,最後將此時的下采樣圖像映射回原圖,以(x,y)爲中心點取255×255大小爲crop區域。
  2. 從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的三點設計理念:

  1. 將部分3x3卷積核替換爲1x1卷積核;
  2. 削減3x3卷積的輸入通道數;
  3. 延遲下采樣。

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完勝(速度意義不大)。

 

參考文獻:https://www.520mwx.com/view/56903

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章