码迷,mamicode.com
首页 > Web开发 > 详细

R-CNN系列与SPP-Net总结

时间:2018-10-06 21:39:49      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:分享图片   因此   利用   产生   分数   分类器   方法   spec   精确   

目录

@

1. 前言

??最近读完了R-CNN三部曲+SPP-Net,算是Detection里比较经典的一个系列,最近也在读CVPR或者ECCV的其他Detection相关的论文,发现很多都是在改进R-CNN系列的一些细节。因此在这将这4篇论文先分别进行一些讲解,再进行一些比较,阐述一些自己的想法,以便加深自己对这系列论文的理解,也希望可以帮到其他人。

2. R-CNN

2.0 论文链接

R-CNN链接

2.1 概述

??R-CNN算是很经典的一篇论文,当时很多Detection algorithm都是利用图片本身的颜色,纹理,梯度等low-level图片特征进行检测。R-CNN引进了CNN以及proposal等来进行检测,同时也利用pre-training来解决一些样本量很少的任务。
?R-CNN提出了一种全新的训练结构,它的整体流程如下:

  1. 先利用Selective Search在每个图片选出大约2k个region proposals
  2. 由于之后的网络结构只能接受相同大小的proposal,所以需要把每一个proposal拉伸(warp)成227*227大小
  3. 对于每一个proposal利用CNN提取特征
  4. 利用这些特征训练一个SVM分类器,从而得出相应类别的分数
  5. 利用NMS去掉一些冗余的候选框,大致的Detection就完成了
  6. 很容易发现许多proposal都不精确,因此使用Bounding Box Regression对候选框进行微调

2.2 pre-training

??针对很多数据集样本很少,很难单独的使用一个数据集进行训练跟检测,R-CNN首先在其他样本较多与目标数据集任务相似的副本数据集进行有监督预训练,保留其训练的模型参数,利用目标数据集对某些网络进行微调(domain-specific fine-tuning),这样可以产生更好的性能,这也是本文的亮点之一。

2.3 不同阶段正负样本的IOU阈值

??首先在fine-tuning阶段,IOU阈值为0.5,即大于0.5的都是目标,小于0.5的都是背景,而在SVM训练时,小于0.3的都是负样本,正样本为GT。
??为什么要分开设置阈值呢?在fine-tuning期间,为了防止过拟合,阈值设置的宽松一点,就是就算有一半左右的物体与GT相交,那也是算是物体,而不是背景。在训练SVM的时候,则正样本只有GT,阈值大于0.3的忽略掉,小于0.3的算负样本(0.3也是通过实验挑选出来的)。之所以要重新训练SVM,也是因为在之前fine-tuning网络的时候设置的阈值较为宽松,所以softmax进行分类的性能其实并不是很理想。因此重新训练了一个SVM分类器,效果相比softmax更理想了。

2.4 关于fine-tuning

??fine-tuning用来微调一些参数,毕竟在副本任务训练不是当前数据集本身,肯定还是有差距的,CNN通常第一层提取出一些线条,边缘,之后更深的层则将这些基础特征组合起来,副本任务可以理解为提取大多数图像的共同的基本特征(这也就要求副本任务与目标任务要相近),通过在目标任务fine-tuning进行微调,使得detector对提取到目标数据集独特的特征与信息,同时文章中的实验也体现了fine-tuning的重要性与必要性,本文在fine-tuning时将原来网络1000个分类改为N+1(N为类别数量,1为背景)个分类,为了防止过大的影响原来的参数,学习率为预训练学习率的1/10。

2.5 对文章的一些思考

1.我读完文章的时候就在想,对于每一个proposal进行CNN提取特征,一个图片2k左右proposals,一个数据集通常有更多的图片,那是不是有点太费力了?同时一个图片通常没有那么多“物体”,2000个proposal是不是有点太多了,应该会在物体附近很密集。
2.再单独训练一个SVM,是否有一些冗余,虽然文章中给出了单独训练SVM必要性的有力证据, 那是否可以改变一下网络模型使得softmax可行。
3.CNN网络之前必须将proposal进行变形称为固定的227*227是否可以接受任意形状的图片呢。

3. SPP-Net

3.1 概述

??R-CNN在当时取得了很大的成果,但是他还是有一些问题,最突出的就是效率问题,SPP-Net主要就是解决R-CNN的几个问题: 1. 对于每张图片的每个proposal跑一边CNN,SVM分类器,做了很多冗余的操作。2.proposal在送进网络之前都要进行拉伸(warp),这样会影响图片的质量以及内容,同时也比较费时费力。
?SPP-Net的改进如下:

  1. 送入网络的不再是proposal里的图像,而是一次性的把整个图片送入,而且只输入一次,将通过Selective Search生成的proposal映射到通过卷积网络生成的feature map上,相当于一个proposal中的图像通过一层层卷积得到的feature map
  2. CNN网络之所以需要固定输入图像的尺寸,不在于卷积层与池化层,而在于全连接层,全连接层的参数维度需要固定。之前的解决方法都是固定图片的尺寸,这里在最后一层卷积层与FC层之间插入了一层SPP-layer,对于输入任意尺寸都是可以输出相同尺寸的特征。

3.2 一次性full-image卷积

相比R-CNN需要对每个proposal做卷积,SPP-Net只做一次卷积,将相应的sub-image映射到full-image卷积后的feature map上从而得到sub-image通过卷积层得到的feature,下图可以很形象的表达:
技术分享图片

R-CNN系列与SPP-Net总结

标签:分享图片   因此   利用   产生   分数   分类器   方法   spec   精确   

原文地址:https://www.cnblogs.com/kk17/p/9748378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!