【每日一网】Day2:Fast R-CNN流程简单理解
作者:互联网
Fast RCNN
算法简介
Fast R-CNN仍然使用VGG16作为网络的backbone,与R-CNN相比,训练时间快9倍,测试推理时间快213倍,准确率从62%提升到66%
算法流程
Fast R-CNN算法流程可分为三个步骤
1、一张图像生成1k-2k个候选区域(使用selective search)方法
2、将图像输入网络得到相应的特征图,将ss算法生成的候选框投影到特征图上得到相应的特征矩阵
3、将每个特征矩阵通过ROI Pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全链接层得到预测结果
一次性计算整张图像
与R-CNN不同,R-CNN是将每个候选框分别送入网络,有可能相同的一个特征区域会被计算很多次,造成冗余, Fast R-CNN则是将整张图像送入网络,紧接着从计算出的特征图像上利用候选框提取相应的候选区域,从而不需要重复计算
在论文中,作者将候选框与gt的IOU大于0.5的则定义为正样本, Fast R-CNN中并不是采用所有ss算法产生的候选区,而是采用了其中一部分
Fast R-CNN
文中对生成候选框的区域进行了Max Pooling操作,统一变为7x7的特征矩阵,所以不需要限制输入图像的尺寸。
分类器
图像经过ROI Pooling之后将会输入两个全链接层并展平,随后会并联输入两个全链接层,其中一个负责目标概率预测,一个负责候选框边界回归,分类器会输出N+1个类别的概率,其中N为检测目标的种类,1为背景概率,由于是经过Softmax处理之后输出的,所以N+1类概率和为1。
边界框回归器
边界框回归器会输出对应N+1个类别的候选边界框回归参数(dx, dy, dw, dh)共(N+1)x4个节点
边界框回归的计算函数为
损失函数
其中分类损失为为Softmax交叉熵损失
边界框回归损失
TIPS:
损失函数中的lamda是一个平衡系数,用来平衡分类损失和边界框损失;
[u>=1]为艾弗森括号,u>=1时对应的边界框中是正样本,所以等于1,u<1时对应边界框中对应的是背景,也就是负样本所以等于0,就不存在边界框回归损失了。
回归参数Vx = (Gx - Px)/Pw
(真实x - 预测x)/预测w
Vy同理
ln(Vw) = ln(Gw/Pw)
ln(Vh) = ln(Gh/Ph)
ps:交叉熵损失
1、针对多分类问题(softmax输出,所有输出概率和为1)
2、针对二分类问题(sigmod输出,每个输出结点之间互不相干)
selective search算法
Selective search算法(以下简称ss算法):首先通过以及简单的聚类生成区域集合(利用felzenszwalb算法);然后根据定义的相似度不断合并相邻区域构成新的候选框。本质上是一种基于在原始聚类后的区域集合上,依照邻域的相似度,从小到大的进行滑动窗口。
具体算法实现步骤如下:
step1:计算区域集R里每个相邻区域的相似度S={s1,s2,…}
step2:找出相似度最高的两个区域,将其合并为新集,添加进R
step3:从S中移除所有与step2中有关的子集
step4:计算新集与所有子集的相似度
step5:跳至step2,直至S为空
区域相似度,颜色、纹理、尺寸、交叠。四个方面。
标签:候选框,边界,Day2,Fast,算法,区域,CNN 来源: https://blog.csdn.net/dudu199806/article/details/111219059