FasterRCNN

算法步骤

  • 使用深度神经网络来提取特征,得到特征图
  • 使用RPN网络生成候选框,将RPN网络生成的候选框投影到特征图上获得相应的特征矩阵
  • 使用ROI池化缩放到7×7大小的特征图,展平之后通过一系列全连接层得到预测结果(和FastRCNN一样)

在这里插入图片描述

FasterRCNN可以说是Region Proposal Network(RPN)和FastRCNN和结合。

RPN结构

在这里插入图片描述
使用3×3的滑动窗口来生成anchor(在特征图上,滑动窗口的中心就是anchor的中心),实现使用的是3×3的卷积,其中padding=1,stride=1,也就是不改变维度,同时卷积的中心能够遍历特征图的所有位置。卷积核的个数为256,也就是256-d。然后再通过两个1×1的卷积来得到2k个score(包含不包含物体的概率,实现中可以只使用其中一个,也就是k个score)和4k个coordinate(每一个anchor包含x,y,w,h4个值)。

将特征图映射回原图时,计算两个的宽高比作为步距,那么用步距乘以特征图的坐标即可得到原图的坐标。

锚框

锚框使用三种尺度:128、256和512,比例有1:1、1:2和2:1三种,于是总共可以得到9个锚框。
在这里插入图片描述
对于一张输入图片,使用上面的方法得到很多anchor之后,首先忽略掉超出边界的anchor,然后基于候选框的类别概率,使用非极大值抑制,IoU设置为0.7。

训练

训练RPN网络时,从众多anchor中随机采样256个,包含了一半的正样本和一半的负样本(1:1)。如果正或者负样本少于一半,用另一种填充。

如果判断是否为正样本?当使用下面第二个条件找不到anchor的时候,采用第一个条件:
(1) 和ground-truth有最大的IoU
(2) 和ground-truth的IoU高于0.7

如何判断是否为负样本?和任何ground-truth的IoU都小于0.3。

IoU处于0.3到0.7之间的直接舍弃。

RPN损失函数

在这里插入图片描述
其中, p i p_i pi为anchor包含物体的概率, p i ∗ p_i^* pi为1或者0(正样本为1), t i t_i ti表示预测为第i个anchor的边界框回归参数, t i ∗ t_i^* ti为第i个anchor的ground truth, N c l s N_cls Ncls为一个小批量的样本数量256, N r e g N_reg Nreg表示anchor位置的个数。

两个损失函数的形式和fast RCNN一致。

整个Faster RCNN训练时,可以直接采用RPN loss和Fast-RCNN loss联合训练,两个加起来作为损失然后反向传播。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值