本文对项目所使用的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 执行两种不同类型的预测:二元分类和边框回归。
- 二元分类使用多个SVM分类器。
- 边框回归目标是寻找一种关系使得输入原始的边框P经过映射得到一个跟真实边框 G 更接近的回归边框。方法为平移+尺度放缩。
代码的具体步骤:
- 根据二分类中的前景分数值进行排序,提取出前6000个Anchors。
- 对Anchors进行边框回归。
- 截断超过图像边界的Anchors的范围,并对坐标进行归一化。
- 使用非极大值抑制,从预测类别为目标的预测边界框中移除相似的结果。
- 最终筛选出多个(可自定义)提议区域。
参考资料: