Faster-RCNN 理解

GPU上达到5fps

 

流程:

1、将图像输入网络得到相应的特征图

2、使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵

3、将每个特征矩阵通过ROI pooling层缩放到7*7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果。

即:RPN+Fast R-CNN

 

256-d :ZF-Net 512-d:VGG16

在feature map 用3*3conv,padding=1,得到shape与feature map 相同的特征矩阵,再分别经过1*1卷积,卷积核个数为2k,4k进行处理,得到cls,reg。原论文中K=9

对于特征图上的每个3*3的滑动窗口,计算出滑动窗口中心点对应原始图像上的中心点,并计算出k个anchor boxes.

 步距=原图的宽度 / 特征图的宽度,再取整

 步距=原图的高度 / 特征图的高度,再取整

特征图黑点位置对应原图的位置:x:步距*3,y:步距*3

再以原图黑点为中心,生成k个anchor box,这个anchor可能包含目标,也可能不包含

cls :0.1:为背景概率,0.9为前景概率,每两个表示一个box,这里不进行分类

每个anchor的面积

 由中心点生成9个anchor,2*9个cls,4*9个reg

对于ZF-Net感受野:171

对于VGG感受野:228 ,但为什么在原图上能够预测比它大的的边界框?(如256,512)

原论文作者的看法:根据经验,只看到一部分,也能够大概猜出整体位置区域,实际使用也是有效的。

对于一张1000*600*3的图像,大约有60*40*9(20k)个anchor,忽略边界的anchor以后(即一些anchor超过了边界),剩下约6k个anchor。利用RPN生成的边界框回归参数将anchor调整到候选框,将6k个anchor调整为6k个候选框,这里的anchor与候选框不一样,对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用极大值抑制,IoU设为0.7,这样每张图片只剩2k个候选框。

训练数据(正负样本):随机采样256个anchor,由正负样本组成(1:1),正样本不够128,负样本填充。

正样本:1、Iou超过0.7认为是正样本。2、找到与groundtruth 最大iou的anchor也定义为正样本

(一般取第一个条件足够)

负样本:iou<0.3

正负样本之外的全部丢弃掉

RPN损失:

 2400(60*40),lambda是平衡参数,256最终抽取候选框个数

简化:1/Ncls = lambda *1/Nreg   1/256=10*1/(2400)

分类损失:

 -log(0.9)-log(0.2)....

Fast -R-cnn损失这里不细说

如何利用反向传播进行训练:

直接联合,代码中

版权声明:本文为CSDN博主「我真帅66」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_53029963/article/details/122399282

我真帅66

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐