CornerNet-Lite:CornerNet粗暴優化,加速6倍還提點了 | BMVC 2020

論文對CornerNet進行了性能優化,提出了CornerNet-Saccade和CornerNet-Squeeze兩個優化的CornerNet變種,優化的手段具有很高的針對性和局限性,不過依然有很多可以學習的地方

來源:曉飛的算法工程筆記 公眾號

論文: CornerNet-Lite: Efficient Keypoint-BasedObject Detection

Introduction


  CornerNet作為Keypoint-based目標檢測算法中的經典方法,雖然有着不錯的準確率,但其推理很慢,大約需要1.1s/張。雖然可以簡單地縮小輸入圖片的尺寸來加速推理,但這會極大地降低其準確率,性能比YOLOv3要差很多。為此,論文提出了兩種輕量級的CornerNet變種:

  • CornerNet-Saccade:該變種主要通過降低需要處理的像素數量來達到加速的目的,首先通過縮小的圖片來獲取初步的目標位置,然後根據目標位置截取附近小範圍的圖片區域來進行目標的檢測,準確率和速度分別可達到43.2%AP以及190ms/張。
  • CornerNet-Squeeze:該變種主要通過降低每個像素的處理次數來達到加速的目的,將SqueezeNet和MobileNets的思想融入hourglass提出新的主幹網絡,準確率和速度分別可達到34.4%AP以及30ms/張。

  論文也嘗試了將兩種變種進行結合,但發現性能反而更差了,主要由於CornerNet-Saccade需要強大的主幹網絡來生成足夠準確的特徵圖,而CornerNet-Squeeze則是減弱了主幹網絡的表達能力進行加速,所以兩者的結合沒有達到更好的效果。

CornerNet-Saccade


  CornerNet-Saccade在可能出現目標的位置的小區域內進行目標檢測,首先通過縮小的完整圖片預測attention特徵圖,獲得初步的預測框位置以及尺寸,然後在高分辨率圖片上截取以該位置為中心的圖片區域進行目標檢測。

Estimating Object Locations

  CornerNet-Saccade首先獲取可能出現目標的初步位置及其尺寸:

  • 將輸入的圖片縮小至長邊為255像素和192像素兩種尺寸,小圖進行零填充,使其能同時輸入到網絡中進行計算。
  • 對於縮小的圖片,預測3個attention特徵圖,分別用於小目標(長邊<32像素)、中目標(32像素<=長邊<=96像素)和大目標(長邊>96像素)的位置預測,這樣的區分能夠幫助判斷是否需要對其位置區域進行放大,對於小目標需要放大更大,下一部分會提到。
  • Attention特徵圖來源於hourglass上採樣部分的不同模塊,尺寸較大的模塊特徵圖輸出用於更小的目標檢測(主幹網絡結構後面會介紹),對每個模塊輸出的特徵圖使用$3\times 3Conv-ReLU模塊接$1\times 1Conv-Sigmoid模塊生成Attention特徵圖。

  在測試階段,我們僅處理置信度大於閾值t=0.3預測位置,而在訓練階段,將GT的中心在對應特徵圖上的位置設為正樣本,其它設為負樣本,使用\alpha=2的focal loss進行訓練。

Detecting Objects


  基於初步的預測框位置和尺寸,CornerNet-Saccade對縮小的原圖進行放大後截取以該位置為中心的$255\times 255的區域進行目標檢測。放大主要是為了保證目標足夠清晰,根據預測框的初步尺寸對縮小的原圖先進行放大,放大比例為s_s=4>s_m=2>s_l=1$。後續對截取區域的檢測使用同樣的hourglass網絡,最後合併所有的檢測結果進行Soft-NMS過濾。檢測網絡的訓練和預測方法跟原版CornerNet一樣,結合角點熱圖、embeddings向量以及偏移值。

  這裡有一些如圖3所示的特殊情況需要特別處理:

  • 如果檢測結果出現在截取區域的邊緣,需要將其去掉,因為該截圖區域很可能至包含了目標的一部分。
  • 如果目標挨得很近,兩者的截取區域會高度重疊,網絡很可能產生高度重疊的重複結果。為此,採用類似NMS方法來處理各尺寸預測結果中過近的預測位置,從而提高效率。

  另外,為了讓檢測過程更加高效,論文也進行了以下細節的實現:

  • 批量進行截取區域的獲取
  • 將原圖保存在GPU內存中,並且直接在GPU進行原圖的放大以及截取
  • 批量進行截取區域的檢測

Backbone Network

  論文設計新的主幹網絡Hourglass-54,比原CornerNet使用的Hourglass-104包含更少參數且層數更少。Hourglass-54總層數為54層,包含3個hourglass模塊,在第一個模塊前先下採樣兩次。每個模塊下採樣三次並逐步增加維度(384, 384, 512),每個模塊中間包含一個512維的殘差模塊,每個上採樣層後面接一個殘差模塊。

CornerNet-Squeeze


  在CornerNet中,大多數的計算時間花在主幹網絡Hourglass-104的推理。為此,CornerNet-Squeeze結合SqueezeNet和MobileNet來減少Hourglass-104的複雜度,設計了一個新的輕量級hourglass網絡。
  SqueezeNet的核心在於fire模塊,首先通過包含$1\times 1卷積的squeeze層降低輸入特徵的維度,然後通過包含$1\times 1卷積和$3\times 3卷積的expand層提取特徵。MobileNet則採用$3\times 3深度分離卷積替換標準的$3\times 3$卷積,能夠有效地減少網絡的參數。

  新的模塊如表1所示,除了替換殘差模塊,新主幹網絡還做了以下的修改:

  • 為了降低hourglass模塊的最大特徵圖,在第一個hourglass模塊前增加一個下採樣模層。對應地,去除每個hourglass模塊的一個下採樣層。
  • 將預測模塊的$3\times 3卷積替換為$1\times 1卷積。
  • 將最近的相鄰上採樣層替換為$4\times 4$的反卷積。

Experiments


  CornerNet-Saccade對比實驗。

  CornerNet-Squeeze對比實驗。

  目標檢測的性能對比。

Conclusion


  論文對CornerNet進行了性能優化,提出了CornerNet-Saccade和CornerNet-Squeeze兩個優化的CornerNet變種,優化的手段具有很高的針對性和局限性,不過依然有很多可以學習的地方。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】

work-life balance.