faster rcnn深入理解

faster r-cnn 是第一个完全可微分的检测模型 。也就是从数据到模型输出的整条路径既可以 前行传播 forward ,也可以反向传播 backword 。是一个 end -to- end 模型。

faster r-cnn 发展进程

1. R-CNN :

特点

候选区域 + 卷积特征提取 + (SVM)特征分类 和 边界回归

候选区域:select serch 方法; 提取个数大约:1k~2k
特征提取:CNN 网络
分类和边框回归: 事先训练的SVM 分类器分出类别后 进行线性边框回归得到精准位置。

致命缺陷

  1. 事先大量候选区域提取:(1)无法做到端到端训练;(2)占用大量磁盘空间
  2. 输入CNN 的图像大小固定尺寸,resize 破坏原有特征
  3. 每个region proposal 都经过CNN 网络计算,导致过多重复特征提取

2. fast R-CNN

特点

候选区域 + 特征提取 + softmax分类和边框回归

改进

  1. 特征提取后最后一个卷积层后加了一个ROI pooling layer,参考ssp,不再对图像进行resize。
  2. 损失函数使用了multi-task loss(多任务损失)函数,将边框回归直接加到CNN网络中训练。分类直接用softmax替代SVM进行分类。

3 faster R-CNN

faster rcnn 的亮点是它不要事先进行select serch 获取候选框后再进行训练 ,因此提出了 RPN 网络
1. RPN
2. fast R-CNN

三者对比

faster rcnn深入理解_第1张图片

FASTER R-CNN 结构

faster rcnn深入理解_第2张图片

1.用anchor 解决边框个数不定的问题
2.用ROI Pooling 解决不同大小边框输出特征向量一致的问题

数据框图

faster rcnn深入理解_第3张图片

整体结构

faster rcnn深入理解_第4张图片
1.DataSet 作为数据输入
2. BackBone 提取特征,ResNet , VGG16 等,获取特征图
3. 在特征图上对生成的 Anchor 进行 0-1 分类(区分前景和背景)和 边框回归。输入 BBOX 标签得到RPN loss
4. 对每一个anchor 边框(剔除超边界,低sore)经过 NMS 后按分数排序续输出 ROIS
5. ROIS 进入 ROIHead 前经过 ProposalTargetCreator 层,主要是根据 ROIS 与 BBOX 的 IOU 确定 正样本 和 负样本
6. ROIHead 层根据 ROIS 在feature map 上的映射结合 label 进行 边框回归 和 分类。

数据流图

faster rcnn深入理解_第5张图片

FASTER R-CNN 核心技术

1. bounding box 回归

bbox 回归时要转换为:中心点(x,y) 与 宽高 (w,h)
原理:
对 bbox 的预测结果 P 和 标记 gt_box Q 之间可以 通过学习一组参数并进行线性变换得到。变换参数:
在这里插入图片描述
这四个参数都是特征的函数,前两个体现为bbox的中心尺度不变性,后两个体现为体现为bbox宽高的对数空间转换。学到这四个参数(函数)后,就可以将P映射到G’, 使得G’尽量逼近。
faster rcnn深入理解_第6张图片
这里的变换参数:
在这里插入图片描述
是由特征图进过一层网络学习后得到,也就是是关于候选框 P 的特征的函数。所以变换关系可以定义为:
在这里插入图片描述
真值 G 与 预测 P 之间的关系如下:
faster rcnn深入理解_第7张图片
faster rcnn深入理解_第8张图片
所以边框回归的目标参数就是:
在这里插入图片描述
我们的目的是使得每一个边框的变换参数 d 尽可能接近 t 。d 与 t 产生LOSS ,以此学习更新 边框特征的 W 权重。 使得测试时bbox经过W运算后可以得到一个较好的offsets与scales,利用这个offsets与scales可在原预测bbox上微调,得到更好的预测结果
还有就是这个回归数据对(P,G)不是随便选的,预测的P应该离至少一个ground truth G很近,这样学出来的参数才有意义。近的度量是P、G的IOU>0.6。

FASTER R-CRNN 训练

你可能感兴趣的:(Deep,Learning)