论文精度笔记(四):《Sparse R-CNN: End-to-End Object Detection with Learnable Proposals》

简介: Sparse R-CNN是一种端到端的目标检测方法,它通过使用一组可学习的稀疏提议框来避免传统目标检测中的密集候选框设计和多对一标签分配问题,同时省去了NMS后处理步骤,提高了检测效率。

在这里插入图片描述
作者单位:港大, 同济大学, 字节AI Lab, UC伯克利

论文以及源码获取

论文下载:点击
源码下载:点击

论文题目

《Sparse R-CNN: End-to-End Object Detection with Learnable Proposals》
《稀疏R-CNN:端到端基于可学习建议的目标检测》

参考文献

Sun P, Zhang R, Jiang Y, et al. Sparse R-CNN: End-to-End Object Detection with Learnable Proposals[J]. arXiv preprint arXiv:2011.12450, 2020.

1. 研究背景

由于以前目标检测器是基于anchor-free和anchor-base来产生很多候选框,很明显这会形成大量关于先验框的设计和先验框与真实框多对一的映射。更会造成很多不必要的资源浪费。

其次就是基于DETR目标检测器的基础进行改进的,DETR把目标检测重新定义为直接稀疏集合预测问题,它的输入仅仅100个学习的目标队列,最后的输出没有任何人工设计的后处理过程。但是它要求每个目标队列和全局图像上下文环境进行交互(self-attention),稀疏的不够彻底,由此作者在此基础上设计了一种纯稀疏化的方式产生建议区域.那么何为稀疏化方式呢?我们简单分析一下,如图一。 图一:不同对象检测管道的比较
a为密集检测器,在特征图上产生密集的预测,是代表Anchor-Free的RetinaNet。

b为密集-稀疏检测器,RPN仍在特征图上产生密集的先验,是代表Anchor-Based的Faster R-CNN。

c为作者提出来的是一种稀疏目标检测方法,直接提供一个N个学习对象的小集合建议。

a,b缺点:

  • 产生很多冗余框,使用NMS后处理

  • 使用多对一正负样本分配

  • 要设计复杂的先验候选框

    C优点:

  • 不使用NMS后处理

  • 正负样本分配采用一对一的最优二分匹配

  • 候选框是一组稀疏的learnable object queries。

2. 贡献

(一)提出一种稀疏建议框的生成算法;

(二)效果比密集建议框的生成算法更佳,且不需要非极大值抑制等后处理操作;

(三)在标准的COCO数据集上使用ResNet-50 FPN单模型达到了44.5 AP和 22 FPS,超越众多anchor-free和anchor-base检测器。并作为一种全新的研究方向供我们学习。

3. 相关工作

3.1 Dense method

在这里插入图片描述
RPN流程

2k scores:分类anchor是否属于候选框 输出为WxHx512x2K

4k coordinates:每个anchor的四个坐标值

流程为,通过将从特征提取网络中获取到的feature map进行3*3的卷积运算,输出的通道数为512,然后这里的k个anchor boxes指的是每一次3x3卷积所对应的中心都会生成K个锚框,K通常为9,为了能更好的覆盖所有可能的情况。

三种scale/size是{128,256,512}

三种比例{1:1 , 1:2 , 2:1}

最后通过分类层和回归层得到2k scores和4k coordinates。

3.2 Dense-to-sparse method

《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》
在这里插入图片描述
整个faster R-CNN的流程:

  • 共享卷积网络-VGGNet
  • 候选检测框生成网络RPN(Region Proposal Networks)
  • Roi(Region of Interest) Pooling(根据框的坐标值从feature map 中提取相应的区域)
  • Classifier

目标检测整体流程:先通过特征提取网络VGG获得一系列的feature map,然后将得到的feature map一部分传到RPN网络,获得候选框,这里的候选框就相当于把每个类别都框出来,但是我并不知道这个类别是属于什么,这时候在结合另外一条支路直接将feature map传输classifier这里,相当于将得到的候选框印到原始特征图上,这里RoI pooling 的作用就是根据所得到的候选框的坐标值从feature map中提取相应的区域,RPN在特征图中会产生尺寸不一致的候选区域,所以RoI pooling也有固定尺寸的作用。最后在通过分类层判断所属目标的类别。


在这里插入图片描述
faster R-CNN详细架构

前面部分也就是VGG16的整个部分了,先是将原始的大小的P*Q的图片resize成MxN的尺寸,然后在通过13个卷积层,13个relu激活函数和4个池化层,提取特征得到feature map,然后一部分送入到我们的RPN网络中,通过3x3的slide window,去遍历整个feature map,在遍历过程中每个window中心按和三个尺度和三个长宽比生成9个anchors。

上面一条支路为分类头,判断是否为背景,所以是二分类,通过1x1的卷积操作,生成通道数为18,这里的18是由于9个anchor都需要进行二分类,所以是9x2。再通过reshape操作和softmax归一化操作判断每个anchor属于前景还是背景,判断之后在通过reshape进一步获取到非背景区域的候选框,下面这一条支路是回归头,通过1x1卷积生成36的输出通道数,36是因为4x9,每个anchor都有4个坐标值。最后将两个支路进行结合,从而更准确的在特征图上框出候选框的大致位置。再通过RoIPooling前的NMS过滤掉置信度很小的候选框和RoIPooling将不同大小的输入转换为固定长度的输出并根据所得到的候选框的坐标值从feature map中提取相应的区域。

最后通过分类和回归预测并输出候选区域所属的类以及候选区域在图像中的位置。这就是整个Faster R-CNN的流程。也就是密集到稀疏方法的过程。

3.3 GIoU

在这里插入图片描述
在这里插入图片描述
输入为预测框和真实框,我们先通过AB找到最小包围框C,然后根据A,B所在区域计算其IOU大小,然后根据第三个公式计算就可以得到GIoU。解决了IOU在无重叠时也可以反应两个目标之间的距离和能够有效区分重叠的方式。

3.4 DETR

在这里插入图片描述
由于这篇论文是基于DETR改进的,我们这里来看看DETR的整个工作流程。开始说过了这篇论文是不需要RPN网络和NMS来产生候选框的,算是Sparse 的先祖。整个流程就是先通过输入一张图像,扔到CNN卷积网络中获取到一系列的特征和位置,然后将每一个位置的点按顺序排列出来传入到transformer,每个点的维度都是transform的序列,(画竖线)所以有H*W个这样的竖线,代表feature map的维度,不是图片的维度,由于在CNN里面做了五次下采样所以大概是图片维度的1/3.通过transformer的编解码出来,就会生成100个预测框(固定的),本身序列长度是很长,但是出来只有100,所以这是不定长序列的映射问题,后面我们会继续分析这个transformer是怎么做的。然后映射出来的predictions就包含不同的类别和bbox,这里通过颜色来进行区分。 (误检和框大小进行loss惩罚,通过反向传播回去。)这里的匹配是N对N的,这时候就会存在问题,图片的真实框中并不会有100个真实框,像右图只有两个框,DETR的作者就通过将剩余的98个框通过在图片上其它背景位置画框来解决,这就可以满足N对N的问题。 这里的loss其实和这篇论文的loss也很相似,中心点和iou

3.5 transformer

在这里插入图片描述
这里是整个transformer编解码的过程,特别注意到这里的position encoding,它的矩阵形状和图片通过CNN提取特征在经过下采样之后的矩阵形状保持一致,在将两者结合起来,目的是为了把………,并作为multi-head attention的输入,然后将其展成一列向量,就像是我上面画的红色的线,排列好了之后通过encoder生成一样的数目的序列,然后在送入到decoder里面的,这里的object queries只有四个序列,而通过编码出来的序列却非常多,那究竟这里是怎么通过编解码进行交互的呢?

3.6 encoder-decoder

在这里插入图片描述
我们简单看一下Multi-Head self-Attention和Scaled Dot-Product Attention的结构就行了,因为这篇论文主要是运用相似的编解码的原理获取到一系列的候选特征,与固定学习到的候选框进行结合,提高准确性。编解码的大致过程就是这样的。下面我们看看这篇论文的主要内容。

4. 主要内容

4.1 Sparse R-CNN

在这里插入图片描述
​ 整体网络架构

Sparse R-CNN :骨干网+动态检测交互头+分类和回归层

Proposal Boxes-N*4,N代表object candidates的个数,一般为100~300,4代表物体框的四个边界。

先是由骨干网提取特征图,这里proposal boxes可以理解为图像中可能出现物体的位置的统计值,是可学习的参数,但是这样提取出来的特征并不能很好的定位和分类物体,于是引入了一种特征层面的proposal features这也是一组可学习的参数,然后将两者结合同时送入到动态检测交互头,做一对一的交互,可提取出更精确的RoI feature,最后输出分类和位置。

输入包括一个图像、一组候选框和候选特性,其中后两个是可学习的参数。

分析完整个的结构,让我们单独看看动态检测交互头具体是怎么实现的呢?

4.2 Dynamic Head

在这里插入图片描述
Dynamic Head

Conv=relu(norm(bmm(roi_Feats,param)))

这里的norm作为归一化层,和以前的BatchNorm有所区别

在这里插入图片描述
batch normalization对一个神经元的batch所有样本进行标准化,layer normalization对一个样本同一层所有神经元进行标准化,前者纵向 normalization,后者横向 normalization。BN层如果对于小Batchsize效果并不好,所以作者这里采用的是LN归一化的方法。

卷积之后将得到的RoI_Feature通过flatten的方式得到与原始的RoI_Feature相同尺寸维度的特征,然后通过一个全连接层得到与proposal feature相同尺寸维度的特征,这样做的意义是为了循环操作,也就是后面会提到的iterative。如果循环完毕就可以直接通过全连接层的目标特征进行分类预测和位置预测。

4.3 Loss

在这里插入图片描述
这篇论文损失函数包括三个:分类损失为焦点损失,IOU损失为GIoU损失,L1为L1损失

Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。相当于困难样本挖掘。γ相当于放大系数,取2最优。γ利用幂函数的快速放缩特性动态调节简单样本权重降低的速率。对于正样本Pt越大,通过1-Pt得到的新的权重就越小,换句话说对于这类的易分样本就不用花更多的注意力了,反而对于困难的样本会更加重视,这里的αϵ[0,1]。

giou loss是1-GIoU。

L1 范数loss:目标值(Yi)与估计值(f(xi))的绝对差值的总和

5. 仿真分析

5.1

在这里插入图片描述

5.2

在这里插入图片描述

5.3

在这里插入图片描述

5.4

在这里插入图片描述

5.5

在这里插入图片描述

5.6

在这里插入图片描述

5.7

在这里插入图片描述

5.8

在这里插入图片描述
迭代架构中每个阶段预测框的可视化,包括已学习的候选框,显示分类分数在0.2以上的框,学会的建议框是白色的,同一类候选的方框用同样的颜色绘制,学习的候选框随机分布在图像上,并一起覆盖整个图像:我们还可以发现每个阶段都会逐渐细化boxes的位置,并删除重复的。在单人场景、道路场景、人群场景都表现出一个出色的性能。

6. 论文总结

  • 提出一种稀疏的目标检测算法,通过一组固定的可学习的proposals为dynamic heads做分类和位置回归
  • 最终预测是直接输出的,没有NMS后处理操作
  • Sparse R-CNN的准确性、运行时间和训练收敛性能与建立良好的检测器相当。这个工作还能够激发对密集先验惯例的反思,并探索下一代物体探测器。
目录
相关文章
|
1月前
|
机器学习/深度学习 Web App开发 人工智能
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》这篇论文提出了一种基于YOLOv3-Tiny的轻量级目标检测模型Micro-YOLO,通过渐进式通道剪枝和轻量级卷积层,显著减少了参数数量和计算成本,同时保持了较高的检测性能。
33 2
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
|
1月前
|
机器学习/深度学习 人工智能 编解码
论文精度笔记(一):《ZERO-SHOT DETECTION WITH TRANSFERABLE OBJECT PROPOSAL MECHANISM》
本论文提出了一种零样本检测方法,通过引入可转移的对象候选机制来关联类别间的共现关系,并使用所有类的置信度分布进行对象置信度预测,以提高对未见类别物体的检测性能。
32 3
论文精度笔记(一):《ZERO-SHOT DETECTION WITH TRANSFERABLE OBJECT PROPOSAL MECHANISM》
|
1月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
47 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
6月前
|
JavaScript 前端开发 Java
编程笔记 html5&css&js 073 JavaScript Object数据类型
编程笔记 html5&css&js 073 JavaScript Object数据类型
|
6月前
|
机器学习/深度学习 网络架构 计算机视觉
CNN经典网络模型之GoogleNet论文解读
GoogleNet,也被称为Inception-v1,是由Google团队在2014年提出的一种深度卷积神经网络架构,专门用于图像分类和特征提取任务。它在ILSVRC(ImageNet Large Scale Visual Recognition Challenge)比赛中取得了优异的成绩,引入了"Inception"模块,这是一种多尺度卷积核并行结构,可以增强网络对不同尺度特征的感知能力。
312 0
|
前端开发
前端学习笔记202306学习笔记第四十天-Es6-object.assign的使用4深度拷贝
前端学习笔记202306学习笔记第四十天-Es6-object.assign的使用4深度拷贝
39 0
|
1月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第7天】本文将深入探讨卷积神经网络(CNN)的基本原理,以及它如何在图像识别领域中大放异彩。我们将从CNN的核心组件出发,逐步解析其工作原理,并通过一个实际的代码示例,展示如何利用Python和深度学习框架实现一个简单的图像分类模型。文章旨在为初学者提供一个清晰的入门路径,同时为有经验的开发者提供一些深入理解的视角。
|
5天前
|
机器学习/深度学习 计算机视觉 网络架构
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
纵观近年的顶会论文和研究热点,我们不得不承认一个现实:CNN相关的研究论文正在减少,曾经的"主角"似乎正逐渐淡出研究者的视野。
25 11
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
|
4天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
19天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第21天】本文旨在深入探讨深度学习领域的核心组成部分——卷积神经网络(CNN)。通过分析CNN的基本结构、工作原理以及在图像识别、语音处理等领域的广泛应用,我们不仅能够理解其背后的技术原理,还能把握其在现实世界问题解决中的强大能力。文章将用浅显的语言和生动的例子带领读者一步步走进CNN的世界,揭示这一技术如何改变我们的生活和工作方式。

热门文章

最新文章