Fast R-CNN
Fsat R-CNN architecture and training

Fast R-CNN是将整个图像和一组OP方法作为输入。网络首先使用几个卷积层和最大池化层处理整个图像,然后在特征图中通过Rol池化层得到特征向量。每个特征向量再送到一系列的全连接层中,最后分成两个同级输出层:一个层通过K个对象类以及所有的背景类进行softmax概率估计;另一个层对K个对象类的每一个输出四个真实值(这4个值的编码精确对应每一个K类的边界框位置)。
The Rol pooling layer
Rol池化层使用最大池化将任何有效感受野内的特征转化为具有固定空间范围的HW(例如77)的小特征图,其中H和W是层超参数,与任何特定的Rol无关。Rol是一个成为卷积特征图的矩形窗口。每个Rol由四元祖(r,c,h,w)组成。
Rol最大池化层是将hwRol窗口转换成大约h/Hw/W个网格,每个网格为H*W的子窗口。然后将每个子窗口中的值最大池化为相应的输出网格单元。像标准最大池化一样,池化独立应用每个特征图的通道。Rol层仅仅是SPPnets中使用空间金字塔池化层的特例,在该空间中只有一个金字塔层。
Initializing from pre-trained networks
当预训练的网络初始化一个Fast R-CNN网络时,它将经历三个转化。
1.首先,最大池化层被Rol池化层取代,该Rol池化层通过将H和W设置为与网络的第一个全连接层兼容。例如VGG16,H=W=7。
2.其次,将网络的最后一个全连接层和softmax(经过1000路Imagenet分类训练)替换为前面描述的两个同级输出层。
3.最后,修改网络以获取两个数据输入:图像列表和这些图像中的Rol列表。
Fine-tuning for detection
本文提出了一个在训练过程中利用特征共享的方法。在Fast R-CNN训练过程中,使用小批量随机梯度下降法进行分层采样。首先通过采样N个图像,然后将每张图像采样成R/N个Rol。最重要的是,来自同一张图像的Rol在前向和后向传播中共享计算和内存。例如当R=128,N=2时,提出的训练方案就比从128个不同图像中采样单一Rol快大约64倍。
除了分层采样外,Fast R-CNN还使用一个微调阶段优化softmax分类器和边界框回归器来提高训练效率,而不是直接训练softmax分类器,SVM和回归器这三个阶段。下面描述了微调阶段(损失函数,小批量采样策略,通过Rol层的反向传播以及SGD超参数)的组成部分:
Multi-task loss FastR-CNN网络有两个同级的输出层。首先输出离散的概率分布(前向 Rol),
其中类别超过k+1个类别。通常p是对k+1个输出全连接层的softmax进行计算的。第二个同级层输出边界框回归偏移量。对于每一个K目标分类,都有k个索引。我们对
使用论文《Rich fea- ture hierarchies for accurate object detection and semantic segmen 》中给出的参数化,其中
给定了相对于OP的比例不变平移和对数空间高度/宽度偏移。
每一个训练的Rol都有一个真实类别u和真实回归框目标v的标签。我们使用多任务损失L在每个Rol标签上共同进行分类和边界框的回归:
其中 是真实类别u的对数损失。
第二个任务损失L_{loc}是定义在一个元组上类别为v的真实边界框回归目标和一组类别为u的预测元组
。方括号里面的条件满足为1,不满足为0。对于背景Rol来说,它不够作为边界框的参考标准,因此可以忽略。对于边界框回归,我们使用损失函数
其中
是一个鲁棒性的损失,它对异常值的敏感性低于使用在R-CNN和SPPNet上的L2损失函数。当回归目标没有限制时,具有L2损失函数的训练可能需要仔细调整学习率,以防止梯度爆炸。而等式4可以消除这种敏感性。
等式2中的超参数控制的是两个任务损失之间的平衡。我们将边界回归目标
标准化为均值和单位方差为零。所有的实验均使用
=1
Mini-batch sampling
在微调过程中,每个SGD微型批量处理均由N=2张图像构成,并且是随机选择的。本文使用大小为R=128的微型批次,从每个图像中采样64个ROL。从具有IoU不小于0.5的回归真实边界框重叠的目标中获取25%的Rol。这些Rol从具有最大IoU且在间隔为(0.1,0.5)的回归框中采样,这些是背景示例并标记为u=0.
Back-propagation through Rol pooling layers
反向传播路径通过求导通过Rol池层。为了清楚起见,我们假设每个小批量(N=1)仅一张图像,但拓展到N>1很简单,因为前向通过独立地对待所有图像。
令是Rol池层的第i个激活输入,而y_{rj}是第r个Rol的第i个激活输出。Rol池层计算
其中
是字窗口中的一组在y_{rj}池化上的输入。每个x_i可以分配给几个不同输出y_{rj}。
Rol池化层的后向传递函数通过遵循argmax开关,针对每个输入变量x_i计算损耗函数的偏导数。
换句话说,对于每个小批量的Rol r和每个合并输出的单元y_{rj},如果i是通过最大合并为y_{rj}选择的argmax,则累计偏导数。在反向传播中,已经通过Rol池化层的向后函数计算了偏导数
。
SGD hyper-parameters
从零均值高斯分布(标准差分别为0.01和0.001)初始化用于softmax分类和边界框回归的完全连接层。偏差初始化为0.所有层的权重没层学习率分别为1和2。偏误的全局学习率均不为0.001。在针对30k的小批量迭代运行SGD,然后将学习率降低至0.0001,然后再进行10k的迭代训练。 当我们在更大的数据集上进行训练时,我们将运行SGD进行更多的迭代,如下所述。 使用的动量为0.9,参数衰减为0.0005(基于权重和偏差)。
网友评论