深度图像检测算法总结与对比(3)

摘要:
最后,对所有结果进行非最大值抑制处理,以产生最终的目标检测和识别结果。注:当从每两个数字中选择128个提案时,需要严格确保至少有25%的阳性样本类别可用,其余的可以被视为背景类别。因此,考虑到训练时间和mAP,作者建议使用单尺度图像直接训练快速r-cnn。

3. Fast-R-CNN

基于R-CNN和SPP-Net思想,RBG提出了Fast-R-CNN算法。如果选用VGG16网络进行特征提取,在训练阶段,Fast-R-CNN的速度相比RCNN和SPP-Net可以分别提升9倍和3倍;在测试阶段,Fast-R-CNN的速度相比RCNN和SPP-Net可以分别提升213倍和10倍。

R-CNN和SPP-Net缺点:

1.R-CNN和SPP-Net的训练过程类似,分多个阶段进行,实现过程较复杂。这两种方法首先选用Selective Search方法提取proposals,然后用CNN实现特征提取,最后基于SVMs算法训练分类器,在此基础上还可以进一步学习检测目标的boulding box。

2.R-CNN和SPP-Net的时间成本和空间代价较高。SPP-Net在特征提取阶段只需要对整图做一遍前向CNN计算,然后通过空间映射方式计算得到每一个proposal相应的CNN特征;区别于前者,RCNN在特征提取阶段对每一个proposal均需要做一遍前向CNN计算,考虑到proposal数量较多(~2000个),因此RCNN特征提取的时间成本很高。R-CNN和SPP-Net用于训练SVMs分类器的特征需要提前保存在磁盘,考虑到2000个proposal的CNN特征总量还是比较大,因此造成空间代价较高。

3.R-CNN检测速度很慢。RCNN在特征提取阶段对每一个proposal均需要做一遍前向CNN计算,如果用VGG进行特征提取,处理一幅图像的所有proposal需要47s。

4.特征提取CNN的训练和SVMs分类器的训练在时间上是先后顺序,两者的训练方式独立,因此SVMs的训练Loss无法更新SPP-Layer之前的卷积层参数,因此即使采用更深的CNN网络进行特征提取,也无法保证SVMs分类器的准确率一定能够提升。

 Fast-R-CNN亮点:

1.Fast-R-CNN检测效果优于R-CNN和SPP-Net

2.训练方式简单,基于多任务Loss,不需要SVM训练分类器。

3.Fast-R-CNN可以更新所有层的网络参数(采用ROI Layer将不再需要使用SVM分类器,从而可以实现整个网络端到端训练)。

4.不需要将特征缓存到磁盘。

Fast-R-CNN架构:

Fast-R-CNN的架构如下图所示(https://github.com/rbgirshick/fast-rcnn/blob/master/models/VGG16/train.prototxt,可以参考此链接理解网络模型):输入一幅图像和Selective Search方法生成的一系列Proposals,通过一系列卷积层和Pooling层生成feature map,然后用RoI(region of ineterst)层处理最后一个卷积层得到的feature map为每一个proposal生成一个定长的特征向量roi_pool5。RoI层的输出roi_pool5接着输入到全连接层产生最终用于多任务学习的特征并用于计算多任务Loss。全连接输出包括两个分支:1.SoftMax Loss:计算K+1类的分类Loss函数,其中K表示K个目标类别,1表示背景;2.Regression Loss:即K+1的分类结果相应的Proposal的Bounding Box四个角点坐标值。最终将所有结果通过非极大抑制处理产生最终的目标检测和识别结果。

 深度图像检测算法总结与对比(3)第1张

3.1 RoI Pooling Layer

事实上,RoI Pooling Layer是SPP-Layer的简化形式。SPP-Layer是空间金字塔Pooling层,包括不同的尺度;RoI Layer只包含一种尺度,如论文中所述7*7。这样对于RoI Layer的输入(r,c,h,w),RoI Layer首先产生7*7个r*c*(h/7)*(w/7)的Block(块),然后用Max-Pool方式求出每一个Block的最大值,这样RoI Layer的输出是r*c*7*7。

ROIs Pooling顾名思义,是Pooling层的一种,而且是针对RoIs的Pooling,他的特点是输入特征图尺寸不固定,但是输出特征图尺寸固定;

什么是ROI呢?
ROI是Region of Interest的简写,指的是在“特征图上的框”;
1)在Fast RCNN中, RoI是指Selective Search完成后得到的“候选框”在特征图上的映射,如下图所示;
2)在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到RoIs。

3.2 预训练网络初始化

RBG复用了VGG训练ImageNet得到的网络模型,即VGG16模型以初始化Fast-R-CNN中RoI Layer以前的所有层。Fast R-CNN的网络结构整体可以总结如下:13个convolution layers + 4个pooling layers+RoI layer+2个fc layer+两个parrel层(即SoftmaxLoss layer和SmoothL1Loss layer)。在Fast R-CNN中,原来VGG16中第5个pooling layer被新的ROI layer替换掉。

3.3 Finetuning for detection

3.3.1 fast r-cnn在网络训练阶段采用了一些trick,每个minibatch是由N幅图片(N=2)中提取得到的R个proposal(R=128)组成的。这种minibatch的构造方式比从128张不同图片中提取1个proposal的构造方式快64倍。虽然minibatch的构造速度加快,但也在一定程度上造成收敛速度减慢。此外,fast-r-cnn摒弃了之前svm训练分类器的方式,而是选用softmax classifer和bounding-box regressors联合训练的方式更新cnn网络所有层参数。注意:在每2张图中选取128个proposals时,需要严格保证至少25%的正样本类(proposals与groundtruth的IoU超过0.5),剩下的可全部视作背景类。在训练网络模型时,不需要任何其他形式的数据扩增操作。

3.3.2 multi-task loss:fast r-cnn包括两个同等水平的sub-layer,分别用于classification和regression。其中,softmax loss对应于classification,smoothL1Loss对应于regression. 两种Loss的权重比例为1:1

3.3.3 SGD hyer-parameters:用于softmax分类任务和bounding-box回归的fc层参数用标准差介于0.01~0.001之间的高斯分布初始化。

3.4 Truncated SVD快速检测

在检测段,RBG使用truncated SVD优化较大的FC层,这样RoI数目较大时检测端速度会得到的加速。

Fast-R-CNN实验结论:

1.multi-task loss训练方式能提高算法准确度

2.multi-scale图像训练fast r-cnn相比较single-scale图像训练相比对mAP的提升幅度很小,但是却增加了很高的时间成本。因此,综合考虑训练时间和mAP,作者建议直接用single尺度的图像训练fast-r-cnn。

3.用于训练的图像越多,训练得到的模型准确率也会越高。

4.SoftmaxLoss训练方式比SVMs训练得到的结果略好一点,因此无法证明SoftmaxLoss在效果上一定比svm强,但是简化了训练流程,无需分步骤训练模型。

5.proposal并不是提取的越多效果越好,太多proposal反而导致mAP下降。

免责声明:文章转载自《深度图像检测算法总结与对比(3)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nginx+Tomcat动静分离及Nginx优化4、骨牌铺法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python机器学习(5)——朴素贝叶斯分类器

朴素贝叶斯分类器是一个以贝叶斯定理为基础,广泛应用于情感分类领域的优美分类器。本文我们尝试使用该分类器来解决上一篇文章中影评态度分类。 1、贝叶斯定理 假设对于某个数据集,随机变量C表示样本为C类的概率,F1表示测试样本某特征出现的概率,套用基本贝叶斯公式,则如下所示: 上式表示对于某个样本,特征F1出现时,该样本被分为C类的条件概率。那么如何用上式来...

维数灾难

Content 1 引言 2 维数灾难与过拟和 3 怎样避免维数灾难 4 总结  1 引言 本文章讨论的话题是“curse of dimension”,即维数灾难,并解释在分类它的重要性,在下面的章节我会对这个概念做一个直观的解释,并清晰的描述一个由维数灾难引起的过度拟合的问题。 下面不如正题,考虑我们有一堆猫和狗的图片,现在要做一个分类器,它可以把猫和狗...

解释深度学习在安全领域中的应用

摘要: 虽然深度学习在各个领域显示出巨大的潜力,但缺乏透明度限制了它在安全或关键安全领域的应用。现有的研究试图开发解释技术,为每个分类决策提供可解释的解释。不幸的是,当前的方法是针对非安全性任务(例如,图像分析)进行优化的。它们的关键假设在安全应用程序中经常被违反,导致解释的保真度很差。 本文提出了一种用于安全应用的高保真度解释方法LEMNA。给定一个输入...

maven 实践 :管理依赖

有人认为Maven是一个依赖管理工具,当然这种想法是错误的(确切的说Maven是一个项目管理工具,贯穿了整个项目生命周期,编译,测试,打包,发布...),但Maven给人造成这种错误的印象也是有原因的,因为Maven的依赖管理十分强大,用好了Maven,你不再需要面对一大堆jar感到头大,依赖冲突,无用依赖等问题也能够得到有效的防止和解决。本节介绍如何用好...

UML 基础: 类图

简介:来自Rational Edge:在 UML 2 中,作为新结构图类型的最重要实例,类图可以在整个软件开发生命周期中,被分析师,业务建模人员,开发者和测试者使用的。本文提供了全面的介绍。 这是关于统一建模语言、即UML 里采用的基本图的一系列文章的一部分。在我 先前关于序列图的文章 里,我把重点从 UML 1.4 版,转移到 OMG的采用UML 2....

第七章——集成学习和随机森林(Ensemble Learning and Random Forests)

俗话说,三个臭皮匠顶个诸葛亮。类似的,如果集成一系列分类器的预测结果,也将会得到由于单个预测期的预测结果。一组预测期称为一个集合(ensemble),因此这一技术被称为集成学习(Ensemble Learning)。集成学习算法称作集成方法(Ensemble method)。 例如,可以基于训练集的不同随机子集,训练一组决策树分类器。做预测是,首先拿到每一...