目标检测二阶段网络(faster-rcnn)的端到端训练方式

简明扼要说一下二阶段网络训练的pipeline,一些基本概念还需要自行去查询一下,这里就不做介绍了

RPN网络的训练

  1. 需要的输入有之前卷积层得到的featuremap,anchor的规格(size,scale等能表达anchor大小的参数),label
  2. 由featuremap上的每个位置映射回到原图上,再结合给出的anchor规格,得到原图每个区域(特征图上每个点对应原图一个区域)的anchor集合
  3. 计算每个anchor与每个label框的iou,计算完后每个anchor对应一个与其iou最大的label,假设有俩个iou阈值thresh_high和thresh_low,将计算的iou大于thresh_high的anchor设置正类标签,iou小于thresh_low的anchor设置负类标签(一般负类较多,需要从中采样一些),这些anchor拿出来将参与后续loss计算,其余anchor将忽略
  4. 计算之前得到的正类anchor与其对应最大iou的label框的偏移量(dx,dy,dh,dw)(具体如何计算偏移请参考faster-rcnn的bbox回归)
  5. 根据anchor的正负类可以计算二分类Loss,根据前边得到的偏移量再结合featuremap可以计算l1_smooth_loss,即回归Loss

ROI Pooling后网络的训练

  1. 将anchor按照rpn网络最后得到的score进行排序(由于是二分类,使用sigmoid每个框都有一个得分),选取前top k个作为proposals,并对这k个proposals按照rpn最后的输出使用偏移量进行位置矫正
  2. 这k个框按照RPN训练中第3步的方式通过iou与label对应上,然后经过roi pooling后再经过几次卷积最后输出类别和回归框的偏移量,最后再计算一次loss

Final

对前俩大步骤计算得到的loss进行反向传播,更新权重

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章