目标检测中的上下文信息

Attentive Contexts for Object Detection

论文地址:https://arxiv.org/pdf/1603.07415.pdf

研究动机
现代目标检测器通常只利用建议目标区域内部的特征进行分类。
考虑以下两个问题:
如何识别有用的全局上下文信息来检测某个目标?
如何利用目标周围区域的信息更好地推断其内容?
直观地说,图像背景的全局视图可以提供有用的上下文信息。例如,如果要在图像中检测特定的汽车,通常与目标共存的对象(如人、道路或其他汽车)可能会为目标检测提供有用的线索。然而,并非所有的背景信息对提高目标检测性能都是有用的,加入无意义的背景噪声甚至可能损害检测性能。因此,识别有用的上下文信息是必要的。除了这样的“全局”环境外,还可以看到目标周围区域为推断目标的内容提供一些有用的提示。例如,周围环境(例如道路)和物体的部位(例如车轮)有助于检测目标(例如汽车)。

《目标检测中的上下文信息》 图1. 结合局部和全局上下文信息指导目标检测的说明。对于局部上下文,在特定建议目标框之外,使用内部和外部上下文信息来增强特征表示。对于全局上下文,使用基于注意的循环模型从全局视图获取上下文信息(高亮显示的区域)。

作者主要贡献
a. 提出Attention to Context CNN (AC-CNN),帮忙检测器同时获取全局和局部上下文特征。
b. 基于注意力的循环模型和局部上下文提取网络。
c. 在公开数据PASCAL VOC 2007和VOC 2012分别由2.0%和2.2%的性能提升。

下面开始分别介绍:
a. Attention to Context CNN (AC-CNN)

《目标检测中的上下文信息》 图2. AC-CNN包括两个主要的子网络,即基于注意力的全局上下文子网络和多尺度局部上下文子网络。图像首先被送入卷积网络以产生特征立方体。然后通过多尺度上下文子网络对特征进行局部上下文信息提取。每个建议区域的边界框用三个预定义的因子进行缩放,边界框中的特征表示由ROIPooling层提取。每个特征表示,经过L2归一化、连接、缩放、尺寸缩小,然后被送入两个全连接的层。在基于注意的上下文子网络中,特征立方体首先被集合成一个具有固定比例的立方体。然后,采用三个LSTM层的循环注意力模型,从全局角度对有用区域进行循环检测。最后,基于计算出的注意图,将全局上下文特征集合起来,并将其输入到两个全连接的层中。AC-CNN使用多尺度上下文子网络的输出特征进行目标边界框回归。两个子网络输出的连接特征用于目标分类。

b. 具体介绍下循环注意力模型吧,局部上下文网络图2已经说的很明白了。
将特征立方体中的特征切片表示为《目标检测中的上下文信息》,其中《目标检测中的上下文信息》具有D维特征。将《目标检测中的上下文信息》输入3层Long Short-Term Memory (LSTM)单元。LSTM的实现可以参考[26]

《目标检测中的上下文信息》
《目标检测中的上下文信息》
《目标检测中的上下文信息》

《目标检测中的上下文信息》 图3. LSTM结构

其中《目标检测中的上下文信息》《目标检测中的上下文信息》分别为输入门,遗忘门,细胞状态,输出门和隐藏状态。《目标检测中的上下文信息》《目标检测中的上下文信息》时刻的输入。《目标检测中的上下文信息》是一个仿射变换矩阵,其中《目标检测中的上下文信息》《目标检测中的上下文信息》《目标检测中的上下文信息》《目标检测中的上下文信息》的维度。《目标检测中的上下文信息》代表sigmoid激活函数,《目标检测中的上下文信息》表示逐元素相乘。
《目标检测中的上下文信息》时刻,注意力模型预测得到权重图《目标检测中的上下文信息》,然后在《目标检测中的上下文信息》位置上经过激活函数softmax。这是从全局角度对输入图像中相应区域是否有利于对象分类的概率估计。《目标检测中的上下文信息》时刻处的一个位置上的softmax计算如下
《目标检测中的上下文信息》
其中《目标检测中的上下文信息》是第《目标检测中的上下文信息》位置的元素的映射权重,《目标检测中的上下文信息》是值为《目标检测中的上下文信息》中的随机变量。利用这些概率,可以根据软注意机制,通过对不同区域特征切片的期望值来计算有用特征[27]。得到的这一时刻的特征作为LSTM的输入继续计算下一时刻的特征:
《目标检测中的上下文信息》
其中,《目标检测中的上下文信息》《目标检测中的上下文信息》时刻特征立方体的《目标检测中的上下文信息》切片。

细胞状态《目标检测中的上下文信息》和隐藏状态《目标检测中的上下文信息》用[22]中的策略进行初始化以加速网络收敛
《目标检测中的上下文信息》
《目标检测中的上下文信息》
其中《目标检测中的上下文信息》《目标检测中的上下文信息》是2个多层感知机。这些用来计算决定初始输入《目标检测中的上下文信息》的第一个位置softmax《目标检测中的上下文信息》

图4说明了生成全局注意力特征的过程。可以观察到,根据注意力位置图,将所有位置的特征结合起来,可以得到一个基于注意力的全局三维特征。最后,该特征通过两个全连接的层,生成具有全局上下文信息的《目标检测中的上下文信息》的特征表示,可以表示为《目标检测中的上下文信息》

《目标检测中的上下文信息》 图4. 演示如何生成全局注意力特征。利用基于注意力的上下文子网络,计算出一个KxK注意力空间特征图,将所有位置的特征选择性地组合成一个1x1xD维的全局注意特征。

实验在VOC2007和2012上的mAP分别是72.0和70.6。最后贴一个局部和全局子网络的贡献对比。

《目标检测中的上下文信息》 图5. 局部和全局子网络有效性对比。

[22] Xu, K., Ba, J., Kiros, R., Courville, A., Salakhutdinov, R., Zemel, R., Bengio, Y.: Show, attend and tell: Neural image caption generation with visual attention. arXiv preprint arXiv:1502.03044 (2015)
[26] Sharma, S., Kiros, R., Salakhutdinov, R.: Action recognition using visual attention. arXiv preprint arXiv:1511.04119 (2015)
[27] Bahdanau, D., Cho, K., Bengio, Y.: Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473 (2014)

Object detection via a multi-region & semantic segmentation-aware CNN model

论文地址:https://arxiv.org/pdf/1505.01749.pdf
代码:https://github.com/gidariss/mrcnn-object-detection
论文提出一种基于多区域卷积神经网络的目标检测器,且能够编码基于分割的语义信息。其还包含,一个迭代定位机制,交替地为目标建议窗口打分,以及精确位置的回归。

研究动机
目标表征是目标检测中的核心。目标表征分为2个层级。
(1)在第一个层次上,我们希望我们的对象表示能够捕获对象的几个不同方面,比如它的纯粹外观特征、不同区域(目标的子区域)的明显外观、上下文外观、对象边界两侧的联合外观和语义。如图1所示。

《目标检测中的上下文信息》 图1. 左图:在这个场景中,如果不参考背景、山岳景观,就很难发现绵羊。中间:相反,图中的上下文只能混淆对船只的检测。在这种情况下,识别模型应该关注纯粹的目标特性。右图:该车实例右侧被遮挡,识别模型应集中在左侧,以增加检测置信度。

(2)在第二个层次上,受分割与检测之间并没关联的启发,我们希望能在提升检测的表征,从而也能捕获语义分割信息。

除了目标表征外,论文工作还受到以下观察结果的激励:由于最近的CNN模型具有巨大的分类能力,因此良好的检测性能的瓶颈现在是准确的目标定位。

所以论文的核心研究内容是,如何更好地抽取好的特征,并更加精确的定位目标。
作者的贡献主要有3个:
a. 提出一个多区域CNN来增强特征
b. 提出一个语义分割启发式CNN再进一步增强特征
c. 提出一个基于CNN的定位回归方法,另外还提出2个tricks来优化定位。
下面来一个一个的说。

a. 多区域CNN

《目标检测中的上下文信息》 图2. 多区域CNN结构。为了清楚起见,我们只介绍了其中的四个区域。“adaptive max pooling”为自适应区域池化ROIPool[13](只含有一级金字塔)

图2详细描述了多区域CNN的结构。从输入图像中通过多层卷积计算特征图,得到激活的特征图(activation maps of input image)。
然后在特征图上对目标进行多区域提取(ROIPool)。

作者一共提出了4种共10个区域:
(1)原始区域,就是目标建议区域的原始位置,对应图3的中a
(2)截半,对应图3的b-e
(3)中心区域,对应图3中g和h
(4)边界区域,对应图3中i和j

《目标检测中的上下文信息》 图3. 多区域特征提取中的区域。

作者认为这样多区域的好处有两个
(1)不同的区域是关注目标的不同子区域,所以他们应该是互补的,能够增强特征的多样性。
(2)认为这个方法能够有效应对object proposal时候定位不准确的问题,并在6.2和6.3通过实验验证。

b. 语义分割启发式CNN

《目标检测中的上下文信息》 图4.

这里的动机是通过分割的特征来辅助检测。然后这里训练分割用的是很出名的FCN[23]的流程了,不过这里
需要用
分割的标注,而是用bbox就好了,
简单粗暴地把bbox里面认为是前景,外面认为是背景即可

虽然表面看似这样的标注很粗暴,很多像素都会错标,但是CNN的纠错能力是很强的,就是将那些标错的像素都看成是噪声,CNN依然能够根据更多的标对的像素来学习出来一个还不错的模型(如图5的右列)。

《目标检测中的上下文信息》 图5. 使用FCN[23]作为语义分段感知CNN特征的激活图模块的弱监督训练的说明。左图:带有真实标注边界框的图像。从上到下依次描述的类别是马、人和狗。中图:FCN训练使用的分割目标值。它们是由左栏上的人工标注的目标边界框生成的。我们用蓝色作为背景,用红色作为前景。右图:根据我们训练的FCN模型估计的前景概率。这些都清楚地证明,尽管训练的监督性很弱,提取的特征仍然带有重要的语义分割信息。

用上述的方法训练出来一个还不错的分割CNN后,摘到最后一层,也加到上面的多区域CNN上,进一步增强特征。如图4所示。

c. 目标定位
这一步,对应的是RCNN或者SPP-Net的最后一步,也就是得到结果之后,对位置重新进行一次回归,不过这里做了几点的改进:
(1)使用CNN来训练回归器(在RCNN中是使用简单的函数来训练回归器的),具体来说跟Fast RCNN比较像啦,输出是4xC个值,其中C是类别个数,不过这里直接用L2 loss拟合。
(2)迭代优化,跟DeepFace比较像,也就是,利用分类器打一个分,然后筛掉低分的,对于剩下的高分的proposal重新回归位置,之后根据这个重新回归的位置再利用分类器打个分,然后再回归一次位置。
(3)投票机制,上述两步会在每个object附近都产生不少bbox,这里利用上附近的bbox进行投票打分,具体来说,取一个最高分的bbox,然后还有它附近跟他overlap超过0.5的bbox,最后的bbox位置是他们的加权平均(权值为overlap)。

[13] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. arXiv preprint arXiv:1406.4729, 2014. 3, 8, 9
[23] J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. arXiv preprint arXiv:1411.4038, 2014. 6, 8

    原文作者:风澈sky
    原文地址: https://www.jianshu.com/p/1ca2bd30d4f0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞