rcnn网络学习资料整理

来源:互联网 发布:遇到网络诈骗怎么报警 编辑:程序博客网 时间:2024/05/16 23:53
一、Selective Search for Object Recognition:
1、首先得到一些小的初始化区域,方法参考:http://blog.sciencenet.cn/blog-261330-722530.html
2、在存在的区域中找出相似性最大的两个区域合并,重复此步骤直到最后就剩下一个区域
参考链接:
http://blog.csdn.net/charwing/article/details/27180421


二、RCNN算法流程:
1、输入图像
2、使用了Selective Search方法从一张图像生成约2000-3000个候选区域
(合并区域时,总面积在其BBOX中所占比例大(BBOX:boundingbox是求最小外接矩形)的优先,还有更多其他的规则,详见链接)
关键:Selective Search的合并规则、多样化与后处理(为尽可能不遗漏候选区域,上述操作在多个颜色空间中同时进行(RGB,HSV,Lab等)。在一个颜色空间中,使用合并规则的不同组合进行合并。所有颜色空间与所有规则的全部结果,在去除重复后,都作为候选区域输出。)
3、特征提取(每个候选区域都会提取出自己的特征,这些特征代表这个候选框是否为哪一类或者是背景,需要用数据集训练):
(1)预处理:将候选区归一化成同一尺寸227*227
(2)预训练:用ILVCR 2012提供的1000类的数据,对这个网络进行训练(cnn网络训练出4096维的特征,网络输出加一个4096*1000的全连接(fc)进行分类,分成1000类)
(3)调优训练:用PASCAL VOC 2007对这个网络训练,PASCAL VOC 2007提供了图像的检测位置和类别(20类),新增一类背景,共21类。加一个4096*21的全连接层
4、分类:对cnn的4096个特征输出,将这些特征输入多个类的svm二类分类器中,来判断是否属于此类
如果想要用自己的新数据进行训练,比如只有20个类,可以在这个cnn的网络基础上,将最后一个全连接层换掉就可以了(4096*20)
5、位置精修
目标检测问题的衡量标准是重叠面积:许多看似准确的检测结果,往往因为候选框不够准确,重叠面积很小。故需要一个位置精修步骤。 回归器:对每一类目标,使用一个线性脊回归器进行精修。正则项λ=10000。 输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。 训练样本:判定为本类的候选框中和真值重叠面积大于0.6的候选框。
参考链接:
http://blog.csdn.net/shenxiaolu1984/article/details/51066975
https://zhuanlan.zhihu.com/p/23006190






注:
常规的DeepCNN都要求输入图像尺寸固定,这是因为在全连接层中要求输入固定长度的特征向量,而全连接层之前的卷积pooling层并不严格要求输入图像的尺寸固定(求参数时只对filter和偏置求导,filter本身固定)。卷积pooling层的输出尺寸比例基本和输入图像的尺寸比例一致,这些输出就是所谓的特征图(feature map)。特征图不仅仅反映输入图像对特征响应的强度信息,还反映出空间位置信息
end-to-end 网络:端到端指的是输入是原始数据,输出是最后的结果,原来输入端不是直接的原始数据,而是在原始数据中提取的特征,这一点在图像问题上尤为突出,因为图像像素数太多,数据维度高,会产生维度灾难,所以原来一个思路是手工提取图像的一些关键特征,这实际就是就一个降维的过程
参考:
http://blog.csdn.net/langb2014/article/details/53019350




三、
sppnet layer:
 ​spp layer具体的操作时,是对任意尺度的feature map,平均划分了 n x n(n为预先设置好的参数) 个bin(区域),对于每个bin采用max pooling,这样我们就产生了n^2个feature。由于n是固定的,这就实现了从任意大小feature map到固定大小feature的转换。再重新从原图划分 i x i 个bin(i进行max pooling产生i^2个feature,以此类推……在论文图例(下图)中分别使用的bin个数是4x4,2x2,1x1(空间金字塔), 所以对于一个feature map,生成大小为16+4+1的feature。
参考链接:
http://blog.csdn.net/u011534057/article/details/51219959
http://blog.sina.com.cn/s/blog_82dacb800102w88p.html
http://blog.csdn.net/whiteinblue/article/details/43415035
http://backnode.github.io/pages/2015/11/11/spp-net.html


Bounding-box regression:
参考链接:
http://blog.csdn.net/u011534057/article/details/51235964


fine-tuning(微调):
比如说,先设计出一个CNN结构。然后用一个大的数据集A,训练该CNN网络,得到网络a。可是在数据集B上,a网络预测效果并不理想(可能的原因是数据集A和B存在一些差异,比如数据来源不同导致的代表性差异)。如果直接用B的一部分训练的话,数据量太小,CNN不适用。解决方法:将数据集B分为train集和test,以a网络的参数为初始参数,以较小的学习率,以B的train集为训练数据,继续训练,得到网络b。这样,b在B的test集中一般可实现较好的预测精度。
参考链接:
https://www.zhihu.com/question/40850491/answer/88651844


四、Fast RCNN:
注意:
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,不过计算量成倍的增加,故单尺度训练的效果更好。)
参考链接:
http://shartoo.github.io/RCNN-series/
http://blog.csdn.net/shenxiaolu1984/article/details/51036677
https://zhuanlan.zhihu.com/p/24780395


五、Faster RCNN
为何需要RoI Pooling:
对于传统的CNN(如AlexNet,VGG),当网络训练好后输入的图像尺寸必须是固定值,同时网络输出也是固定大小的vector or matrix。如果输入图像大小不定,这个问题就变得比较麻烦
参考链接:
http://blog.csdn.net/zy1034092330/article/details/62044941
http://blog.csdn.net/shenxiaolu1984/article/details/51152614
http://shartoo.github.io/RCNN-series/


六、Yolo
1、 将原图划分为SxS的网格。如果一个目标的中心落入某个格子,这个格子就负责检测该目标。
2、 每个网格要预测B个bounding boxes,以及C个类别概率Pr(classi|object)
3、 每个bounding box除了要回归自身的位置之外,还要附带预测一个confidence值
4、 由于输入图像被分为SxS网格,每个网格包括5个预测量:(x, y, w, h, confidence)和一个C类,所以网络输出是SxSx(5xB+C)大小
5、 在检测目标的时候,每个网格预测的类别条件概率和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score 
参考链接:
http://blog.csdn.net/zy1034092330/article/details/72807924
http://blog.csdn.net/surgewong/article/details/51864859


七、YoloV2
1、新增route层和reorg层,以使用细粒度的特征
参考链接:
https://zhuanlan.zhihu.com/p/25167153
http://blog.csdn.net/hrsstudy/article/details/70767950
http://blog.csdn.net/jesse_mx/article/details/53925356


八、Yolo9000
参考链接:
http://blog.csdn.net/hysteric314/article/details/53909408
https://zhuanlan.zhihu.com/p/25052190




九、darknet源码学习
参考链接:
http://blog.csdn.net/nongfu_spring/article/details/54140453