本文將講述筆者對目標檢測anchor-free方法CenterNet的理解。

原文arxiv:

github:

在講CenterNet之前,我們先看一下目標檢測目前的發展情況:

PaperReadingGroup-10-CenterNet之理解

圖取自Xiongwei Wu et al。, 2019對目標檢測問題的綜述,其中,綠色箭頭表示主幹網路採用AutoML方法得到的,紅色箭頭表示anchor-free方法。

我們可以看到,檢測問題的發展方向便是這般:主幹網路開始使用AutoML,而anchor-free的發展也是越來越勝。

以筆者淺見,AutoML + anchor-free必然是目標檢測的發展趨勢,因為它很符合深度學習的發展哲學:摒棄更多的人為先驗知識,讓模型最大化地自主學習。

此外,anchor-free還具有:(1)降低調節超參工作量;(2)拋棄或簡單化後處理過程,等等優勢。所以,筆者認為,anchor-free必將取代傳統anchor方法。

下面具體講述CenterNet是如何實現anchor-free的。

1、輸入輸出

PaperReadingGroup-10-CenterNet之理解

如圖所示,假設一個CenterNet模型要檢測C個類別的目標,它的輸入是一張 512 x 512 的影象,影象經過一個有著4倍下采樣的CNN網路,將輸出C + 2 + 2 個128 x 128 的map,其中C張各類別中心點的熱力圖,2張目標bounding box的圖(一張圖中每個畫素點記錄寬,一張記錄高),2張目標中心點x,y方向的偏置量(偏置量具體為何,後文會詳細講到)。

輸出更直觀的展示如下圖:

PaperReadingGroup-10-CenterNet之理解

括號裡的C、2、2表示該型別的圖的張數

2、訓練過程

CenterNet的loss由三部分加權組成:中心點熱力圖的loss、寬高loss、中心點偏置loss:

PaperReadingGroup-10-CenterNet之理解

我們一個個來看。

(1)中心點熱力圖loss

PaperReadingGroup-10-CenterNet之理解

這是一個變型版的focal loss,式中,Y是ground truth標籤,戴了個小帽子的Y是輸出的標籤。

(1-\hat{Y}_{xyc})^{\alpha}

(\hat{Y}_{xyc})^{\alpha}

項是為了給簡單樣本的loss取一個較小的權重,

(1-Y_{xyc})^{\beta}

項是為了給過多負樣本的loss取一個較小的權重。

而中心點熱力圖的ground truth map則是如下形式:

PaperReadingGroup-10-CenterNet之理解

每個類別的目標中心點熱力圖的ground truth map是這樣做出來的:目標中心點處的畫素值為1,然後用高斯濾波器處理一下,讓這個ground truth更平滑一些,其中模糊核的大小是跟目標尺寸有關的。

(2)寬高loss

PaperReadingGroup-10-CenterNet之理解

這是一個用於迴歸的L1 loss,文中用於迴歸每個關鍵點對應目標的寬和高。值得注意的是,不同於一般目標檢測的迴歸做法(對bbox做歸一化以及具有encode及decode過程),該回歸是直接簡單粗暴地迴歸目標寬、高的畫素值,所以算總loss時,要個這個寬高loss一個較小的權重,文中取的是0。1。

(3)中心點偏置loss

PaperReadingGroup-10-CenterNet之理解

在講這個loss之前,我們先搞清楚為什麼要有這個loss,或者說:為什麼會有中心點的偏置?

以下面這幅圖為例:

PaperReadingGroup-10-CenterNet之理解

本來,在 512 x 512 的原圖上,中心點座標是(3, 4。5),經過4倍下采樣後,中心點實際座標應該是(0。75, 1。375),但在中心點熱力圖中,只能以(1, 1)處這個位置作為近似的中心點,所以便有了這個偏置loss來修正這個小誤差。

分析了各個loss,CenterNet的訓練過程便可清楚了。

3、預測過程

當最終模型輸出一系列中心點熱力圖後,還需要對熱力圖裡的值進行一輪篩選,這類似於有anchor的nms過程,不過沒有nms繁瑣,文中提出的方法如下:

(1)用一個 3 x 3的 max pooling提取出區域性峰值;

(2)取top 100 區域性峰值;

(3)閾值過濾,文章中是過濾掉低於0。3的值。

如此,中心點便被篩選出來了,形象一點的過程如下圖:

PaperReadingGroup-10-CenterNet之理解

4、主幹網路

最後,我們來看看CenterNet的主幹網路:

PaperReadingGroup-10-CenterNet之理解

圖中(a)為常用於關鍵點檢測的沙漏網路,(b)為有上取樣過程的resNet18網路,(c)為常用於分割問題的DLA-34網路。圖中方框中的數字表示上\下采樣倍數,虛線表示用了v2版的可變形卷積。

其實,透過前面的敘述我們不難看出,CenterNet的總體思路實際上十分類似於關鍵點檢測問題和分割問題,所以主幹網路也會採用關鍵點\分割來做。

當然,現在也有大神開始對它進行輕量級主幹網路的替換了,比如下面連結中的工作:

小結一下:筆者認為anchor-free是目標檢測問題的發展趨勢,而CenterNet是一個優秀的嘗試。此外,由於CenterNet本身的特性,它不僅能解決傳統的目標檢測問題,還能解決3D目標檢測問題及人體姿態估計問題,總之,頗具潛力。