1.1Faster RCNN理论合集

RCNN发展过程
RCNN->Fast RCNN->Faster RCNN

RCNN算法流程

1、候选区域生成

2、对每个候选框提特征

这里CNN是图像分类网络
3、特征向量分别输入到每一类SVM分类器,判定类别
2000个先验框,4096个特征,20个SVM分类器相当于对20个类别进行判断

下图方便理解

IOU的概念


2000x20的每一列对应的是同一个类别的概率,对每一列分别进行非极大值抑制,剔除很多重叠建议框,保留一些gaoz
4、回归器修正候选框位置
SS算法得到的候选框位置不准确,需要回归器修正候选框的位置

RCNN算法四个步骤


过于繁琐,Fast RCNN和Faster RCNN会对模块一步步融合,生成一个端对端的完整网络


Fast RCNN三个步骤

第二步
RCNN:对每个候选区域分别送入网络得到特征向量
Fast RCNN:将整幅图像输入到CNN网络得到特征图,再通过SS算法在原图生成的候选区域直接映射到特征图
RCNN和Fast RCNN中得到特征的方式区别

数据采样问题:训练过程中,Fast RCNN并不是使用SS算法提供的所有2000个候选区域,只要使用其中一小部分即可。采样数据分为正样本和负样本,正样本是候选框中确实存在所需检测目标的样本,负样本简单理解为背景

为嘛要分正样本、负样本?
猫狗分类器
原论文中从2000个候选框中采集64个候选区域,64个候选区域一部分是正样本,一部分是负样本
如何定义正样本?iou>0.5
用ROI pooling将候选框缩放到统一的尺寸

ROI pooling操作:将特征矩阵划分为7x7=49等分,对每一个区域执行最大池化下采样

Fast RCNN的网络框架

在ROI feature vector的基础上并联两个FC
其中一个FC用于目标概率预测,另一个FC用来目标框回归参数的预测
目标概率预测(分类器):输出N+1类别的概率
边界框回归器:
dx,dy,dw,dh从哪来?


Fast RCNN损失如何计算?

分类损失如何计算

交叉熵损失

边界框回归损失

smooth l1 损失计算链接
https://www.cnblogs.com/wangguchangqing/p/12021638.html

Fast RCNN 对比 RCNN


Fast RCNN比RCNN推理速度快200倍,但是仔细算下来推理一张图片还是需要很长时间的,SS算法在CPU上需要2s左右
Faster RCNN同样选用vgg16作为主干网络

Faster RCNN的3个步骤:1、得到特征图 2、RPN生成候选框,投影到特征图上得到特征矩阵 3、将特征矩阵通过ROI pooling层缩放在统一的大小,然后进行展平处理,再通过一系列全连接层得到预测结果

RPN网络结构


2k 个scores和4k个coordinates如何影响我们的anchor的

Faster RCNN给了哪些尺度和比例

9个类别的anchor,k=9
3x3滑动窗口在原图上感受野的问题

通过一个比较小的感受野预测一个比它大的边界框是有可能的
我们看到物体一部分,也能猜出目标的一个完整的区域
如何计算ZF网络的感受野



定义正样本的方式

RPN损失计算

分类损失计算
一、多分类交叉熵损失

二、二分类的交叉熵损失

边界回归损失

Faster R-CNN训练
原论文(分步训练)

Faster R-CNN算法流程


框架越来越简洁,效果越来越好
