本文来源公众号“DeepDriving”,仅用于学术分享,侵权删,干货满满。
原文链接:经典的目标检测算法:CenterNet
1 前言
CenterNet
是2019
年发表的一篇文章《Objects as Points
》中提出的一个经典的目标检测算法,该算法采用Anchor-Free
的方式实现目标检测及其他一些扩展任务,非常值得研究。
2 主要思想
CenterNet
将目标检测当做一个标准的关键点估计问题,将目标表示为一个在其bounding box
中心位置的单独点,其他的一些属性比如目标尺寸、维度、朝向和姿态等则直接从这个中心点位置的图像特征中进行回归。该模型将图像输入到一个全卷积网络中用来生成热力图,热力图的峰值位置即为目标的中心,每个峰值位置的图像特征用来预测目标bounding box
的宽度和高度。该模型训练过程采用标准的监督学习方法,推理过程则是简单的网络前向传播而不需要在后处理中做非极大值抑制处理。这篇文章提出的是一个通用的目标检测方法,只需要在中心点的预测中添加一些额外的内容就可以非常简单地扩展到其他任务中去,比如3D
目标检测和人体姿态估计。对于3D
目标检测任务,是通过回归目标的绝对深度、3D bounding box
维度和目标的朝向来实现的;而对于人体姿态估计任务,则是将2D
关节位置视为距中心点的偏移量,并且在中心点位置直接回归得到它们。
3 原理
4 损失函数
5 扩展任务
-
3D
目标检测
3D
目标检测就是给每个目标去估计一个3
维的bounding box
,这需要3
个额外的属性:深度、3D
维度和朝向,这3
个属性通过3
个独立的分支进行预测。
-
人体姿态估计
人体姿态估计的目的是找出图像中每个人体实例的个关节位置(COCO
数据集k=17)。可以将姿态视为是包含k x 2维属性的中心点,并且通过到中心点的偏移量对每个关键点进行参数化,另外还使用一个热点图预测分支用于对关键点进行提纯。
6 检测结果
以下是用官方的代码和模型跑出来的一些结果。
6.1 2D
目标检测
用COCO
数据集训练的2D
目标检测的结果如下:
6.2 3D
目标检测
用KITTI
数据集训练的3D
目标检测的结果如下:
6.3 人体姿态估计
用COCO
数据集训练的人体姿态估计的结果如下:
7 总结
读完《Objects as Points
》这篇文章,我的感觉是文如其名,简单而又优雅。文中提出的目标检测算法CenterNet
,模型结构简单,速度快又效果好,而且还方便扩展,确实是非常经典!
THE END !
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。