Fast R-CNN

FAST R-CNN

目前,深度卷积网络在图像分类和目标检测有明显的提高。相比于图像分类,目标检测是一项更具有挑战性的任务。其中,需要精确的定位目标的位置。因此,有两个挑战,一、产生大量的候选目标框,二、由候选目标框产生的粗略的定位必须被refine从而实现精确的定位。

为了对现有检测算法的改进,作者提出了Fast R-CNN,它不仅在训练和测试时速度更快,而且具有一下几项优势:

1、Higher detection quality(mAP) than R-CNN,SPPnet

2、Training is single-stage,using a multi-task loss

3、Training can updata all network layers

4、No disk storage is required feature caching

上图fig.1中展示了Fast R-CNN结构。Fast R-CNN network的输入为整张图像和一组object proposals。该网络首先使用几个卷积层和最大池化层处理整张图像。从而产生一个feature map。然后,对每个object proposal,使用ROI pooling layer从feature map中提取固定长度的特征向量,该特征向量被输入全连接层。最后,产生了两个子输出层,一个产生K个物体类别的softmax概率估计和背景类的估计。另一个层对每个物体类别产生四个real-valued。K个类别中,每个类别边界框位置的4个值被精细编码。

RoI pooling层使用最大池化的方法将object proposal在feature map中对应有效感兴趣区域内的要素转换为具有固定空间范围的H乘W,如:(7*7)的小特征映射。这里的H和W,作者认为是hyper-parameters超参数,它与RoI是独立的。论文中映射到卷积后的feature map的每一个RoI是一个矩形窗口。每个RoI由四元组(r;c;h;w)定义,分别表示其左上角(r;c),及其高度和宽度(h;w)。

2.2. Initializing from pre-trained networks

作者实验中用到了3个ImageNet来预训练网络,每个都有5个最大池化层和5-13个卷积层。在用预训练的网络初始化Fast R-CNN网络的时候,它经历了三个转化。
一、使用RoI池化层代替最后的最大池化层,其中配置RoI的窗口大小为H乘W,以使其兼容网络的第一个全连接层。
二、网络最后的全连接层和soft-max(训练1000类别)使用两个子层代替,一个全连接层和softmax为了K个类别和背景的分类,及其每个类别对应的bounding-box回归。
三、网络的输入被修改为两个数据的输入,一个图像list和对应的RoIs列表list。

2.3. Fine-tuning for detection

使用反向传播训练所有网络权重是快速R-CNN的重要功能。 首先,让我们阐明为什么SPPnet无法更新空间金字塔池化层下的权重。

根本原因是当每个训练样本(即RoI)来自不同的图像时,通过SPP层的反向传播非常低效,这正是R-CNN和SPPnet网络的训练方式。 效率低下的原因在于每个RoI可能具有非常大的感受野,通常跨越整个输入图像。 由于前向传播必须处理整个感受野,因此训练输入很大(通常是整个图像)。

我们提出了一种更有效的训练方法,利用训练期间的特征共享。 在快速RCNN训练中,随机梯度下降(SGD)微小块被分级地采样,首先通过采样N个图像然后通过从每个图像采样R/N个RoI来采样。 重要的是,来自相同图像的RoI在前向和后向传递中共享计算和存储器。 使N小减少小批量计算。 例如,当使用N = 2且R = 128时,所提出的训练方案比从128个不同图像采样一个RoI(即,R-CNN和SPPnet策略)快大约64倍。

其中,作者担心上述的训练策略可能会使得收敛变慢,因为来自相同图像的RoI是相关的。但是实践中并没有影响,实验获得了良好的结果。

除了分层采样之外,Fast R-CNN使用简化的训练过程和一个微调阶段,共同优化softmax分类器和边界框回归器,而不是在三个不同的阶段训练softmax分类器,SVM和回归器[9] ,11]。 该过程的组件(损失,小批量采样策略,通过RoI池化层的反向传播和SGD超参数)描述如下。

Multi-task loss.

Fast R-CNN网络有两个子输出层。对于每个RoI,第一个输出离散的概率分布 p = (p0; : : : ; pK),K+1个类别。像往常一样,p由完全连接层的K + 1输出上的softmax计算。第二个兄弟层输出边界框回归偏移 tk = (tk x ; tk y ; tk w; tk h)。对于每个K对象类,由k索引。其中tk指定相对于对象提议的比例不变的平移和对数空间高度/宽度偏移。

每个训练RoI都标有地面真值类u和地面真实边界框回归目标v。我们在每个标记的RoI上使用多任务损失L来联合训练分类和边界框回归:

in which Lcls(p; u) = − log pu is log loss for true class u.

第二个任务的损失Lloc被定义在真实bounding-box回归目标u的元组上,v = (vx; vy; vw; vh),预测到的元组为tu = (tu x ; tu y ; tu w; tu h )。当u≥1时,艾弗森支架指示器功能[u≥1]评估为1,否则为0。 按照惯例,catch-all背景类标记为u = 0。对于背景RoI,没有ground truth的概念,因此忽略Lloc。

对于bounding box regression,使用损失如下:

上述是鲁棒的L1损失,它相比于R-CNN和SPPNet使用的L2损失,对于奇异值不敏感。

当回归目标无限制时,L2损失训练可能需要仔细调整学习速率以防止爆炸梯度。式3消除了这种敏感性。

等式1中的超参数λ控制两个任务损失之间的平衡。 我们将ground truth回归目标vi标准化为零均值和单位方差。 所有实验都使用λ= 1。

作者提到将分类和边界回归分开的双系统网络相对于Fast R-CNN来说是次优的。

Mini-batch sampling

在微调期间,每个SGD小批量由N = 2个图像构成,随机均匀选择(通常的做法是,我们实际上迭代数据集的排列)。 我们使用尺寸为R = 128的小批量,从每个图像中采样64个RoI。 与[9]中一样,我们从object proposals中选取25%的RoIs,它们与ground truth边界框的交叉联合(IoU)重叠率至少为0.5。 这些RoI包含标有前景对象类的示例,即u≥1。剩余的RoI是从对象提议中采样的,这些对象提议在区间[0.1; 0.5),继[11]之后。 这些是背景示例,并用u = 0标记.0.1的下限阈值似乎充当了硬实例挖掘的启发式算法[8]。 在训练期间,图像以0.5的概率水平翻转。 没有使用其他数据增强的方法。

2.4. Scale invariance

我们探索了两种实现尺度不变对象检测的方法:(1)通过“强力”学习和(2)使用图像金字塔。 这些策略遵循[11]中的两种方法。 在蛮力方法中,在训练和测试期间以预定义的像素大小处理每个图像。 网络必须直接从训练数据中学习尺度不变的物体检测。

相反,多尺度方法通过图像金字塔提供对网络的近似尺度不变性。 在测试时,图像金字塔用于近似地对每个对象提议进行缩放标准化。 在多尺度训练期间,我们在每次采样图像时随机采样金字塔尺度,[11],作为数据增强的一种形式。 由于GPU内存限制,我们仅尝试针对较小网络的多规模培训。

3. Fast R-CNN detection

一旦对快速R-CNN网络进行微调,检测就会比运行正向传递更多(假设对象提议是预先计算的)。 网络将图像(或图像金字塔,编码为图像列表)和R对象提议列表作为输入。 测试时间,R通常在2000左右,但我们会考虑它更大的情况(≈45k)。 当使用图像金字塔时,每个RoI被分配给比例,使得缩放的RoI最接近区域中的2242像素[11]。

3. Fast R-CNN detection

一旦对快速R-CNN网络进行微调,检测就等于运行正向传递(假设对象提议是预先计算的)。 网络将图像(或图像金字塔,编码为图像列表)和R对象提议列表作为输入。 测试时间,R通常在2000左右,但我们会考虑它更大的情况(≈45k)。 当使用图像金字塔时,每个RoI被分配到缩放比例,使得缩放的ROI在区域[11]中最接近224的平方个像素。

对于每个测试RoI r,前向遍历输出一个类后验概率分布p和一组相对于r的预测的边框偏移(K个类中的每个类得到它自己的精细的边框预测)。我们使用估计的概率Pr(class=k j r)=pk,为每个对象类k向r分配检测置信度。然后,我们使用来自R-CNN[9]的算法和设置对每个类独立地执行非最大值抑制。

3.1. Truncated SVD for faster detection

对于全图像分类,与conv层相比,计算全连通层所花费的时间较小。相反,为了检测要处理的RoI的数量很大,并且几乎一半的正向通过时间用于计算完全连接的层(参见图2)。通过截断SVD[5,23]压缩大型全连接层,可以容易地加速它们。

在该技术中,由u×v权重矩阵W参数化的层使用SVD近似分解如下:

在这个分解中,U由u*t矩阵组成,是W的第一个左奇异向量,Σt是W中t乘t的对角矩阵,V是v乘t的右奇异矩阵。截断SVD减少了参数的数量从uv到t(u+v),当t远小于min(u,v)时效果是明显的。为了压缩网络,对应于W的单个完全连接层被两个完全连接层代替,它们之间没有非线性。当RoI数量较多时,这种简单的压缩方法提供了良好的加速比。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值