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


|ECCV2020 Oral | BorderDet用边界特征做检测
本文插图

本文解读的是ECCV 2020 论文《BorderDet: Border Feature for Dense Object Detection》 , 作者来自旷视、西安交通大学 。 本文首发于知乎:https://zhuanlan.zhihu.com/p/163044323 。
作者 | 马宇宸
编辑 | 丛 末
|ECCV2020 Oral | BorderDet用边界特征做检测
本文插图

论文地址:https://arxiv.org/pdf/2007.11056.pdf
开源地址:https://github.com/Megvii-BaseDetection/BorderDet
加入旷厂科(ban)研(zhuan)已经1年多了 , 最近产出一篇目标检测方向的新工作 , ''BorderDet: Border Feature for Dense Object Detection'' 。 运气还算比较好 , 是ECCV2020 Oral的一篇工作 , 可以用于现在主流的dense object detector 。 基于FCOS的baseline有2.8个点的提升 , 文章和源码已经release 。
1
概述
我们提出了一种非常简单、高效的操作来提取物体边界极限点的特征 , 叫做“BorderAlign” 。 模型只增加很少的时间开销 , 可以在经典模型上FCOS(38.6 v.s. 41.4). FPN(37.1 v.s. 40.7) 。 下面是我们的方法和这些经典模型的对比 。
|ECCV2020 Oral | BorderDet用边界特征做检测
本文插图

2
背景
对于dense object detector(e.g. FCOS、FPN的RPN) , 都是使用simple point特征去预测框的分类和回归 , 但是发现只用一个点的特征是不够的 , 很难去捕捉到物体边界的信息来精准定位 。 这些年有很多研究通过级联的方式 , 希望通过引入更强的特征来增加simple point特征 , 主要包括GA-RPN、RepPoints等 。 但这些工作可能存在两个问题 。

  • 这些检测器使用一些操作(e.g. Deformable Conv)来增强特征 , 但这些操作可能是冗余的 , 甚至会引入“有害”的背景信息 。
  • 这些方法没有显示的提取边界特征 , 我们认为边界极限点特征对边界框的定位比较重要 。
如下图 , 这个运动员中心的五角星位置即为anchor点 , 但是确定该物体边界框的主要是边界上的四个橘色圆点 , 这个运动员的边界框的位置主要由四个极限点来确定 。 用其他的方法可能会引入一些有害的信息 , 且不能直接有效的提取到真正有用的边界极限点 。
|ECCV2020 Oral | BorderDet用边界特征做检测
本文插图

3
动机
基于上述两条“痛点” , 我们觉得提取物体的边界极限点的特征是不是能对物体精准定位有一些帮助?于是乎我们做了最基础的一些实验 , 我们基于FCOS的检测器 , 增加一些enhancement的特征来加强单点特征 。 主要有4组实验 , 分别来验证上面提到的两条问题 。 (1) single point: 单点特征做增强;(2) region: 用ROIAlign提取框内所有特征来增强;(3)border使用边界上所有点的特征来增强 (4)只用边界中心点来增强 。 这四个实验的特征采样位置如下图 , 分别对应不同的采样点个数 。
我们发现 , 提取边界的中心点的特征 , 能够达到和region feature同样的结果 , 且采样点个数少了很多 。 这意味着只需要更少的复杂度 , 能够高效的提取到有用的特征 。 且同时证明了 , 边界极限点特征对物体定位确实有非常重要的作用 。
|ECCV2020 Oral | BorderDet用边界特征做检测
本文插图

|ECCV2020 Oral | BorderDet用边界特征做检测
本文插图

4
方法
基于上面的观察和简单的实验 , 我们认为这里面确实有很多油水可以炸 。 那我们是否能够提出一种简单且通用的操作 , 来显示提取边界极限点的特征 , 精准定位物体的框 。 于是我们开始介绍这个工作的组成 , 从局部到整体的顺序 。 (BorderAlign -> BAM -> 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. 显式的提取物体边界极限点的特征 。
  3. 高效且不会引入很多冗余的背景信息 。
  4. 即插即用 , 通用且干净 。

|ECCV2020 Oral | BorderDet用边界特征做检测
本文插图

【|ECCV2020 Oral | BorderDet用边界特征做检测】更多交流


    推荐阅读