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过程。
除此之外,本文还提出全局**模块(global activation module),它主要用于增强高级特征。它主要由几个全局**块(global activation block)组成,全局**块能够以一种自监督的方式学习特征通道与目标类别之间的关系,从而增强高级特征的语义信息。
网络结构
DES的整体结构如下图所示:
- 检测分支:如图的上半部分,采用SSD作为检测分支;
- 分割分支:如图的左下部分,分割分支被添加到第一个预测层_中,采用bbox-level segmentation label对分割任务进行监督。图中黑色的箭头是输入流,即以 _作为输入,然后生成经过增强的低级特征 _,替代原始特征图进行后续的检测,也就是图中的红色箭头,表示输出流。
- 全局**模块:如图的右下部分,由于高级特征的分辨率较低,因此很难在它们上面进行分割任务,全局**模块就是为了增强高级特征的语义信息。
1. 低级特征的语义增强
低级特征的语义增强是通过分割分支实现的,这里的语义分割采用的是弱监督的形式,即不再是pixel-level annotation,而是bbox-level annotation,使用bbox-level segmentation gt作为监督。
设是低级特征图 _,是segmentation gt,那么预测的分割结果就为:
满足:
通过以上两个式子可以得到中间结果,它可以用于生成语义特征图:
这个用于**原始低级特征图:,就是增强后的低级特征图,它会取代检测分支中的进行后续的检测。
分割分支的处理过程如下图所示:
从中间特征图开始,出现两条分路:
- 第一条路径用于生成分割预测,它采用的卷积层,后跟softmax层;
- 第二条路径用于生成语义特征图,采用的卷积,通道数与相同,生成的以element-wise相乘对进行**。
然后说一下分割模块中gt的生成。如果某个像素点位于某bbox内,就将该bbox的标签分配给;如果位于多个bbox内,哪个bbox最小,就把该bbox的标签分配给;如果没有位于任何bbox内,就认为它是背景。这样可以保证中的每个像素只会被分配一个标签。
如上图所示,如果某个像素点同时落入person和horse的bbox中,那么该像素点会被分配person的标签
2. 高级特征的语义增强
全局**模块主要包含三个阶段的操作:
-
空间池化:给定输入,空间池化操作能够得到,其维度是:
-
channel-wise learning:生成**图(activation map),其中,默认:
-
broadcasted multiplying:用和相乘得到,,最终会替换检测分支中的以进行后续的检测。
3. 多任务训练
在训练时,分割任务使用的是交叉熵损失,原始的目标检测损失为,将这两个结合起来,可以得到新的损失函数为:
最终需要优化的目标函数为:
结论
本文是对SSD的改进,分割分支采用弱监督语义分割来为浅层特征提供丰富的语义信息,全局**模块用于为高级特征提供全局上下文信息,提高高级特征的检测能力。