文章17
标签11
分类1

TridentNet总结

论文标题: Scale-Aware Trident Networks for Object Detection
论文地址: 传送门

Abstract

尺度差异(Scale variation)是目标检测的关键问题之一。本文对目标检测中关于尺度差异的有效感受野进行了调研,同时提出了TridentNet,它可以使用统一的表示方式产生尺度相关的特征图。
TridentNet采用了一种并行多分支结构,每个分支共享参数但是具有不同的感受野。然后采用了一种尺度相关训练策略,从而使每一个分支对合适的样本进行采样。同时,TridentNet还有fast版本,即多分支训练,仅采用单个分支测试,其精度损失很低但是速度有所提升。
在COCO上TridentNet+ResNet101达到了48.4 mAP。

Introduction

DCN在目标检测领域取得了巨大的成功,如one-stage的YOLO、SSD,two-stage的Faster R-CNN、R-FCN,然而尺度问题一直都是一个很严重的问题,尤其是对非常小或者非常大的目标。

为了解决尺度问题,最早的就是使用图像金字塔的形式,如SNIP(ER)提出了一种尺度归一化的方法,对每个尺度选择合适的输入影像,然而图像金字塔耗费时间太多了。

另一种方法就是构建网络内的特征金字塔,如SSD、FPN。然而这些不同尺度的特征来自不同的层中,使得其并不能取代图像金字塔。

这两种方法都是基于:不同尺度的物体有不同的感受野。尽管图像金字塔并不高效,但是其能够对所有尺度的物体平等的进行变换。相反,特征金字塔的不同尺度破坏了特征的连续性,这导致有效训练数据的减少和更高的过拟合风险。

本文的工作就是将两者的优点结合起来,使其能够高效的产生一种对所有尺度具有统一表示能力的特征。(即三个分支使用相同的参数,但是有不同的感受野,从而可以识别大小不同的物体;而FPN是不同的参数识别不同的物体,这样的话同一种物体是有不同的参数来识别的,并不统一)。在本文中,相比于输入多尺度的图像金字塔,我们提出了一种新的网络结构来处理多尺度。

实际上,我们通过Trident Block输出多尺度的尺度相关(scale-specific)特征图(图1c)。通过空洞卷积(dilated convolutions),不同的分支共享网络结构和网络参数,但是具有不同的感受野。

此外,为了防止训练无穷尺度的物体,我们采用了一种尺度相关的训练策略,使得每一个branch匹配特定的感受野。

最后,由于不同分支共享权重,因此在inference时可以只使用一个分支,这样精度并没有下降很多,但是速度有所提升。

Investigation of Receptive Field

backbone的许多因素可以影响检测器的效果:下采样率、网络深度、感受野。前两者已经有很多工作去证明:深层的网络、较小的下采样率可以提高检测的效果。但是很少有人单独地研究过感受野对检测器的影响。为了研究感受野对不同尺度物体检测的影响,我们使用空洞卷积替换了backbone的部分卷积层,并通过不同的dilation rate 控制感受野大小。

上表表明,随着感受野增大,小目标的检测效果在ResNet50和ResNet101上都有所下降。然而对于大的目标,随着感受野的增加,检测效果有所提升。这个实验可以说明:

  1. 不同尺度物体的检测效果与有效感受野有关。
  2. 尽管ResNet的感受野已经很大了,但是通过增加dilation rates,大物体的检测效果还可以有所提升。
    也就是说,和SSD、FPN一样,感受野对不同尺度目标的检测具有很重要的作用,通过控制感受野可以更加有效的检测目标。

Trident Network

TridentNet包括trident block和scale-aware 训练方法。

Network Structure

TridentNet的目标是利用控制感受野进行检测的策略,同时克服其缺点。其网络结构如下图。

TridentNet的大致结构是:图像通过backbone提取特征,接着送入三个并行的Trident block当中,然后每个block都单独输出检测结果,最后统一通过nms输出结果。其中每个trident block都是一些卷积层和dilation层组成,且三个block共享参数。

Multi-branch Block Trident Block其实就是将ResNet中的bottleneck进行修改,将一个branch改为3个branch,这三个branch共享参数,但是其中$3 \times 3$的conv层有不同的dilation rates,分别为1,2,3。一般情况下,Trident block仅在backbone的最后一层添加。

Weight sharing among branches 一般情况下,多分支参数有可能导致过拟合。但由于三个分支共享参数,所以并不会出现过拟合。

Scale-aware Training Scheme

TridentNet的不同分支产生具有不同感受野的特征图,根据前面对感受野的研究,不同感受野对不同尺度目标检测效果也不同,因此可以将不同尺度的目标分配在不同的特征图上。

与SNIP相似,TridentNet为每个分支$i$定义了一个一个有效区间$[l_i,u_i]$。在训练的过程中,我们只选择尺度合适的proposals和gts。对于一个$(w,h)$的图像,对它有效的branch $i$上有:
$$l_i \leq \sqrt{wh} \leq u_i$$
这个策略对RPN和R-CNN都有效,对于RPN,在anchor label assignment时s我们仅选择合适的gts,相同的,在R-CNN时也仅选择合适的proposals。

Inderence and Approximation

在inference时我们将所有branch的结果合并起来,然后通过nms或者soft-nms和并输出结果。

Fast Inference Approximation 由于TridentNet多分支的缘故,其Inferencee的速度较慢,因此提出了TridentNet Fast,即仅取三个Trident block中间的分支作为输出。同时发现,fast版本的精度并没有下降多少。这主要是由于权重共享策略,multi-branch相当于网络内的数据增强。

Experiments

训练数据:trainval35k
验证数据:minival
测试数据:testdev

Implementation Details

  • backbone是在ImageNet上预训练的,stem、first residual stage all BN 的参数被*冻结。
  • 输入图片尺度的短边缩放到800。Random horizontal flip is adopted during training。
  • batch size is 16 on 8 GPUs。
  • Models are trained in 12 epochs with learing rate from 0.02 and decreased by a factor of 0.1 after 8th and 10th epoch.
  • $2 \times $ or $3 \times$ 即2倍或者3倍训练epoch和learning rate schedules。
  • TridentNet中的每一个branch,top 12000/500 proposals被用在NMS前/后,然后采样128 ROIs for training。
  • dilation rates分别为1,2,3.
  • scale-aware scheme中有效区间为:$[0,90],[30,160],[90,∞]$

Ablation Studies

Component of TridentNet

Number of branches

Stage of Trident blocks

Number of trident blocks

Performance of each branch

Comparison with State-of-the-Arts

Compare with other scale handling methods

Summary

总体来说,TridentNet是一个simple but work的工作。

目前用的最多的FPN,其通过不断地卷积来调整感受野,实现在多层特征上的预测,利用更多的信息。但是FPN上不同的实例被分配到不同的层上,而不同层有不同的参数,这就导致同一个类别的物体是通过两个层上来预测的,并不是一种统一的表示,而图像金字塔如SNIP对图像进行简单的缩放即可达到很高的精度,说明了图像金字塔的优势。但图像金字塔的速度较慢。

作者通过对有效感受野的研究,发现不同的感受野适应于不同尺度的目标。因此很自然的想到通过控制感受野实现多尺度的预测,即利用空洞卷积,设置不同的dilation rates。

为了克服FPN的缺点,TridentNet的block共享权重,从而使得相同的参数,通过调整感受野,实现对不同尺度目标的检测,因此是一种更加统一的特征表示方式。

由于其共享参数的特点,其在预测时仅使用一个branch即可达到较好的效果。