ECCV2020 Oral | BorderDet用边界特征做检测( 二 )


ECCV2020 Oral | BorderDet用边界特征做检测
本文插图
1、BorderAlign
这是本工作最核心的一个操作 , 用来显式、自适应的提取物体边界的特征 。 如上图右上角 。 对于一个特征图 , 通道个数为5xC , 这是一个border-sensitive的特征图 , 分别对应物体4个边界特征和原始anchor点位置的特征 。 对于一个anchor点预测的一个框 , 我们把这个框的4个border对应在特征图上的特征分别做pooling操作 。 且由于框的位置是小数 , 所以该操作使用双线性插值取出每个border上的特征 。 如图所示 , 我们每条边会先选出5个待采样点 , 再对这5个待采样点取最大的值 , 作为该条边的特征 , 即每条边最后只会选出一个采样点作为输出 。 那么每个anchor点都会采样5个点的特征作为输出 , 即输出的通道数也为5xC个 。
2、BAM(Border Alignment Module)
对于来自于FPN的特征 , borderAlign需要5xC的border-sensitive的特征图 , 所以需要将通道先升维 , 提取完后再降维 。 为了“最干净”的验证Border feature的有效性 , BAM中使用1x1conv来做升降维 , 几乎不增加模型的计算量 。 最后还原到256通道 , 来做最终的边界的分类和回归 。
3、BorderDet
网络的整体框架 。 我们使用经典的密集检测器FCOS作为baseline , 如下图所示 。 上面的分支是分类分支 , 下面的是回归分支 。 centerness我们没有画 , 因为无关紧要 , BorderDet独立于dense detector的网络结构 , 都有涨点 。
熟悉FCOS的同学应该很容易捕获这张图的信息 , coarse cls score/reg分别对应FCOS的输出 。 我们在四个conv后面接出来一个分支来做borderAlign操作 , 同时BAM模块需要将FCOS的框位置的输出作为输入 , 显示的提取该框边界上的特征 。 最终BAM会分别预测一个border score和border reg , 和原始密集检测器的输出组合成为最后的输出 。
4、模型训练及预测
BorderDet的秉持一贯“朴素、简单且有效” , 训练和前传都非常简单 , 没有hack什么trick 。

  • 分类损失函数就是focal_loss , 超参和FCOS完全一致 , 没什么好说的 。
  • 回归就是最简单的smoothl1 , 精修FCOS预测框的位置 。
  • 最后的总的损失函数就是把所有的加在一起 , 损失函数的权重都是1 。
5
实验
Exp 1. 分类回归分支
结果:分类分支提升1.1 , 回归提升1.1 。 其实也还是比较make sense的 。
结论:
  • 分类分支 , 精准定位有助于最后的ranking , 使NMS能够pick一个更好的边界框
  • 回归分支 , 获取极
  • 限点特征 , 更精准的回归 , 精修前一阶段的框 , 涨点很正常 。
Exp 2. 对比其他特征提取操作
和其他知名的特征增强器做对比 , 无论是速度还是精度 , 都还是比较有优势 。
Exp 3. 在其他密集检测器上的泛化能力
在Retinanet上有2.3的提升、FPN上有3.6的提升 , 在不同模型上均有不俗的表现 。
6
发现
现象:
我们统计了边界上提取特征的点的位置 , 并和COCO中seg的标注做对比 。 发现随着训练的进行 , 提取特征点的位置会逐渐趋于极限点的位置 , 均值在0附近 , 且方差逐渐变小 。
结论:
在某种程度上 , 可证明BorderAlign确实在提取边界极限的特征 , 且边界极限点的特征对物体的精准定位确实有一些帮助 。
ECCV2020 Oral | BorderDet用边界特征做检测
本文插图
7
总结
  1. 非常简单且通用BorderAlign操作 。
  2. 显式的提取物体边界极限点的特征 。


    推荐阅读