pytorch目标检测:Faster R-CNN(理论)

前言

        学习资料来自b站,视频链接为:FasterRCNN_哔哩哔哩_bilibili


1、Faster R-CNN算法流程

        Faster R-CNN算法流程可分为3个步骤:
        - 将图像输入网络得到相应的特征图(feature maps);
        - 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵(feature vector);
        - 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果 ;

        可以理解为是RPN+Fast R-CNN。

2、RPN网络结构

2.1 anchor        

        在特征图(feature maps)上使用滑动窗口,每滑动到一个位置就生成一个一维向量,在这个向量的基础上通过两个全连接层分别输出目标概率(2k scores)以及边界框回归参数(4k coordinates)。k是anchor boxes的个数,2k就是针对每一个anchor生成的两个概率(背景概率与前景概率)。

        这里的256是使用ZF网络作为Fsaster R-CNN的backbone时它所生成的特征图的深度(channel),如果使用的是VGG16的话那就是512,所以这里一维向量的元素个数是根据使用的backbone输出特征矩阵的深度确定的。

        对于特征图上的每个3x3的滑动窗口,计算出滑动窗口中心点对应原始图像上的中心点,并以这个点为中心计算出生成k个anchor boxes。 【例如计算x的坐标:[原图宽度/特征图宽度]=步距,特征图上的x坐标乘以步距即可得到原图中的x坐标,y坐标的计算同理。】

        每个anchor都会生成2个score,2k scores两两为一组,第一个是预测为背景的概率,第二个是预测为目标的概率(仅仅是预测为前景/背景,没有进行分类)。回归参数4k个,每4个为一组,d^{_{}}x和dy是中心坐标的预测偏移量,dw和dh是对anchor的宽度及高度的调整。目的是为了更好的框选出前景。

        anchor有三种尺度(面积){128²,256²,512²},三种比例{1:1,1:2,2:1},所以每个位置(每个滑动窗口)在原图中都有对应的3*3=9个anchor。所以在每个位置上都会生成2*9=18个类别分数,以及4*9=36个边界回归参数。【面积问题在论文中说是经验所得】

        并联两个1×1的卷积层实现类别预测以及边界框回归预测,cls layer采用1×1大小的2k个卷积核进行处理,reg layer采用1×1大小的4k个卷积核进行处理。

 2.2 训练样本的采样

        原论文中指出,只使用256个anchor,包括正样本和负样本,比例大概为1:1,当正样本数不足128时,使用负样本数填充。①当anchor与group-truth box的IoU大于0.7时,认为这个anchor为正样本;②当anchor与group-truth box的最大IoU大于0.3时,也可以认为这个anchor为正样本;③当anchor与所有group-truth box的最大IoU都小于0.3时,认为这个anchor为负样本。对于正样本与负样本之外的anchor全部丢弃。

3、LOSS

3.1 RPN Multi-task loss

        使用多分类计算交叉熵损失:

        使用二分类计算交叉熵损失:

3.2 Fast R-CNN Multi-task loss

        Faster R-CNN训练直接采用RPN Loss+ Fast R-CNN Loss的联合训练方法。

4、总结

5、拓展-感受野

    

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值