前言
前文提到的YOLOv3、YOLOv4、YOLOv5都是基于Anchor的算法(anchor-based),这类算法有如下缺点:
- 产生大量的预测框,计算量大
- 正负样本不平衡问题:产生的预测框大部分是负样本
- 对预定义anchor依赖:anchor-based方法的anchor box的尺度是一个超参数,不同的超参设置会影响模型性能
因此出现了anchor-free这类不依赖于预定义锚框的算法,使得模型更灵活,并且在处理各种目标形状和大小时更具鲁棒性,在一些场景下取得了与传统锚框方法相媲美甚至更好的性能。
CenterNet 就是经典的 anchor-free 目标检测算法(CVPR 2019)
提示:以下是本篇文章正文内容,下面案例可供参考
一、CenterNet的网络结构和流程
- 图像预处理:对图片进行随机翻转,随机缩放(0.6~1.3倍),图片裁剪和颜色增强。
- 将图像输入backbone(Hourglass/ResNet/DLA/…)得到下采样为原来R分之一大小的特征图
ps:
- Hourglass Network(时钟网络)是一种用于姿态估计和目标检测的神经网络结构,最初由Alejandro Newell等人于2016年提出。它的名字来自于其整体网络结构的形状,看起来像一个沙漏或时钟的形状。
- Hourglass Network 的主要特点是通过堆叠多个相互连接的 Hourglass 模块,实现对不同尺度特征的提取和整合。Hourglass 模块本身是一个自我包含的网络结构,具有先下采样(down-sampling)然后上采样(up-sampling)的结构,以捕捉底层和高层特征。
- 将获得的特征图同时输入HeatMap、OffSet、Size三个组件,得到的目标框的分类和回归情况
ps:
- HeatMap:经过卷积模块,预测特征图中每个像素是否是目标的中心点
- OffSet:经过卷积模块,以特征图中每个像素为中心点,回归目标边界框中心点的偏移量
- Size:经过卷积模块,以特征图中每个像素为中心点,回归目标边界框的大小(宽度、高度)
- 预测框转换:将上述结果合并,得到预测框的类别和位置信息
ps:
- 首先,对HeatMap的通道做Argmax和max处理,得出分类的index和最高得分。根据得分置信度过滤掉低于阈值的物体中心(此时的过滤完的结果已经带有分类信息和物体中心位置的坐标了)。
- 将Offset的偏移量加到HeatMap中的物体中心坐标上,进行修正。
- 根据上面HeatMap的过滤结果,对置信度高于阈值的WidthHeight进行转换,xyhw -> x1y1x2y2,就得到预测框了。
最后将预测框结果进行归一化,方便后面预测框转换计算。
- 后处理:虽然论文作者一直强调自己这个模型是一个完全端到端的设计,不需要nms等后处理操作。只需要一个3x3的max_pooling层就可以替代nms。但是实际使用中,无论模型的预测结果还是训练数据,都在结果转换后进行nms。
二、CenterNet的创新点
- 用HeatMap预测的目标中心点代替Anchor机制来预测目标,使用更大分辨率的输出特征图(相对于原图缩放了4倍),因此无需用到多层特征,实现了真正的Anchor-Free,训练上更加简便,并且由于无需额外生成anchor,在保证精度的同时,速度显著提升。
- 网络可拓展性非常强,论文中介绍了实现3D目标检测和人体姿态估计任务。具体来说对于3D目标检测,直接回归得到目标的深度信息,3D目标框的尺寸,目标朝向;对于人体姿态估计来说,将关键点位置作为中心的偏移量,直接在中心点回归出这些偏移量的值。
总结
CenterNet是anchor-free中的一个里程碑之作。除了目标检测之外,CenterNet还能应用到其他视觉任务中,如人体关键点,姿态预测等。
模型简单而精巧的设计,使得CenterNet在运行速度和精度的平衡上取得了很好的结果。