Deep learning for fine-grained image analysis:A survey

Abstract

      CV是一种机器理解与分析图像的过程,是人工智能的一个重要分支。在CV众多的研究领域中,细粒度图像分析(FGIA)是一个持续基础的工作,是真实世界应用中普遍存在的问题。FGIA的目标是区分视觉目标的子类别,例如,鸟的类别或者车辆的类别。细粒度特性导致的小类内变化与大类间变化使得细粒度分类称为一个具有挑战性的问题。随着深度学习爆炸式的发展,近些年来FGIA利用深度学习技术取得了重大的进展。本文中我们希望对基于深度学习的FGIA技术进行系统性的介绍。特别的是,我们将现有的FGIA方法归为三类:细粒度图像识别,细粒度图像检索与细粒度图像生成。此外,我们还介绍了其他重要的FGIA相关内容,例如公开基准测试数据集与相关领域的应用。最后,我们通过讨论一些需要社区进一步探索的方向与开放问题将本文做总结。

1、Introduction

      CV是人工智能的一个交叉学科,主要处理数字图像与视频高级别理解问题。CV的任务包括获取,处理,分析,理解数字图像并且丛冲提取数字或者符号特征,例如,从真实情形下原始图像数据做出决策与预测。

      FGIA是计算机视觉领域是一个有趣、基础且有挑战性的问题,在几十年来一直是研究的热点之一。FGIA的目标是从属于一个大类的子类中进行检索、识别、生成样本,例如不懂种类的动物植物,不同车辆的型号,不同零售商品类别等(间图1)。真实世界中,FGIA无论是在工业界还是学术界都有广泛的应用,例如自动生物多相信监测、气候变化评估、智能新零售、智慧交通等许多方面。特别是有许多流行的FGIA学术竞赛在kaggle举办。一些具有代表性的比赛,例如:自然保护协会渔业监测(用于鱼类种类识别),驼背鲸识别(用于鲸鱼种类识别)等等。每个比赛都吸引了不止300个来自全球各地的队伍参加,有些甚至有2000只队伍参加。

      另一个方面,近些年出现的深度学习技术【LeCun et al.,2015】是一种强大的直接从数据中学习特征表达的方法,在FGIA领域带来了巨大的突破。今年不完全统计,每个AI或者CV的会议都有10篇基于深度学习的FGIA技术发表,例如IJCAI,AAAI,CVPR,ICCV,ECCV等。这显示出基于深度学习的FGIA是值得注意的感兴趣研究领域。考虑到一个领域快速的发展,本文的目标是提供一个综述,介绍基于深度学习的FGIA技术近期的发展。

      在文献中,有些现有及关于细粒度任务的综述资料,例如【Zhao et al.,2017】,文献中仅仅包含一些细粒度识别算法的对比。我们与他们工作的不同在于我们的工作更综合。特别的是,除了细粒度识别任务,我们还讨论了另外两个细粒度核心任务,细粒度图像检索与细粒度图像生成,这两个方面FGIA两个重要的组成部分,是不容忽视的。此外,另外一个环太平洋国家重要的AI会议PRICAL上,Wei与Wu组织了特别的关于细粒度图像分析主题的介绍。我们建议感兴趣的读者参考这份介绍,这份介绍中提供了额外的细节信息。

      本文中,我们的综述采用基于深度学习的视角,系统性与综合性的介绍了FGIA目前的进展。本文的主要贡献有三个方面:

  1. 我们给出了基于深度学习的FGIA技术的综合性回顾,包括问题背景、测试基准数据集、基于深度学习的系列FGIA方法,FGIA特定领域的应用等。
  2. 我们以层次和结构的方式系统的介绍了结余FGIA的技术,见图2。
  3. 我们讨论了挑战与开放性的问题,介绍了新的趋势与未来的方向,为细粒度识别的研究人员或者其它AI社区的感兴趣人员提供了现在的路线图。

      综述组织如下。第二节介绍了本文的背景,例如FGIA的问题已经主要的挑战。第三节我们回顾了多个经常使用的细粒度测试基准数据集。第四节分析了三个细粒度图像识别主要的样例。第五节讨论了生成的角度细粒度图像生成的问题。此外,在第七节,我们介绍了现实世界FGIA相关的特别应用。最后在第八节中,我们总结了本文,并且讨论了未来的方向与未解决的问题。

Deep learning for fine-grained image analysis:A survey

 

2、Background:problem and main challenges

      本节中,我们总结了本文相关的背景,包括问题与关键的挑战。

      细粒度图像分析(FGIA)专注于处理属于同一大类不同子类的问题(例如,鸟、狗与车辆),通常包括主要任务例如细粒度图像识别,细粒度图像检索,细粒度图像生成等。

      将FGIA与其它通用方法进行区分的是:通用图像分析中,目标属于粗粒度的大类(例如,鸟、橙子与狗),因此,视觉差距很大。然而,在FGIA中,目标来自一个大类别的不同子类,细粒度特性导致他们的视觉相似性。我们将图像识别作为例子。如图1所示,在细粒度识别中,任务要求识别狗这个类别中的相似子类别,例如,哈士奇、萨摩耶与阿拉斯加。为了进行精确的识别,需要通过捕捉细微的与精细的特征来区分他们(例如耳朵、鼻子、尾巴),这也与其它FGIA任务要求相同(例如检索与生成)。

      此外,细粒度的特性还由于高度相似的子类的小类间差与姿势、尺度与旋转带来的大类内差距,如图3所示。这与通用图像分类不同(例如,小类内差与大类间差),这使得细粒度图像分类称为具有挑战性的问题。

Deep learning for fine-grained image analysis:A survey

 

3、Benchmark dataset

      过去的几十年中,视觉社区公布了需要细粒度测试基准数据集,分布从鸟【Wah et al., 2011; Berg et al., 2014】,狗【Khosla et al., 2011】,车辆【Krause et al., 2013】,飞机【Maji et al., 2013】,花【Nilsback and Zisserman,2008】,蔬菜【Hou et al., 2017】,水果【Hou et al., 2017】,零售商品【Wei et al., 2019a】等(见图4)。在表1中,我们列出了一些细粒度社区常用的图像数据集,明确的指出了他们的类别,细粒度图片数量,细粒度类别数,额外的监督信息,例如,bbox,部件标注,分层标签,属性标签与纹理描述,如图5.

Deep learning for fine-grained image analysis:A survey

Deep learning for fine-grained image analysis:A survey

Deep learning for fine-grained image analysis:A survey

 

      这些数据集是这个领域取得卓越发展的重要内容,不仅仅是用于作为度量与对比比赛方法的基准,还将这个领域推向更大复杂实用有挑战的问题。

      特别是,在这些数据集中,CUB200-2011是最流行的细粒度数据集之一。几乎所有FGIA方法都会选择这个数据集与SOTA的方式进行对比。此外,CUB200-2011还对未来的研究持续产生贡献,例如,收集同细粒度图片的多模态分析,【Reed et al.,2016; He and Peng, 2017a】。

      此外,当前持续推出了更加有挑战与使用的细粒度数据集,例如,用于植物与动物类别的iNat2017【Horn et al., 2017】与用于零售商品的RPC【Wei et al., 2019a】。这些数据集衍生出很多新的特点,例如,大量、层次结构、域间差与长尾分布,这些特点都满足现实世界实际需求,使得FGIA研究更加真实的问题。

4、Fine-gained Image Recognition

      过去的十年间,细粒度图像识别是FGIA领域最活跃的研究领域。本节中,我们回顾细粒度识别框架在深度学习方法介入后的里程碑。广泛的说,细粒度识别的方法可以分为3个主要的类型,例如,细粒度识别(1)具有定位分类子网络;(2)端到端编码;(3)具有额外的信息。这些方法中,第一与第二个将它们局限利用细粒度图片的监督信息,例如图像标签、bbox部件标注等。此外,自动识别系统由于细粒度挑战不能取得完美的表现。因此,研究者最终尝试引入额外但容易获得的信息(例如,网络数据,文字描述)到犀利如识别任务中,从而进一步改进准去了,这对应细粒度识别的第三个方面。细粒度识别流行的评估方法是通过计算数据集所有子类别平均分类准确率得到。

4.1 By localization-classification subnetworks

      为了减少类间差变化的挑战,细粒度研究社区的研究人员关注于捕获细粒度目标有区分度的语义特征,然后建立这些部件的中层特征表达用于分类。详细来说,设计了一个定位子网络来定位这些关键部件。之后,紧跟一个分类子网络,用于识别。两个相互协作的子网络形成了第一个阶段,例如,包含定位分类子网络的细粒度识别。

      由于定位的信息,例如,部件级的bbox或者分割掩模,网络可以获得跟细节部件相关的中级特征表达。此外,他进一步增强了分类子网络的学习能力,可以显著的增加识别的准确率。

      前置与这一阶段相关的工作依赖于额外稠密部件的标注(关键点定位)来定位目标的关键部位语义(例如,头,躯干);有些通过学习部件检测器【Zhang et al., 2014;Lin et al., 2015a】,有些使用分割的方法【Wei et al., 2018a】。那么,这些方法将多节特征级联其他作为整体表达,输入到随后的分类子网络中进行最后的识别。因此,这些方法也被称为基于部件的识别方法。

      然而,获得这些部件标注是一件劳动密集型的工作,这限制了真实细粒度应用的可扩展性与实用性。当前,出现了一种趋势,这类方法只需要图像的标签【Jaderberg et al., 2015; Fu et al., 2017; Zheng et al., 2017; Sun et al., 2018】就可以进行精确部件定位。他们常见的动机是第一步找到相应的部件,然后进行表征对比。相对的,也需要获取不同细粒度类别的语义部件(例如,头与躯干),同时希望探索不同部件表达的细微差别。先进的技术,例如注意力机制【Yang et al., 2018】与多阶策略【He and Peng, 2017b】使得定位分类子网络的联合训练变得复杂。

4.2 By end-to-end feature encoding

      与第一类方法不同,第二类方法,例如端到端的特征编码,倾向于直接通过开发功能强大的深度模型进行有区分度的特征表达实现细粒度识别。其中,最有代表性的是Bilinear CNNs【Lin et al., 2015b】,将图片表达为两个深度网络产生特征的几何,因此编码更高阶的神经网络统计信息,增强中层特征学习能力。由于他的高模型容量,Bilinear CNNs在细粒度识别领域取得了令人瞩目的表现。然而,极高的双线性特征维度使得对于现实应用来说不够使用,特别是对大规模的情况。

      为了解决这个问题,当前有很多尝试,例如【Gao et al., 2016; Kong and Fowlkes, 2017; Cui et al., 2017】试图通过tensor速写来取得低维嵌入向量【Pham and Pagh, 2013; Charikar et al., 2002】,这样可以近似双线性特征,获得相当的或者更好的准去了。还有一些工作,例如【Dubey et al., 2018】专注于设计适合细粒度的损失函数,可以驱动整个深度学习模型学习有区分度的细粒度表达。

4.3 With external infomation

      如之前描述的,除了卷积识别方法,还有一类是通过额外特征,例如网络数据、多模态数据或者人机交互来进一步辅助细粒度识别。

With Web data

      为了辨别出众多细粒度类别中不重要的区别,急需高质量完美标注的训练数据。然而,精确的细粒度识别人工标注不容易获得,由于标注的难度(通常需要相关领域专家)与众多的细粒度类别(例如每个大类中成千上万的子类)。

      因此,一部分细粒度识别方法尝试寻找利用免费但是早上较大的网络数据来增强识别表现。这类现有工作可以大致划为两个方向。其中一个是为训练数据爬取每个类别网络数据的标签,作为webly supervised learning【Zhuang et al., 2017; Sun et al., 2019】。这类方法的主要贡献在与:(1)解决网络数据与标注数据集中标注的数据之间分布的差别;(2)降低噪声数据产生的负面影响。为了处理之前提到的问题,深度学习中的对抗学习【Goodfellow et al., 2014】与注意力机制【Zhuang et al., 2017】频繁的使用。应用网络数据的另外一个方向是利用知识迁移辅助精准标注的数据在测试集上的表现,通常使用zero-shot learning【Niu et al., 2018】或者meta learning【Zhang et al., 2018】来得到目标。

With multi-modality data

      由于多模态数据的增长,多模态分析吸引了很多注意力(例如,图像,文本,基础知识等)。在细粒度识别中,使用多模态数据建立多模态信息的联合/嵌入式表达。这种方法可以增强细粒度识别的准确率。特别是,常被使用的多模态数据包括文本描述(例如,自然语言的句子与短语)与图结构的知识基础。此外,文本描述可以较为精准的从普通人那里得到,而不需要某个方面的专家。此外,高阶的图纸是是一种现有的资源并且包含了丰富的专业知识,例如DBpedia【Lehmann et al., 2015】。实际上,无论是文本描述与基于知识的方法作为额外的约束都对于细粒度图像表达学习有效。

      特别的是,【Reed et al., 2016】收集了文本描述,引入了一种联合嵌入式结构,通过融合文本与图像信息,用于zero-shot细粒度图像识别。后来,【He and Peng, 2017a】通过结合视觉与语言流信息再一个联合端到端框架中的方式,保存模态内与模态间信息,产生完整的细粒度特征表达。对于基于知识的细粒度识别,有一些工作,例如【Chen et al., 2018; Xu et al., 2018a】引入了基于知识信息(总是跟属性标签有关,图6)来丰富嵌入式空间(也推理细粒度目标的有区分度特征)。

Deep learning for fine-grained image analysis:A survey

 

With humans in the loop

      有人参与的细粒度识别通常是一个由机器与人类用户组成的人机交互系统,结合了人与机器在智能方面的贡献。此外,他需要系统以一个人力经济型的方式运行。通常来说,对于这类识别方法,系统在每个回合中都在试图理解人类如何进行识别,例如,通过询问未经训练的人标注图像类别和选出难样本【Cui et al., 2016】,或者定义关键部件位置并且选择有区分度的特征【Deng et al., 2016】用于细粒度识别。

5、Fine-grained image retrieval

      除了图像识别,细粒度检索是另外一个至关重要的FGIA领域并且作为一个热点出现。它的度量指标通常是mAP。

在细粒度图像检索中,提供一个属于相同子类的图像数据集(例如,鸟或者车)并进行查询,他会返回与查询样本属于同一类的图片,而不用将他们分到任何监督型号类中,如图7。与通用图像检索专注于基于它们内容中相似的部分检索近似相同的图片不同(例如纹理,颜色与形状),细粒度检索专注于检索同一类样本(例如,动物的相同子类型与车辆的同一个型号)。此外,细粒度图像中的目标只有细微的差别,在姿态、尺度与旋转方面差异很大。

Deep learning for fine-grained image analysis:A survey

 

      在文献中,【Wei et al., 2017】第一次尝试使用深度学习进行细粒度图像检索。它利用预训练的CNN模型选择有细细的深度特征描述,非监督的定位细粒度样本中的主要目标,值利用深度描述进一步选择移除背景或者早上,可以显著改进检索任务。当前,为了打破基于预训练模型的无监督细粒度方法的限制,有些方法尝试【Zheng et al., 2018;Zheng et al., 2019】试图他说有监督度量学习领域的先进损失函数。此外,他们也设计额外的特定子模块用于细粒度目标,例如,文献【Zheng et al., 2018】提出的若监督定位模块,这种方法是受文献【Wei et al., 2017】方法启发。

6、Fine-grained image generation

      除了有监督的学习任务,图像生成是无监督学习中一个有代表性的主题。它利用深度生成模型,例如GAN【Goodfellow et al., 2014】,学习模拟真实图片,看起来十分真实。随着生成图片的质量越来越高,更有挑战性的目标被提了出来,例如细粒度图像生成。如字面意思,细粒度图像生成会在细粒度类别的层面模拟图片例如特征人的人脸或者特定子目标的类别。

      这个研究领域,第一个工作是CVAE-GAN,在文献【Bao et al., 2017】中提出来,在通用过程中结合变分auto-encoder与对抗生成网络来解决这个问题。之后,通过变换输入到得到的生成模型中细粒度类别,生成特定类别的图像。最近,通过文本描述生成图像【Xu et al., 2018b】由于其应用的多样性和实用性而表现出流行的特性,例如,艺术生成与计算机辅助设计。通过运通结合注意力机制的生成网络,模型可以通过专注于文字描述的内容,模拟出细微区域的细粒度细节。

7、Domain specific applications related to fine-grained image analysis

      在真实世界中,基于深度学习细粒度图像分析技术也被应用于跨域应用中并且展示出了不错的效果,例如推荐系统中的衣服/鞋子检索【Song et al., 2017】,电子商务平台上的流行图片识别【Liu et al., 2016】,智慧零售中的商品识别【Wei et al., 2019a】等。这些应用无论是与FGIA的细粒度检索还是识别都高度相关。

      此外,如果我们转移到频谱领域,极端的看,人脸识别可以视为细粒度识别的一个实例,这里的粒度是认证粒度级别。此外,人/车重识别是另外一个细粒度相关任务,目的是决定两张图片是否来自同一个特定的人或者车。显然,重识别任务也是认证粒度的。

      实际上,这些任务通过跟随FGIA的思路,解决对应特定域的任务,包括湖区目标的区分度部件(人脸、人与车)【Suh et al., 2018】,发掘由粗到细的结构信息【Wei et al., 2018b】,开发基于属性的模型【Liu et al., 2016】等等。

8、Concluding remarks and future directions

      基于深度学习的细粒度图像分析(FGIA)近些年来取得了巨大的进展。本文中我们对基于深度学习的FGIA近些年的进步做了扩展的综述。我们主要介绍了FGIA问题与挑战没讨论了细粒度图像识别、检索、生成领域取得的令人瞩目的改进。除了这些伟大的成功,还有许多未能解决的问题。因此在本节中,我们会明确的指出这些问题并且介绍未来研究的趋势。我们希望这个综述不仅仅可以为FGIA提供更好的理解还可以促进未来这个领域的研究活动与应用开发。

Automatic fine-grained models 

      目前,自动化机器学习(AutoML)【Feurer et al., 2015】与网络结构搜索(NAS)【Elsken et al., 2018】吸引了人工智能社区强烈的关注,特别是计算机视觉领域。AutoML的目标是自动的端到端的应用机器学习技术到真实世界的任务中。同事NAS,是自动化神经网络结构设计,是AutoML逻辑上的下一步。当前AutoML与NAS可以在许多计算机视觉应用中取得与人工设计结构相当或者更好的表现。因此,也可以期许通过AutoML或者NAS技术可以找到更好更合适的自动细粒度的模型,同时这样可以进一步推进AutoML与NAS的发展。

Fine-grained few-shot learning

      人类有能力通过少量的监督学习到新的细粒度概念,例如少量一类鸟的样本图片,然而我们最好的深度学习细粒度系统需要成百上千的带标签样本。更糟的是,细粒度图片的监督是一件既耗时又昂贵的工作,因为细粒度目标总是需要领域专家才能精准标注。因此,期望研发few-shot的细粒度识别(FGFS)【Wei et al., 2019b】。FGFS任务需要学习系统利用meta-learning的方式与少量的样本(仅仅一张或者少于五张)为新的类别建立细粒度分类器。鲁棒的FGFS方法可以极大的增强细粒度识别系统的可用性与扩展性。

Fine-grained hashing

      就如目前FGIA领域得到越来越多的关注,更多量大与精细建立的细粒度数据集开源出来,例如【Berg et al., 2014; Horn et al., 2017; Wei et al., 2019a】。在例如细粒度图像检索这样的应用中,很自然会产生这样的问题:由于数据集相当的大,找到最相似近邻的时间代价也越来越大。Hashing【Wang et al., 2018; Li et al., 2016】作为其中一个最流行最有效的近邻检索技术,有处理高量级细粒度数据的潜力。英雌,次粒度哈希是一个值得进一步探索的方向。

Fine-grained analysis within more realistic settings

      在过去的十年中,细粒度图像分析相关的技术在传统设定上发展并且取得了很好的表现,例如,【Wah et al., 2011; Khosla et al., 2011; Krause et al., 2013]】经验协议。然而,这些设定不能满足当前实际应用中的多样化需求,例如利用可控环境下训练的模型识别货架上的零售商品【Wei et al., 2019a】与识别或者检测野外的自然物种【Horn et al., 2017】。因此,先进的细粒度图像分析主题,举例来说,域自适应的细粒度分析,知识迁移的细粒度分析,长尾分布的细粒度分析与运行在资源有限的嵌入式设备上的细粒度分析,需要研究者投入更大的精力到这些更前沿更实用的FGIA领域研究中。