Attentive Contexts for Object Detection
论文地址:https://arxiv.org/pdf/1603.07415.pdf
研究动机
现代目标检测器通常只利用建议目标区域内部的特征进行分类。
考虑以下两个问题:
如何识别有用的全局上下文信息来检测某个目标?
如何利用目标周围区域的信息更好地推断其内容?
直观地说,图像背景的全局视图可以提供有用的上下文信息。例如,如果要在图像中检测特定的汽车,通常与目标共存的对象(如人、道路或其他汽车)可能会为目标检测提供有用的线索。然而,并非所有的背景信息对提高目标检测性能都是有用的,加入无意义的背景噪声甚至可能损害检测性能。因此,识别有用的上下文信息是必要的。除了这样的“全局”环境外,还可以看到目标周围区域为推断目标的内容提供一些有用的提示。例如,周围环境(例如道路)和物体的部位(例如车轮)有助于检测目标(例如汽车)。
作者主要贡献:
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)
b. 具体介绍下循环注意力模型吧,局部上下文网络图2已经说的很明白了。
将特征立方体中的特征切片表示为,其中具有D维特征。将输入3层Long Short-Term Memory (LSTM)单元。LSTM的实现可以参考[26]
其中和分别为输入门,遗忘门,细胞状态,输出门和隐藏状态。为时刻的输入。是一个仿射变换矩阵,其中,是和的维度。代表sigmoid激活函数,表示逐元素相乘。
在时刻,注意力模型预测得到权重图,然后在位置上经过激活函数softmax。这是从全局角度对输入图像中相应区域是否有利于对象分类的概率估计。时刻处的一个位置上的softmax计算如下
其中是第位置的元素的映射权重,是值为中的随机变量。利用这些概率,可以根据软注意机制,通过对不同区域特征切片的期望值来计算有用特征[27]。得到的这一时刻的特征作为LSTM的输入继续计算下一时刻的特征:
其中,是时刻特征立方体的切片。
细胞状态和隐藏状态用[22]中的策略进行初始化以加速网络收敛
其中和是2个多层感知机。这些用来计算决定初始输入的第一个位置softmax。
图4说明了生成全局注意力特征的过程。可以观察到,根据注意力位置图,将所有位置的特征结合起来,可以得到一个基于注意力的全局三维特征。最后,该特征通过两个全连接的层,生成具有全局上下文信息的的特征表示,可以表示为。
实验在VOC2007和2012上的mAP分别是72.0和70.6。最后贴一个局部和全局子网络的贡献对比。
[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所示。
(2)在第二个层次上,受分割与检测之间并没关联的启发,我们希望能在提升检测的表征,从而也能捕获语义分割信息。
除了目标表征外,论文工作还受到以下观察结果的激励:由于最近的CNN模型具有巨大的分类能力,因此良好的检测性能的瓶颈现在是准确的目标定位。
所以论文的核心研究内容是,如何更好地抽取好的特征,并更加精确的定位目标。
作者的贡献主要有3个:
a. 提出一个多区域CNN来增强特征
b. 提出一个语义分割启发式CNN再进一步增强特征
c. 提出一个基于CNN的定位回归方法,另外还提出2个tricks来优化定位。
下面来一个一个的说。
a. 多区域CNN
图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
作者认为这样多区域的好处有两个
(1)不同的区域是关注目标的不同子区域,所以他们应该是互补的,能够增强特征的多样性。
(2)认为这个方法能够有效应对object proposal时候定位不准确的问题,并在6.2和6.3通过实验验证。
b. 语义分割启发式CNN
这里的动机是通过分割的特征来辅助检测。然后这里训练分割用的是很出名的FCN[23]的流程了,不过这里不需要用分割的标注,而是用bbox就好了,简单粗暴地把bbox里面认为是前景,外面认为是背景即可。
虽然表面看似这样的标注很粗暴,很多像素都会错标,但是CNN的纠错能力是很强的,就是将那些标错的像素都看成是噪声,CNN依然能够根据更多的标对的像素来学习出来一个还不错的模型(如图5的右列)。
用上述的方法训练出来一个还不错的分割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