点击我爱计算机视觉标星,更快获取CVML新技术
编者按:双线性特征在学习细粒度图像表达上效果很好,但计算量极大,无法在深层的神经网络中被多次使用。因此,微软亚洲研究院设计了一种深度双线性转换模块,能够深层地将双线性表达应用在卷积神经网络中,来学习细粒度图像特征。这项工作发表在了 NeurIPS 2019 上。
双线性特征在学习细粒度图像表达上取得了很好的效果,但逐对计算卷积通道之间的信息交互会带来极大的计算代价,使得这样有较强表达能力的操作无法在深层的神经网络中被多次使用,从而限制了其应用的有效性和广泛性。
因此,我们设计了一种深度双线性转换模块,能够深层地将双线性表达应用在卷积神经网络中,来学习细粒度图像特征。深度双线性转换模块主要通过引入基于部位表达的语义分组信息,对组内的特征进行双线性操作和组间特征进行整合来得到低维的双线性表达,从而在深度神经网络中多次叠加使用双线性操作。我们提出的深度双线性模型在三个常用的细粒度图像分类任务上取得了明显的提高,下文中我们将详细介绍研究背景、实现细节以及实验结果。
研究背景
细粒度图像分类(fine-grained image recognition)旨在区分同一个大类(比如鸟类、汽车、飞机等)里面不同小类的图像之间细微的差别。这类问题的数据通常有两个特点:
1)较强的结构性,比如所有的鸟类样本都由鸟头、鸟翅、鸟尾等部位组成,所有的汽车样本都由车头、车轮、车门等部件组成;
2)复杂的细节特征,比如呆头伯劳鸟(Loggerhead Shrike,图1左)与南灰伯劳鸟(Great Grey Shrike,图1右)相比,区别仅仅在于眼周围的黑色条纹比较粗,这就要求算法的特征表达可以捕捉到这样的细节。
基于这两个特性,目前最好的细粒度分类方法主要可以分为两类:基于部位检测的表达学习和基于双线性的精细特征学习。
图1:细粒度图像的结构性和复杂的细节特征
基于部位检测的表达学习需要显式地定位到各个部位,并对定位到的部位进行放大、对齐等,来进一步得到更好的表达。这类方法通常会伴随复杂的部位处理和较多的计算量,有很多方法还会因为将定位和分类分成两个子任务而无法得到全局最优解。基于双线性的特征学习通过对特征向量进行外积操作来实现通道信息之间的逐对交互,从而得到对细节信息更好的表达。但受到极高维的双线性特征的影响,这类方法会大大增加参数量,而且只能被应用在神经网络的最后一层,作为一种池化操作。
深度双线性转换
针对以上问题,我们提出了“利用基于部位的语义信息,得到一种低维而高效的双线性表达”的构想,让能够表达丰富细节的双线性特征能够很深地集成到卷积神经网络中,因此提出了深度双线性网络(Deep Bilinear Transformation Network, DBT-Net)网络结构。
图2:Deep Bilinear Transformation (DBT, 深度双线性转换)
如图2所示,“DBT”的输入是图像的卷积特征,首先根据部位的语义信息将卷积特征的各个通道分组,得到分组后的卷积特征,对于每一个位置的特征向量,进一步将这个特征中同一个组内的通道进行双线性操作,来得到针对这个部位的丰富的细节表达,再将不同组之间的双线性表达求和得到低维特征。最后,我们将这样的表达进行向量化,来恢复成卷积特征原本的维度。
我们通过设计一种语义分组的约束将卷积特征的各个通道进行分组。由于卷积特征的每一个通道对特定语义的图像模式响应比较高,描述某一个语义的所有卷积通道的响应会集中在相应的空间区域。因此我们设计了一种语义分组约束,要求同一个语义组内的卷积通道两两之间有尽可能大的空间交叠,而不同组件的通道尽可能没有交叠。这种逐对的分组约束可以使后续的分组双线性操作更好地捕捉针对每个语义块的细节特征。图3展示了通过这种约束优化后的卷积通道组内和组间逐对的信息交互,黄色高亮代表交互的数值比较大,紫色代表交互比较小。
图3:组内和组间逐对的信息交互示意图
我们设计的深度双线性转换模块可以很容易地集成到深度卷积神经网络的结构中。比如可以将其插入到传统残差块(ResNet Bottleneck Block)的第一个卷积层和第二个卷积层之间来得到能够融合双线性特征的残差块。如图4所示,我们在传统残差块的第一个卷积上施加语义分组的约束,将其变成语义分组层(SG),同时在后面插入一个分组双线性操作(GB),并利用残差链接将通过分组双线性操作之前和之后的特征加起来。这样的双线性特征再通过3X3的卷积操作来进一步学习丰富的细节特征。
图4:Deep Bilinear Block (深度双线性残差块)
实验结果
为了验证我们提出的深度双线性转换的有效性,我们在三个常用的细粒度分类数据集上进行了实验,分别是 CUB-200-2011 鸟类数据集,Stanford-Car 汽车数据集和 FGVC-Aircraft 飞机数据集。表1显示了在 CUB-200-2011 数据集上(输入图像分辨率为224)深度双线性残差块在不同阶段融合的效果比较。我们可以看出,在最后一层使用分组双线性表达会带来一定的提升(1.1%),而将这种结构深层次的融入卷积神经网络之中可以带来进一步的提升,比如再将 ResNet-50 后两个阶段的残差块都变成深度双线性残差块会达到85.1%的分类精度。
表1:深度双线性残差块在不同阶段融合的效果比较
表2显示了不同语义分组约束的效果比较,不加任何分组约束的分类精度只有79.85%,使用 MA-CNN 一文中提出的分组方法可以达到83.2%的精度,而利用我们提出的约束可以达到85.1%的分类精度。这体现了我们设计的逐对形式的分组约束对分组双线性更加有效。
表2:不同语义分组约束的效果比较
表3显示了不同方法在三个常用细粒度图像分类任务上的实验结果比较(输入图像分辨率为448)。实验表明我们提出的深度双线性网络可以在同样使用 ResNet-50 作为基础网络,而且特征维度很低的情况下达到好的效果。我们将提出的深度双线性应用到 ResNet-101 上,可以观察到进一步的提升。
表3:不同方法在三个常用细粒度图像分类任务上的实验结果比较
结语
本文我们通过引入语义信息,提出了基于语义分组的双线性转换,大大降低了双线性特征的维度,使得双线性操作可以被深层次地融入到卷积神经网络中。我们设计的深度双线性网络在三个常用的细粒度图像分类任务上取得了明显的提高。在后续的工作中,我们会研究深度双线性转换在底层特征的应用。此外,我们还将把矩阵归一化操作引入到深度双线性转换中,进一步增强其表达能力。
了解更多技术细节,请点击阅读原文查看论文:
Learning Deep Bilinear Transformation for Fine-grained Image Representation
论文链接:https://papers.nips.cc/paper/8680-learning-deep-bilinear-transformation-for-fine-grained-image-representation.pdf
代码链接:https://github.com/researchmm/DBTNet
(还未开源)
图像分类/细粒度分类交流群
关注最新最前沿的图像分类模型设计、细粒度分类技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)
(请务必注明:分类)
喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。
(不会时时在线,如果没能及时通过验证还请见谅)
长按关注我爱计算机视觉