fast rcnn论文
背景:rcnn、sppnet、deep ConvNets
面临的挑战:
1、必须处理大量的候选框
2、生成的候选区域必须重新调整,用以获得更加精确的位置
分析rcnn和sppnet:
rcnn缺点:
1、多步训练
2、训练花费大量的时间和空间
3、定位非常缓慢 rcnn定位缓慢是由于,对每个proposal进行卷积计算,在同一张图片中没有进行共享卷积运算。 sppnet对整个图像进行卷积运算,从整个feature map中提取每个proposal的特征vector,多尺度池化,类似于空间金字塔赤化,
sppnet缺点:
1、训练步骤和rcnn大致相同
2、特征写到disk中
3、fine-tuning无法使用,限制了不能使用非常深的网络
结构:
核心:
1、ROI区域的生成:
在fast rcnn中roi区域,并不是对每个proposal进行卷积得到,而是通过在一张图像上的一次卷积,再通过坐标的缩放定位到proposal区域的特征图。
2、roi pooling layer,可以看作空间池化金字塔的一种特例。
将h x w roi区域划分为H x W的网格,,在每个h/H x w/W的网格中使用最大池化,这对于每个特征图来说都是独立的。
3、fine-tuning rcnn sppnet 反向传播的训练集来自于不同的图片,效率低下。
在fast rcnn中 sgd mini-batches 来自于N个图像,每个图片中包含R/N个roi
在sppent中只对fc层进行fine-tuning,但是在本文中,作者证明了roi pooling层同样需要fine-tuning。对于卷积层而言,只有后面的卷积层预训练有效果。
实现细节:
1、任务损失:
多任务同时训练提高mAP
2、Mini-batch采样: 在fast rcnn中 sgd mini-batches 来自于N个图像,每个图片中包含R/N个roi,N = 2,R = 128,25% roi 的 iou > 0.5 ,0.1-0.5 iou作为背景,u= 0,iou< 0.1作为 hard example mining.
3、通过roi pooling layer反向传播:
其中xi为第i个输入roi,yrj 为第r个roi的第j个输出。
在这里个人认为每个输入roi对应多个输出,是由于在之前的deep conv网络中,提取了不同尺度的特征图谱,所以对于每个roi存在多个特征图谱,而roi pooling layer独立地池化每特征层。
4、sgd超参数设置: 每一层的学习率和全局的学习率
预训练的学习率和fine-tuning的学习率
尺度不变性: 通过两种方法实现尺度不变性:1、强力的学习(也就是卷积层特征提取)2、图像金字塔
5、svd奇异值分解减少fc层的计算
参数大大减少,fc层 的运行时间也大大减少。
评价:
1、多任务训练提升了效果
2、尺度不变性:选择强力学习还是池化金字塔?
deep Conv已经学习了强力的特征,这在vgg16上尤为明显,本文中仅仅使用了一种尺度的空间金字塔,从计算和效果的综合角度来讲,性价比最高。
3、更多的训练数据将获得更好的效果,这是由于使用容量更大的深度网络。
4、svm和softmax相比,softmax略优。
5、更多的proposal更好嘛? 并不是,先上升后下降。