目标检测文献阅读-Faster R-CNN:通过区域建议网络实现实时目标检测(12.16-12.22)

devtools/2024/12/23 12:05:26/

目录

摘要

Abstract

1 引言

2 Fast R-CNN

2.1 RoI池化层

2.2 多任务损失

3 RPN

3.1 Anchors

3.2 损失函数

3.3 训练RPN

4 RPN和Fast R-CNN共享特征

总结


摘要

本周阅读的论文题目是《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》(《Faster R-CNN:通过区域建议网络实现实时目标检测》),文中介绍的Faster R-CNN是在R-CNN、Fast R-CNN基础上进行改进的目标检测方法。在上一周中学习的R-CNN方法存在训练过程不连续、无法共享同一张图的CNN特征、目标检测速度慢等问题。虽然在后续改进算法Fast R-CNN中引入了RoI池化层以及多任务损失函数,只接受图像作为输入并返回检测到的对象的类Softmax概率和每类bounding-box回归偏移量,相比R-CNN大大加快了目标检测的速度,实现了近乎实时的检测速率。但是在前期进行region proposal的时间花销依旧很大,所以在本文中提出的Faster R-CNN引入了一个区域建议网络(RPN)。RPN针对region proposal的任务进行端到端的训练,还引入"anchor"框解决多尺度和尺寸的不同方案,并采用交替fine-tune让RPN与检测网络共享整个图像的卷积特征,从而使计算region proposal的时间和成本降到很小,进一步提高了目标检测的mAP以及降低了目标检测的时间,从而真正做到了绝对意义的端到端的目标检测

Abstract

This week's paper is titled "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks", which introduces Faster R-CNN as an improved object detection method based on R-CNN and Fast R-CNN. The R-CNN method learned in the previous week has problems such as discontinuous training process, inability to share CNN features of the same graph, and slow object detection. Although the RoI pooling layer and the multi-task loss function are introduced into the subsequent improved algorithm Fast R-CNN, only the image is accepted as input and the Softmax-like probability of the detected object and the bounding-box regression offset of each class are returned, which greatly accelerates the speed of object detection compared with R-CNN and achieves a near-real-time detection rate. However, the time cost of region proposal in the early stage is still very large, so the Faster R-CNN proposed in this paper introduces a region proposal network (RPN). The RPN is trained end-to-end for the task of region proposal, and the "anchor" box is introduced to solve different schemes of multiple scales and sizes, and the convolution features of the entire image are shared between the RPN and the detection network by alternate fine-tune, so that the time and cost of computing the region proposal are minimized, and the mAP of object detection is further improved and the time of object detection is reduced. As a result, end-to-end object detection is truly achieved in the absolute sense.

1 引言

目标检测的最新进展是由region proposal方法和R-CNN的成功驱动的。忽略花费在region proposals上的时间,改进的Fast R-CNN已经能够实现近乎实时的检测速率。所以目前的主要瓶颈是region proposal方法的时间花销。

Region proposal方法通常依赖廉价的特征和简练的推断方案。Selective Search是当时最流行的方法之一,它贪婪地合并基于设计的低级特征的超级像素,但是它的消耗时间太长了。尽管EdgeBoxes提出了在proposal质量和速度之间的最佳权衡,但是region proposal步骤仍然像检测网络那样消耗同样多的运行时间。

所以在本文中,引入了新的region proposal网络(RPN),通过使用深度卷积神经网络计算region proposal,它们共享目标检测网络的卷积层,使得在给定检测网络计算的情况下region proposal计算接近零成本。

RPN旨在有效预测具有广泛尺度和长宽比的region proposal,由此引入新的“anchor”框作为多种尺度和长宽比的参考,避免了遍历多种比例或长宽比的图像或滤波器。这个模型在使用单尺度图像进行训练和测试时运行良好,从而有利于提升运行速度。

为了将RPN与Fast R-CNN目标检测网络相结合,本文还提出了一种训练方案,在fine-tune region proposal任务和fine-tune 目标检测之间进行交替,同时保持region proposal的固定。该方案快速收敛,并产生两个任务之间共享的具有卷积特征的统一网络。

Faster R-CNN,由两个模块组成。第一个模块是产生候选区域的深度全卷积网络RPN,第二个模块是使用候选区域的Fast R-CNN检测器。整个系统是一个单个的、统一的目标检测网络。Faster R-CNN的流程如下:

  1. 输入一张图片,通过深度卷积神经网络生成卷积特征图;
  2. 将卷积特征图传给RPN模块生成候选区域位置,RoI投影到原始特征图生成RoI区域的特征矩阵;
  3. 将每个ROI区域的特征矩阵通过RoI池化层缩放到7×7大小的特征图,接着将特征图展平为向量,之后通过一系列全连接层得到预测结果,进行分类或回归。

8f8f0b50f85b416ab0b836d7fe518bd1.png

2 Fast R-CNN

对于检测网络,Faster R-CNN采用Fast R-CNN的网络结构,对每个候选框,RoI池化层从特征图中提取固定长度的特征向量。每个特征向量被送入一系列全连接层中,其最终分支成两个同级输出层 :一个输出eq?K 个类别加上1个包含所有背景类别的Softmax概率估计,另一个层输出eq?K 个类别的每一个类别输出四个实数值。每组4个值表示eq?K 个类别中一个类别的修正后检测框位置:

8c2aef477e334cceb174f0336df67e92.jpeg

2.1 RoI池化层

RoI池化层使用最大池化将任何有效的RoI内的特征转换成具有eq?H%5Ctimes%20W (例如,7×7)的固定空间范围的小特征图,其中eq?H 和eq?W 是层的超参数,独立于任何特定的RoI。RoI是卷积特征图中的一个矩形窗口。每个RoI由指定其左上角(eq?r%2Cc)及其高度和宽度(eq?h%2Cw)的四元组(eq?r%2Cc%2Ch%2Cw)定义。

RoI最大池化通过将大小为eq?h%5Ctimes%20w 的RoI窗口分割成eq?H%5Ctimes%20W 个网格,子窗口大小约为W ,然后对每个子窗口执行最大池化,并将输出合并到相应的输出网格单元中。同标准的最大池化一样,池化操作独立应用于每个特征图通道。

2.2 多任务损失

Fast R-CNN网络具有两个同级输出层:

  • 第一个输出在eq?K+1 个类别上的离散概率分布(每个RoI),eq?p%3D%28p_0%2C...%2Cp_K%29 。通常,基于全连接层的eq?K+1 个输出通过Softmax来计算eq?p 。
  • 第二个输出bounding-box回归偏移,即eq?t%5Ek%3D%28t%5Ek_x%2Ct%5Ek_y%2Ct%5Ek_w%2Ct%5Ek_h%29 ,eq?k 表示eq?K 个类别的索引。在本文中使用R-CNN中给出方法对eq?t%5Ek 进行参数化,其中eq?t%5Ek 指定相对于候选框的尺度不变转换和对数空间高度/宽度移位。

每个训练的RoI用类真值eq?u 和bounding-box回归目标真值eq?v 打上标签。我们对每个标记的RoI使用多任务损失eq?L 以联合训练分类和bounding-box回归:

eq?L%28p%2Cu%2Ct%5Eu%2Cv%29%3DL_%7Bcls%7D%28p%2Cu%29+%5Clambda%5Bu%5Cgeq%201%5D%20L_%7Bloc%7D%28t_u%2Cv%29 

其中:

  • eq?L_%7Bcls%7D%28p%2Cu%29%3D-log%5C%2C%20p_u,是类真值eq?u 的log损失。
  • 第二个损失eq?L_%7Bloc%7D 是定义在类真值eq?u 的bounding-box回归目标真值元组eq?v%3D%28v_x%2Cv_y%2Cv_w%2Cv_h%29 和预测元组eq?t%5Eu%3D%28t%5Eu_x%2Ct%5Eu_y%2Ct%5Eu_w%2Ct%5Eu_h%29 上的损失。Iverson括号指示函数[u≥1],当u≥1的时候值为1,否则为0。按照惯例,任何背景类标记为u=0。对于背景RoI,没有检测框真值的概念,因此eq?L_%7Bloc%7D 被忽略。对于检测框回归,使用损失:

eq?L_%7Bloc%7D%28t%5Eu%2Cv%29%3D%5Csum%20_%7Bi%5Cin%20%5Cleft%20%5C%7B%20x%2Cy%2Cw%2Ch%20%5Cright%20%5C%7D%7Dsmooth_%7BL1%7D%28t%5Eu_i-v_i%29 

其中,eq?smooth_%7BL_1%7D%28x%29%3D%5Cleft%5C%7B%5Cbegin%7Bmatrix%7D%20%5C%3B%20%5C%3B%20%5C%3B%200.5x%5E2%5C%3B%20%5C%3B%5C%3B%20%5C%3B%20%5C%3B%20if%20%5C%3B%20%5C%3B%20%7Cx%7C%3C1%5C%5C%20%7Cx%7C-0.5%20%5C%3B%5C%3B%20%5C%3B%20otherwise%20%5Cend%7Bmatrix%7D%5Cright. 是鲁棒的eq?L_1 损失函数。

  • 超参数eq?%5Clambda 控制两个任务损失之间的平衡,将回归目标真值eq?v_i 归一化为具有零均值和方差为1的分布。

3 RPN

RPN以任意大小的图像作为输入,输出一组矩形的目标proposals,每个proposals都有一个目标得分。通过使用全卷积网络来构建这个过程,并且为了与Fast R-CNN目标检测网络共享计算,让这两个网络共享一组共同的卷积层。

为了生成region proposal,在最后的共享卷积层输出的卷积特征图上滑动一个小网络。这个小网络将输入卷积特征图的eq?n%5Ctimes%20n 空间窗口作为输入。每个滑动窗口映射到一个低维特征,这个特征被输入到两个并行的子全连接层:一个边界框回归层(reg)和一个边界框分类层(cls):

6609ca3d77ca4577acc0a635943d789d.png

有:

  • 中间层:eq?3%5Ctimes%203 卷积层
  • reg层:eq?1%5Ctimes%201 卷积层或全连接层
  • cls层:eq?1%5Ctimes%201 卷积层或全连接层加一个softmax函数

3.1 Anchors

在每个滑动窗口位置,同时预测多个region proposal,其中每个位置可能候选的最大数目表示为eq?k 。因此,reg层由于中心点坐标、宽、高唯一确定一个矩形框分别编码eq?k 个边界框的坐标,所以为eq?4k 个输出;cls层由于每个候选框会是目标和不是目标两种概率,所以为eq?2k 个得分值。anchor位于所讨论的滑动窗口的中心,并且具有一定的尺度和长宽比。默认情况下,使用3个尺度(边界框面积分别为eq?128%5E2%2C256%5E2%2C512%5E2 个像素)和3个长宽比(eq?1%3A1%2C1%3A2%2C2%3A1),在每个滑动位置产生eq?k%3D9 个anchor。对于大小为eq?W%5Ctimes%20H (通常约为2400)的卷积特征图,总共有eq?WHk 个anchor。在特殊情况下,可以增加一个eq?64%5E2 个像素的尺度来额外处理小目标。

使用anchor的一个重要特性是它是平移不变的,无论是在anchor还是计算相对于anchor的region proposal的函数。如果在图像中平移目标,proposal应该平移,并且同样的函数应该能够在任一位置预测proposal。平移不变特性也减小了模型的大小,减少过拟合的风险。

anchor通过参照多尺度和长宽比的anchor框来分类和回归边界框。它只依赖单一尺度的图像和特征映射,并使用单一尺寸的特征映射上的滑动窗口,使得共享特征更加高效,不需要额外的成本来处理尺度。

3.2 损失函数

为了训练RPN,为每个anchor分配一个二值类别标签(是目标或不是目标)。给这两种anchor分配一个正样本标签:

  1. 具有与真实边界框的重叠最高IoU的anchor
  2. 或者具有与真实边界框的重叠超过0.7IoU的anchor

其中,单个真实边界框可以为多个anchor分配正标签。

由于在一些极少数情况下,第二个条件可能找不到正样本,所以采用第一个条件。对于所有的真实边界框,如果一个anchor的IoU比率低于0.3,给非正样本的anchor分配一个负标签。既不是正样本标签也不是负样本标签的anchor对训练目标函数没有作用。

根据这些定义,根据Fast R-CNN中的多任务损失对目标函数进行最小化,对某一个图像的损失函数定义为:

eq?L%28%5Cleft%20%5C%7B%20p_i%5Cright%20%5C%7D%2C%5Cleft%20%5C%7Bt_i%5Cright%20%5C%7D%29%3D%5Cfrac%7B1%7D%7BN_%7Bcls%7D%7D%5Csum%20_iL_%7Bcls%7D%28p_i%2Cp_i%5E*%29+%5Clambda%20%5Cfrac%7B1%7D%7BN_%7Breg%7D%7D%5Csum%20_ip_i%5E*L_%7Breg%7D%28t_i%2Ct_i%5E*%29 

其中:

  • eq?i 是小批量数据中anchor的索引
  • eq?p_i 表示anchor eq?i是目标的预测概率,如果anchor为正样本标签,则真实标签eq?p_i%5E* 为1,如果anchor为负样本标签,则为0
  • eq?t_i 是表示预测边界框的4个参数化坐标组成的向量,而eq?t_i%5E* 是与正标签anchor相关联的真实边界框坐标组成的向量
  • 分类损失eq?L_%7Bcls%7D 是两个类别上(是目标或不是目标)的对数损失
  • 对于回归损失,使用eq?L_%7Breg%7D%28t_i%2Ct_i%5E*%29%3DR%28t_i%2Ct_i%5E*%29 ,其中eq?R 是在Fast R-CNN中的鲁棒损失函数(eq?Smooth_%7BL_1%7D)
  • eq?p_i%5E*L_%7Breg%7D 项表示回归损失仅对于正样本anchor(eq?p_i%5E*%3D1)有效,否则无效(eq?p_i%5E*%3D0)。eq?cls 和eq?reg 层的输出分别由eq?p_i 和eq?t_i 组成

对于边界框回归,采用R-CNN中的4个坐标参数化:

w%20_ah%20_a

w_a%29h_a%29

w%20_ah%20_a

w_a%29h_a%29.

其中eq?x%2Cy%2Cw%2Ch 表示边界框的中心坐标及其宽和高。变量eq?x%2Cx_a%2Cx%5E* 分别表示预测边界框、anchor框和边界框真值,类似于eq?y%2Cw%2Ch 。由此,可以被认为是从anchor框到相近实际边界框的回归。

3.3 训练RPN

RPN可以通过反向传播和随机梯度下降进行端对端训练。遵循Fast R-CNN中的“图像中心”采样策略来训练这个网络。在图像中随机采样256个anchor,计算一个小批量数据的损失函数,其中采样的正anchor和负anchor的比率可达1:1。如果图像中的正样本少于128个,使用负样本填充小批量数据。

本文中通过从标准方差为0.01的零均值高斯分布中获得权重来随机初始化所有新层。所有其他层(即共享卷积层)通过预训练的ImageNet分类模型来初始化,根据不同批量数据使用不同大小的学习率。

4 RPN和Fast R-CNN共享特征

在本文中采用四步交替训练算法,通过交替优化使RPN和Fast R-CNN学习共享特征:

  1. RPN使用ImageNet的预训练模型进行初始化,并针对region proposal任务进行了端到端的fine-tune。
  2. 使用由第一步RPN生成的proposal,由Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet的预训练模型进行初始化。此时两个网络不共享卷积层。
  3. 使用检测器网络来初始化RPN训练,但是修正共享的卷积层,并且只对RPN特有的层进行fine-tune。现在这两个网络共享卷积层。
  4. 保持共享卷积层的固定,对Fast R-CNN的独有层进行fine-tune。

由此,两个网络共享相同的卷积层并形成统一的网络。

除此之外,本文中还提出了近似联合训练,将RPN和Fast R-CNN网络在训练期间合并成一个网络,能够减少训练的时间,但是会忽略梯度变化,和非近似的联合训练,由RPN预测的边界框也是输入的函数。

总结

Faster R-CNN用RPN代替传统的感兴趣区域预测方法,通过与下游检测网络共享卷积特征,实现了近乎零代价的region proposal。由于RPN是基于深度学习的方法,因此可以借助GPU加速,提升Faster R-CNN算法训练和运行的速度,达到了近乎实时帧率运行的目标检测系统。Faster R-CNN在多个数据集上表现优秀,且容易进行迁移,对数据集中的目标类进行更改就可以很好的改变测试模型。

但由于Faster R-CNN在进行分类和回归时使用全连接层消除所抽取到特征的平移不变性,会引起:

  1. 无法实现对多个感兴趣区域进行计算时的参数共享,产生额外的计算开销,影响算法速度
  2. 造成了信息的丢失,影响算法的精度

并且R-CNN、Fast R-CNN、Faster R-CNN都是将目标检测分为两个阶段:生成region proposal和针对感兴趣区域中的内容进行分类和回归,从而会导致丢失局部目标在整幅图像中的空间信息。

 

 


http://www.ppmy.cn/devtools/144682.html

相关文章

华为、华三交换机纯Web下如何创关键VLANIF、操作STP参数

华为交换机WEB操作 使用的是真机S5735,目前主流的版本都适用(V1R5~V2R1的就不在列了,版本太老了,界面完全不一样,这里调试线接的console口,电脑的网络接在ETH口) 「模拟器、工具合集」复制整段内…

拷贝构造和赋值运算符重载

目录 一、拷贝构造 拷贝构造的特点: 下面来看一下传值返回的过程:(这里会形成无穷递归,所以会直接编译报错) 使用指针进行拷贝构造: 拷贝构造的写法: 二、赋值运算符重载 运算符重载的特点: 赋值运算…

【分享-POI工具,Excel字段取值容错小工具】

在使用POI导出Excel数据的时候这样 FileInputStream inputStream new FileInputStream(file);Workbook workbook WorkbookFactory.create(inputStream);Sheet sheet workbook.getSheetAt(0);for (Row row : sheet) {row.getCell(1).getStringCellValue();......}row.getCell…

Jenkins持续集成部署——jenkins安装

前言 Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI)和持续交付(CD)。它为软件开发团队提供了一个易于使用的平台来自动化构建、测试和部署应用程序的过程。 Jenkins 主要功能 1. 持续集成 (CI) 自动构建…

Vue3:uv-upload图片上传

效果图&#xff1a; 参考文档&#xff1a; Upload 上传 | 我的资料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生态框架 (uvui.cn) 代码&#xff1a; <view class"greenBtn_zw2" click"handleAddGroup">添加班级群</vie…

【系统移植】制作SD卡启动——将uboot烧写到SD卡

在开发板上启动Linux内核&#xff0c;一般有两种方法&#xff0c;一种是从EMMC启动&#xff0c;还有一种就是从SD卡启动&#xff0c;不断哪种启动方法&#xff0c;当开发板上电之后&#xff0c;首先运行的是uboot。 制作SD卡启动&#xff0c;首先要将uboot烧写到SD卡&#xff…

模仿elementui的Table,实现思路

vue2子组件使用render&#xff0c;给子子组件插槽传值 和elementui的Table一样使用render 在 Vue 2 中&#xff0c;子组件使用render函数向子子组件插槽传值可以通过以下步骤实现&#xff1a; 1、创建子组件 首先创建一个子组件&#xff0c;在子组件中使用render函数来渲染内容…

asyncio入门指南

本篇文章可以当作是官方文档的总结和补充&#xff0c;详细的API&#xff0c;还是需要看官方文档。一遍一遍看&#xff0c;每看都会有不同的收获。下面进行真题&#xff0c;发车&#xff01; 1.为什么需要asyncio asyncio库为我们提供了并发的能力。 当我们执行一个需要大量i…