您現在的位置是:首頁 > 棋牌

角網路——目標檢測(文後有paper地址及原始碼)

  • 由 酷扯兒 發表于 棋牌
  • 2023-01-19
簡介新方法受到Newell等人在多人姿態估計上下文中關聯嵌入的啟發,下圖說明了新方法的整體流程:CornerNet的另一個新穎元件是corner pooling,一種新的池化層方式,可幫助卷積網路更好的定位邊界框的角點

角點的定義是什麼

「來源: |計算機視覺研究院 ID:ComputerVisionGzq」

關注並星標

從此不迷路

計算機視覺研究院

角網路——目標檢測(文後有paper地址及原始碼)

角網路——目標檢測(文後有paper地址及原始碼)

角網路——目標檢測(文後有paper地址及原始碼)

公眾號ID|

ComputerVisionGzq

學習群|

掃碼在主頁獲取加入方式

角網路——目標檢測(文後有paper地址及原始碼)

計算機視覺研究院專欄

作者:Edison_G

今天分享的技術提出了一種新目標檢測方法,用單個卷積網路將目標邊界框檢測為一對關鍵點(即邊界框的左上角和右下角)。透過將目標檢測為成對關鍵點,消除現有的one stage檢測器設計中對一組anchors的需要。除此之外,還引入了

corner pooling

,一種新型的池化層,可以幫助網路更好的定位邊界框的角點。最終

CornerNet

在MS COCO上實現了42。1%的AP,優於所有現有的one stage檢測器。

背景

基於卷積神經網路的目標檢測器已經在各種具有挑戰性的基準測試資料集中有了最新成果。現有技術方法的一個共同組成部分是anchor boxes,包含各種尺寸和寬高比的邊界檢測框,目標檢測的候選框。Anchor boxes廣泛用於one stage檢測器中,它可以獲得與two stage檢測器相當的檢測結果,同時效率更高。

One stage檢測器將anchor boxes密集分佈在影象上,透過對anchor boxes進行評分,並透過迴歸來改進其座標來生成最終的邊界框預測。但anchor boxes的使用有兩個缺點。

通常需要一組非常多的anchor boxes,比如在DSSD中超過4萬個,在RetinaNet中超過10多萬個, 這是因為訓練器被訓練以分類每個anchor boxes是否與ground truth充分重疊,並且需要大量anchor boxes以確保與大多數ground truth充分重疊。結果,只有一小部分anchor boxes與ground truth重疊; 這在正負樣本之間造成了巨大的不平衡,減慢了訓練速度;

Anchor boxes的使用引入了許多超引數和設計選擇。這些選擇主要是透過ad-hoc啟發式方法進行的,並且當與多尺度架構相結合時可能會變得更加複雜,其中單個網路在多個解析度下進行單獨預測,每個尺度使用不同的特徵和它自己的一組anchor boxes。

新技術亮點

今天要分享的CornerNet,這是一種新的one stage目標檢測方法,可以消除anchor boxes。,將一個目標物體檢測為一對關鍵點(即:邊界框的左上角和右下角),使用單個卷積網路來預測同一物體類別的所有例項的左上角的熱圖,所有右下角的熱圖,以及每個檢測到的角點的嵌入向量。

嵌入用於對屬於同一目標的一對角點進行分組——訓練網路以預測它們的類似嵌入。我們的方法極大地簡化了網路的輸出,並且無需設計anchor boxes。新方法受到Newell等人在多人姿態估計上下文中關聯嵌入的啟發,下圖說明了新方法的整體流程:

角網路——目標檢測(文後有paper地址及原始碼)

CornerNet

的另一個新穎元件是

corner pooling

,一種新的池化層方式,可幫助卷積網路更好的定位邊界框的角點。邊界框的一角通常在目標之外,參考圓形的情況以及下圖的例子。

角網路——目標檢測(文後有paper地址及原始碼)

如上圖這種情況,角點不能根據當前的資訊進行定位。相反,為了確定畫素位置是否有左上角,需要水平地向右看目標的最上面邊界,垂直地向底部看物體的最左邊邊界。

這就激發了新方法的corner pooling layer:它包含兩個特徵圖;在每個畫素位置,它最大池化從第一個特徵對映到右側的所有特徵向量,最大池化從第二個特徵對映下面的所有特徵向量,然後將兩個池化結果一起新增,如下圖所示:

角網路——目標檢測(文後有paper地址及原始碼)

動機

假設了兩個原因,為什麼檢測角點會比檢測邊界框中心或proposals好?

邊界框的中心可能更難以定位,因為它取決於目標的所有4個邊,而定位角取決於2邊,因此更容易,甚至更多的corner pooling,它編碼一些明確的關於角點定義的先驗資訊;

角點提供了一種更有效的方式來密集地離散邊界框的空間,只需要用O(wh)角點來表示O(w^2*h^2)可能的anchor boxes。

新方法證明了CornerNet對MS COCO資料集的有效性。CornerNet實現了42。1%的AP,優於所有現有的one-stage檢測器。此外,透過ablation studies,發現Corner pooling對於CornerNet的卓越效能起到至關重要的作用。

相關技術

Two-stage目標檢測器

Two-stage目標檢測由

R-CNN

首次引入並推廣。Two-stage檢測器生成一組稀疏的感興趣區域(RoIs),並透過網路對每個區域進行分類。R-CNN使用低層次視覺演算法生成(RoIs),然後從影象中提取每個區域,由ConvNet獨立處理,這將導致大量計算冗餘。

後來

SPP-Net

和Fast R-CNN改進了R-CNN,設計了一個特殊的池化層(金字塔池化),將每個區域從feature map中池化。然而,兩者仍然依賴於單獨的proposals演算法,不能進行端到端訓練。

Faster-RCNN

透過引入區域生成網路(RPN)來去除低層次的proposals演算法,RPN從一組預先確定的候選框中生成proposals。這不僅使檢測器更加高效,透過RPN與檢測網路的聯合訓練,可實現端到端訓練。

R-FCN

將全連線子檢測網路替換為完全卷積子檢測網路,進一步提高了Faster R-CNN的檢測效率。其他的工作主要集中在結合子類別資訊,用更多的上下文資訊在多個尺度上生成目標的proposals,選擇更好的特徵,提高速度,並行處理和更好的訓練過程。

One-stage目標檢測器

YOLO

S

SD

推廣了one-stage方法,該方法消除了RoI池化步驟,並在單個網路中檢測目標。

One-stage檢測器通常比two-stage檢測器計算效率更高,同時在不同的具有挑戰性的基準上保持著具有競爭性的效能。SSD演算法將anchor boxes密集地放置在多個尺度的feature maps之上,直接對每個anchor boxes進行分類和細化。YOLO直接從影象中預測邊界框座標,後來在

YOLO V2

中,透過使用anchor boxes進行了改進。

DSSD

RON

採用了類似沙漏的網路,使它們能夠透過跳躍連線將低階和高階特性結合起來,從而更準確地預測邊界框。

RetinaNet

出現之前,這些one-stage檢測器的檢測精度仍然落後於two-stage檢測器。在RetinaNet中,作者認為密集的anchor boxes在訓練中造成了正樣本和負樣本之間的巨大不平衡。這種不平衡導致訓練效率低下,從而導致結果不佳,他們提出了一種新的loss——

Focal Loss

,來動態調整每個anchor boxes的權重,並說明了他們的one-stage檢測器檢測效能優於two-stage檢測器。

RefineDet

建議對anchor boxes進行過濾,以減少負樣本的數量,並對anchor boxes進行粗略的調整。

DeNet

是一種two-stage檢測器,不使用anchor boxes就能生成RoIs。它首先確定每個位置屬於邊界框的左上角、右上角、左下角或右下角的可能性。然後,它透過列舉所有可能的角點組合來生成RoI,並遵循標準的two-stage方法對每個RoI進行分類。

新提出的方法和DeNet很不一樣。首先,DeNet不識別兩個角是否來自同一目標,並依賴子檢測網路來拒絕糟糕的RoI。相比之下,新方法是一種one-stage方法,使用單個卷積網路來檢測和分組角點。其次,DeNet在人工確定的位置上的區域提取特徵進行分類,而新方法不需要任何特徵選擇步驟。然後,引入corner pooling,一種新型的用於增強角點檢測的layer。

新方法受到Newell等人在多人姿態估計上下文中關聯嵌入的啟發。Newell等人提出了一種在單個網路中檢測和分組人類關節的方法。在他們的方法中,每個檢測到的人類關節都有一個嵌入向量。這些關節是根據它們嵌入的距離來分組的。

本次新技術是第一個將目標檢測任務定義為同時檢測和分組角點的任務,另一個新穎之處在於corner pooling layer,它有助於更好定位角點,還對沙漏結構進行了顯著地修改,並添加了新的focal loss的變體,以幫助更好地訓練網路。

新演算法框架愛

下圖提供了CornerNet的概述。使用沙漏網路作為CornerNet的骨幹網路。沙漏網路之後是兩個預測模組:一個模組用於左上角,另一個模組用於右下角。每個模組都有自己的corner pooling模組,在預測熱圖、嵌入和偏移之前,池化來自沙漏網路的特徵。與許多其他物體探測器不同,不使用不同尺度的特徵來檢測不同大小的物體,只將兩個模組應用於沙漏網路的輸出。

角網路——目標檢測(文後有paper地址及原始碼)

檢測角點

預測兩組熱圖,一組用於左上角,另一組用於右下角。每組熱圖具有C個通道,其中C是分類的數量,並且大小為H×W。沒有背景通道。每個通道都是一個二進位制掩碼,用於表示該類的角點位置。

角網路——目標檢測(文後有paper地址及原始碼)

上圖,用於訓練的“Ground-truth”熱圖。在正位置半徑範圍內(橙色圓圈)的方框(綠色虛線矩形)仍然與地ground-truth(紅色實心矩形)有很大的重疊。

分組角點

影象中可能出現多個目標,因此可能檢測到多個左上角和右下角。需要確定左上角和右下角的一對角點是否來自同一個目標邊界框,新方法受到Newell等人提出的用於多人姿態估計任務的關聯嵌入方法的啟發。Newell等人檢測所有人類關節,併為每個檢測到的關節生成嵌入,他們根據嵌入之間的距離將節點進行分組。

關聯嵌入的思想也適用於今天說的的任務,網路預測每個檢測到的角點的嵌入向量,使得如果左上角和右下角屬於同一個邊界框,則它們的嵌入之間的距離應該小。然後,可以根據左上角和右下角嵌入之間的距離對角點進行分組,嵌入的實際值並不重要,僅使用嵌入之間的距離來對角點進行分組。

Corner Pooling

如第個圖,通常沒有區域性視覺證據表明存在角點。要確定畫素是否為左上角,需要水平地向右看目標的最上面邊界,垂直地向底部看物體的最左邊邊界。因此,提出corner Pooling透過編碼顯式先驗知識來更好地定位角點。

角網路——目標檢測(文後有paper地址及原始碼)

角網路——目標檢測(文後有paper地址及原始碼)

角網路——目標檢測(文後有paper地址及原始碼)

預測模組從一個修改後的殘塊開始,其中將第一個卷積模組替換為corner pooling模組,修改後的殘差塊後面跟著一個卷積模組,新方法有多個分支用於預測熱圖、嵌入和偏移量。

預測模組的結構如上圖所示。模組的第一部分是殘差模組的修改版本。在這個修改後的殘差模組中,將第一個3×3的卷積模組替換為一個corner pooling模組。這個殘差模組,首先透過具有128個通道的2個3×3卷積模組的主幹網路處理特徵,然後應用一個corner pooling層。殘差模組之後,將池化特徵輸入具有256個通道的3×3的Conv-BN層,然後加上反向projection shortcut。修改後的殘塊,後跟一個具有256個通道的3×3的卷積模組,和256個通道的3個Conv-ReLU-Conv層來產生熱圖,嵌入和偏移量。

沙漏網路

CornerNet使用沙漏網路作為其骨幹網路。它是一個全卷積神經網路,由一個或多個沙漏模組組成。沙漏模組首先透過一系列卷積層和最大池化層對輸入特性進行下采樣。然後透過一系列的上取樣和卷積層將特徵上取樣回原來的解析度。由於細節在最大池化層中丟失,因此添加了跳過層用來將細節帶回到上取樣的特徵。沙漏模組在一個統一的結構中捕獲全域性和區域性特徵。當多個沙漏模組堆積在網路中時,沙漏模組可以重新處理特徵以獲取更高級別的資訊。這些特性使沙漏網路成為目標檢測的理想選擇。事實上,許多現有的檢測器已經採用了類似沙漏網路的網路。

新方法的沙漏網路由兩個沙漏組成,對沙漏模組的結構做了一些修改。不使用最大池,而是使用步長2來降低特徵解析度,減少了5倍的特徵解析度,並增加了特徵通道的數量。當對特徵進行上取樣時用了兩個殘差模組,然後是一個最近的相鄰上取樣,每個跳躍連線還包含兩個殘差模組。沙漏模組中間有4個512通道的殘差模組,在沙漏模組之前,使用128個通道7×7的卷積模組,步長為2,4倍減少的影象解析度,後跟一個256個通道,步長為2的殘差塊。

新方法還在訓練時增加了中間監督。但沒有向網路中新增反向中間預測,因為發現這會損害網路的效能,在第一個沙漏模組的輸入和輸出,應用了一個3×3的Conv-BN模組。然後透過元素級的加法合併它們,後跟一個ReLU和一個具有256個通道的殘差塊,然後將其用作第二個沙漏模組的輸入,沙漏網路的深度為104,與許多其他最先進的檢測器不同,只使用整個網路最後一層的特徵來進行預測。

實驗結果

角網路——目標檢測(文後有paper地址及原始碼)

示例邊界框預測覆蓋在角點的預測熱圖上

在MS COCO test-dev上,CornerNet優於其他所有one-stage檢測器

角網路——目標檢測(文後有paper地址及原始碼)

論文連結:https://arxiv。org/abs/1808。01244

程式碼連結:https://github。com/umich-vl/CornerNet

角網路——目標檢測(文後有paper地址及原始碼)

Top