算法简介
我们都知道,Fast R-CNN虽然提高了目标检测算法质的飞跃,但是在Fast R-CNN中仍然存在很大的瓶颈,那就是候选框选取特别耗时的问题,而Faster R-CNN恰恰就是在这一问题上的解决方案。
关于Faster R-CNN,是rgb在2015年提出,他将proposal的提取、特征提取、boundingbox回归和分类都放到一个网络中,提高了算法的整体性能。
Faster R-CNN的核心原理
可以发现,Faster R-CNN主要有4个部分:
1)主干网络:CNN卷积网络,使用13个conv+13个ReLU+4个Pooling来提取feature map,这些feature map然后会共享用在后续的RPN和FC层;
2)RPN(Region Proposal Networks):RPN网络用于生成region proposals,通过softmax完成背景和前景的二分类,然后利用boundingbox regession来对anchors进行修正,得到候选目标的初定位;
3)ROI Pooling:将得到的proposals的初定位位置信息映射到feature map,得到proposal feature maps,送入FC层;
4)分类和回归:一个FC进行类别的判定,一个进行位置回归;(精分类和回归)
RPN(Region Proposal Networks)
RPN其实就是背景和前景二分类(粗分类)+候选框初定位(粗回归)+anchor机制;
先来说说anchor机制:
在Faster R-CNN中,抛弃了以往的SS来作为候选区域的选取方法,而是利用anchor机制来寻找region proposals;并且这些anchor是基于feature map的。
作者选取了9个不同尺寸的候选区域(叫做anchor),其中3个面积尺寸,分别为128x128, 256x256, 512x512;3个aspect ratio,分别是1:1, 1:2,2:1,这样一来就会有9个anchor,即k=9,如图:
然后以feature map的每个点为中心锚点,配置上面提到的9个anchor,组成一个anchor集;
RPN的输入是融合了位置信息的卷积特征maps,输出是proposals;
RPN采用全卷积网络结构,首先是3x3卷积核,通道数为512的卷积层,然后两个并行的1x1卷积层,其中左边的那个通道数为2k,也就是用于后面前景和背景二分类的,叫做分类层;右边的那个通道数为4k,用于proposal的位置的粗略定位,叫做回归层,又叫做边界框调整层;
通过分类层和回归层,我们就能够针对每一个anchor,得到一个大概粗略位置的良好的proposal。
与其他算法的对比
后续的改进
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:目标检测之Faster R-CNN通俗详解 - Python技术站