論文 CenterNet: Keypoint Triplets for Object Detection

當前目標檢測領域,基於anchor的檢測是比較流行的,首先生成anchor,然後對其進行分類以及座標偏差迴歸,這種檢測方法是符合直覺的,但是存在一些缺點,比如需要大量的anchors保證以較高的IOU覆蓋所有GT bboxes,而且anchor的size和aspect ratio需要手動精心設計,此外,anchor通常與GT bbox的邊不重合,導致anchor可能只包含部分目標資訊並且可能包含了背景資訊,給分類過程增加了一定的難度。所以,出現了很多anchor free的檢測方法,其中CornerNet作為一種基於keypoint的檢測方法被提了出來,透過檢測目標的一對角點從而定位目標,對角點的預測是分類相關的,所以預測出角點並將一對角點grouping進同一目標,檢測出目標位置的同時也確定了目標的分類。不過CornerNet也存在一些問題,這在ExtremeNet中也簡單說明了。CornerNet之後,也出現了很多工作,對CornerNet進行改進,例如ExtremeNet,還有,這篇論文CenterNet,關於CenterNet的本質,可先直接跳至末尾總結部分獲取CenterNet一句話的概況。

本文作者認為,CornerNet綜合目標整體資訊的能力較弱,因為目標定位僅依賴於對兩個角點的檢測,角點檢測是利用了CornerPooling,比如左上角,則是觀察向右和向下兩個方向,未能綜合目標的整體資訊(即,未考慮目標內部的資訊)。如圖1,檢測出了很多錯誤的bbox,

CenterNet

為了解決CornerNet會出現很多錯誤bbox這一問題,作者對CornerNet進行裝備,使得具有認識proposal region的視覺pattern的能力,從而能確定bounding box是否正確。作者提出的方法名為CenterNet,除了檢測一對角點,還檢測額外一個keypoint:探測proposal的中心塊,即空間bbox幾何中心的區域。直覺告訴我們,如果預測bbox與gt bbox有較高的IOU,那麼 中心keypoint處於預測bbox的中心塊的機率也較高,反之也成立。與corner相同,中心keypoint也是分類相關的。

從上述這段話可見,先檢測出 bbox,然後使用center keypoint進行過濾錯誤的bbox。事實上,作者檢測bbox這一操作與CornerNet中一樣。

測試階段,當透過檢測出top-left 和bottom-right keypoints後,對任意一組 top-left和bottom-right corner,使用embedding和offset,可以得到bbox,以及對應的分類c,那麼這個bbox是否有效還需要作如下檢查:先得到bbox的中心塊,然後使用center keypoint對應的offset將center keypoint同樣映射回原輸入image中去,檢測bbox的中心塊區域是否包含相同分類c的center keypoint,這就表示bbox是否有效。過程如圖1底部,CenterNet使用三個keypoints來表徵目標。

為了更好的檢測center keypoint和corner,作者又利用了:

center pooling,位於center keypoint的預測分支,有助於center keypoint獲得更多的有關目標的易識別的視覺pattern。

cascade corner pooling,這是在原先CornerNet的Corner Pooling基礎上,增加感知目標內部資訊的能力。

這兩種pooling後面會進行詳細介紹,此處可先跳過。

Related Work

目標檢測相關工作回顧這裡就省略,與ExtremeNet中的類似,我們直接討論CenterNet的框架設計。

Baseline和動機

使用CornerNet作為baseline,CornerNet 生成兩組heatmaps用於預測對角點,heatmap是multi-channel,表示某location是某個分類的keypoint的機率。除了keypoint heatmap,還生成 角點座標offset和角點embedding。Embedding用於grouping,座標offset則是對角點座標從heatmap映射回原輸入image大小時作的微調操作。

如表1所示,作者深度分析了CornerNet,在COCO資料集上計算了false discovery

FD

值。

CenterNet

其中

FD=1-AP

AP

表示Average-Precision,

FD_i=1-AP_i

AP_i

IOU=i/100

時的平均精度,

FD

FD_5, FD_{25},FD_{50}

的平均值,

FD_{scale}=1-AP_{scale}

scale=\{small,medium,large\}

表示目標的scale,small(area<

32^2

),medium(

32^2

area<

96^2

),large(area>

96^2

)。

從表1中可見,即使IOU閾值很低時,錯誤bbox的比例依然還是較大

FD_5=32.7

,這表示平均每100 個預測bbox中有32。7個與gt box的最大IOU 低於0。05。在目標scale較小時,錯誤bbox的比例甚至高達60。3%。造成這種現象的原因之一就是CornerNet(Corner Pooling)無法觀察bbox的內部區域。為了使CornerNet能認識bbox之內的視覺pattern,一種可能的辦法是將CornerNet適配到2-stage detector中去,使用RoI pooling去觀察bbox之內的視覺pattern,即增加一個分支,使用RoI pooling對bbox先進行pooling操作,然後增加layers以判斷bbox是否是positive,顯然這種方法大大增加了計算量。

這就是本文動機,提出了一個高效的替代方案,CenterNet ,能夠探測bbox內部的視覺pattern,以解決CornerNet中很多錯誤bbox的問題。為了檢測目標,CenterNet使用三個keypoints,而非CornerNet使用的兩個。CenterNet保持了CornerNet的 1-stage 這個優點,同時部分繼承了RoI pooling的功能性。由於僅僅關注中心區域的資訊,方法的計算代價還是很小的。

Keypoint Triplets目標檢測

網路結構如圖2,使用中心keypoint以及一對corners表徵一個目標。

CenterNet

具體來講,在CornerNet的基礎上,增加一個Center Keypoint的heatmap和相應的offsets。使用與CornerNet中一樣的方法,生成top k 個bounding boxes,然後為了過濾掉錯誤的bounding boxes,利用center keypoints按如下步驟進行:1)根據bbox的得分選擇top k個bboxes;2)根據center keypoint的offset將center keypoint 重新映射回 輸入image中去;3)對bbox定義一箇中心區域,並檢查這個中心區域是否包含center keypoint。注意,center keypoint的分類必須要與bbox的分類一致;4)如果中心區域檢測出一個center keypoint,則保留這個bbox,同時,bbox的得分替換為三個keypoints的得分均值。

中心區域的size顯然是很關鍵的。小的中心區域會導致小bbox的召回率較低,而大的中心區域則降低大bbox的精度。因此,中心區域size根據bbox的size而進行調整是比較合適的。對於小bbox,中心區域的size較大些,而對於大bbox,中心區域的size則較小些。假設bbox

i

需要被保留,記其左上角和右下角座標為

(tl_x,tl_y), (br_x,br_y)

,定義一箇中心區域

j

,其左上角和右下角座標為

(ctl_x,ctl_y),(cbr_x,cbr_y)

,那麼滿足:

ctl_x=\frac {(n+1)tl_x+(n-1)br_x}{2n} \\ ctl_y=\frac {(n+1)tl_y+(n-1)br_y}{2n} \\ cbr_x=\frac {(n-1)tl_x+(n+1)br_x}{2n} \\ cbr_y=\frac {(n-1)tl_y+(n+1)br_y}{2n} \\

其中n是奇數。要弄懂為啥有這個關係其實不難,反過來,根據中心區域的左上角和右下角座標,易知中心區域的中心點與bbox的中心點是重合的,

x_c=\frac {tl_x+br_x} 2 \\ y_c=\frac {tl_y+br_y} 2

然後中心區域的size為

w_c=cbr_x-ctl_x=\frac {2br_x-2tl_x} {2n}=\frac {w_{box}} n \\ h_c=cbr_y-ctl_y=\frac {h_{box}} n

可見中心區域大小是預測bbox大小的

\frac 1 n \times \frac 1 n

倍,且位於預測bbox中心。

本文作者對於bbox的scale小於150和大於150時分別設定

n=3

n=5

,如圖3所示,

CenterNet

Enriching Center and Corner Information

Center Pooling

目標的幾何中心不一定能傳遞可識別的視覺pattern,比如 人類頭部包含了較強的視覺pattern,而中心往往在人體中間。為了解決這個問題,作者提出Center Pooling以捕獲更豐富的可識別視覺pattern。

CenterNet

圖4(a)為Center Pooling的基本原理,backbone輸出feature map(參考圖2),為了判斷feature map上某pixel是否是center keypoint,需要從水平和垂直兩個方向尋找最大值,並將這兩個最大值相加。這個過程其實與Corner Pooling類似。

Cascade corner pooling

Corners通常位於目標外部,其區域性特徵都來自於背景,無法表徵目標,CornerNet使用corner pooling來解決這個問題。如圖4(b)所示,Corner Pooling從邊界方向上尋找最大值以確定Corner,但是這使得Corner對邊界敏感。為了解決這個問題,作者令Corner觀察目標的視覺pattern。如圖4(c)所示,首先沿著邊界方向尋找邊界最大值,然後從最大值位置處向目標內部觀察並尋找內部最大值,最後將這兩個最大值相加。對topmost,leftmost,bottommost和rightmost,分別是垂直向bottom的方向,水平向right的方向,垂直向top的方向以及水平向left的方向尋找內部最大值。如此,Corner就同時具備了邊界資訊和目標的視覺pattern。

Center Pooling和Cascade corner pooling如圖5所示,

CenterNet

圖5(a)是Center Pooling的結構圖,為了得到某方向的最大值,例如水平方向,則將left pooling和right pooling順次連線,垂直方向類似。圖5(b)是Cascade top corner pooling結構圖,相比較於Corner Pooling,在top corner pooling之前增加了left corner pooling。注意:圖5(b)僅僅是top corner pooling,要完成類似CornerNet中的top-left corner pooling,還需要另外進行left corner pooling,這是與top corner pooling對稱的的結構,即 left pooling和top pooling位置互換,然後將top corner pooling和left corner pooling這兩個結構的輸出相加,bottom corner pooling和right corner pooling類似處理。

Training and Inference

Training

網路從頭開始訓練,輸入image的大小為

511 \times 511

,輸出heatmap大小為

128 \times 128

。使用與CornerNet中相同的資料擴增策略以便訓練出一個robust的model,使用Adam最佳化訓練損失:

L=L_{det}^{co}+L_{det}^{ce}+\alpha L_{pull}^{co}+\beta L_{push}^{co} + \gamma (L_{off}^{co}+L_{off}^{ce})

這個損失顯然是在原CornerNet的損失基礎上增加center的檢測損失和座標偏差損失。

Inference

對於單尺度測試,將原image以及水平翻轉image作為網路輸入。對多尺度測試,則將原image和水平翻轉image以解析度的0。6,1,1。2,1。5和1。8倍作為網路輸入,在heatmap上選擇top 70 center keypoints,top 70 top-left corners以及top 70 bottom-right corners用於檢測bbox。將水平翻轉image上檢測出的bbox 再水平翻轉回去併合並進 原image上檢測出來的bbox。使用Soft-nms 移除冗餘的bbox。最終根據得分選擇top 100 bbox。

Experiments

實驗部分的介紹閱讀原論文就好了,這裡挑幾點說明一下。

Incorrect Bounding Box Reduction

AP 度量反應了網路能預測多少高質量的目標bbox(

IOU \ge 0.5

),但是無法反應網路生成多少不正確的目標bbox(

IOU \ll 0.5

),FD則是一個合適的度量,反應了不正確的bbox的比例。表3顯示了CornerNet和CenterNet的FD,

CenterNet

其中511表示輸入image的邊長,52和104表示backbone分別使用hourglass-52和hourglass-104,從表中可見,CornerNet生成更多的不正確bbox,並且比起medium和large bbox,會生成更多不正確的small bbox。

Ablation Study

Central region exploration 增加center heatmap分支使得AP上升2。3%(從37。6%到39。9%),在小目標下,AP上升4。6%,這個提升比其他目標尺度(medium,large)更明顯,對大目標的AP提升近乎可以忽略(從52。2%到52。3%)。從機率上來講,這也不足為奇,因為小目標的center keypoint比起大目標的更加容易定位。

Error Analysis

探測bbox內的視覺模式依賴於center keypoints。如果錯過某個center keypoint(未能被檢測到),那麼CenterNet將錯過bbox內的視覺模式。將預測center keypoint替代為ground truth center keypoints,然後發現結果如表5所示,

CenterNet

從表5中可見,使用了GT center keypoints,AP有不同程度的提升,這說明基於center keypoint的目標檢測遠遠未達到效能瓶頸。

總結

為了降低CornerNet的FD(false detection),在CornerNet基礎上透過修改Corner Pooling為Cascade Corner Pooling,並增加Center Keypoint(同時提出center pooling用於檢測center keypoint),然後將改進後的CornerNet檢測出來的bbox,利用center keypoint進行過濾無效的bbox,達到降低FD的目的。