RCNN,fast-rcnn学习笔记

RCNN,faste-rcnn学习笔记

RCNN

首先来说一下RCNN。至于RCNN的开创新地位我就不提了,直接讲RCNN的结构。
RCNN,fast-rcnn学习笔记
首先RCNN有一个预训练的backbone(alexnet,vgg),然后重新训练一下最后的全连接层也就是fine-tune技术,因为我们的输出的N类,所以我们要把之前的20类改成N+1类输出。再然后就是候选框的生成,利用的selective Search算法提取所有的候选框2000个(至于什么是Selective Search也很简单,就是先用计算相似度等基础的图像分割算法得到很多小区域,然后再对这些区域进行合并,基于像素,位置相似度等。),然后将图片resize成固定大小,最后把cnn网络提取出来的feature-map放入到磁盘。。。。。(对你没看错,存入磁盘。。。。)
由于CNN的计算IOU的方式跟SVM是有差别的,由于CNN在训练阶段的region proposal是很粗略的,所以,IOU设置的比较小一般是0.5,但是SVM的IOU是比较严格的,这样就会导致最后CNN的softmax出来的分类效果是比较差的。所以作者又添加了使用SVM的分类器和线性脊回归的回归器(也就是最小二乘法+正则化),来对图片进行分类和候选框位置的回归。当然分类的最后还应该使用NMS进行操作。

Fast-RCNN

在说Fast-rcnn之前有必要提一下spp-net,Fast-RCNN是在SPPNet和RCNN的基础上进行改进的。sppnet的主要贡献就是在整张图片上计算feature-map(而rcnn是对每一个候选框计算feature-map),然后对于每一个proposal只需要在全局特征图上提取相应的feature-map就好了。但是这些feature-map还是需要存盘,速度还是很慢。

所以Fast-rcnn提出直接将候选区域用于特征图,然后进行roi-pooling成固定大小的特征图。

Fast R-CNN 两大主要贡献点 :

1 实现大部分end-to-end训练(提proposal阶段除外): 所有的特征都暂存在显存中,就不需要额外的磁盘空。
joint training (SVM分类,bbox回归 联合起来在CNN阶段训练)把最后一层的Softmax换成两个,一个是对区域的分类Softmax(包括背景),另一个是对bounding box的微调。这个网络有两个输入,一个是整张图片,另一个是候选proposals算法产生的可能proposals的坐标。(对于SVM和Softmax,论文在SVM和Softmax的对比实验中说明,SVM的优势并不明显,故直接用Softmax将整个网络整合训练更好。对于联合训练: 同时利用了分类的监督信息和回归的监督信息,使得网络训练的更加鲁棒,效果更好。这两种信息是可以有效联合的。)

2 提出了一个RoI层,算是SPP的变种,SPP是pooling成多个固定尺度,RoI只pooling到单个固定的尺度 (论文通过实验得到的结论是多尺度学习能提高一点点mAP,不过计算量成倍的增加,故单尺度训练的效果更好。)
RCNN,fast-rcnn学习笔记