RCNN
步骤:
- 一张图像生成1k-2k个候选区域
- 对候选区域使用深度网络特征提取
- 特征送入每一类svm分类器判断
- 回归器精细修正候选框
候选区域生成:
Selective search算法图像分割 2000个区域
对每个候选区域,使用深度网络提取特征:
reset 227*227 得到特征向量
特征送入每一类的SVM分类器判定类别:
svm二分类 特征矩阵与权值矩阵相乘得到某个目标类别的得分
非极大值抑制剔除重叠建议框:寻找得分最高的目标,计算其他目标与该目标的iou值,删除所有iou值大于给定阈值的目标,把概率低的删掉
IoU:
iou越大表示重合度越高
使用回归器精细修正候选框位置:
通过候选框中心x、y坐标,宽高进行重新精细修正
RCNN存在问题:
- 测试速度慢,候选框存在大量重叠,提取特征操作冗余
- 训练速度慢
- 训练所需空间大
FAST R-CNN
训练时间更快,测试推理时间更快,准确率提升
步骤:
- 生成1k-2k个候选区域
- 将图像生成得到特征图,将ss算法生成的候选框投影到特征图得到特征矩阵
- 将每个特征矩阵通过ROI(感兴趣区域) pooling层缩放到7*7大小的特征图,展平通过全连接层
一次性计算整张图像特征:
整张图送入神经网络,从特征图像上提取相应的候选区域,候选区域的特征无需重复计算
ROI(感兴趣区域) pooling层:
对每一个区域执行最大池化下采样,不限制输入图像的尺寸
分类器:
输出n+1(加背景)个类别的概率,共n+1个节点
边界框回归器:
全连接层
输出对应n+1个类别的候选边界框回归参数(dx,dy,dw,dh),共(n+1)*4个节点
Multi-task Loss:
CROSS Entropy loss 交叉熵损失:
Oi*在正确的标签时的索引位置=1,其他位置=0,0*任何都=0
FASTER R-CNN
推理速度和准确率进一步提升 区域生成网络
步骤:
- 将图像输入网络得到相应的特征图
- 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上得到特征矩阵
- 将每个特征矩阵通过ROI pooling层缩放到7*7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果
RPN + Fast R-CNN
2K(预测为前景和背景的概率) 并没有进行分类
4K 高宽,中心x、y
zf深度为256 vgg深度为512
Anchor 是预定义的、具有不同尺寸和宽高比的矩形框,常见的9个不同大小和形状
过程:
通过小的感受野预测一个比他大的边界框是有可能的,看到物体的一部分也能预测该物体的完整区域
Stride=1 padding=1 可以把每个都覆盖到 3*3卷积
利用RPN生成的边界框回归参数将anchor调整到所需要的候选框->非极大值抑制
尺度:
RPN Multi-task loss:
Softmax cross entropy :
多类别的交叉熵损失,虽然二分类(前景与后景)
Binary cross entropy:
2k->k 对于每个anchor只预测一个值,而不是两个值
通过sigmoid函数来预测,如果趋近于0的话代表为背景,如果趋近于1的话代表为前景
损失计算方法:
Faster R-CNN训练:
直接采用RPN Loss + Fast R-CNN Loss的联合训练方法
原论文采用分别训练RPN和Fast R-CNN
- Imagenet预训练的分类模型初始化前置卷积网络层参数,并单独训练RPN网络参数
- 固定RPN网络的卷积层和全连接层参数,再利用imagenet初始化前置卷积网络层参数,并利用RPN网络生成的目标建议框去训练Fast RCNN
- 固定Fast RCNN训练好的前置参数,去微调RPN参数
- 固定迁至卷积网络层参数,微调Fast RCNN网络的全连接层参数,最后共享,统一网络