目标检测--之RCNN
前言,最近接触到的一个项目要用到目标检测,还有我的科研方向caption,都用到这个,最近电脑在windows下下载数据集,估计要一两天,也不能切换到ubuntu下撸代码~。所以早上没事,我就把卷积神经网络用在目标检测的开山之作介绍下,后续他的孩子算法(fast-rcnn, faster-rcnn)我也会陆续介绍。
RCNN 论文地址:Rich feature hierarchies for accurate object detection and semantic segmentation
RCNN
算法的四步走:(乾坤大挪移的招式)
1:激发最大潜力(候选区域选择)
Region Proposal是一类传统的区域提取方法,可以看作不同宽高的滑动窗口,通过窗口滑动获得潜在的目标图像,关于Proposal大家可以看下SelectiveSearch,一般Candidate选项为2k个即可;根据Proposal提取的目标图像进行归一化,作为CNN的标准输入。
Selectivesearch算法流程(图片来源于网络,侵删):
2)CNN特征提取(集武功道理大成):
标准CNN过程,根据输入进行卷积/池化等操作,得到固定维度的输出;这里的卷积模型可以替换成现在最先进的一些CNN框架(resetnet, PCAnet,VGG等等),其实这一步就是抽取深度特征,本质上和我们传统的抽HOG LBP特征没有区别。这就是乾坤大挪移中集武功道理大成,吸收各门派武功的原理~~!
-
分类(令对方造出破绽)
对每一类目标,使用一个线性SVM二类分类器进行判别。输入为深度网络输出的4096维特征(CNN抽取的),输出是否属于此类。
由于负样本很多,使用hard negative mining方法。
正样本
本类的真值标定框。
负样本
考察每一个候选框,如果和本类所有标定框的重叠都小于0.3,认定其为负样本。
(张无忌这时却已看全了龙爪手三十六式抓法,其本身虽无破绽可寻,但乾坤大挪移法却能在对方如何拳招中造成破绽,只是心下踌躇:「此刻我便要取他性命,亦已不难,但少林派威名赫赫,这位空性大师又是少林寺的三大耄宿之一,我若在天下英雄之前将他打败,少林派颜面何存?张无忌一觉对方破绽大露,这乾坤大挪移心法最擅于寻瑕抵隙,对方百计防护,尚且不稳)上面是引用金庸原文,分类不就找到破绽吗,然后分类错误,我们在调~~!
-
回归(转换阴阳二气)
我们首先要明确目标检测不仅是要对目标进行识别,而且还要完成定位任务,所以最终获得的bounding-box也决定了目标检测的精度。
这里先解释一下什么叫定位精度:定位精度可以用算法得出的物体检测框与实际标注的物体边界框的IoU值来近似表示。
如下图所示,绿色框为实际标准的卡宴车辆框,即Ground Truth;黄色框为selective search算法得出的建议框,即Region Proposal。即使黄色框中物体被分类器识别为卡宴车辆,但是由于绿色框和黄色框IoU值并不大,所以最后的目标检测精度并不高。采用回归器是为了对建议框进行校正,使得校正后的Region Proposal与selective search更接近, 以提高最终的检测精度。论文中采用bounding-box回归使mAP提高了3~4%。
操作:
回归器
对每一类目标,使用一个线性脊回归器进行精修。正则项λ=10000λ=10000。
输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。
训练样本
判定为本类的候选框中,和真值重叠面积大于0.6的候选框。
这就是类似于乾坤大挪移转换阴阳二气,调节自己,是自己达到内功的最佳境界~~!而网络通过调节位置,达到最佳mAP~~。
整个RCNN 流程:
RCNN 不足:
1)多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;
2)针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;
3)每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。
废话当然有不足了,乾坤大挪移才到第四次。不足说白了,就是运行时间长,要固定尺寸图片,太死板了。
总结:
关于上述乾坤大挪移的例子,我可能只是一时兴起,权当看个笑话,但是整个网络我还是介绍的很详细的~~。哈哈,咱们下次博客见~~~!
如果有交流的可以加我微信,欢迎吹牛~,欢迎一起讨论科研与工程~~! 我的wechat二维码:
验证就说自己:讨论机器视觉地 ~
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:目标检测–之RCNN - Python技术站