细粒度图像分类问题概述
背景介绍
图像分类是计算机视觉领域的一个经典问题,其目标是将不同的图像划分到不同的类别。而本文介绍的细粒度分类,则是指在已经分出基本类别的基础上,进行更加精细的子类划分。举例说明,图1展示的是图像分类公开数据集 Cifar10 的十个类别及其实例图片。可以看出,这十个类别包括交通工具和动物,本身存在很大的不同,图像风格迥异。细粒度分类在此基础上更进一步,其本质是一种类内分类问题,即对传统分类问题中得到的大类进行更加细致的划分,例如将大类“猫”区分为更加细致的波斯猫、缅因猫和暹罗猫等。一个更加具体的例子如图2所示。图2展示的是公开数据集 CUB200-2011的其中两种鸟类 (加州鸥和北极鸥) 的图片,如果不是专业的鸟类学者,一般人恐怕很难区分出这两种鸟。
图 2: 不同类别的鸟 (取自公开数据集 CUB200-2011)
常用数据集
下面给大家介绍一下该领域最经典的,最常使用的5个数据集,数据库图片示例如图3所示。
CUB200-2011:该数据集由加州理工学院提出,是目前细粒度分类识别研究的基准图像数据集。该数据库提供了11,788张图片,包括200种不同类别的鸟类图像数据。其中每张图像包含15个局部部位标注点、312个二值属性、1个标注框和语义分割图像。 下载链接:http://www.vision.caltech.edu/visipedia/CUB-200-2011.html
Stanford Dogs: 该数据库是斯坦福系列的经典数据集,包含120种不同类别的狗的图像数据, 共有20,580 张图, 包括类别标签和标注框信息。 下载链接:http://vision.stanford.edu/aditya86/ImageNetDogs/
Stanford Cars: 该数据库是斯坦福系列的经典数据集,提供了196类不同品牌、不同年份、不同车型的车辆图像数据, 一共包含有16,185张图像, 提供标注框信息和类别标签。 下载链接:http://ai.stanford.edu/~jkrause/cars/car_dataset.html
Oxford Flowers: 该数据库有包含17种类别和102种类别的花两种不同规模的数据库。其中,102种类别的数据库比较常用,共有8,189张图像。该数据库提供语义分割图像和类别标签。 下载链接:https://www.robots.ox.ac.uk/~vgg/data/flowers/
FGVC-Aircraft: 该数据库提供102类不同的飞机照片,每一类别含有100 张不同的照片,整个数据库共有10,200张图片,提供类别标签和标注框信息。 下载链接:http://www.robots.ox.ac.uk/~vgg/data/fgvc-aircraft/
细粒度分类方法概述
特征的提取是决定图像分类准确性的关键因素。传统细粒度分类算法主要是基于人工提取图片特征 (如SIFT、HOG方法)。然而,人工特征的描述能力有限,分类效果不佳。本文不对传统方法进行详细描述,感兴趣的同学可以根据关键词搜索论文自行研读。近年来,随着深度学习的快速发展,通过神经网络训练提取的特征比人工提取特征具有更强大的预测能力,在一定程度上极大促进了细粒度图像分类算法的发展。目前,细粒度分类方法主要分为两种——强监督细粒度分类方法和弱监督细粒度分类方法。强监督细粒度分类方法需要借助全局和局部信息来做细粒度级别的分类,即不仅使用类别标签,而且需要使用标注框 (Bounding Box) 和局部标注 (Part Annotation) 等局部标注信息,如图4所示。接下来,本文对一些经典方法进行介绍,如有开源或可参考的代码,本文也将在末尾附上代码链接。
强监督细粒度分类方法
1.Part-based R-CNN
R-CNN在狗熊会深度学习笔记第7讲目标检测中提及过。顾名思义,Part-based R-CNN就是利用R-CNN算法对细粒度图像进行物体级别 (如各类鸟)与其局部区域 (头、身体等部位) 的检测,其流程如图5所示。Part-based R-CNN的实现步骤如下:1. Part-based R-CNN基于R-CNN算法提取区域信息。2. 利用位置几何约束条件对R-CNN提取到的区域信息进行修正。3. 提取卷积特征,连接不同区域的特征作为最后的特征表示。4. 用SVM分类器进行分类训练。
因为Part-based R-CNN在分类过程中既使用了物体级别特征,又使用了局部特征(即头部特征,躯干特征),所以分类精度比较理想,在CUB200-2011数据集上取得了73.9%的精度。但该方法不仅在训练时需要借助标注框和局部标注,在测试时还要求提供测试图像的标注框。这限制了Part-based R-CNN在实际场景中的应用。
2.Pose-normalized CNN
Pose Normalized CNN的流程图如图6所示。该方法基于Part-based R-CNN做了以下两点改进,一是Pose Normalized CNN对部位级别图像块做了姿态对齐操作 (Pose-normalization)。二是针对细粒度图像不同级别的图像块,提取不同层的卷积特征,进而可以更好利用CNN中具有不同的表示特性的不同层特征 (如浅层特征表示边缘等信息,深层特征表示高层语义)。该方法在CUB200-2011数据集上取得了75.7%的精度,比Part-based R-CNN高了约2%。但是该方法依然没有解决训练和测试都需要标注框和局部标注的问题,且检测速度较慢,因此实际应用并不广泛。
3.Mask-CNN
该模型分为两个模块,第一是部分定位 (Part Localization),第二是全局和局部图像块的特征学习。与前两个方法的不同在于,该方法提出借助全卷积神经网络 (Fully Connected Network, FCN)学习一个部分分割模型 (Part-based Segmentation Model)。在FCN的训练中,部分定位这一问题就转化为一个三分类分割问题,分别为头部、躯干和背景。在此,我们称预测得到的部分分割结果为部分掩模 (Part Mask)。两个部分掩模组成一个较完整的物体掩模 (Object Mask)。另外,文章首次提出卷积特征描述子 (Convolutional Descriptor)。特征描述子的好处在于,利用部分掩模和部分掩模保留表示前景的描述子,而去除表示背景的卷积描述子的干扰。筛选后,对保留下来的特征描述子进行全局平均和最大池化操作,将三个子网特征级联作为整张图像的特征表示。
该法仅依靠训练时提供的关键点标注 (不需要标注框信息,且测试时不需额外标注信息),取得了当时细粒度图像分类的最高分类精度87.3%。该方法的优点在于最先对特征进行选择,利用了更少的特征维数;同时丢弃了全连接层,提高了网络的计算效率。但是,该方法对于一些复杂背景图像部分定位结果还有待提高,同时该方法依然需要标注信息进行训练。
弱监督细粒度分类方法
尽管强监督细粒度分类方法取得了较满意的分类精度,但缺点在于需要昂贵的人工标注,同时人工标注的位置比较主观,很可能并不是最佳区分的位置。为弥补以上缺点,人们希望在模型训练时仅使用图像级别标注信息,也能取得与强监督分类模型可比的分类精度。因此,基于弱监督信息的细粒度分类模型被提出,该类方法利用注意力机制、聚类等手段让模型自动发现区别性区域,仅仅使用分类标签即可完成训练。在分类精度方面,目前最好的弱监督分类模型仍与最好的强监督分类模型存在差距 (分类准确度相差约1-2%)。下面介绍两个弱监督细粒度图像分类模型的代表。
1.递归注意力卷积神经网络(RA-CNN)
2.双线性模型 (Bilinear CNN model, BCNN)
BCNN的设计直觉是根据大脑工作时同时认知类别和关注关键特征的方式,构建了两个线性网络,两者相互协调完成局部特征提取和分类的任务。BCNN的流程图如图9所示。具体而言,BCNN 模型首先使用两个卷积神经网络作为特征提取器,然后对特征进行双线性池化,再连接到输出。
未来发展方向
细粒度图像分类算法是计算机视觉领域的一个热门研究课题, 深度卷积特征的出现为其带来了新的发展机遇。目前仍有以下方向有待研究。
第一,需要更高质量的标准数据。正如第二部分介绍那样,当前主流研究所采用的细粒度图像数据库比较多样, 但是都存在数据规模不够大与精细程度不够高的问题,标注质量与类别数量也十分有限。而深度学习的效果与数据库的规模和质量呈正相关。因此, 如何构建更高质量的标准数据库成为了未来研究急需解决的一个问题。
第二,如何能更有效地利用局部区域信息也是需要改进的方向。细粒度图像识别有别于普通图像分类任务的一大特点, 便是具有区分度的信息隐藏在局部区域中。目前来看,通过人工标注得到的局部信息,未必是对模型“有用”的局部信息,比如我们认为狗的鼻子是最容易区分不同狗的种类的特征,但是模型可能认为尾巴是更好的选择。同时,在弱监督细粒度图像分类中,对于局部特征的检测出也有待加强,目前的弱监督学习算法中检测得到的局部区域也经常出现“错位”现象。另外,在得到局部信息后,如何与物体级别信息结合,起到1+1>2的作用,也是一大突破点。
第三,实际场景中的细粒度图像分类任务难度更大。目前学术研究中所用的数据库, 普遍具有前景对象突出, 背景单一的特点, 但具备这些特征的图片在实际生活中其实并不常 见。若想使细粒度图像识别系统在自然场景下得到广泛应用, 就不得不考虑诸如光照, 模糊, 遮挡,低分辨率,物体干扰等复杂场景下的图像识别问题, 而这些因素在当前的系统中往往是欠缺的。