Anchor Free,框即是点,CenterNet

 

论文:Objects as Points

Github:https://github.com/xingyizhou/CenterNet

 

CVPR 2019


CenterNet,一个anchor free的新的检测算法,算是对cornerNet的改进,在cornerNet基础上,引入了中心点的概念,因此,称为CenterNet。

算法亮点,

  1. anchor free,大大减少了anchor部分的计算量,并且不需要nms这样的后处理。
  2. 一个框架可以做2d检测,3d检测,pose姿态估计,3种不同的任

速度够快,速度和精度的良好平衡,在MS-COCO上28.1%的MAP,142FPS,或者,37.4%的MAP,52FPS。采用多尺度测试的话,可以达到45.1%的MAP,1.4FPS。

Anchor Free,框即是点,CenterNet

CenterNet的anchor free思想和基于anchor框架的区别:

CenterNet可以看作基于anchor框架的演变,可以看作只有一个形状的anchor。

A center point can be seenas a single shape-agnostic anchor

Anchor Free,框即是点,CenterNet

传统的基于anchor的思想,需要计算anchor和ground truth的IOU,IOU>0.7是正样本,IOU<0.3是负样本,其他的忽略掉。

CenterNet只取ground truh边框的中心一点作为anchor,只回归该中心点和宽,高。该点周围的其余点当作负样本。

  1. CenterNet只根据位置布置anchor,背部关心IOU,不需要像基于anchor的框架那样人工设置阈值来进行前景背景分类。
  2. 由于每一个物体只有一个正的anchor,因此不再需要后处理的NMS,只需要提取输出feature map种峰值最高的点即可。
  3. CenterNet的网络输出特征层尺度更大,是原图的1/4,而基于anchor的方法,最后一层特征图大小是原图的1/16,因此基于anchor的方法需要多个不同长宽比和尺度的anchor。这里为什么anchor free的方法,需要输出是原图的1/4呢?因为,大多数anchor free的方法,基本都需要下采样+上采样这样的结构,来综合底层和高层特征,才可以保证分割或者回归的准确性。

Loss设计:

输入图片大小为I (W ×H×3),其中W=H=512,

网络最后输出的特征层Y大小为,(W/R ×H/R×C),C为输出的通道数,R为输出的滑动步长,Y(x,y,c)=1表示检测到的关键点,Y(x,y,c)=0表示背景

实际训练中的groundtruth使用高斯核进行处理,核函数为,

Anchor Free,框即是点,CenterNet

最终,中心点的loss函数为基于focal loss改进的损失函数,

Anchor Free,框即是点,CenterNet

α ,β是focal loss的超参数,分别取α =2,β=4,N表示一幅图像I中的点的数目

 

偏移offset使用L1 loss进行计算,

Anchor Free,框即是点,CenterNet

物体的size使用L1 loss进行计算,

Anchor Free,框即是点,CenterNet

Anchor Free,框即是点,CenterNet

最终,整体的loss 就是中心点的loss(Lk)+物体宽高的loss(Lsize)+偏移的loss(Loff)

Anchor Free,框即是点,CenterNet

参数,λsize = 0:1 , λoff = 1

在推断部分,每一个类别一个输出特征图。如果一个点周围的8领域的像素都比中心该点的像素值小,则将其当作一个检测出的peak 点(该操作可以通过3*3的max pooling实现)。每一个特征图,取前100个peak点,最后通过卡阈值得到最终的结果。

如果是需要mul scale的推断的话,每一个scale输出的结果就需要通过NMS的融合。如果只是单一scale做推断,就不需要NMS操作。

For multi-scale, we use NMS to merge results


网络结构:

Anchor Free,框即是点,CenterNet

(a)沙漏(HourGlass)网络结构

(b)ResNet结构+反卷积

(c)原生的DLA-34结构

(d)本文基于DLA-34,修改后的结构,增加了skip connections。

 

网络输入为512*512,输出为128*128,

数据增强方式包括,random flip, random scaling (0.6-1.3), cropping, color jittering

网络的基础结构可以采用,ResNet-18, ResNet-101, DLA-34, Hourglass-104,在这些基础结构的基础上进行了下面2个修改,

  1. 增加可变形卷积(deformable convolution)
  2. 增加反卷积,采用沙漏结构(Hourglass)

Anchor Free,框即是点,CenterNet

CenterNet模型可以适用于传统的2d目标检测,3d目标检测,姿态估计,等3个任务,不同的任务,最终的模型输出层略有区别。

2d检测任务:

输出3个分支,分别是,

  1. 物体的特征图,一个类别一个channel,包含C个channel。
  2. 物体中心点的偏移,包含x,y两个偏移量,因此是2个channel。
  3. 物体的大小,也就是宽,高,因此也是2个channel。

姿态估计任务:

Anchor Free,框即是点,CenterNet

这里我的训练任务的pose关键点有5个。

输出6个分支,分别是,

  1. 物体的特征图,一个类别一个channel,包含C个channel。
  2. 物体中心点的偏移,包含x,y两个偏移量,因此是2个channel。
  3. 物体的大小,也就是宽,高,因此也是2个channel。
  4. 物体的关键点基于中心点的偏移,输出k*2个通道,k表示关键点的数目,2表示x,y两个偏移。
  5. 基于分割的思想得到的物体关键点的特征图,输出k个通道,一个点一个通道。
  6. K个关键点的偏移,所有这些关键点采用同样的偏移量,x,y两个指标,输出2个通道。

实验结果:

不同基础网络结构对比,

Anchor Free,框即是点,CenterNet

COCO数据集2d检测结果对比,

Anchor Free,框即是点,CenterNet

KITTI 3d检测结果对比,

Anchor Free,框即是点,CenterNet

COCO pose检测结果对比,

Anchor Free,框即是点,CenterNet


总结:

(1)简单,快速,准确。

(2)anchor free领域新的里程碑

(3)一个框架,同时兼顾2d检测,3d检测,姿态估计

(4)实际训练中,对于两个物体中心点重叠的情况,CenterNet无能无力,只能将2个点,也就是2个物体,当作一个物体,一个点来处理。同理,测试的时候,对于两个遮挡的中心点重合的物体,也只能检测出一个中心点。

(5)CenterNet相比于CornerNet,更像是将左上角点和右下角点的回归修改为,一个中心点和宽高的回归,从而不再需要corner pooling,不需要左上角点和右下角点的配对问题,不再需要后处理的NMS。

CenterNet相比于有anchor的检测框架,本质上都是回归中心点和宽高,这点本质没变。区别就在于大大的减少了anchor的布置,只需要一个anchor就可以,也就从本质上省去了NMS后处理操作。

其实认真一思考,其实本质上,也许就该是CenterNet这样的思想来做。至于为啥没有,也许可能从最开始的机器学习中滑动窗口的过渡,需要延续这样的思想了。人的思想也许很难有如此大跨度的升华。