代码:https://github.com/xingyizhou/CenterNet
论文地址: https://arxiv.org/abs/1904.08189
还有一篇 重名?https://arxiv.org/pdf/1904.08189.pdf https://github.com/Duankaiwen/CenterNet
针对基于anchor的检测方法(yolo v2-yolo v3,SSD ,faster-rcnn)在特征图中产生大量的bounding box 用于分类和位置修正,要求大量的计算资源消耗,额外的后处理,Loss复杂等。
文章就提出anchor-free的方式,通过Keypoint(中心点)和距离中心点的box的w,h回归box大小,外加offset偏移,这就节省了NMS操作。本文也是对CornerNet的改进。
实验结果:COCO数据上表现出:
AP | FPS |
---|---|
28.1% | 142FPS |
37.4% | 52FPS |
45.1% | 1.4FPS |
LOSS分为3个部分,首先,为中心关键点Y的Loss:
对于一幅输入(W, H)图像, 经过CNN产生一个heatMap = W R × H R × C \frac{W}{R}\times \frac{H}{R}\times C RW×RH×C,用 Y ~ \widetilde{Y} Y 代表, Y ~ \widetilde{Y} Y ϵ \epsilon ϵ[0,1], C表示关键点的类型数(维度?),例如,人体姿态估计C=17个关节点,C=80个目标检测物体类别,R表示特征图相比输入图缩放倍数,一般默认R=4,即heatmap缩小为原图的1/4.
首先groundtruth生成的关键点为 P P P(具体先不解释这个,把BOX的坐标转换来的吧,),显示在预测低分辨率heatmap上为 P ^ \widehat{P} P = P / R P/R P/R, 作者把CNN会生成heatmap 坐标 与GroudTruth关键点使用高斯核函数标准化, σ p 2 \sigma _{p}^{2} σp2表示自适应的标准方差。
Y ^ x , y , c \widehat{Y}_{x,y,c} Y x,y,c=1, 表示检测到一个关键点,
Y ^ x , y , c \widehat{Y}_{x,y,c} Y x,y,c=0,表示为背景
定义使用focal Loss: α \alpha α =2 , β \beta β=4 设为常数
缩小的 输出heatmap 恢复到原图,中心点可能差生误差,需要添加一个位移偏置损失,先在处采集局步关键点(?没看懂):
作者后面说O等于这个,后面看懂博主补充下:
然后算偏移量
Groudtruth 坐标为( X m i n X_{min} Xmin, Y m i n Y_{min} Ymin, X m a x X_{max} Xmax, Y m a x Y_{max} Ymax), 中心点为 P k P_{k} Pk为:
S k S_{k} Sk表示box的W,H:
坐标损失用预测的(w,h)集合 S ^ p k \widehat{S}_{pk} S pk与每个关键点P的GroundTruth标记的(w,h)相减求平均值
总的Loss定义为: 中心点损失+偏移损失+box大小损失, λ s i z e \lambda_{size} λsize=0.1 , λ o f f \lambda_{off} λoff=1 ,用于权衡各项损失的比重