R_CNN
R_CNN算法流程步骤:
1)一张图像生成1K~2K个候选区域(Selective Search方法)
2)对每个候选区域,使用深度网络提取特征
3)特征送入每一类的SVM分类器,判断是否属于该类
4)使用回归器精细修正候选框位置
1、候选区域的生成
利用Selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含这可能需要的物体。
2、对每个候选区域,使用深度网络提取特征
将2000候选框缩放到227x227,接着将候选区域输入实现训练好的AlexNet CNN网络,获取4096维的特征得到2000x4096维矩阵。
3、特征送入每一类的SVM分类器,判定类别
将2000x4096维特征与20个SVM组成的全职举证4096x20相乘,获得2000x20维矩阵,表示每个建议框是某个目标类别的得分。分别对上述2000x20维矩阵中每一列即每一类进行非极大值抑制提出重叠建议框,得到该列即该类中得分最高的一些建议框。
将2000x4096的特征矩阵与20个SVM组成的权值矩阵4096x20相乘,获得2000x20的概率矩阵,每一行代表一个建议框,归于每个目标类别的概率。分别对上述2000x20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。
IOU(Intersection over Union)表示
非极大值抑制剔除重叠建议框:
如图:
通过SS算法得到一系列边界框,通过SVM后评分最高的是A,另外一个评分0.86的B,通过计算A和B的IOU,当IOU大于给定的阈值,则判断两个候选框为统一物体,并将概率评分较低的删掉。
4、使用回归器精细修正候选框位置
对NMS(非极大值抑制)处理后剩余的建议框进一步筛选。接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。
如图,黄色框P表示建议框Region Proposal,绿色框G表示实际框Ground Truth,红色框G‘表示Region Proposal进行回归后的预测框,可以用最小二乘法解决线性回归问题。如图:
R_CNN框架:
R_CNN存在的问题:
1)测试速度慢
一张图像内候选框存在大量重叠,提取特征冗余
2)训练速度慢
3)训练所需空间大
对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC2007训练集上的5k图像上提取的特征需要数百GB的存储空间。