目标检测--Fast R-CNN讲解

2020-01-17  本文已影响0人  赵小闹闹

参考:https://blog.csdn.net/WoPawn/article/details/52463853

1 R-CNN的主要问题

image.png

2 Fast R-CNN过程

Fast R-CNN依然使用selective search生成推荐框,但只对原始图像提取一次特征,将推荐框的坐标映射到特征图上,根据ROI Pooling将ROI转换成相同的尺寸(7*7)后接全连接层,再接两个全连接层,分别进行分类与回归。
具体过程如下:
1.任意size图片输入CNN网络,经过若干卷积层与池化层,得到特征图;

2.在任意size图片上采用selective search算法提取约2k个建议框;

3.根据原图中建议框到特征图映射关系,在特征图中找到每个建议框对应的特征框,并在RoI池化层中将每个特征框池化到H×W【VGG-16网络是7×7】的size;

4.固定H×W【VGG-16网络是7×7】大小的特征框经过全连接层得到固定大小的特征向量;

5.第4步所得特征向量经由各自的全连接层【由SVD分解实现】,分别得到两个输出向量:一个是softmax的分类得分,一个是Bounding-box窗口回归;

6.利用窗口得分分别对每一类物体进行非极大值抑制剔除重叠建议框,最终得到每个类别中回归修正后的得分最高的窗口。

3.细节

3.1 ROI Pooling实现
首先假设建议框对应特征图中的特征框大小为h×w,将其划分H×W个子窗口,每个子窗口大小为h/H×w/W,然后对每个子窗口采用max pooling下采样操作,每个子窗口只取一个最大值,则特征框最终池化为H×W的size。
例如推荐框在feature map上的尺寸为1414,将其划分为77个子窗口,每个窗口使用maxpooling,变为一个数字,最终变为7*7个feature.
3.2 尺度处理
文中提及两种方式处理:brute-force(单一尺度)和image pyramids(多尺度)。单一尺度直接在训练和测试阶段将image定死为某种scale,直接输入网络训练就好,然后期望网络自己能够学习到scale-invariance的表达;多尺度在训练阶段随机从图像金字塔【缩放图片的scale得到,相当于扩充数据集】中采样训练,测试阶段将图像缩放为金字塔中最为相似的尺寸进行测试。多尺度性能更佳,但单尺度在保证测试时间的前提下,精度下降不多。
3.3 多任务训练
R-CNN中是单独训练的。Fast R-CNN将分类与回归在一个损失函数进行训练,后续的Faster R-CNN也沿用了。

image.png
上一篇 下一篇

猜你喜欢

热点阅读