RCNN=R+CNN
定义:
R:Region Proposal(候选区域);
CNN:Convolutional Neural Network(卷积神经网络);
作用:
R:用于解决定位问题;
CNN:用于解决识别问题;
定位的问题的解决思路?
思路一:看作回归(Regression)问题
目的:预测出(x,y,w,h)四个参数的值,从而得出方框的位置。
步骤一:搭建一个识别图像的人工神经网络(CNN)解决识别问题;
步骤二:改进CNN(在神经网络上加:“分类头”(classification)和“回归头(regression)”);
步骤三:Regression那个部分用欧氏距离损失(使用SGD训练);
步骤四:将两个头再拼接再一起来完成定位与识别的双重功能;
回归头(Regression)加在什么位置?
1:最后一个卷积层的后面(如:VGG);
2:最后一个全连接层的后面(如:R-CNN);
思路二:暴力取框
步骤一:取框(用各种大小的框来遍历整张图片);
步骤二:得分(将这些框输入到CNN中,输出这些框的得分以及这些框的位置(x,y,w,h));
步骤三:最优(取得分最高的框及其位置坐标 或 取得分最高的两框的交集框及其位置坐标);
优化:将全连接层改为卷积层
目的:提速
原来网络:
现在网络:
RCNN:
1:输入一张多目标图像,采用selective search算法提取约2000个建议框;
2:先在每个建议框周围加上16个像素值为建议框像素平均值的边框,再直接变形为227×227的大小(有问题);
3:先将所有建议框像素减去该建议框像素平均值后【预处理操作】,再依次将每个227×227的建议框输入AlexNet CNN网络获取4096维的特征【比以前的人工经验特征低两个数量级】,2000个建议框的CNN特征组合成2000×4096维矩阵;
4:将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘【20种分类,SVM是二分类器,则有20个SVM】,获得2000×20维矩阵表示每个建议框是某个物体类别的得分;
5:分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框;
6:分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。
注释:
1:非极大值抑制
应用情况:同一个目标被多个建议框包围;
作用:需要非极大值抑制操作去除得分较低的候选框以减少重叠框;
具体过程:
1:对2000 x 20维矩阵中每列按从大到小进行排序;
2:从每列最大的得分建议框开始,分别与该列后面的得分建议框进行IOU计算,若IOU>阈值,则剔除得分较小的建议框,否则认为图像中存在多个同一类物体;
3:从每列次大的得分建议框开始,重复步骤2;
4:重复步骤3直到遍历完该列所有的建议框;
5:遍历完2000 x 20维矩阵所有列,即所有物体种类都做一遍非极大值抑制;
6:最后剔除各个类别中剩余建议框得分少于该类别阈值的建议框;
例子:
IOU交并比 计算是什么?
定义:IOU = (A∩B)/(A∪B)
目的:考察一个候选框和当前图像上所有标定框重叠面积最大的一个。若重叠比例大于设定阈值,则认为此候选框为标定的类别。否则,该候选框为背景。
图例: