RepPointsV2的整体思想类似与Mask R-CNN,加入更多的任务来监督目标检测算法的学习。虽然在创新性上可能不够新颖,但论文的通用性还是很不错的,而且将角点任务的输出用于联合推理,从对比实验上看提升不少
来源:晓飞的算法工程笔记 公众号
论文: RepPoints V2: Verification Meets Regression for Object Detection
Introduction
神经网络预测的两种方法分别为验证(verification)与回归(regression),当前的一些目标定位方法结合了这两种方法来取得SOTA性能,先对预设的anchor box进行验证从而初步定位,然后回归box的偏移值进行调整。最近一些目标定位方法仅使用回归也取得了不错的性能,比如RepPoints。
为此,论文研究是否可以在纯回归的定位算法中加入验证任务来增强性能,具体的实现方法是在原网络上加入辅助分支(auxiliary side-branches)的形式,有监督地进行学习,优化中间特征以及最终的检测结果。
A Brief Review of a Pure Regression Method: RepPoints
RepPoints使用了纯回归的方法,具体的可以看看之前发的文章,从特征图位置 p = ( x , y ) p=(x,y) p=(x,y)开始,直接回归一组点 R ′ = { p i ′ = ( x i ′ , y i ′ ) } \mathcal{R}^{'}=\{p^{'}_i=(x^{'}_i, y^{'}_i)\} R′={pi′=(xi′,yi′)}来表达目标的空间位置,共有两个连续的步骤:
R = { p i = ( x i , y i ) } i = 1 n \mathcal{R}=\{p_i=(x_i, y_i)\}^{n}_{i=1} R={pi=(xi,yi)}i=1n为中间的点集, F p F_p Fp为位置 p p p的特征向量, g i g_i gi和 g i ′ g^{'}_i gi′为2-d的回归函数,最终的bbox通过转化函数 T \mathcal{T} T从点集 R \mathcal{R} R和 R ′ \mathcal{R}^{'} R′得到。尽管RepPoints使用了纯回归方法,没有anchor验证步骤,其性能并不比anchor-based方法差。
Corner Point Verification
角点验证由CornerNet提出,是论文采用的其中一种验证方法,在很多keypoint-based检测算法中有应用。角点验证给每个特征图位置预测一个分数,用来判断该特征点是否为目标的左上角点或右下角点,再预测两个偏移值来分别对角点进行调整,弥补下采样导致的精度问题。
论文的实现跟原版的类似,使用corner pooling进行特征提取,使用focal loss训练角点分数预测以及smooth L1 loss训练偏移值。若GT角点位于该特征点的bin中,则认为该特征点为正样本,其它均为负样本。在计算损失时,越靠近正样本点的负样本点会根据距离给一个高斯分数,可进行更平滑的学习。
当然,论文进行了一些改进,GT角点直接对应到FPN各层,不需要根据目标的大小决定对应哪层。
Within-box foreground verification
另一个验证任务是验证特征点是否在物体的内部,这种前景验证的信息均匀地存在于物体内部区域,不像角点那样集中于物体的极点。使用一个类别热图进行训练,对于
C
C
C个物体类别,类别热图共有
C
C
C维特征,每个维度表示该特征点属于该类别的概率。同样点,GT直接对应到FPN各层。
需要注意的是,经典的focal loss可能会使大物体相对于小物体得到更多的关注。为此,论文提出正则化focal loss,对于正样本点,根据其对应的物体包含的特征点数进行损失值的正则化,而对于负样本点,使用正样本点总数进行损失值的正则化。
A General Fusion Method
由于上述的两种验证任务都是相对物体的局部而言的,而纯回归的目标检测方法通常是直接检测目标的整体,所以论文采用辅助分支的形式接入,如图1所示,分别优化中间特征以及最终的检测结果。基于辅助分支,检测器可以得到以下收益:
- Better features by multi-task learning,辅助的验证任务能够在训练的时候提供更丰富的监督,从而得到能够提升检测准确率的更强大特征。相对于Mask R-CNN,论文的验证任务不需要额外标注。
- Feature enhancement for better regression,验证任务输出特征图包含角点位置以及前景区域,且特征图大小与回归使用的FPN特征图大小一致,所以将其进行 1 × 1 1\times 1 1×1卷积(embed conv)处理后相加融合到FPN特征中。需要注意,主干回归任务的反向传播梯度仅传到embed conv层,避免影响验证任务的学习。
- Joint inference by both methodologies,特征的融合隐式地帮助目标定位,而论文也显式地利用角点验证任务的输出来进行联合推理。角点任务善于角点的定位,但不善于分辨是否为真的角点,而主干回归任务的功能则相反。为此,论文提出调整主干回归任务输出的预测框的角点
p
t
p_t
pt:
t t t为角点类型(左上或右下), q t q^t qt为预测的角点位置, s ( q t ) s(q^t) s(qt)为验证分数, r r r为领域阈值,默认为1。
RepPoints v2: Fusing Verification into RepPoints
为了让RepPoints与辅助验证任务分支有更好的兼容性,显式地将点集的前两个点定义为左上角点和右下角点(explicit-corners),并根据这两个点将预测的点集转化为预测框。
验证模块取定位子网(详情取看看RepPoints的文章)的第三个卷积层的输出作为验证任务的输入,验证模块的结构如图2所示,完整训练损失函数为:
Experiments
explicit-corners与原先方法的的效果对比。
两种验证任务的效果对比。
3种融合方法的效果对比。
与SOTA性能对比。
Conclusion
RepPointsV2的整体思想类似与Mask R-CNN,加入更多的任务来监督目标检测算法的学习。虽然在创新性上可能不够新颖,但论文的通用性还是很不错的,而且将角点任务的输出用于联合推理,从对比实验上看提升不少。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】