本文来源于https://www.cnblogs.com/skyfsm/p/6806246.html
https://blog.csdn.net/amor_tila/article/details/78809791
基于深度学习的目标检测技术演进:
R-CNN -> SPP-Net -> Fast-RCNN -> Faster-RCNN -> R-FCN
1.Faster-RCNN结构
Fast R-CNN存在的问题:存在瓶颈:选择性搜索,找出所有的候选框,这个也非常耗时。那我们能不能找出一个更加高效的方法来求出这些候选框呢?
解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。
做这样的任务的神经网络叫做Region Proposal Network(RPN)。
SPP-Net和Fast-RCNN从特征提取角度,减少了工作量,但依然没解决Selective Search选择候选区域速度慢的问题。
Faster-RCNN 使用RPN代替Selective Search算法,使目标识别实现真正端到端的计算。
具体做法:
• 将RPN放在最后一个卷积层的后面
• RPN直接训练得到候选区域
Faster-RCNN由两大模块组成:
- RPN候选框提取模块
- Fast-RCNN检测模块
其中,RPN是全卷积神经网络,用于提取候选框;Fast-RCNN基于RPN提取的proposal检测并识别propasal中的目标。
2. RPN
RPN的核心思想是使用CNN卷积神经网络直接产生Region Proposal,使用的方法本质上就是滑动窗口(只需在最后的卷积层上滑动一遍),因为anchor机制和边框回归可以得到多尺度多长宽比的Region Proposal。
RPN网络也是全卷积网络(FCN,fully-convolutional network),可以针对生成检测建议框的任务端到端地训练,能够同时预测出object的边界和分数。只是在CNN上额外增加了2个卷积层(全卷积层cls和reg)。
①将每个特征图的位置编码成一个特征向量(256dfor ZF and 512d for VGG)。
②对每一个位置输出一个objectness score和regressedbounds for k个region proposal,即在每个卷积映射位置输出这个位置上多种尺度(3种)和长宽比(3种)的k个(3*3=9)区域建议的物体得分和回归边界。
RPN简介:
- 在feature map上滑动窗口操作,得到候选区域。
- 建一个神经网络用于物体分类+框位置的回归。
- 滑动窗口的位置提供了物体的大体位置信息。
- 框的回归提供了框更精确的位置。
- RPN网络输入的特征图和全连接层中的特征图共享计算。
- RPN的使用,使Faster-RCNN能够在一个网络框架之内完成候选区域、特征提取、分类、定位修正等操作。
因为我们的最终目标是和Fast R-CNN目标检测网络共享计算,所以假设这两个网络共享一系列卷积层。
RPN的具体流程如下:使用一个小网络在最后卷积得到的特征图上进行滑动扫描,这个滑动网络每次与特征图上n*n(论文中n=3)的窗口全连接(图像的有效感受野很大,ZF是171像素,VGG是228像素),然后映射到一个低维向量(256d for ZF / 512d for VGG),最后将这个低维向量送入到两个全连接层,即bbox回归层(reg)和box分类层(cls)。sliding window的处理方式保证reg-layer和cls-layer关联了conv5-3的全部特征空间。
reg层:预测proposal的anchor对应的proposal的(x,y,w,h)
cls层:判断该proposal是前景(object)还是背景(non-object)。
在上图(RPN框架图)中,要注意,33卷积核的中心点对应原图(re-scale,源代码设置re-scale为6001000)上的位置(点),将该点作为anchor的中心点,在原图中框出多尺度、多种长宽比的anchors。所以,anchor不在conv特征图上,而在原图上。
上图即为Faster-RCNN卷积流程图。原图6001000经CNN卷积后,在CNN最后一层(conv5)得出的是4060大小的特征图。
在RPN网络中,我们需要重点理解其中的anchors概念,Loss fucntions计算方式和RPN层训练数据生成的具体细节。
一种网络,四个损失函数;
• RPN calssification(anchor good.bad)
• RPN regression(anchor->propoasal)
• Fast R-CNN classification(over classes)
• Fast R-CNN regression(proposal ->box)
速度对比
Faster R-CNN的主要贡献是设计了提取候选区域的网络RPN,代替了费时的选择性搜索,使得检测速度大幅提高。
3. 优缺点
优点:
RPN使得Faster R-CNN在region proposal阶段只需10 ms,检测速度达到5 f/s (包括所有步骤),并且检测精度也得到提升,达到73.2%。
缺点:
- Faster R-CNN仍然使用ROI Pooling,导致之后的网络特征失去平移不变性,影响最终定位准确性;
- ROI Pooling后每个区域经过多个全连接层,存在较多重复计算;
- Faster R-CNN在特征图上使用锚点框对应原图,而锚点框经过多次下采样操作,对应原图一块较大的区域,导致Faster R-CNN检测小目标的效果并不是很好。