CornerNet-Lite論文筆記

論文鏈接:https://arxiv.org/pdf/1904.08900.pdf
代碼鏈接:https://github.com/princeton-vl/CornerNet-Lite

CornerNet

關於CornerNet論文解讀在這裏:https://blog.csdn.net/qq_38109843/article/details/89526785
CornerNet主要思路是基於關鍵點檢測,不需要anchor boxes。CornerNet在單階段檢測器中的性能是state of art的,但是需要大量的預處理才能得到較高的準確率,消耗較多的計算資源。

CornerNet-Lite

任何一個目標檢測器的效率都可以從 2 個方向去改進:(1) 降低要處理像素的數量,(2) 減少每個像素點上要處理的步驟。我們對這兩個方向都進行了探索,提出了 CornerNet 的兩個變體:CornerNet-Squeeze, CornerNet-Saccade,統稱爲 CornerNet-Lite。

CornerNet-Saccade,基於attention機制,從而並不需要對圖片中的每個像素做處理。另一個是CornerNet-Squeeze,引入了更加緊湊的主幹網絡。CornerNet 的這倆變體解決了目標檢測領域的兩個問題:提升速度而不犧牲準確率,提升準確性而不犧牲速度。CornerNet-Saccade 可以用於線下處理,將 CornerNet 的速度提升 6 倍,將 COCO 上的 AP 值提升1.0 1.0%1.0。CornerNet-Squeeze 適合用於實時檢測,提升 YOLOv3 的準確率和速度(CornerNet-Squeenze 的 COCO AP 值是34.4,速度是34ms,而 YOLOv3 的 COCO AP 值是33.0,速度是39ms)。

在這裏插入圖片描述
CornerNet-Saccade通過減少像素的個數來加速前向速度,使用注意力機制,首先縮小一幅圖像,產生一個attention map,再進行放大和後續處理,原始的CornerNet在多個尺度上進行全卷積操作,而CornerNet-Saccade選取若干個分辨率的裁剪區域來檢測,在COCO數據集上達到43.2的AP,速度是190ms一張圖片,相比於原來速度提升了6倍。

CornerNet-Squeeze 減少每個像素點上需要處理的步驟,以此來加速前向,它融合了 SqueezeNet 和MobileNet 的思想,引入了一個緊湊的主幹網絡,這個主幹網絡中大量使用了 1×1的卷積,bottleneck層,以及深度可分離卷積。有了新的主幹網絡,CornerNet-Squeeze 在 COCO上的AP是34.4,速度是30ms每張圖片。

是否能將CornerNet-Squeeze和Saccade網絡結合起來使用?實驗證明不太行,CornerNet-Squeeze-Saccade速度和準確率都要比 CornerNet-Squeeze差。原因在於,使用Saccade,網絡應當產生足夠準確的attention maps,但是Squeeze模型的主幹網絡過於緊湊,不具備這樣的能力。此外,原來的CornerNet應用在多個不同尺度的圖像上,有足夠的冗餘像素來進行Saccade操作,但是CornerNet-Squeeze由於推理成本的限制,只能用在單尺度上,可供Saccade 操作的空間就很小。

Related Work

Saccades 是指一系列的眼球快速運動,然後關注在不同的圖像區域上。在目標檢測算法中這個詞主要意思就是在前向推理中,選擇性地裁剪並處理不同的圖像區域(連續或並行,像素點或特徵)。在R-CNN, Fast R-CNN, Faster R-CNN 中,Saccdes 就是每個裁剪區域所代表的可能物體。處理完後,通過分類和迴歸操作,每個裁剪區域要麼被丟掉,要麼成爲一個帶標籤的邊框。Cascade R-CNN 擴展了 Faster R-CNN,通過一組分類器和迴歸器丟掉或修正候選框。這些基於 R-CNN 的方法都是“單類型”和“單目標”檢測器,因爲裁剪區域的類型只有一個,每個裁剪區域最多隻有一個目標物體。

AutoFocus 基於SNIPER 改進了 R-CNN 訓練,在 Faster R-CNN 裏增加了一個分支,預測那些可能包含小物體的區域。然後再進行裁剪,對每個裁剪區域都使用 Faster R-CNN。在 AutoFOcus中,有兩種裁剪方式,一個是輸出多個物體(調用 Faster R-CNN),另一個是輸出至多一個物體(在Faster R-CNN中進行裁剪)。AutoFocus 中的Saccades 因此是“多類型”和“混合式”的。

然而,CornerNet-Saccade 中的Saccade 是“單類型”和“多目標”的,因爲它只有一種裁剪處理,每個裁剪區域可以輸出多個物體,而不需要額外的子裁剪。也就是說,CornerNet-Saccade 中裁剪區域的個數會小於目標物體的個數,而 R-CNN 和 AutoFocus 中裁剪區域的個數會和目標物體的個數至少相等。

自 R-CNN 之後,檢測器的速度得到了很大提升。R-CNN 中,對 RoIs 重複應用卷積網絡會帶來許多冗餘的計算。SPP 和 Fast R-CNN 在圖像上進行全卷積操作,在特徵圖上對每個 RoI 直接提取特徵。Faster R-CNN 進一步提升了效率,使用RPN產生候選區域。R-FCN 將全連接子檢測網絡替換爲全卷積網絡。Light-head R-CNN 通過可分離卷積進一步降低了 R-FCN 的計算成本,在 RoI 池化前減少特徵圖的通道數。另一方面,單階段檢測器去除了雙階段檢測器中的區域池化步驟。SqueezeNet 提出了一個 fire module,將 AlexNet 中的參數個數降低了至少 50倍,但是性能類似。MobileNets 使用深度可分離卷積搭建輕量級網絡,並提出了平衡精度和速度的策略。PeleeNet通過引入DenseNet 的變體證明了標準卷積的有效性,DenseNet 的變體由two-way dense layers和stem 模塊組成。也有不少網絡專門爲了實時檢測進行設計。YOLOv2 設計了一個新的VGG變體網絡,參考了 NIN 的想法。YOLOv3 進一步改進了 DarkNet-19,讓網絡變得更深,增加了 skip 連接。RFBNet 提出了一個新的模塊,模仿人眼系統的感受野來蒐集不同尺度的信息。

CornerNet-Saccade

CornerNet-Saccade 在較小的區域範圍內檢測物體。它利用縮小後的圖片來預測 attention maps以及大概的邊框,兩者都能提供物體可能的位置。CornerNet-Saccade然後在高分辨率的圖像中,在位置中心附近區域內檢測物體。它也可以通過調節每張圖片上物體位置的最大個數來平衡精度和速度。
在這裏插入圖片描述

Estimating Object Locations

CornerNet-Saccade 的第一步就是獲取圖像中可能的物體位置。使用縮小的圖像預測 attention maps,它能指出物體的位置以及物體大致的尺寸。給定輸入圖像,我們將圖像縮小至長邊爲 255 像素或者192 像素。對於長邊爲192像素的圖像,在邊緣位置填充0,使得它的大小能到255像素,這樣它們就可以並行處理。使用這樣的低分辨率圖有2個原因:首先,這一步不應該成爲前向推理時的瓶頸;其次,網絡應該很容易就可以利用圖像的全局信息預測attention maps。

對每一個縮小後的圖片,CornerNet-Saccade預測3個attention maps,一個針對小物體,一個針對中等物體,一個針對大物體。如果一個物體邊框的長邊小於32像素,它就被認爲是小物體,超過96像素的就被認爲是大物體,中間的就是中等物體。對不同大小的物體分開預測位置,讓我們能更好地控制 CornerNet-Saccade 在每個位置應該放大多少。我們在小物體位置可以放大的多一些,在大物體位置可以放大的少一些。

我們利用不同比例的特徵圖來預測attention maps。從CornerNet-Saccade 的主幹網絡中獲取特徵圖。每一個Hourglass 模塊都使用了多個卷積和下采樣層來降低輸入特徵圖的大小。然後再將特徵圖通過多個上採樣層和卷積層上採樣至原始輸入的分辨率。上採樣層輸出的特徵圖用於預測attention maps。尺度較精細的特徵圖用於預測小物體,而尺度較粗糙的用於預測大物體。我們在每個特徵圖上應用一個 3×3卷積-ReLU 模塊,後面跟着一個1×1卷積-Sigmoid 模塊,以此來預測 attention maps。在測試時,僅處理得分高於閾值0.3的位置。

當 CornerNet-Saccade處理縮小後的圖像,它就可能會檢測到圖像中的物體並生成邊框。從縮小後的圖像上獲取的邊框可能不那麼準確。因此,我們需要在高分辨率的圖像上再檢測一次,來獲得更準確的邊框。在訓練時,我們將attention map上每個邊框對應的中心位置設爲正樣本,其餘都爲負樣本,然後再使用Focal Loss。

CornerNet-Saccade 使用縮小後圖像上得到的位置來決定到底在哪個位置進行處理。如果直接在縮小後的圖像上進行裁剪,有一些物體可能就會變得很小,使檢測變得不準確。因此,應該在更高分辨率的圖像上進行檢測。對於從 attention maps 上獲得的位置,對不同的物體大小設置不同的放大比例,對小物體,設置放大比例爲Ss,對中等大小物體,設置放大比例爲Sm,對大物體,設置放大比例爲Sl,三者應該滿足:Ss>Sm>Sl,實際上,Ss=4,Sm=2,Sl=1,在每一個可能的位置(x,y)上,就根據物體大小以相應的放大比例來放大縮小後的圖片,將 CornerNet-Saccade 應用在一個 255×255的窗口上,窗口的中心就是該位置。

從邊框預測得到的位置能給出物體大小的更多信息。我們可以根據邊框的大小來決定放大的比例,這樣對於一個小物體,放大後邊框的長邊是24,中等物體的邊框長邊是64,大物體邊框長邊是192。在每個可能存在物體的位置檢測完畢後,通過Soft-NMS將邊框融合起來,去除多餘的邊框。同時去掉那些觸碰到裁剪區邊界的邊框。訓練時,使用和 CornerNet 中一樣的損失函數來預測角點熱力圖,embeddings和偏移。
在這裏插入圖片描述

Detecting Objects

通過控制每張圖片上物體位置的最大個數,可以平衡效率和準確率。優先處理那些更可能包含物體的位置。因此,當我們得到了物體的位置後,根據它們的得分將它們排序,然後優先處理那些從邊框中得到的位置。給定要處理的最大裁剪個數,在這些位置上進行物體檢測。

當物體之間距離很近時,可能會得到高度重疊的裁剪框。我們並不想把這兩個框都檢測一遍,因爲檢測其中一個框時就可能會檢測到另一個框中的物體,採取了一個類似於 NMS 的方法,去除多餘的位置。首先,我們將目標物體的位置進行排序,優先處理邊框內的位置,然後再處理 attention maps上的位置。保留最佳的物體位置,去除那些距離最佳位置過於近的位置。重複以上操作,直到沒有物體位置剩餘。
在這裏插入圖片描述

Backbone Network

設計了一個新的 Hourglass 主幹網絡,更適合用在 CornerNet-Saccade。新的 Hourglass 網絡由3個 Hourglass 模塊組成,深度是54層,而原 CornerNet 中的 Hourglass-104 由2個 Hourglass 模塊組成,深度是104層。新的主幹網絡稱爲 Hourglass-54。

Hourglass-54 中每一個 Hourglass 模塊的參數量更少,也要更淺。以步長2來縮小特徵圖,在每個下采樣層後面使用了一個殘差模塊。每個 Hourglass 模塊將輸入特徵尺寸降低3倍,增加它的通道數(384,384,512)。在模塊的中間位置有一個512通道的殘差模塊,在每個上採樣層後面有一個殘差模塊。在 Hourglass 模塊之前將圖像的尺寸縮小2倍。

CornerNet-Squeeze

CornerNet-Saccade 是減少要處理像素的數量,而CornerNet-Squeeze 則是研究了一個替換方案,降低每個像素點上要處理的成本。在CornerNet 中,絕大多數的計算資源都耗費在 Hourglass-104 上。Hourglass-104 由殘差模塊組成,每個殘差模塊由 2 個 3×3 的卷積層外加一個 skip 連接構成。儘管 Hourglass-104 獲得了不錯的效果,但是就它的參數數量和前向時間來說,它是非常昂貴的。爲了降低 Hourglass-104的複雜度,引入了 SqueezeNet 和 MobileNet中的思想,設計一個輕量級 Hourglass 架構。

Ideas from SqueezeNet and MobileNets

SqueezeNet 提出了3個降低網絡複雜度的策略:
1、將33的卷積替換爲11的卷積;
2、降低3*3卷積的輸入通道數;
3、將降採樣延後。

SqueezeNet中的fire module封裝了前兩個策略,fire module首先通過由 1×1卷積組成的 squeeze 層降低輸入通道數,然後經過 1×1 和3×3 卷積混合組成的expand層。基於 SqueezeNet 的想法,在 CornerNet-Squeeze 中使用了fire module,沒有用殘差模塊。而且,受 MobileNet 的啓發,我們將第二層中的標準 3×3卷積替換爲 3×3的深度可分離卷積,這進一步加快了推理速度。

在 Hourglass模塊之前增加了一個下采樣層,以此降低 Hourglass模塊特徵圖的最大分辨率,並且在每個Hourglass模塊內去掉了一個下采樣層。CornerNet-Squeeze 在Hourglass模塊前相應地將圖像尺寸縮小了 3 倍,但是 CornerNet 僅將圖像尺寸縮小了 2 倍。在 CornerNet的預測模塊中,將 3×3卷積替換爲 1×1卷積。最後,將Hourglass 網絡中的nearest neighbor上採樣替換爲了 4×4卷積核的反捲積 (transpose convolution)。
在這裏插入圖片描述

實驗

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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