Mask-CNN Localizing Parts and Selecting Descriptors for Fine-Grained Image Recognition
Mask-CNN: Localizing Parts and Selecting Descriptors for Fine-Grained Image Recognition
作者:魏秀参,Chen-Wei Xie,Jianxin Wu
来自:南京大学新型软件技术国家重点实验室
Abstract
细粒度的图像识别是一个具有挑战性的计算机视觉问题,这是由于由高度相似的下属类别引起的较小的类别间变化以及姿势,比例和旋转的较大的类别内变化。在本文中,我们提出了一种新颖的端到端Mask-CNN模型,该模型无需全连接的层即可进行细粒度的识别。基于细粒度图像的部分注释,提出的模型由一个全卷积网络组成,该网络既可以定位有区别的部分(例如,头部和躯干),更重要的是可以生成对象/部分蒙版,以选择有用的卷积描述。之后,建立了一个四流Mask-CNN模型,用于同时聚合所选的对象级和零件级描述符。与最新的细粒度方法相比,提出的Mask-CNN模型具有最少的参数数量,最低的特征维数和最高的识别精度。
1 Introduction
在深度学习时代,表示部件的一种直接方法是使用深度卷积特征/描述符。与全连接层(即整个图像)的特征相比,卷积描述符包含更多的局部(即部分)信息。另外,已知这些深度描述符对应于中级信息,例如对象部分[20]。 先前所有基于部分的细粒度方法(例如[6、10、21、24])直接使用深度卷积描述符并将其编码为单个表示,而不评估获得的对象/部分深度描述符的有用性。 通过使用强大的卷积经网络[9],我们可能不需要选择特征向量内的有用维,就像我们对手工特征进行的操作[3,22]。 但是,由于大多数深度描述符对于细粒度识别没有用或没有意义,因此有必要选择有用的深度卷积描述符。最近,选择较深的描述符将其用于细粒度的图像检索任务[18]。 而且,这对于细粒度的图像识别也是有益的。
在本文中,通过开发一种新型的深度区域检测和描述符选择方案,我们提出了一种端到端的模型Mask-CNN,该模型摒弃了全连接层,仅在训练阶段需要区域标注和图像级的标签。在M-CNN中,通过给出区域标注,我们首先将他们分成两个点集,一组对应细粒度鸟类图像的头部部分,另一组对应躯干部分。然后取这些点的最小外接矩形作为ground-truth mask,其他的点为背景。把区域定位视为一个三分割任务,我们利用全卷积网络(FCN)[12]在测试阶段生成掩码,用于局部定位和选择有用的深度描述符,在测试期间不使用任何注释,得到这两个部分的蒙版之后,我们将它们组合起来以形成对象。 基于这些对象/部件蒙版,构建了四流Mask-CNN(图像,头部,躯干,对象),用于联合训练并同时聚合对象级和部件级线索。
网络结构如图二所示,在每一流中,去除全连接层。在最后的卷积层中,输入图像由多个深度描述符表示。为了选择有用的描述符以仅保留那些与对象相对应的描述符,使用了FCN预先学习的对象/零件蒙版。之后,将每个流的选定描述符平均并最大合并为512-d特征向量,遵循标准的L2-归一化。最后,将这四个流的特征向量进行级联,然后添加分类(fc + softmax)层以进行端到端联合训练。
在CUB-200-2011数据集达到85.5%的精度,同时可以得到精确的区域定位,头部84.2%,躯干89.83%。
主要创新点:
- Mask-CNN是第一个端到端的选择深度卷积描述符用于细粒度识别的模型。
- 基于区域的四流模型,放弃了全连接层,M-CNN具有计算和存储效率,与之前的方法相比,M-CNN有最少的参数量和最小的特征维数,通过SVD whitening方法,特征表示被压缩到4096-d,同时精确度提高到85.5%。
- 局部区域定位的表现优于其他需要标注框的方法。
2 Related Work
之前的方法分为三类:通过发展强大的深度模型来学习更多具有区分性的表示;采用姿势对齐消除姿势偏差和相机位置的影响;最后一种方法是局部特征表示,细粒度图像之间的细微差别主要在于对象零件的独特属性。
还有基于分割的细粒度识别方法,这些方法仅使用分割来定位整个物体或区域,同时我们使用来自分割的mask进一步选择有用的深度卷积描述符。
3 The Mask-CNN Model
首先,采用全卷积网络来生成物体区域mask来定位物体,更重要的是选择深度描述符。
然后,根据这些mask,建立四流的M-CNN来训练和同时捕获对象级和区域级信息。
3.1 Learning Object and Part Masks
全卷积网络的设计用于逐像素标记,FCN可以获取任意像素的输入图像并生成相应尺寸的输出。在我们的方法中,使用FCN不仅将对象和零件定位在细粒度图像中,还将分割预测视为对象和区域mask,以供以后的描述符选择过程使用。
为了进行有效的训练,所有训练和测试细粒度图像均应使用其原始分辨率。然后,我们在原始图像的中间裁剪一个384×384图像块作为输入。mask学习网络体系结构如图3所示。在我们的实验中,我们采用FCN-8[12]来学习和预测零件mask。
3.2 Training Mask-CNN
输入的图像是原图resize到hxh,在本实验,h分别为224,448。输入图像被送到传统的卷积网络,但是丢弃全连接层,即M-CNN只包括卷积层,ReLU和池化层,这很大程度的缩小了模型规模,使用vgg16作为baseline,pool5(包括)之前保留,如果输入图像为224×224,则在pool5中获得7×7×512的**张量。因此,我们有49个512-d的深度卷积描述符,它们也对应于输入图像中的7×7空间位置。然后,首先通过最近的插值将学习的目标mask(请参阅第3.1节)调整为7×7,然后用于选择有用和有意义的深度描述符。如图2,如果描述符定位到目标区域,保留描述符;如果定位到背景区域,则丢弃。在本文中,mask设置为二进制矩阵,1代表保留,0表示丢弃。我们将选择过程实现为卷积**张量和mask矩阵之间的逐元素乘积运算,这类似于FCN中的元素求和汇总运算[12]。因此,位于对象区域中的描述符将保留,而其他描述符将变为零向量。
对于这些选定的描述符,在端到端M-CNN学习过程中,我们将它们的平均池化值和最大池化值分别合并为两个512-d特征向量。然后,对每一个都遵循L2归一化。之后,我们将它们串联成一个1024-d特征,作为整个图像流的最终表示。
头部和躯干的流具有与整个图像相似的处理步骤。不同之处在,在获得两个局部mask之后,我们使用局部mask作为部件检测器来定位输入图像中的头部和躯干部分。对于每个部分,我们返回包含部件mask区域的最小矩形包围框。基于矩形边界框,我们裁剪了作为部分流输入的图像块。图2中部的两个流显示了M-CNN中的头部和躯干流。最后一个流是对象流,它通过将两个部分mask组合为对象mask来裁剪图像补丁。因此,其输入是由我们的FCN细分网络检测到的主要对象(即鸟类)。在我们的实验中,这三个流的输入全部调整为224×224。
在图2所示的分类步骤中,最终的4,096-d图像表示是整个图像,头部,躯干和物体特征的串联。M-CNN的最后一层是200路分类(fc + softmax)层,用于对CUB-200-2011数据集进行分类。端到端学习四个流M-CNN,同时学习四个CNN的参数。在训练M-CNN的过程中,学习到的FCN分割网络的参数是固定的。