1. 算法介绍
Faster-RCNN是2016年提出的,整合RCNN,Fast-RCNN的,将传统手势检测的四步操作整合到一个神经网络中,避免重复计算,尽量保证GPU计算。也是YOLO3完成的基础之一。
2. 算法流程
- 首先向CNN网络【ZF或VGG-16】输入任意大小图片M×N;
- 经过CNN网络前向传播至最后共享的卷积层,一方面得到供RPN网络输入的特征图,另一方面继续前向传播至特有卷积层,产生更高维特征图;
- 供RPN网络输入的特征图经过RPN网络得到区域建议和区域得分,并对区域得分采用非极大值抑制【阈值为0.7】,输出其Top-N【文中为300】得分的区域建议给RoI池化层;
- 第2步得到的高维特征图和第3步输出的区域建议同时输入RoI池化层,提取对应区域建议的特征;
- 第4步得到的区域建议特征通过全连接层后,输出该区域的分类得分以及回归后的bounding-box。
也就是说,输入图片经过公共的卷积层之后分为两路,一方面交给RPN网络提取候选区域框,另一方面在CNN中继续提取更高阶的特征,最后综合两种方法进行分类打分,得出分类结果。
3. RPN(Region Proposal Network)简介
区域提取网络:在初步提取过的特征图上,对所有的候选框进行打分和筛选。
候选区域:以每一个像素为锚点,生成九个候选框(长宽比,大小不同)。
候选框回归:小幅调整是一个线性回归问题,大幅调整是一个非线性问题。
4. ROI Pooling 简介
ROI pooling 是为了解决RPN产生的候选框尺寸不一致的问题。
由于单纯的拉伸和剪裁会破坏图片中原有的一些特征,所以聪明的科学家发明了一种新方法,如果我们要得到某个统一长宽(比如WH)的图片,那么就将原图裁剪成WH块,然后对每一块做最大池化,这样就得到了一个统一尺寸的输出。
5. 分类和框回归
通过RoI Pooling层我们已经得到所有候选区组成的特征向量,然后送入全连接层和softmax计算每个候选框具体属于哪个类别,输出类别的得分;同时再次利用框回归获得每个候选区相对实际位置的偏移量预测值,用于对候选框进行修正,得到更精确的目标检测框。