Single-Shot Object Detection with Enriched Semantics 论文笔记

前言

在SSD中,小目标由较浅的层来检测,大目标由较深的层来检测。SSD虽然能够检测不同尺度的目标,但由于浅层特征只能捕获一些基础的视觉模式,语义信息不充足,因此在检测小目标时的性能不是太好;而浅层特征的不理想也会因此影响高级特征的检测性能。

为了解决上述问题,本文设计了一种新的检测网络,称为DES(Detection with Enriched Semantics),它主要包含两个分支:

  • 检测分支:就是目标检测网络中经典的检测器,以VGG16作为backbone,在不同层的特征图上进行检测;
  • 分割分支主要用于增强低级特征的语义信息。它以低级特征作为输入,通过bbox-level segmentation gt作为监督来学习语义分割的信息,然后利用该分支中的语义特征来增强低级特征。下图说明了分割分支进行语义增强的过程。A是输入图像,B是原始低级特征,C是分割分支中的语义特征,D是增强后的低级特征。B被C**(增强)之后得到D,D能够同时捕获目标的基础视觉模式和语义信息。这可以看作是attention过程。
    Single-Shot Object Detection with Enriched Semantics 论文笔记

除此之外,本文还提出全局**模块(global activation module)它主要用于增强高级特征。它主要由几个全局**块(global activation block)组成,全局**块能够以一种自监督的方式学习特征通道与目标类别之间的关系,从而增强高级特征的语义信息。


网络结构

DES的整体结构如下图所示:
Single-Shot Object Detection with Enriched Semantics 论文笔记

  • 检测分支:如图的上半部分,采用SSD作为检测分支;
  • 分割分支:如图的左下部分,分割分支被添加到第一个预测层conv4conv4_33中,采用bbox-level segmentation label对分割任务进行监督。图中黑色的箭头是输入流,即以conv4conv4 _33作为输入,然后生成经过增强的低级特征conv4conv4 _33^{'},替代原始特征图进行后续的检测,也就是图中的红色箭头,表示输出流。
  • 全局**模块:如图的右下部分,由于高级特征的分辨率较低,因此很难在它们上面进行分割任务,全局**模块就是为了增强高级特征的语义信息。

1. 低级特征的语义增强

低级特征的语义增强是通过分割分支实现的,这里的语义分割采用的是弱监督的形式,即不再是pixel-level annotation,而是bbox-level annotation,使用bbox-level segmentation gt作为监督。

XRC×H×WX \in \Bbb R^{C \times H \times W}是低级特征图conv4conv4 _33G{0,1,2,...,N}H×WG \in \lbrace 0,1,2,...,N \rbrace ^{H \times W}是segmentation gt,那么预测的分割结果YY就为:
Single-Shot Object Detection with Enriched Semantics 论文笔记
YY满足:
Single-Shot Object Detection with Enriched Semantics 论文笔记
通过以上两个式子可以得到中间结果g(X)RC×H×Wg(X)\in \Bbb R^{C^{'} \times H \times W},它可以用于生成语义特征图ZZ
Single-Shot Object Detection with Enriched Semantics 论文笔记
这个ZZ用于**原始低级特征图XXX=XZX^{'}=X \bigodot ZXX^{'}就是增强后的低级特征图,它会取代检测分支中的XX进行后续的检测。

分割分支的处理过程如下图所示:
Single-Shot Object Detection with Enriched Semantics 论文笔记
从中间特征图g(X)g(X)开始,出现两条分路:

  • 第一条FF路径用于生成分割预测YY,它采用1×1×(N+1)1 \times 1 \times (N+1)的卷积层,后跟softmax层;
  • 第二条HH路径用于生成语义特征图ZZ,采用1×11 \times 1的卷积,通道数与XX相同,生成的ZZ以element-wise相乘对XX进行**。

然后说一下分割模块中gt的生成。如果某个像素点GhwG_{hw}位于某bbox内,就将该bbox的标签分配给GhwG_{hw};如果GhwG_{hw}位于多个bbox内,哪个bbox最小,就把该bbox的标签分配给GhwG_{hw};如果GhwG_{hw}没有位于任何bbox内,就认为它是背景。这样可以保证GG中的每个像素只会被分配一个标签。
Single-Shot Object Detection with Enriched Semantics 论文笔记
如上图所示,如果某个像素点同时落入person和horse的bbox中,那么该像素点会被分配person的标签

2. 高级特征的语义增强

全局**模块主要包含三个阶段的操作:

  1. 空间池化:给定输入XRC×H×WX \in \Bbb R^{C \times H \times W},空间池化操作能够得到ZZ,其维度是CC
    Single-Shot Object Detection with Enriched Semantics 论文笔记

  2. channel-wise learning:生成**图(activation map),其中W2RC×C,W1RC×CW_2 \in \Bbb R^{C \times C^{'}},W_1 \in \Bbb R^{C^{'} \times C},默认C=14CC^{'}=\frac{1}{4}C
    Single-Shot Object Detection with Enriched Semantics 论文笔记

  3. broadcasted multiplying:用SSXX相乘得到XX^{'}Xihw=XihwSiX^{'}_{ihw}=X_{ihw} \cdot S_i,最终XX^{'}会替换检测分支中的XX以进行后续的检测。

3. 多任务训练

在训练时,分割任务使用的是交叉熵损失,原始的目标检测损失为Ldet(I,B)L_{det}(I,B),将这两个结合起来,可以得到新的损失函数为:
Single-Shot Object Detection with Enriched Semantics 论文笔记
最终需要优化的目标函数为:
Single-Shot Object Detection with Enriched Semantics 论文笔记


结论

本文是对SSD的改进,分割分支采用弱监督语义分割来为浅层特征提供丰富的语义信息,全局**模块用于为高级特征提供全局上下文信息,提高高级特征的检测能力。