1. 程式人生 > 其它 >經典論文系列 | 目標檢測--CornerNet & 又名 anchor boxes的缺陷

經典論文系列 | 目標檢測--CornerNet & 又名 anchor boxes的缺陷

前言:

目標檢測的預測框經過了滑動視窗、selective search、RPN、anchor based等一系列生成方法的發展,到18年開始,開始流行anchor free系列,CornerNet算不上第一篇anchor free的論文,但anchor freee的流行卻是從CornerNet開始的,其中體現的一些思想仍值得學習。

看過公眾號以往論文解讀文章的讀者應該能感覺到,以往論文解讀中會有不少我自己的話來表述,文章寫得也很簡練。但這篇論文的寫作實在很好,以至於這篇解讀文章幾乎就是對論文的翻譯,幾乎沒有改動。

論文提出了CornerNet,這是一種新的目標檢測方法,我們使用單個卷積神經網路將物件邊界框檢測為一對關鍵點,即左上角和右下角。通過將物件檢測為成對的關鍵點,我們無需設計一組在先前單級檢測器中常用的錨框。除了我們的新正規化外,我們還引入了corner pooling,這是一種新型的池化層,可幫助網路更好地定位角點。

實驗表明,CornerNet在MS COCO上實現了42.1%的AP,優於所有現有的單級檢測器。

論文:https://arxiv.org/abs/1808.01244v2

程式碼:https://github.com/umichvl/CornerNet

關注公眾號CV技術指南,及時獲取更多計算機視覺的內容。

論文出發點|anchor box的缺陷

目標檢測中SOTA模型中一個常見組成部分是錨框,它是各種大小和縱橫比的框,用作檢測候選框。Anchor box廣泛應用於one-stage檢測器中,可以在效率更高的情況下獲得與two-stages檢測器極具競爭力的結果。one-stage檢測器將錨框密集地放置在影象上,並通過對錨框進行評分並通過迴歸細化其座標來生成最終的框預測。

但是使用錨框有兩個缺點。

首先,我們通常需要一組非常大的錨框,例如在DSSD中超過40k,在RetinaNet中超過100k。這是因為檢測器被訓練來對每個錨框是否與一個ground truth框充分重疊進行分類,並且需要大量的anchor box來確保與大多數ground truth框有足夠的重疊。結果,只有一小部分錨框會與ground truth重疊;這會造成正負錨框之間的巨大不平衡並減慢訓練速度。

其次,錨框的使用引入了許多超引數和設計選擇。這些包括多少個box、多大scale和多大aspect ratios。這種選擇主要是通過臨時啟發式進行的,當與多尺度體系結構相結合時會變得更加複雜,多尺度體系即單個網路在多個解析度下進行單獨預測,每個尺度使用不同的特徵和自己的一組錨框。

methods

受到Newell等人提出的關聯嵌入方法的啟發。誰在多人人體姿勢估計的背景下檢測和分組關鍵點。論文提出了CornerNet,這是一種新的one-stage目標檢測方法,無需錨框。

我們將一個物件檢測為一對關鍵點——邊界框的左上角和右下角。我們使用單個卷積網路來預測同一物件類別的所有例項的左上角的熱圖、所有右下角的熱圖以及每個檢測到的角的嵌入向量。嵌入用於對屬於同一物件的一對角進行分組——網路經過訓練以預測它們的相似嵌入。

這種方法極大地簡化了網路的輸出並消除了設計錨框的需要。

下圖說明了方法的整體流程

CornerNet的另一個新穎元件是corner pooling,這是一種新型的池化層,可幫助卷積網路更好地定位邊界框的角點。邊界框的角通常在物件之外——考慮圓形的情況以及下面圖(中)示例。

在這種情況下,不能基於區域性證據來定位角。相反,要確定畫素位置是否有左上角,我們需要水平向右看物件的最上邊界,垂直向下看最左邊界。基於這一點,我們提出了corner pooling。

它輸入兩個特徵圖;在每個畫素位置,它最大池化第一個特徵圖右側的所有特徵向量,最大池化第二個特徵圖正下方的所有特徵向量,然後將兩個合併的結果加在一起。

我們假設檢測角點比邊界框中心或提案更有效的兩個原因。首先,一個box的中心可能更難定位,因為它取決於目標的所有4個邊,而定位一個角取決於2個邊,因此更容易,對於corner pooling更是如此,它編碼了一些關於角的定義的明確的先驗知識。其次,角提供了一種更有效的方法來密集離散框的空間:我們只需要O(wh)個角來表示O(wh)^2個可能的錨框。

一些細節

整體實現

在CornerNet中,我們將一個物件檢測為一對關鍵點——邊界框的左上角和右下角。卷積網路預測兩組熱圖來表示不同物件類別的角的位置,一組用於左上角,另一組用於右下角。每組熱圖都有C個通道,C為類別數量(不含背景),每個通道是關於一個類別角點位置的二進位制掩碼。

該網路還為每個檢測到的角點預測一個嵌入向量,使得來自同一物件的兩個角點的嵌入之間的距離很小。為了產生更緊密的邊界框,網路還預測偏移量以稍微調整角的位置。使用預測的熱圖、嵌入和偏移量,我們應用一個簡單的後處理演算法來獲得最終的邊界框。

使用沙漏網路作為CornerNet的骨幹網路。沙漏網路之後是兩個預測模組。一個模組用於左上角,而另一個用於右下角。每個模組都有自己的corner pooling模組,用於在預測熱圖、嵌入和偏移之前從沙漏網路中池化特徵。與許多其他目標檢測器不同,我們不使用不同尺度的特徵來檢測不同尺寸的物體。我們只將這兩個模組應用於沙漏網路的輸出。

對於每個Corner,有一個ground truth正位置,所有其他位置都是負位置。在訓練期間,我們不是對負位置進行同等懲罰,而是減少對正位置半徑內的負位置的懲罰。這是因為一對錯誤的角點檢測,如果它們靠近各自的ground truth位置,仍然可以產生一個與ground truth框充分重疊的框。我們通過物件的大小來確定半徑,方法是確保半徑內的一對點將生成一個具有至少t IoU的邊界框,並帶有ground truth標註。

Corners分組

使用“pull”損失訓練網路對角點進行分組,使用“push”損失來分離角點:

Corner Pooling

預測模組

沙漏網路

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

結論

實驗表明,CornerNet在MS COCO上實現了42.1%的AP,優於所有現有的單級檢測器。

Corner Pooling的消融實驗

本文來源於公眾號 CV技術指南 的論文分享系列。

歡迎關注公眾號 CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。

在公眾號中回覆關鍵字“技術總結” 可獲取以下文章的彙總pdf。

其它文章

經典論文系列 | 目標檢測--CornerNet & 又名 anchor boxes的缺陷

如何看待人工智慧的泡沫

使用Dice loss實現清晰的邊界檢測

PVT--無卷積密集預測的多功能backbone

CVPR2021 | 開放世界的目標檢測

Siamese network總結

視覺目標檢測和識別之過去,現在及可能

在做演算法工程師的道路上,你掌握了什麼概念或技術使你感覺自我提升突飛猛進?

計算機視覺專業術語總結(一)構建計算機視覺的知識體系

欠擬合與過擬合技術總結

歸一化方法總結

論文創新的常見思路總結

CV方向的高效閱讀英文文獻方法總結

計算機視覺中的小樣本學習綜述

知識蒸餾的簡要概述

優化OpenCV視訊的讀取速度

NMS總結

損失函式技術總結

注意力機制技術總結

特徵金字塔技術總結

池化技術總結

資料增強方法總結

CNN結構演變總結(一)經典模型

CNN結構演變總結(二)輕量化模型

CNN結構演變總結(三)設計原則

如何看待計算機視覺未來的走向

CNN視覺化技術總結(一)特徵圖視覺化

CNN視覺化技術總結(二)卷積核可視化

CNN視覺化技術總結(三)類視覺化

CNN視覺化技術總結(四)視覺化工具與專案