arXiv-2019
Code:https://github.com/xingyizhou/CenterNet
文章目錄
- 1 Background and Motivation
- 2 Related Work
- 3 Advantages / Contributions
- 4 Method
- 5 Experiments
- 5.1 Datasets
- 5.2 Implementation details
- 5.3 Object detection
- 5.3.1 Experiments on MS COCO
- 5.3.2 Additional experiments
- 5.3.3 Error Analysis
- 5.3.4 Experiments on Pascal VOC
- 5.3.5 3D detection
- 5.4 Pose estimation
- 6 Conclusion(own)
1 Background and Motivation
監控、自動駕駛、visual question answering 等領域都涉及到目標檢測,其發展推動着實例分割(instance segmentation)、姿態檢測(pose estimation)、物體追蹤(tracking)、動作識別(action recognition)等視覺任務的發展!
當前的 object detectors 通過一個軸向對齊的框(axis-aligned boxes)來表示每個 object,可分爲 one-stage 方法(直接對 anchor 進行分類和迴歸,來確定最終的邊界框) 和 two-stage 方法(對 anchor 先二分類+迴歸篩選出前景背景,然後 pooling 成固定尺寸進行分類+迴歸確定最終的邊界框) !由於候選區域較多(備胎),需要經過 NMS 算法篩選剔除(留下真愛),不過 NMS 方法往往難以 end-to-end 訓練,所以大多數目標檢測器不是 end-to-end trainable 的方法!
本文,作者用邊界框的中心點來表示目標,目標的 size 用中心處的特徵迴歸出來!這樣目標檢測的問題就轉化爲了關鍵點評估(keypoint estimation)問題!也即對每一類預測出一個 heatmap,heatmap 中響應值較高的點爲中心點,配合中心點特徵迴歸出來的 和 就能鎖定邊界框,從而實現目標檢測的定位和分類!
作者也摒棄了 NMS 後處理操作(only have one positive “anchor” per object,沒有備胎)!
最騷的是,基於點的特徵可以迴歸出其他值,進而運用到其他的任務上(eg:3D object detection 和 pose keypoint estimation)
速度和精度的 trade-off 如下
左上角最猛
2 Related Work
-
Object detection by region classification
R-CNN、Fast RCNN -
Object detection with implicit anchors
- one-stage:SSD、YOLO-v1、YOLO-v2、Focal Loss
- two-stage:Faster R-CNN
-
Object detection by keypoint estimation
CornerNet、ExtremeNet,點檢測完了之後需要 grouping 在一起形成框,這樣比較慢, -
Monocular 3D object detection
3D 領域沒接觸過過,這個就“略”了
3 Advantages / Contributions
- 提出 CenterNet,可以同時實現目標檢測,人體關鍵點檢測和 3D bounding box(uses keypoint estimation to find center points and regresses to all other object properties, such as size, 3D location, orientation, and even pose. )
- 在 COCO 目標檢測數據上,實現了不錯的速度和精度 trade-off(效果一般哈)
4 Method
【CenterMask】《CenterMask:Single Shot Instance segmentation with Point Representation》 文章中,就是基於 CenterNet 改進的,關於檢測的部分細節完全一樣
C = 80 for COCO(類別數)
也即如下的形式
【CenterMask】《CenterMask:Single Shot Instance segmentation with Point Representation》
4.1 2D Objects as Points
1)中心點 Loss
預測中心點的損失,公式如下,是基於 focal loss 的修改版(a pixel-wise logistic regression modified by the focal loss)
其中
- 表示是第 類 heatmap 中,位置 處預測出來的 score,也即 detection confidence
- 是對應的 GT
- 是圖片中的中心點個數
- 、 是超參數
仔細推導,就是把 logistic regression Loss 中的 cross entopy 換成了 focal loss 的形式!僅僅多了一個超參數 而已!( 的時候,在 focal 代入 和 , 不等於 1 的時候,在 focal loss 中代入 和 )
logistic regression 的 binary cross entropy 如下:
Focal Loss 如下:
關於 Focal Loss 的解析可以參考 【Focal Loss】《Focal Loss for Dense Object Detection》
公式中 的定義同 Hourglass Network (參考 【Stacked Hourglass】《Stacked Hourglass Networks for Human Pose Estimation》),也即標籤採用的是中心點的高斯分佈,而不是僅有一個像素
GT 的高斯分佈表達如下
2)偏置 Loss
L1 Loss,來 recover the discretization error caused by the output stride
其中
- 爲預測的 offset
- 是 GT
- 是 output stride,也就是 heatmap 大小與原圖大小的比例關係,爲 4
- 特徵圖的中心點和原圖中心點的映射關係爲
比如中心點在原圖(15,15)處,R=4,那麼精確地映射到特徵圖上對應着應該是 (3.75,3.75)處,但特徵圖最小的分辨率是 1 像素嘛,所以預測的中心點最準的地方只能爲(3,3)!(3,3)還原到原始圖處爲(12,12),與(15,15)有了 3 個像素的偏差嘛,爲了彌補這個偏差,我們需要在特徵圖(3,3)的基礎上,學出一個(0.75,0.75)的偏置,這樣的話恢復到原始圖片大小,就能逼近(15,15)了
3)邊界框大小 Loss
目標 的邊界框表示爲 ,對應的類別用 表示!
中心點座標爲
邊界框的大小爲
邊界框的損失爲
其中
- 表示預測出來的邊界框大小
- 是 GT object size
CenterNet 做 2D 目標檢測的整體流程如下
【CenterMask】《CenterMask:Single Shot Instance segmentation with Point Representation》
整體 Loss 爲
其中, 分別被設置爲了 0.1 和 1
測試的時候,一張熱力圖中,如果該點爲 8 鄰域響應最高的點,就爲中心點(實現的時候採用 3x3 max-pooling 操作即可,感覺如果 max-pooling 的結果如果和自己相同,就保留),輸出 top-100 的 center point,預測出來的邊界框爲
其中
是預測出的第 箇中心點
是預測出的偏置
是預測出的邊界框大小
4.2 Human pose estimation
for COCO
1)直接回歸偏置
其中,
- ,表示關鍵點的類型
- 是關鍵點座標
- 是用 L1 Loss 來優化的 offset
Here, our center offset acts as a grouping cue, to assign individual keypoint detections to their closest person instance.
2)與此同時,預測熱力圖 ,配合 focal loss 來 refine 關鍵點
這個 是什麼意思?
保留 confidence > 0.1 的 keypoints
3)最後讓兩者逼近?
由於背景知識較少,這部分不知道自己理解錯了沒,感覺以預測1)偏置爲主,熱力圖 2)只是精修下回歸出的關鍵點的位置!
注意,上面操作 considering only joint detections within the bounding box of the detected object.(還是依託在目標檢測任務之上)
5 Experiments
5.1 Datasets
- MS COCO
- 118k training images (train2017)
- 5k validation images (val2017)
- 20k hold-out testing images (test-dev)
- Pascal VOC
- MS COCO keypoint dataset
- KITTI benchmark
5.2 Implementation details
採用了 ResNet、DLA、Hourglass 三種主幹網絡(【Stacked Hourglass】《Stacked Hourglass Networks for Human Pose Estimation》)
作者在 ResNet 和 DLA 的 3 次上採樣之前(32 倍變成 4 倍),用了 3×3 的 deformable Conv,上採樣採用的是 bilinear interpolation
輸入的分辨率都是 512×512
data augmentation
- random flip,
- random scaling (between 0.6 to 1.3)
- cropping
- color jittering
inference 的時候有如下三種策略
- no augmentation,
- flip augmentation,
- flip and multi-scale (0.5, 0.75, 1, 1.25, 1.5)——multi-scale時,用 NMS 來合併結果
5.3 Object detection
5.3.1 Experiments on MS COCO
速度和精度的 trade-off
四種方法的 AP 對應着 Fig.1 的部分點
最高的精度(42:2% AP in 7:8 FPS)比 CornerNet(40:6% AP in 4:1 FPS) 和 ExtremeNet(40:3% AP in 3:1 FPS) 效果好,Better accuracy indicates that center points are easier to detect than corners or extreme points
和 State-of-the-art comparison 比較
實話說,還是二階段的猛
5.3.2 Additional experiments
1)Center point collision
如果兩個同類物體,在熱力圖上中心點是一樣的,CenterNet 只能預測出其中第一個,作者統計了 COCO 數據集,共 860001 objects 中,有 614 pairs of objects(< 0.1%) 在步長爲 4 的特徵圖上出現了 Center point collision!
SS 方法,會有 ~2% 的這種情況(imperfect region proposals)
Faster R-CNN 方法,會有 ~20.0% 的重疊(可能是在步長爲 16 或者 32 的條件下吧 insufficient anchor placement)
2)NMS
For DLA-34 (flip-test),用和不用效果爲 39.2% to 39.7%
For Hourglass-104,用和不用效果都爲 42.2%
所以 CenterNet 可以砍掉 NMS 這種後處理操作
3)Training and Testing resolution
這裏應該指的是不用 padding 和用 padding 的區別的吧
4)Regression loss
size regression 時,L1 比 Smooth L1 效果更好
5)Bounding box size weight
6)Training schedule
5.3.3 Error Analysis
用 GT 來替換相應的檢測部位,可以看到,上限能高達 99.5!
5.3.4 Experiments on Pascal VOC
5.3.5 3D detection
沒接觸過,這裏就省略了
5.4 Pose estimation
效果一般般啦,用熱力圖 refine 比直接回歸的效果要好(reg vs jd)
最後感受下 CenterNet 在三個任務上的結果
6 Conclusion(own)
- anchor 少,每個目標 只對應一個 positive,不用 NMS,易於 end-to-end train,且最小的 feature map 分辨率僅爲原圖的 ()
- Detector 效果沒有二階段的猛,keypoint estimation 效果一般般,3D 沒接觸過,不好評估,存在少量實例中心點重疊的情況!keypoint estimation 還是要基於 detectors 的框框裏面的,來區分實例
- 錯誤分析實驗很有啓發,上限有 99.5,西天取經路漫漫矣