本文源自b站博主霹雳吧啦Wz的学习视频:
1.1Faster RCNN理论合集_哔哩哔哩_bilibili
R-CNN
R-CNN算法流程:
1.一张图像生成1k~2k个候选区域(使用Selective Search方法)
2.对每个候选区域,使用深度网络提取特征
3.特征送入每一类SVM分类器,判别是否属于该类
4.使用回归器精细修正候选框位置
1.候选区域的生成
利用Selective Search算法通过图像分割的方法得到一些原始区域
2.对每个候选区域,使用深度网络提取特征
将2000候选区域缩放到227x227pixel,接着奖候选区域输入实现训练好的AlexNet CNN网络获取4096维的特征得到2000x4096维矩阵
3.特征送入每一类的SVM分类器,判定类别
将2000x4096维特征与20个SVM(二分类分类器yes/no)组成的权值矩阵4096x20相乘,获得2000x20维矩阵表示每个建议框是某个目标类别的得分。分别对上述2000x20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该分类中得分最高的一些建议框。
非极大值抑制剔除重叠建议框
解释一下:当得分最高目标与其他目标得到IoU值后,如果IoU大于给定阈值,则说明两者为同一物体,则可删除得分较低的目标,进而获得更加完美的目边界测框
4.使用回归器精细修正候选框位置
对NMS处理后剩余的建议框进行进一步筛选。接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box
如图,黄色框口P表示建议框Region Proposal,绿色窗口G表示实际框Ground Truth,红色窗口G'表示Region Proposal进行回归后的预测窗口,可以用最小二乘法解决线性回归问题
R-CNN框架
R-CNN存在的问题:
1.测试速度慢:
测试一张图片约53s(GPU).用Selective Search算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
2.训练速度慢:
过程及其繁杂
3.训练所需空间大:
对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。
Fast R-CNN
1.一张图像生成1k~2k个候选区域(使用Selective Search方法)
2.将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵
3.将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果
1.一次性计算整张图像特征
与R-CNN依次将候选框区域输入卷积神经网络得到特征不同,Faster-RCNN将整张图像送入网络,紧接着从特征图像上提取相应的候选区域。这些候选区域的特征不需要再重复计算。
2.RoI Pooling Layer
将得到的特征矩阵(这里用图片表示,易于理解)划分为7x7(49)等份,划分完后对每个等份进行最大池化下采样(Maxpooling)
3.分类器
进行Maxpooling操作后再通过全连接层提取特征得到RoI feature vector,接着并联一个全连接层用于目标概率的预测,也就是我们所说的分类器。该分类器输出N+1个类别的概率(N为检测目标的种类,1为背景)共N+1个节点
4.边界框回归器
与分类器类似,边界框回归器也是作为一个全连接层并联在RoI feature vector上,输出对应N+1个类别的候选边界框回归参数(dx,dy,dw,dh),共(N+1)x4个节点
边界框坐标计算公式
Px,Py,Pw,Ph分别为候选框的中心x,y坐标,以及宽高
Gx,Gy,Gw,Gh分别为最终预测的边界框中心x,y坐标,以及宽高
Fast R-CNN框架
Fast R-CNN相较于R-CNN,将SVM分类器和边界框回归都并联到一个全连接网络中,极大的提升了网络的速度,但是针对Selective Search算法Fast R-CNN还是没有做到最优化。
Faster R-CNN
1.将图像输入网络得到相应的特征图
2.使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵
3.将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果
观察上面的框架我们不难得出,Faster R-CNN相较于Fast R-CNN事实上就是将用Selective Search算法来生成候选框这一步骤替换成了用RPN来生成候选框,因此,想要弄明白Faster R-CNN,只需要在了解Fast R-CNN的基础上将RPN结构学会即可。
1.RPN
特征图上位置对于原图,用原图的长宽除以特征图的长宽得到步距,再用滑动窗口在特征图中的坐标乘以步距即可得到在原图中的定位。
在RPN中,是用anchor boxes来代替候选框,anchor boxes也被用来预测物体类别和边界框。其中cls有两个类别,背景和前景,分别计算出概率来做出判断,以及边界框的位置大小参数reg。
在Faster R-CNN中给出了一些anchor boxes的尺度和比例,如图所示结合大小和比例一共有9个anchor boxes,也就是18个类别分数,36个边界框参数。
一个实例:对于一张1000x600x3的图像,大约有60x40x9(20k)个anchor,忽略跨越边界的anchor之后,剩下也6k个anchor。对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩2k个候选框。
2.Faster R-CNN框架
相对与R-CNN和Fast R-CNN,Faster R-CNN的网络框架更加一体化,实现了端对端的训练过程。