1 Introduction
RPN(Region ProPosal Network),可与Fast RCNN共享卷积特征,实现端到端训练。
结构:分为两个卷积网络,一个是将conv map的每一个位置编码成256d 特征向量,另一个网络对于每个位置生成k个不同尺度和比例的候选区域的objectness score和回归框框
训练策略:候选框提取微调,固定候选框提取网络、微调检测网络,两者交替进行
image.png
2 RPN
输入:任意大小图片,输出:一个矩形框的集合和每个矩形框的objectness score(是物体还是背景, 二分类)
在文中, 共享网络有两种结构, ZF的前五层和VGG前13层.
为了产生候选区域, 在共享网络最后一层连接n * n(文中n=3) 窗口卷积层(后跟Relu). 每个窗口映射成256d(ZF)或512d(VGG)向量. 这个向量被分别喂给两个全连接层(1*1卷积实现)----框回归层(reg)和分类层(cls).
每个窗口提出k个候选区域, 所以reg输出大小为4k来编码框的位置, cls输出大小2k 判断每个框是物体还是背景. anchors中心与滑动窗口重合, 用来近似表示候选框. anchor选取三种尺度和横纵比, 故k=9. feature map大小WH(约2400), 总共WHk个候选框.
训练过程如何给anchor打标签?
满足两种情况标记为正(物体):
(1) 与某个ground-truth box的IOU最大
(2) 与任何一个ground-truth IOU大于0.7
若与所有ground-true IOU都小于0.3, 标记为负(背景)
其他anchor不参与训练
RPN loss
image.png
anchor正负标签比例不同, 负样本太多, 导致训练偏向负样本. 因此, 每张图片选取256个anchor来计算loss, 若正样本不够128, 用负样本代替.
训练过程:
参数初始化: mean=0, std=0.01,
微调ZF所有层, VGG conv3-1后的(内存不够)
学习率 0.001 60k mini-batch 然后 0.0001 20k mini-batch
momentum 0.9 0.0005
将RPN与Fast RCNN一起训练
(1) 先训练RPN
(2) 使用(1)产生的候选框, 训练另一个Fast RCNN网络, 参数不共享
(3) 将(1)中共有的网络结构使用(2)的参数, 固定参数, 微调RPN其他层
(4) 固定RPN, 微调Fast RCNN其他层
更多细节
训练和测试豆浆图片短边s缩放到s=600
anchor尺度 128, 256, 512 纵横比 1:1, 1:2, 2:1
所有anchor大于边框的都不参与训练, 测试时备菜间成图片边界
训练过程anchor间的IOU太高, NMS=0.7, 每张照片2k个候选框, 后使用top-N个参与训练
网友评论