Fast R-CNN论文阅读笔记

1 研究目的和方法

研究目的是为了提高目标检测的准确性和速度。

研究方法包括单阶段训练、多任务损失函数、感兴趣区域(RoI)池化层和端到端训练等。

2 主要发现和结论

显著提升检测速度、提高检测准确性、单阶段训练更有优势、多任务损失函数的有效性、感兴趣区域(RoI)池化层的重要性和端到端训练的可行性。

3 Fast R-CNN的结构和训练

输入是一张图片和一组感兴趣区域,每个RoI被池化为一个固定大小的特征图,然后通过全连接层映射成一个特征向量,输出是两个向量,softmax概率和边界框回归偏移量。

3.1 RoI池化层

RoI池化层的任务是把感兴趣区域的特征转化成固定大小的特征图,特征图的长宽是一个超参数可以自己设置。

这里的RoI层是SPPnets中使用的空间金字塔池化层的一个特例,在SPPnet中,空间金字塔池化层可以有多个金字塔层级,这意味着它可以在多个尺度上对输入特征图进行池化,从而生成一系列不同尺寸的池化特征图。而在Fast R-CNN中,RoI层采用了单一金字塔层级的策略。这意味着对于每个RoI,它只生成一个固定大小的特征向量,而不是一系列不同尺度的特征向量。这样做简化了模型的结构,减少了计算量。

3.2 预训练网络的初始化

作者使用了三个预训练的ImageNet网络进行实验,这些网络各有五个最大池化层和五到十三个卷积层。当一个预训练的网络被用来初始化Fast R-CNN网络时,它会经历三个转换步骤:

  1. 替换最后一个最大池化层:原始网络中的最后一个最大池化层被替换为一个RoI(区域感兴趣)池化层。这个RoI池化层被配置为设置H和W的值,以确保与网络的第一个全连接层兼容(例如,对于VGG16,H和W都设置为7)。

  2. 替换最后的全连接层和Softmax:原始网络中的最后一个全连接层和Softmax层(这些层原本是针对1000类ImageNet分类任务进行训练的)被替换为两个新的层。这两个层包括一个新的全连接层和一个新的Softmax层,后者针对K+1个类别(包括背景类别)进行分类,并且还有针对每个类别的边界框回归器。

  3. 修改网络以接受两个数据输入:网络被修改为接受两个数据输入,一个是图像列表,另一个是这些图像中的RoI列表。

3.3 微调

在R-CNNE和SPPnet的训练中,每个RoI都需要独立处理整个输入图像的接收域,因为每个RoI可能覆盖整个图像的不同部分。这意味着在反向传播过程中,需要对整个接收域进行梯度计算,这导致了计算量大、效率低。

由于每个RoI可能具有非常大的接收域,通常覆盖整个输入图像,因此在前向传播过程中必须处理整个接收域。这使得训练输入的大小通常很大(通常是整个图像),从而导致了训练效率的降低。为了解决这个问题,Fast R-CNN提出了一种更高效的训练方法,该方法在训练过程中利用了特征共享的优势。

在Fast R-CNN的训练中,随机梯度下降(SGD)的小批量样本是分层采样的,首先采样N个图像,然后从每个图像中采样R/N个RoIs。这样,来自同一图像的RoIs在前向和后向传播中共享计算和内存。通过使N保持较小,可以减少小批量计算的规模。例如,当使用N=2和R=128时,所提出的训练方案大约比从128个不同图像中采样一个RoI的策略(即R-CNN和SPPnet的策略)快64倍。

此外,Fast R-CNN还使用了一个简化的训练流程,其中只有一个微调阶段,该阶段联合优化了softmax分类器和边界框回归器,而不是像R-CNN和SPPnet那样在三个独立的阶段中分别训练softmax分类器、SVM和回归器。这种方法提高了训练效率,并允许网络通过反向传播更新所有层的权重,从而提高了目标检测的性能。

多任务损失:

网络有两个输出层,一个是分类层,一个是边界框回归层。

分类层为每一个RoI输出一个离散的概率分布,这个概率分布是通过全连接层的K+1个输出值应用softmax函数计算得到的(K个类别加上一个背景类别)。

边界框回归层输出每个类别的边界框回归偏移量,包括边界框的中心坐标偏移以及宽度和高度的相对偏移。

多任务损失函数:

Fast R-CNN使用平滑L1损失作为边界框回归的损失函数,定义如下:

平滑L1损失在处理异常值时比L2更为稳健,定义如下:

这个函数在∣x∣<1 时使用L2损失(平方损失),否则使用L1损失(绝对值损失)。这种设计使得平滑L1损失在回归任务中对于异常值的影响较小,同时避免了L2损失可能导致的梯度爆炸问题。

在所有实验中,λ 被设置为1,这意味着分类损失和定位损失被赋予了相同的重要性。

为了提高训练的稳定性和效率,真实回归目标 v 被归一化到均值为0且标准差为1。这有助于改善模型的学习过程。

小批量采样:

小批量构建:在微调过程中,每个随机梯度下降(SGD)小批量由 N=2 张图像组成,这些图像是从数据集中均匀随机选择的。实际应用中,通常会迭代数据集中的所有排列,以确保训练的多样性。

批量大小:每个小批量的尺寸 R=128,意味着每个小批量中包含128个区域兴趣(RoIs)。

RoI采样:从每张图像中采样64个RoIs。这些RoIs的选取基于它们与真实边界框(groundtruth bounding box)的交并比(IoU)。

前景和背景RoIs

前景RoIs:25%的RoIs是从与真实边界框IoU重叠度至少为0.5的对象提议中选取的。这些RoIs被标记为前景对象类别,即类别标签 u≥1。

背景RoIs:剩余的RoIs是从那些与真实边界框的最大IoU在区间 [0.1, 0.5) 之间的对象提议中采样的。这些RoIs被标记为背景类别,即类别标签 u=0。

硬例挖掘:IoU的下限阈值0.1作为一个启发式规则,用于硬例挖掘(hard example mining),即找出难以分类的样本以提高模型的性能。

数据增强:在训练过程中,图像以50%的概率水平翻转,这是一种数据增强技术,用于提高模型的泛化能力。除此之外,没有使用其他数据增强方法。

RoI池化层的反向传播:

  • 在反向传播中,RoI池化层的梯度计算依赖于前向传播过程中的argmax操作。具体来说,如果输入特征图中的位置i在RoIr的第j个子窗口中被选为最大值(即argmax),那么这个位置的梯度将被传递。
  • 对于每个RoIr和每个池化输出单元yrj,如果输入特征图中的xi在子窗口R(r, j)中被选为最大值(即i*(r, j)),则损失函数L相对于xi的偏导数∂L/∂xi将累加yrj的梯度∂L/∂yrj

简单来说,RoI池化层的反向传播过程就是找出在前向传播时重要的特征,并据此更新网络权重,而忽略那些没有被选为最大的特征。这样做可以有效地利用计算资源,只关注对最终结果影响最大的特征。

随机梯度下降的超参数:

初始化权重:

全连接层的权重,用于softmax分类和边界框回归,是从一个均值为零的高斯分布中初始化的。分类层的权重标准差为0.01,而回归层的权重标准差为0.001。这种不同的初始化策略有助于网络学习到适当的特征表示。

初始化偏置:

所有层的偏置项都被初始化为0,这通常有助于防止网络在训练初期产生过大的激活值。

学习率:

每个层的权重学习率设置为1,而偏置的学习率设置为2。这意味着在每次迭代中,权重和偏置的更新幅度可能会不同,偏置可能会更快地调整。

全局学习率:

全局学习率设置为0.001,这是用于所有层的初始学习率。

学习率衰减:

在训练VOC07或VOC12数据集时,使用SGD进行30,000次小批量迭代后,将全局学习率降低到0.0001,并继续训练10,000次迭代。这种学习率衰减策略有助于网络在训练初期快速收敛,在训练后期进行精细调整。

动量(Momentum):

         使用动量0.9,这意味着在每次迭代中,更新会考虑前一次迭代的动量,有助于网络在优化过程中保持稳定,并越过局部最小值。

参数衰减(Weight Decay):

参数衰减设置为0.0005,它对权重和偏置项都适用。参数衰减是一种正则化技术,用于防止过拟合,通过在损失函数中添加一个与参数大小成比例的惩罚项来实现。

迭代次数:

对于更大的数据集,SGD会运行更多的迭代次数,以确保网络有足够的时间来收敛。

3.4 尺度不变性

为了实现对不同尺寸目标的检测(即尺度不变性),作者探索了两种主要策略:

“暴力法”学习(Brute Force Learning)

在这种方法中,网络在训练和测试时都使用固定的图像尺寸。这意味着网络需要直接从训练数据中学习尺度不变性,即识别出在不同尺寸下的目标。

使用图像金字塔(Image Pyramids)

与“暴力法”不同,图像金字塔方法提供了一种近似的尺度不变性。这种方法通过构建图像金字塔,即一系列不同尺寸的图像版本,来实现。在测试阶段,使用图像金字塔来对每个目标提议进行尺度归一化,这有助于网络对同一目标的不同尺寸进行检测。在多尺度训练中,每次对图像进行采样时,都会随机选择一个金字塔尺度,这作为一种数据增强的形式,有助于网络学习在不同尺度下识别目标。

由于GPU内存的限制,多尺度训练策略主要用于较小的网络。

4 Fast R-CNN检测

4.1 截断SVD

在全图分类任务中,全连接层的计算时间相比于卷积层较小。然而,在目标检测任务中,由于需要处理大量的区域兴趣(RoIs),全连接层的计算时间占据了前向传播的近一半。

为了加速全连接层的计算,可以使用SVD来压缩权重矩阵 W。W 是一个 u×v 的矩阵,通过SVD可以分解为三个矩阵的乘积:

其中,U是一个u×t的矩阵,包含了W的前t个左奇异向量;Σt是一个t×t的对角矩阵,包含了W的前t个奇异值;VT是一个v×t的矩阵,包含了W的前t个右奇异向量。

通过只保留最大的 t 个奇异值及其对应的奇异向量,可以将原始矩阵 W 的参数数量从 uv 减少到 t(u+v)。如果 t 远小于 u 和 v 中的较小值,这种参数数量的减少可以非常显著。

为了实现压缩,可以将对应于 W 的单个全连接层替换为两个全连接层,这两个层之间没有非线性激活函数。第一个层使用权重矩阵 Σt​VT(没有偏置项),第二个层使用 U(带有原始的偏置项)。

5 主要结果

1.在VOC07,2010和2012上达到最好的mAP;

2.相对于R-CNN和SPPnet有更快的训练和测试速度;

3.在VGG16卷积层上的微调提升了mAP。

5.1 实验设置

使用了三个预训练的模型,第一个是原始的R-CNN,标记为S,第二个是和S同样深度的但更宽的VGG模型,标记为M,第三个是VGG16,标记为L,在这一节的实验中都使用单尺度训练和测试。

5.2 在VOC2010和2012上的结果

Fast R-CNN在目标检测任务上的竞争力,不仅在准确性上取得了优异的成绩,同时在速度上也有显著的提升。

5.3 在VOC2007上的结果

SPPnet在训练和测试期间使用了五种不同的尺度。这意味着它在多个尺度上处理图像,以提高对不同尺寸目标的检测能力。

即使Fast R-CNN使用单尺度训练和测试,通过微调(fine-tuning)卷积层,它在平均精度均值(mAP)上取得了显著的提升,从63.1%提高到66.9%。这表明Fast R-CNN能够有效地利用深度网络的特征,即使在没有多尺度处理的情况下。

5.4 训练和测试时间

Fast R-CNN不仅提高了效率,而且减少了资源消耗,这对于实时目标检测应用和大规模数据处理特别有价值。

截断SVD:

截断SVD可以减少30%以上的检测时间而mAP仅仅下降0.3%。

5.5哪些层需要微调?

作者提出了一个假设,即对于非常深的网络,仅仅微调全连接层可能不足以保持高性能。为了验证这一点,他们设计了一个实验。

在实验中,作者使用Fast R-CNN框架来微调VGG16网络,但是他们冻结(freeze)了网络中的十三层卷积层(conv layers),这意味着在训练过程中不更新这些层的权重。只有全连接层在训练中学习。

实验结果显示,当冻结卷积层时,模型在VOC07数据集上的平均精度均值(mAP)从66.9%下降到了61.4%。这表明在微调过程中,更新卷积层的权重对于保持和提升模型的性能至关重要。

对于VGG16,从conv3_1层开始微调是一个实用的选择,因为它在训练时间和GPU内存使用方面提供了一个良好的平衡,并且对最终的mAP影响很小。而对于较小的网络,从conv2层开始微调是可行的,因为它们通常不会遇到内存限制的问题。

6 设计评估

在PASCAL VOC07数据集上对Fast R-CNN与R-CNN和SPPnet进行了比较和评估设计。

6.1 多任务训练有帮助吗?

第一列没有边界框回归,第二列有边界框回归但在测试时失能,说明多任务学习是有积极作用的。

第三列有边界框回归,但是是分阶段进行训练的,性能不如多任务训练。

6.2 尺度不变性:蛮力还是巧妙?

尽管多尺度方法可以提供一定程度的尺度不变性,但研究表明,这种方法在提高平均精度(mAP)方面的效果有限,而且会显著增加计算时间。

6.3 需要更多的训练数据吗?

为了评估Fast R-CNN,研究者将VOC07的trainval数据集与VOC12的trainval数据集合并,使得训练图像数量增加到16500张,大致增加了三倍。VOC07测试集上的mAP从66.9%提高到了70.0%。

在VOC10和VOC12数据集上,通过增加训练数据和调整训练策略,mAP分别从66.1%提高到了68.8%,以及从65.7%提高到了68.4%。

这些实验结果表明,对于Fast R-CNN,更多的训练数据和适当的训练迭代次数可以显著提高目标检测的性能。

6.4 SVMs比softmax更出色吗?

这个结果表明在目标检测任务中,使用softmax进行一次性(one-shot)微调已经足够有效。

softmax分类器与SVM的一个不同之处在于,softmax在对RoI(区域感兴趣)进行评分时,会在类别之间引入竞争机制。这意味着softmax在计算每个类别的概率时,会考虑到所有类别的概率分布,而SVM则通常独立地为每个类别训练一个分类器。

6.5 更多的区域提议总是更好吗?

稀疏集对象提议:一些目标检测方法,如选择性搜索(selective search),使用稀疏集的对象提议。这意味着从图像中生成的候选区域数量相对较少,但每个提议都经过精心挑选,以最大化其包含目标对象的可能性。

密集集对象提议:其他方法,如基于部件的模型(DPM,Deformable Parts Model),使用密集集的对象提议。这些方法生成大量的候选区域,包括许多可能不包含目标对象的区域。

级联机制:在稀疏集提议方法中,提议机制首先排除大量候选项,留下一个较小的集合供分类器评估。这种级联(cascade)机制可以提高检测精度,因为它减少了分类器需要处理的候选区域数量。

把级联机制应用在DPM上可以提高目标检测的准确性。

如果候选对象仅仅扮演一个纯粹的计算角色,那么增加每张图像的候选数量应该不会损害模型的平均精度,然而,实验结果表明,随着候选数量的增加,mAP最初有所提升,但随后会轻微下降。

AR 是衡量对象候选质量的先进指标,它在使用 R-CNN 和固定数量的候选时与 mAP 高度相关。但是,当改变每图像的候选数量时,AR 与 mAP 的相关性不再显著。这意味着,即使 AR 因为更多的候选而提高,也不能保证 mAP 会增加。

幸运的是,使用FastR-CNN模型M进行训练和测试的时间少于2.5小时。这使得研究者可以高效地、直接地评估对象候选的mAP,而不是依赖于代理指标(如AR)。 

在研究 Fast R-CNN 对象检测模型时,除了使用选择性搜索(selective search)生成的候选区域外,还尝试了使用密集生成的盒子(boxes),这些盒子是在图像的尺度(scale)、位置(position)和宽高比(aspect ratio)上全面覆盖的,平均每张图像大约生成了 45,000 个盒子。尽管密集生成的盒子数量巨大,但 mAP 的下降幅度相对较小,这表明密集盒子对于模型性能的影响并不是灾难性的。这可能意味着即使在非常密集的候选区域设置下,Fast R-CNN 仍然能够保持相对较高的检测性能。

作者指出,密集生成的候选区域在统计特性上与选择性搜索生成的候选区域不同。这种差异可能影响检测器的性能。实验从2000个选择性搜索生成的候选区域开始,然后作者随机地向其中添加不同数量的密集生成的候选区域。随着密集候选区域数量的增加,mAP持续下降,最终稳定在53.0%。这表明,尽管密集候选区域能够提供更全面的覆盖,但过多的候选区域会显著降低检测器的准确性。

作者提到他们训练和测试了一个仅使用密集生成的候选区域(dense boxes)的Fast R-CNN模型,每张图像大约有45,000个盒子。这种设置下,模型的平均精度(mAP)是52.9%。为了探究是否需要使用支持向量机(SVM)和硬负挖掘(hard negative mining)来处理密集候选区域分布,作者进行了另一项实验。在这项实验中,他们使用SVM代替了Fast R-CNN中的softmax分类器,并对模型进行了训练和测试。结果表明,使用SVM的方法性能更差,mAP降至49.3%。

这些发现指出:

仅使用密集生成的候选区域而不进行选择性搜索可能会损害检测器的性能。

在这种特定的实验设置中,使用SVM和硬负挖掘并没有提高性能,反而导致了性能的下降。这可能表明softmax分类器在Fast R-CNN的端到端训练框架中已经足够有效,而不需要额外的SVM分类器。

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值