论文阅读笔记 | 目标检测算法——CenterNet算法

简介: 论文阅读笔记 | 目标检测算法——CenterNet算法

paper:Objects as Points

Source code:https://github.com/xingyizhou/CenterNet


思想:

目标检测将对象识别为图像中与轴对齐的框。大多数成功的物体检测器都列举了几乎详尽的潜在物体位置列表,并对每个位置进行分类,这是比较浪费时间的一种做法,而且需要额外的后处理方法。


在CenterNet中,作者将对象建模为单个点,即其边界框的中心点。我们的检测器使用关键点估计来找到中心点,并回归到所有其他对象属性,如大小、三维位置、方向,甚至姿势。与相应的基于anchor的检测器相比,具有端到端的可区分性、更简单、更快速和更精确。


1. Introduction


当前的目标检测是通过用一个边界框来紧密包围对象从而表示它,然后将对象检测简化为大量潜在对象边界框的图像分类。对于每个边界框,分类器确定图像内容是特定对象还是背景。


对于one-step网络来说,通过滑动窗口生成一些列密集的anchor,然后直接对这些anchor进行分类预测,近年来的改进方向包括anchor的比例形状(yolo系列),不同尺度进行特征融合(FPN系列)以及不同样本见的损失权重改进(RetinaNet)。而对于two-step网络来说,会对anchor先进行一个nms挑选,所以其训练比较麻烦不能实现端对端预测。


CenterNet中,会用一个中心点去代表检测对象。然后对象的其他属性(对象大小、尺寸、三维范围、方向和姿态等等)则直接从中心位置的图像特征进行回归。也就是将目标检测问题简化成一个关键点检测问题。

image.png


主要的流程如下:


将图像简单的喂入一个卷积神经网络得到一个heatmap,heatmap的峰值(peaks)对应与物体的中心,每个峰值处的图像特征预测对象边界框的高度和宽度。当进行检测时,只需要简单的进行前向传播实现,不需要NMS等后处理方法,所以可以实现端对端检测。


1. CenterNet与其他基于anchor算法的区别:


CenterNet与基于anchor的One-step算法密切相关,因为一个中心点可以看作是一个形状不可知的anchor,但存在一些区别:

1)CenterNet通过根据位置(peaks)分配anchor,而不是在特征图上进行密集覆盖,不需要手动的设置前景或背景的阈值。

2)CenterNet中的每一个对象只有一个正样本的anchor,所以不需要非极大值抑制处理,也就是不需要后处理方法,只需要提取关键点heatmap中的局部峰值。

3)与传统的对象检测器相比,CenterNet使用了更大的输出分辨率,这消除了对多个anchor的需要

image.png


2. CenterNet与其他关键点检测算法的区别:


CenterNet不是关键点检测的首次使用。CornerNet使用对象的左上角与右下角作为两个关键点,而 ExtremeNet使用对象的四个角点与中心点五个点作为关键点。这两种方法都建立在与CenterNet相同的鲁棒关键点估计网络上。


但是这两种关键点检测算法,在关键点检测之后需要一个组合分组阶段(以CornerNet为例,由于分了两组heatmap分别检测左上角与右下角,需要一个额外的embedding计算这两组之间的距离,距离相识则被匹配为一组),这大大降低了每个算法的速度。


而在CenterNet中,只需为每个对象提取一个中心点,而不需要分组或后处理。


2. Preliminary


2.1 keypoint detection loss

image.png


关键点预测损失公式为:

image.png

α和β是focal loss超参数,这里沿用CornerNet中的设置,α = 2 , β = 4 。N则为图片中总的keypoint数量。


2.2 offset loss

image.png


偏移损失公式如下:

image.png


2.3 size loss

image.png

2.4 overall loss

image.png


网络预测每个地点总共有C + 4个输出。所有输出共享一个公共的全卷积骨干网络。对于每个模态,最后的特征图分别通过一个3x3卷积,ReLU激活函数与一个1x1卷积,分别得到三个预测结果(heatmap,size,offset)。按我的理解,也就是接了三个head。

image.png

(对于目标检测主要看第一行,通过三个head分别获取heatmap,offset,size)


在backbone之后接了三个分支网络,分别用于预测heatmap(c个通道),size(2个通道),offset(2通道)。所有最后每个位置共有C+4个通道。如下图所示:

image.png

heatmap分支即keypoint prediction分支,heatmap有c个channel,对应c个类。最后挑选每个channel中peaks作为该类的center points。

size分支用于预测宽和高,offset分支用于弥补卷积操作的下采样导致离散误差,做回归用,这两个分支与类无关,所有类共享。


(图片参考:https://blog.csdn.net/yanghao201607030101/article/details/110202400


3. Objects as Points


在推断的时候,首先独立地提取每个类别的heatmap中的峰值。如果一个点的值大于或等于其八邻域(周围最近的8个点)中的所有值则视为peak,最后保留值最大的100个peaks。

image.png


所有输出直接从关键点估计产生,无需基于IoU的非最大值抑制(NMS)或其他后处理。峰值关键点提取是一种充分的NMS替代方案,可以使用3 × 3最大池操作在器件上高效实现。


4. Result


paper使用了四种不同的backbone进行实验:ResNet-18, ResNet-101, DLA-34 , 与 Hourglass-104 。其中对ResNets和DLA-34进行了更改,而 Hourglass-104 没有更改。结构如下:

image.png

四种backbone的实验结果:

image.png

与其他SOTA算法的对比:

image.png

目录
相关文章
|
17天前
|
算法
计算机算法设计与分析(1-6章 复习笔记)
计算机算法设计与分析(1-6章 复习笔记)
|
3天前
|
存储 算法 Java
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
【CVPR2024】阿里云人工智能平台PAI图像编辑算法论文入选CVPR2024
近期,阿里云人工智能平台PAI发表的图像编辑算法论文在CVPR-2024上正式亮相发表。论文成果是阿里云与华南理工大学贾奎教授领衔的团队共同研发。此次入选标志着阿里云人工智能平台PAI自主研发的图像编辑算法达到了先进水平,赢得了国际学术界的认可。在阿里云人工智能平台PAI算法团队和华南理工大学的老师学生们一同的坚持和热情下,将阿里云在图像生成与编辑领域的先进理念得以通过学术论文和会议的形式,向业界传递和展现。
|
11天前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
3天前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
|
4天前
|
Java BI C#
技术笔记:SM4加密算法实现Java和C#相互加密解密
技术笔记:SM4加密算法实现Java和C#相互加密解密
|
4天前
|
存储 人工智能 算法
程序与技术分享:Acwing算法笔记
程序与技术分享:Acwing算法笔记
|
4天前
|
算法 安全 Java
技术笔记:MD5加密算法详解
技术笔记:MD5加密算法详解
|
4天前
|
移动开发 算法 计算机视觉
技术笔记:openCV特征点识别与findHomography算法过滤
技术笔记:openCV特征点识别与findHomography算法过滤
|
1天前
|
算法 安全 数据库
基于结点电压法的配电网状态估计算法matlab仿真
**摘要** 该程序实现了基于结点电压法的配电网状态估计算法,旨在提升数据的准确性和可靠性。在MATLAB2022a中运行,显示了状态估计过程中的电压和相位估计值,以及误差随迭代变化的图表。算法通过迭代计算雅可比矩阵,结合基尔霍夫定律解决线性方程组,估算网络节点电压。状态估计过程中应用了高斯-牛顿或莱文贝格-马夸尔特法,处理量测数据并考虑约束条件,以提高估计精度。程序结果以图形形式展示电压幅值和角度估计的比较,以及估计误差的演变,体现了算法在处理配电网状态估计问题的有效性。