《Learning Rich Features at High-Speed for Single-Shot Object Detection》笔记
Introduction
论文针对目前一阶段目标检测方法在小物体检测的表现弱的问题,提出了一个新的一阶段目标检测框架。该框架主要的思路是在特征金字塔的过程中融入缺少的低级/中级特征,让低、中、高特征在各个级别的特征层上流动。另外,考虑到目标检测框架从头开始训练的效果更好,该框架结合了预训练模型微调和从头开始训练的优点。
Method
该框架的整体结构如下
该框架包括SSD框架,light-weight scratch network、bi-directional network。SSD框架的backbone是基本的特征提取网络,论文在实验中使用了VGG16和ResNet,backbone是使用预训练模型进行初始化。Light-weight scratch network(LSN)是一个轻量级的卷积神经网络,参数是随机初始化的,提取出来的低级和中级特征用在bi-directional network中。Backbone和LSN的参数的不同初始化方式可以结合预训练模型微调和从头开始训练的优点。Bi-directional network是改进的FPN,在botton-up阶段,融合backbone和LSN的特征,使得低级/中级特征流向靠后的特征层,在top-down阶段,使高级特征流向靠前的特征层。
Light-weight scratch network
Light-weight scratch network用于生成低级和中级特征,称作LSN特征。目标检测需要精确的物体描述,而低级和中级特征对物体描述来说是很重要的。但是使用预训练模型的backbone提取出来特征缺失了低级和中级特征。为了补偿信息的缺失,作者添加了一个Light-weight scratch network。
LSN的输入是缩小后的图片,缩小后的图片的大小和SSD中第一个用于预测的特征层的大小一致,即C4层的大小,缩小8倍。然后图片经过3×3和1×1的卷积块,得到初始特征。接着,每接一个3×3卷积块,就得到一层特征,特征依次下采样,每个特征经过一个1×1卷积块得到输出特征。
Bi-directional network
Bi-directional network的作用是生成特征金字塔,同时保证低级、中级和高级特征在不同的特征层中流通。
先看bottom-up阶段,每一层特征层的生成,都要融合backbone和LSN的特征,可以看上图的(b)。令backbone从C4层开始的特征为。LSN的特征是。特征层的生成方式是
其中是对应元素相乘、是对应元素相加,是上一层金字塔层特征,是3×3卷积块,步长是2,进行下采样,是3×3卷积块。这样,低级/中级特征流和底层的特征逐步流向高层的特征层。底层特征逐步流向高层的过程称为Cascade。
生成了bottom-up 特征金字塔后,开始top-down阶段,可以看上图的(c)。每一层特征层的生成,都要融合所有高层的特征,生成方式是
其中W表示1×1卷积块,用于减少通道数,是上采样,是concatenation操作,是3×3卷积块。这种融合方法很像DenseNet的Dense操作,只是融合的方向反了。这种Dense融合方法保证每层特征层都包含了充足的高级特征。
这样就生成了top-down特征金字塔,这些特征就用于后续的分类和回归预测。
可以看到,bottom-up阶段和top-down阶段使用的特征融合方法不同,分别是Cascade和Dense。论文探究了这两种方法带来的影响,根据实验结果决定使用上述的这种组合方法。下图是不同组合方式得到的模型的表现效果
Experiment
这里就只看看该框架在COCO数据集上的表现效果
注意中间红色框部分,该框架比SSD方法有提升,特别是对于小物体来说,提升效果显著。再看下方的红色框部分,虽然该框架的AP比RetinaNet的AP低,但是该框架的推理速度比RetianNet的快很多。