本文对项目所使用的Mask_RCNN的代码作出一些解读,主要集中在核心的RPN部分。

生成anchor需要大小和宽高比两组数据,例如sizes=[0.75, 0.5, 0.25], ratios=[1, 2, 0.5],所有的大小与宽高比的组合为9种。首先生成覆盖全图的不同尺度的anchors,然后计算这些anchors和ground truth(真实边框)的交并比IoU。与IoU>=0.7的为positive anchors,IoU<0.3的是negative anchors。IoU>=0.3并且IoU<0.7的是neutral anchors,将不会用于训练。

RPN 执行两种不同类型的预测:二元分类和边框回归。

  1. 二元分类使用多个SVM分类器。
  2. 边框回归目标是寻找一种关系使得输入原始的边框P经过映射得到一个跟真实边框 G 更接近的回归边框。方法为平移+尺度放缩。

代码的具体步骤:

  1. 根据二分类中的前景分数值进行排序,提取出前6000个Anchors。
  2. 对Anchors进行边框回归。
  3. 截断超过图像边界的Anchors的范围,并对坐标进行归一化。
  4. 使用非极大值抑制,从预测类别为目标的预测边界框中移除相似的结果。
  5. 最终筛选出多个(可自定义)提议区域。

参考资料:

https://www.bilibili.com/video/av29987414

https://blog.csdn.net/zijin0802034/article/details/77685438