姓名:贾轶名 学号:21011210011 学院:通信工程学院
【嵌牛导读】目标检测在现实中的应用很广泛,我们需要检测数字图像中的物体位置以及类别,它需要我们构建一个模型,模型的输入一张图片,模型的输出需要圈出图片中所有物体的位置以及物体所属的类别。在深度学习浪潮到来之前,目标检测精度的进步十分缓慢,靠传统依靠手工特征的方法来提高精度已是相当困难的事。而ImageNet分类大赛出现的卷积神经网络(CNN)——AlexNet所展现的强大性能,吸引着学者们将CNN迁移到了其他的任务,这也包括着目标检测任务,近年来,出现了很多目标检测算法。
【嵌牛鼻子】计算机视觉
【嵌牛提问】如何理解目标检测算法——Faster R-CNN
【嵌牛正文】
1.1 Faster R-CNN算法
边界框、选择性搜索等使用候选区域生成方法大大阻碍了精确度的提高。针对该问题,2017 年Ren等提出了Faster R-CNN,引入了区域建议网络(Region Proposal Network,RPN)取代选择性搜索算法,RPN将区域建议提取集成到DCNN,与整个检测过程共享所有图像的卷积特征。RPN 在每个位置同时预测目标边界框和类别置信度分数,实现了目标检测端到端的训练,加快了网络的计算速度。Faster R-CNN网络由卷积层、RPN网络、RoI Pooling层、分类和回归层等4部分组成。
1.2 拟解决的问题
Fast R-CNN算法使用选择性搜索算法对候选区域进行特征提取会生成正负样本候选框,消耗大量时间,实时性问题没有得到解决。
Faster R-CNN主要存在两处不同:(1)使用RPN(Region Proposal Network)代替原来的Selective Search方法产生建议窗口;(2)产生建议窗口的CNN和目标检测的CNN共享。
Faster R-CNN创造性地采用卷积网络自行产生建议框,并且和目标检测网络共享卷积网络,使得建议框数目从原有的约2000个减少为300个,且建议框的质量也有本质的提高。

1.3 Faster R-CNN 算法流程


从上面的两张图可以看出,Faster R-CNN由下面几部分组成:
1. 数据集,image input;
2. 卷积层CNN等基础网络,提取特征得到feature map;
3-1. RPN层,再在经过卷积层提取到的feature map上用一个3x3的slide window,去遍历整个feature map,在遍历过程中每个window中心按rate,scale(1:2,1:1,2:1)生成9个anchors,然后再利用全连接对每个anchors做二分类(是前景还是背景)和初步bbox regression,最后输出比较精确的300个ROIs。
3-2.把建议窗口映射到CNN的最后一层卷积feature map上;
3-3.把经过卷积层feature map用ROI pooling固定全连接层的输入维度。
4.然后把经过RPN输出的rois映射到ROIpooling的feature map上进行bbox回归和分类。
1.4 RPN网络

Anchor
对于每个滑窗位置,同时预测多个region proposal,每个位置最大可能的proposal数目定义为k。因此,reg层有4k个输出来编码k个box的坐标,cls层会输出2k个score来估计每个proposal是对象或者不是对象的可能性。我们对k个proposal进行参数化,相对应于k个参照box,我们称之为anchor。每个anchor集中于滑窗中心,关联一个尺度(scale)和一个长宽比(aspect ratio)(图3左)。我们默认使用3中scale和3个 aspect ratio,因此对于每个滑窗位置,产生k=9个anchor对于一个大小为W*H的卷积feature map,总共会产生WHk个anchor。

1.5 总结
Faster R-CNN使用VGG-16骨干网络,在PASCAL VOC 2007 数据集上mAP 为73.2%。但仍存在问题:
(1)在特征图上采用anchor机制时候选框设置的尺度不适用于所有目标,尤其对小目标检测效果不好;
(2)只采用VGG-16网络的最后一层卷积层所输出特征做预测,经过RoI Pooling 层后导致网络特征丧失平移不变性,降低准确性;
(3)ROI 池化层对高度重叠的区域存在重复计算,降低检测速度;
(4)RPN生成包含背景的类似目标的区域,而不是目标实例,在处理非常大或者有形状的目标时效果不好。
网友评论