这篇论文中了CVPR 2019。作者的想法非常具有创新性,center net不仅仅可以用于目标检测,它具有很强的鲁棒性,可以迁移到姿态识别、3D检测等其他视觉任务中。相信读到这里的读者已经对之前的目标检测算法有了一定的了解,所以本文不再对比之前的做法,直接解释center net的做法,最后进行总结
- BackBone
- detect points
- how center be bbox
- 实验结果
- 总结
BackBone
CenterNet想要提取输入图像的特征,以heatmap的形式来检测目标。论文中给出了三种BackBone:ResNet-18、DLA-34、Hourglass-104,检测速度依次下降,检测精度依次上升。经过BackBone的提取,输出heatmap。输入的heatmap相比于初始图像,尺寸只减小了4倍,最后的offset微调也会方便很多。
detect points
我们这一步的目标是预测center,对于真实的标签来说,我们使用
对一个bbox进行说明,对于bbox的center,我们认为是
这样就找到了真实的图像中的center,然后再图像中使用二阶高斯分布,center为中心点,概率值为1,如果有多个目标在某个点的概率值重叠,选取较大的值作为概率值,对于预测corner,我们得到了经BackBone提取的热力图,这一步我们将heatmap中的峰值像素点找出,具体的方法是判断是否一个点大于或者等于他周围的八个点,就找到了预测center,可以带入高斯公式得到概率值。接下来便是计算损失函数
这一步的损失函数可以用focal loss表示为(论文中α=2,β=4属于超参数):
N为峰值点数量,当GT为1时,如果预测准确,则该点的损失函数为0,若预测值
不为1时,随着
)的减小,损失也越大。
在经过4倍下采样后,关键点的位置信息会丢失一部分,为了弥补这部分误差,使用L1loss弥补偏差位置,以便于更好的得到关键点。
希望经过训练后得到一个对于所有class,值共享的O(offset)
how center be bbox
我们可以预测到center,那么如何得到他的bbox?,
是真实的bbox左上、右下点的坐标,为了得到预测的bbox的尺寸,用L1 loss训练Lsize
为预测的尺寸,
Sk为真实尺寸。
至此,所有的损失函数已经提出
(λsize=0.1,λoff=1)
最后预测的bbox位置,大小是:
每个坐标的第一个值是预测到的center,第二个值是offset,第一个值加第二个值就是center,第三个值就是画出了bbox的大小和位置。
整个网络最后输出的是一个C+4的值,C为类别数,4为坐标
实验结果
总结
优点:
- 不使用anchor,减少超参数量
- 不使用NMS后端处理,直接输出Bbox
- 由于没有了anchor NMS,速度快了许多,精度也提升了许多
- 鲁棒性强,不仅仅可以用于普通的目标检测,在姿态检测、3D检测也取得了显著提升
缺点:
- 当两个物体过于接近,会将他们检测为1个目标