目标检测-One Stage-CenterNet

文章目录


前言

前文提到的YOLOv3YOLOv4YOLOv5都是基于Anchor的算法(anchor-based),这类算法有如下缺点:

  1. 产生大量的预测框,计算量大
  2. 正负样本不平衡问题:产生的预测框大部分是负样本
  3. 对预定义anchor依赖:anchor-based方法的anchor box的尺度是一个超参数,不同的超参设置会影响模型性能

因此出现了anchor-free这类不依赖于预定义锚框的算法,使得模型更灵活,并且在处理各种目标形状和大小时更具鲁棒性,在一些场景下取得了与传统锚框方法相媲美甚至更好的性能。

CenterNet 就是经典的 anchor-free 目标检测算法(CVPR 2019)


提示:以下是本篇文章正文内容,下面案例可供参考

一、CenterNet的网络结构和流程

  1. 图像预处理:对图片进行随机翻转,随机缩放(0.6~1.3倍),图片裁剪和颜色增强。
  2. 将图像输入backbone(Hourglass/ResNet/DLA/...)得到下采样为原来R分之一大小的特征图

ps:

  • Hourglass Network(时钟网络)是一种用于姿态估计和目标检测的神经网络结构,最初由Alejandro Newell等人于2016年提出。它的名字来自于其整体网络结构的形状,看起来像一个沙漏或时钟的形状。
  • Hourglass Network 的主要特点是通过堆叠多个相互连接的 Hourglass 模块,实现对不同尺度特征的提取和整合。Hourglass 模块本身是一个自我包含的网络结构,具有先下采样(down-sampling)然后上采样(up-sampling)的结构,以捕捉底层和高层特征。
  1. 将获得的特征图同时输入HeatMap、OffSet、Size三个组件,得到的目标框的分类和回归情况

ps:

  • HeatMap:经过卷积模块,预测特征图中每个像素是否是目标的中心点
  • OffSet:经过卷积模块,以特征图中每个像素为中心点,回归目标边界框中心点的偏移量
  • Size:经过卷积模块,以特征图中每个像素为中心点,回归目标边界框的大小(宽度、高度)
  1. 预测框转换:将上述结果合并,得到预测框的类别和位置信息

ps:

  1. 首先,对HeatMap的通道做Argmax和max处理,得出分类的index和最高得分。根据得分置信度过滤掉低于阈值的物体中心(此时的过滤完的结果已经带有分类信息和物体中心位置的坐标了)。
  2. 将Offset的偏移量加到HeatMap中的物体中心坐标上,进行修正。
  3. 根据上面HeatMap的过滤结果,对置信度高于阈值的WidthHeight进行转换,xyhw -> x1y1x2y2,就得到预测框了。
    最后将预测框结果进行归一化,方便后面预测框转换计算。
  1. 后处理:虽然论文作者一直强调自己这个模型是一个完全端到端的设计,不需要nms等后处理操作。只需要一个3x3的max_pooling层就可以替代nms。但是实际使用中,无论模型的预测结果还是训练数据,都在结果转换后进行nms。

二、CenterNet的创新点

  1. 用HeatMap预测的目标中心点代替Anchor机制来预测目标,使用更大分辨率的输出特征图(相对于原图缩放了4倍),因此无需用到多层特征,实现了真正的Anchor-Free,训练上更加简便,并且由于无需额外生成anchor,在保证精度的同时,速度显著提升。
  2. 网络可拓展性非常强,论文中介绍了实现3D目标检测和人体姿态估计任务。具体来说对于3D目标检测,直接回归得到目标的深度信息,3D目标框的尺寸,目标朝向;对于人体姿态估计来说,将关键点位置作为中心的偏移量,直接在中心点回归出这些偏移量的值。

总结

CenterNet是anchor-free中的一个里程碑之作。除了目标检测之外,CenterNet还能应用到其他视觉任务中,如人体关键点,姿态预测等。

模型简单而精巧的设计,使得CenterNet在运行速度和精度的平衡上取得了很好的结果。

相关推荐
DREAM依旧5 分钟前
隐马尔科夫模型|前向算法|Viterbi 算法
人工智能
GocNeverGiveUp18 分钟前
机器学习2-NumPy
人工智能·机器学习·numpy
B站计算机毕业设计超人1 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
学术头条1 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客1 小时前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn
feifeikon1 小时前
机器学习DAY3 : 线性回归与最小二乘法与sklearn实现 (线性回归完)
人工智能·机器学习·线性回归
游客5201 小时前
opencv中的常用的100个API
图像处理·人工智能·python·opencv·计算机视觉
古希腊掌管学习的神1 小时前
[机器学习]sklearn入门指南(2)
人工智能·机器学习·sklearn
Ven%2 小时前
如何在防火墙上指定ip访问服务器上任何端口呢
linux·服务器·网络·深度学习·tcp/ip
凡人的AI工具箱2 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite