IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> CenterNet算法笔记 -> 正文阅读

[人工智能]CenterNet算法笔记

? 名为CenterNet的算法有两个,本文梳理的是论文《Objects as Points》,而不是《CenterNet:Keypoint Triplets for Object Detection》,望周知。由于本人目前的工作主要集中在目标检测方面,因此这里只对CenterNet算法的2D检测部分进行梳理,并简单介绍下3D检测,并不会涉及关键点检测部分。

1.核心思想

? 现有的检测算法都需要对大量的候选位置进行分类,并且还需要后处理(主要是NMS),比如二阶段的Faster RCNN、一阶段的YOLOv3、anchor-free的FCOS、CornerNet等算法,都是如此。
? CenterNet将目标建模为目标的中心点,将目标检测问题转化为关键点检测问题(这一点与CornerNet一样,只不过CornerNet是检测gt box的左上和右下点,而CenterNet是检测gt box的中心点)。将图像输入网络,生成keypoints heatmap,heatmap上的峰值点(peaks,特征图上值>=8邻域内其它点的中心点,称为peak)对应的就是目标的中心点。检测到目标中心点后,利用每个peak点的特征回归目标框的其它属性,比如2D box的宽和高,3D box 的长宽高、深度、角度等。
? CenterNet是anchor-free的,正样本的分配极其简单,一个目标只唯一对应heatmap上的一个peak,是无需NMS的

2.网络结构

2.1Backbone网络

? CenterNet把目标检测问题转化为关键点检测问题,因此使用的也都是关键点检测网络的backbone,这一点和CornerNet一样。CenterNet的backbone网络下采样倍数(stride)都是4,并且整体网络结构都是先下采样获得很大的stride,然后上采样回到stride=4,主要使用了三种backbone网络,如下:
在这里插入图片描述
(1)up-conv ResNet
? ResNet网络的变种,使用了可变形卷积改变通道数,并且使用了转置卷积进行上采样。
(2)hourglass(沙漏)
? 和CornerNet使用的backbone一样,有非常复杂的skip connections,整体网络呈现对称特性。
(3)DLA(deep layer aggregation)
? 使用的是修改后的DLA-34。

2.2neck网络

? CenterNet不使用任何FPN、PAN等结构,没有neck网络。

2.3head网络

? Backbone网络的输出特征送入一个3x3卷积(256通道)、ReLu、一个1x1卷积得到最终的输出,输出的通道数与具体任务有关。
在这里插入图片描述

2.3.12D检测

? 主要包括keypoints heatmap、local offset、object size三部分的检测,通道数分别为C、2、2。

2.3.1.1 keypoints heatmap

? C指的是类别个数,即keypoint heatmap的通道数是C,对COCO数据集来讲是80。每个通道的peaks表示该类目标出现的位置,peaks的值也是该目标的置信度。
(1)正负样本分配
? 计算每个gt box的中心点落在heatmap上的位置点,则该点即为正样本,回归标签为1,其它位置点为负样本,回归标签根据高斯分布来获得,高斯标准差根据目标的尺寸确定。如果一个负样本点处于多个高斯分布重叠区域,取较大的值作为回归标签。
(2)损失函数
? 对于损失函数用logistic regression + focal loss。单位:中心点坐标关于特征图上尺寸的归一化。

2.3.1.2 local offset

? local offset预测特征图有2个通道分别表示中心点x、y方向的offset,因为backbone网络的stride=4,因此会有位置的偏移,这个offset预测就是用来修正目标中心点位置的。
(1)正负样本分配
?只计算正样本,没有负样本。
(2)损失函数
?L1 loss。单位:关于特征图上尺寸的归一化。

2.3.1.3 object size

?object size,即宽和高,预测特征图具有2个通道。
(1)正负样本分配
?只计算正样本,没有负样本。
(2)损失函数
? L1 loss,并且作者进行了实验,发现对object size的回归来讲,L1 loss比Smooth L1 更好。单位:使用的是原始像素为单位,不进行标准化。

2.3.2 3D检测

?不需要2D box的宽和高的预测,需要中心点预测,还需要另外三个预测:深度、3D box、角度。深度占一个通道,3D box占3个通道,对角度回归进行编码,占8个通道。

3.推理流程

这里只介绍2D检测的流程。
(1)前向传播:图像输入网络,获得输出特征图,包括三个部分,keypoints heatmap、local offset、object size。
(2)峰值检测:每个类别的heatmap单独进行peak处理。>=8邻域内其它点的中心点都算作peak,所有类别的所有peaks都提取出来,然后保留前100个。(注意,这里没有明说,但是我猜后续应该还会设置一个置信度阈值,对这100个检测结果进行过滤,具体有没有需要看代码)
(3)bbox解码:根据峰值的位置,进行offset调整,并获得object size。没有复杂的box解码过程,进一步提高了后处理速度。

总结:后处理过程没有NMS,也没有复杂的box解码过程,整体流程非常简洁。

4.我对CenterNet的几个问题

4.1 为什么CenterNet不需要NMS?

4.1.1 原论文的解释

?先简单回顾一下Faster RCNN的正负样本分配。对于一个gt box,Faster RCNN需要计算其和所有anchors的IOU,**并取IOU大于0.7的所有anchor都作为正样本,来预测这个gt box,**这就导致在测试时,可能有多个pred box(预测框)对应的都是一个gt box,因此需要NMS去掉这些冗余的。
?而对CenterNet来讲,原论文的说法是,每个目标只产生一个正样本点peak点,不像Faster RCNN那样一个gt box分给多个anchor去预测,没有冗余,因此CenterNet不需要NMS。

4.1.2 对原论文解释的疑惑

?我对这种解释有些怀疑,我们先回顾一下YOLOv3的正负样本分配,对一个gt box,YOLOv3计算其和所有anchor的IOU,然后只把最大IOU的anchor作为正样本预测这个gt box,即YOLOv3也是一个gt box只分配给一个anchor、只产生一个正样本,和CenterNet一样,但YOLOv3是需要NMS的,为什么呢?
?我猜测可能的原因是YOLOv3引入了忽略样本的原因,正样本邻域网格可能与gt box也有很高的IOU,但是邻域网格属于忽略样本,训练过程中不用于计算置信度损失,也就是说,训练过程并不会对邻域的置信度预测进行抑制,只是忽略而已,因此在测试时,邻域网格也可能输出了和gt box很高IOU的pred box,并且置信度分数也很高,和正样本网格非常接近,单纯靠置信度阈值处理无法去掉这些冗余的pred box,所以需要用NMS。
?但是CenterNet在分配正样本时,目标中心点对应的heatmap上的点对应的回归标签就是1,而邻域根据高斯分布对回归值进行抑制,获得较小的回归值,没有重叠的问题,此只要选择peak作为目标就好,不需要NMS。不知道我的理解对不对?欢迎大家讨论。
?但是如果这么考虑的话,只要把YOLOv3的忽略样本全部改成负样本,并且负样本的置信度标签比正样本对应的标签小,那么YOLOv3不也可以是NMS-free的吗?其实YOLOv5以及这么做了,yolov5的置信度标签是gt box和anchor的IOU值(也可能是CIOU?我没有核实),正样本就比负样本的置信度标签大,只不过YOLOv5的一个gt box对应多个正样本,仍然需要NMS。

4.1.3 CenterNet的heatmap和YOLOv3的置信度特征图有什么区别?

?其实仔细一想,CenterNet是选择特征图(heatmap)的峰值peak作为目标中心点,无需NMS,而YOLOv3是先对置信度特征图进行阈值处理(取的不是唯一的极大值peak),然后把获得的pred box进行NMS处理,这样考虑的话,CenterNet的置信度特征图和YOLOv3的heatmap没有特别本质的区别,都是为了获取高质量的候选样本,只不过CenterNet把候选样本直接作为检测结果(因为正样本分配和回归尽量避免了冗余的情况),而YOLOv3对候选样本进行了NMS。不知道我的理解对不对?

4.2 推理时获取peaks后是否需要阈值处理?

? 论文中没有明说,这个需要看代码才能知道,或者哪位好心大佬告知一下?

4.3 CenterNet是否易于硬件部署?

? 我本人没有做过深度学习算法硬件落地方面的工作,但是我知道算法落地不仅考虑计算量的问题,还会考虑内存等方面的占用,所以对CenterNet这种使用hourglass、DLA等具有很多跳路连接的网络,以及可变形卷积、转置卷积等各种奇怪的运算等(硬件加速是否支持这些运算?),其内存占用相比YOLOv3要显著增加?也许后面做到算法落地的时候再考虑吧。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:06:37  更:2021-08-26 12:07:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:49:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码