一. R-CNN(Region with CNN feather)
1. R-CNN的算法流程
- 一张图像生成1K~2K个候选区域(使用Selective Search方法)
- 对每个候选区域,使用深度网络提取特征
- 特征送入每一类的SVM分类器,判断是否属于该类
- 使用回归器精修候选框位置
假设有2000个候选框,在提取完深度特征后,每一张图像会生成一个2000×4096的特征矩阵,4096为深度特征展平后的维度,20个SVM组成的权值矩阵的维度4096×20,两个矩阵相乘后,得到一个2000×20的概率矩阵,每一行代表每个候选框归于每个目标类别的概率。20列的每一列进行极大值抑制,删除删除重叠建议框,最终得到得分最高的建议框。
2. 非极大值抑制剔除重叠建议框(NMS)
- 寻找得分最高的目标
- 计算其他目标与该目标的IOU值
- 删除所有IOU值大于某一阈值的目标
IOU=(A∩B )/(A∪B )
3. 使用回归器精细修正候选框位置
对NMS处理后剩余的建议框进一步筛选。接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box(边界框)。
二. Fast R-CNN
1. Fast R-CNN的流程
- 一张图像生成1K~2K个候选区域(使用SS算法)
- 将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵
- 将每个特征矩阵通过ROI(Region of interest) pooling层缩放到7×7大小的特征图,接着将每一个特征图经过展平处理,最后通过全连接得到最终结果
2. ROI pooling
将经过CNN处理的特征图进行划分,对划分后的每一个区域执行最大池化下采样
3.分类器
分类器输出N+1个类别概率(N为检测目标的类别种类,经过softmax,和为1,1为背景概率)共N+1个值。
4. 边界框回归器
输出对应N+1个类别的候选边界框回归参数(),共(N+1)×4个值
5. 损失
分类损失中p是分类器预测的softmax概率分布p=(p0.....pk)
u对应目标的真实标签
[u>=1]代表当u大于等于1时,括号表示1,当u小于1时,括号表示0。
三、Faster R-CNN
- 将图像输入网络得到相应的特征图
- 使用RPN(区域建议网络)结构生成候选框,将RPN生成的候选框投影到特征图上生成相应的特征矩阵
- 将每个特征矩阵通过ROI Pooling层缩放到7×7大小的特征图,接着将特征图展平通过一系列全连接得到预测结果
如下图2k个值为预测前景和背景的值第一个值为预测为背景的概率,第二个值为预测为前景的概率,4k为位置坐标X,Y和高宽。
如上有三种尺寸和三种比例,这样每个位置有9个anchor,对于一张1000×600×3的图像,大约有60×40×9(20k)个anchor,忽略跨越边界的anchor以后,剩下6k个anchor。对于RPN生成的候选框之间讯在的大量的重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图像只剩下2k个候选框。在原文中k取9
2、RPN(区域建议网络)
在生成的特征图后,连接一个3×3的卷积(步距为1,paddling为1),形成一个大小和上一层一样的特征矩阵,然后在并联两个1×1的卷积层,两个卷积层的卷积核个数分别为2k和4k。我们会在上千个anchor中选择256个anchor,正负样本比例为1:1,如果正样本数量不够,就增加负样本数量,保证最终得到256个anchor。
2.1、正样本
anchor与ground-truth box的IoU值超过0.7,如果上个条件不满足那就会选一个anchor,他与GTbox存在最大的IoU。
2.2、负样本
存在一个anchor,他与所有GTbox的IoU值小于0.3,我们就把这个anchor划为负样本。
3、网络训练