基于Two-stage的目标检测算法综述
主要是通过完整的卷积神经网络来完成目标检测的过程。
- CNN卷积特征
- R-CNN到faster RCNN
- 端到端的目标检测(RPN网络)
- 精确度高、速度相对One-stage慢
基本流程:
输入图片------对图片进行深度特征的提取(主干神经网络)------RPN网络完成滑动窗口所完成的任务,也就是产生候选区域,完成候选区域分类(背景和目标)对目标的位置进行初步定位-------为了不重复的计算CNN特征,通过roi_pooling完成抠图操作-----fc全连接层对候选区域进行表示----分类和回归对候选目标的类别判定和位置精修(得到物体的真实类别)
Two-stage常见算法
- RCNN
- Fast RCNN
- Faster RCNN
- Faster RCNN变种
Two-stage核心组件
- CNN网络
- RPN网络
CNN网络设计原则
- 从简到繁再到简的卷积神经网
- 多尺度特征融合的网络
- 更轻量级的CNN网络
RPN网络
- 区域推荐(Anchor机制)
- ROI Pooling
- 分类和回归
RPN网络
- 区域推荐(Anchor机制)
对当前的feature map的大小是n * c * w * h - n是batch size处理样本的数量
- c是feature map的个数,也就是channel数量
- w、h是当前feature map的宽高。
Anchor就是对于feature map上,也就是w * h这样大小的的feature map选取每一个点作为锚点(也就是候选区域的中心点),利用每一个点提取候选区域,这样的每一个点都称之为一个Anchor。选取候选区域是会按照一定的比例。在利用真值对候选区域进行筛选正负样本,正样本就是包含了候选区域的样本,负样本就是不包含的,包不包含通常会用IOU判别。
如何判断在当前的feature map( w × h的)的候选区域同真值的候选区域的重叠面积呢?
需要用到对神经网络进行特征提取时候的pooling层,在使用pooling层对图像进行下采样的时候,图像也是按照一定的倍数在进行下采样,也就是相对位置,原比例也是下采样的比例。
RPN网络
- ROI Pooling
- 输入:特征图、rois(1 × 5 × 1 × 1)以及ROI参数(下采样尺度)
- 输出L固定尺寸的feature map
ROI Pooling实际上是RPN网络上的一个层,对于当前的层,它的输入包括当前的特征图、rois也就是区域的坐标, 最后欧是ROI参数,如果当前区域下采样8倍,参数就是八分之一,也就是按照八分之一的比例进行抠图。rois区域是五个值,x,y,w,h,当前ROI信息(索引i,表示当前ROI对当前输入图的第几个图片)。
Two-stage改进方向
- 更好的网络特征
- 更精准的RPN
- 更完善的ROI分类
- 样本后处理
- 更大的mini-Batch