细粒度图像分析(FGIA,Fine-grained image analysis)是计算机视觉中一个长期存在的基本问题,并支撑着一系列不同的现实应用。FGIA的任务目标是分析从属类别(subordinate categories)的视觉对象,例如鸟类。细粒度图像分析固有的细微类间差异使其成为一个具有挑战性的问题。利用深度学习的进步,近年来,研究者在深度学习驱动的FGIA方面取得了显著的进展。下面将对这些进展进行系统的综述,试图通过巩固两个基本的细粒度研究领域-细粒度图像识别和细粒度图像检索来重新定义和拓宽FGIA领域。
来源:Fine-Grained Image Analysis with Deep Learning: A Survey
目录
- 引言
- 问题和挑战的背景描述
- Benchmark数据集
- 识别
- 基于定位子网络的识别
- 端到端特征编码
- 引入额外信息
- 检索
引言
FGIA在工业和研究中都有广泛的应用,例如生物多样性监测,智能零售,智能交通。FGIA在计算机视觉中的目标是检索和识别属于一个超类别(又名元类别或基础级类别)的多个从属类别的图像,例如不同种类的动植物,不同型号的汽车,不同种类的零售产品等。关键挑战在于理解细粒度的视觉差异。近10年来,深度学习已经成为学习判别性特征的主要方法。
FGIA目前依旧是计算机视觉的开放问题,每年的高级计算机视觉会议平均有10篇关于FGIA的论文被发表。并且每年有多个FGIA竞赛。尽管如此,目前FGIA的研究依然碎片化。因此,该综述整理了近期的研究,并重新描述FGIA领域。
FGIA包含两个基本领域(识别和检索):
- 细粒度识别(Fine-Grained Recognition):通常会将不同的细粒度识别方法组织为三个范式,即,1通过定位分类子网络进行识别,比如弱监督目标检测,有监督区域分割,2通过端到端特征编码进行识别,3使用外部信息进行识别,比如利用Web数据,多模态数据。
细粒度识别是FGIA中研究最多的领域,因为识别是大多数视觉系统的基本研究。 - 细粒度检索(Fine-Grained Retrieval):根据query图像的类型,通常将细粒度检索方法分为两组,即1基于内容的细粒度图像检索,2基于草图的细粒度图像检索。
与细粒度识别相比,细粒度检索是近年来FGIA的一个新兴领域,越来越受到学术界和业界的关注。
识别和检索的差异为:识别和检索都旨在区分细粒度对象的判别性特征。然而,细粒度识别是一个具有固定数量从属类别的封闭任务。相比之下,细粒度检索将问题扩展到具有无限子类别的开放设置。此外,细粒度检索还旨在对所有实例进行排序,以便根据查询中的细粒度细节对描述感兴趣的图像(例如,相同的子类别标签)进行最高的排序。
识别与检索协同:识别与检索的进展具有共性,可以相互促进。它们共享特征学习的技术,检索模型依托于识别模型。
问题和挑战的背景描述
FGIA侧重于处理属于同一元类别的多个从属类别的对象,例如,不同种类的鸟类或不同型号的汽车,通常涉及两个中心任务:细粒度图像识别和细粒度图像检索。如图1所示,细粒度分析位于基本级别的类别分析(即通用图像分析)和实例级别的分析(例如,个体识别)之间的连续统一体。
- 图1:细粒度分析介于基础类别分析和实例分析之间。
为了准确的细粒度图像识别,有必要捕捉细微的视觉差异,如耳朵、鼻子或尾巴。如前所述,由于高度相似的子类别引起的小的类间变化,以及在姿态、尺度和旋转方面的大的类内变化(见图2),问题的细粒度性质具有挑战性。因此,它与一般的图像分析相反(即小的类内变化和大的类间变化),这使得FGIA成为一个独特而具有挑战性的问题。
- 图2:细粒度图像分析的主要挑战为小的类间变化和大的类内变化,上图为4个不同的Tern物种,每行一个物种,列中有不同的实例。
person/vehicle reidentification可以被认为是一个细粒度的任务,其目的是确定是否拍摄了同一个人或车辆的两张图像。这些问题使用了FGIA的技术,例如捕获对象的判别性特征,发现从粗到细的结构信息。
FGIA的核心应当是检测到不同从属对象之间语义对齐的局部判别性特征,在检测这些区域的需求下,存在有监督和弱监督方法。
在图像识别中,给定一个训练数据集 D = { ( x ( i ) , y ( i ) ) ∣ i = 1 , . . . , N } D=\left\{(x^{(i)},y^{(i)})|i=1,...,N\right\} D={(x(i),y(i))∣i=1,...,N},其中, y y y一共 C C C个类别。每个 ( x , y ) (x,y) (x,y)来自分布 p r ( x , y ) p_{r}(x,y) pr(x,y)。我们可以训练一个识别模型 f ( x ; θ ) f(x;\theta) f(x;θ): m i n θ E ( x , y ) ∼ p r ( x , y ) [ L ( y , f ( x ; θ ) ) ] min_{\theta}E_{(x,y)\sim p_{r}(x,y)}[L(y,f(x;\theta))] minθE(x,y)∼pr(x,y)[L(y,f(x;θ))]其中, L L L为损失函数。
与识别相比,检索除了要获得正确子类别外,还需要对所有实例进行排序。给定query输入 x q x^{q} xq,检索模型要对检索集合 Ω = { x ( i ) } i = 1 M \Omega=\left\{x^{(i)}\right\}^{M}_{i=1} Ω={x(i)}i=1M中的所有实例进行排序。使用 S Ω = { s ( i ) } i = 1 M S_{\Omega}=\left\{s^{(i)}\right\}_{i=1}^{M} SΩ={s(i)}i=1M表示query和检索样本的相似度。对于标签和query一致的实例(由识别模型预测标签),我们将它们构造为positive set P q P_{q} Pq,或者记作 S P S_{P} SP。从中选择置信度最高的实例,置信度的计算需要构造新的网络同时对比query和positive set中的样本。
Benchmark数据集
视觉领域发布了许多细粒度任务数据集,值得注意的是,即使是大规模的ImageNet,也包含了细粒度样本,比如动物的各种从属类别。
- 表1:流行的细粒度图像数据集总结,按照主题和发布时间排序。"images"表示图像总数,"BBox"表示此数据集是否提供对象Bounding box标注,"Part anno"表示提供了关键部分的注释,"HRCHY"对应等级标签,"ATR"对应属性标签(翅膀颜色,雄性,雌性),"Texts"表示提供了文本描述。
- *表示基于草图的检索,images为草图数量和图像数量。
CUB 200-2011是最流行的数据集,大多数方法都在该数据集上进行比较,并且在此基础上,有研究者补充了文本模态。近年来,更有挑战性的数据集被提出,例如iNat2017包含不同种类的动植物,零售产品。这些数据集的新特性是大规模,具有层次结构,表现出领域差距。除此之外,后续构建了一系列基于草图的检索数据集,进一步推进FGIA的发展。FG-Xmedia更进一步将FGIA推进到跨模态检索。
- 图3:来自CUB 200-2011的示例图像,具有多种不同类型的注释,例如,类别标签,part anno(关键点注释),BBox,ATR(属性标签),文本描述。
识别
在过去十年中,细粒度图像识别一直是FGIA最活跃的研究领域。细粒度识别旨在区分属于同一基本类别的许多视觉上相似的从属类别,如动物物种、汽车、水果、飞机模型等。它已频繁应用于现实世界的任务,例如生态系统保护(识别生物物种)、智能零售系统等。由于判别区域定位和细粒度特征学习的挑战,识别细粒度类别是困难的。研究人员试图从不同的角度应对这些挑战。从广义上看,现有的识别方法分为3种范式:
- 基于定位子网络的识别;
- 端到端特征编码;
- 引入额外信息的识别;
其中,前两种范式通过仅利用与细粒度图像(如图像标签、边界框、关键点注释等)相关的监督信息。为了进一步解决模糊的细粒度问题,有一系列工作使用了附加信息,如图像拍摄的地点和时间、web图像,文本描述。为了直观地展示这些具有代表性的基于深度学习的细粒度识别方法,图4中通过将它们组织成上述三种范式来展示了按时间顺序排列的概述。
- 图4:FGIA的识别方法发展。
基于定位子网络的识别
研究人员试图创建模型,捕捉细粒度对象的判别性语义part,然后构建与这些part相对应的中级表示,用于最终分类,参见图5。
- 图5:基于定位子网络的识别管道。
该范式的早期工作使用额外的part注释来定位对象的语义关键点。然而,使用传统的检测器或分割模型需要密集的part注释进行训练,这是劳动密集的,并且会限制真实世界细粒度应用程序的可伸缩性和实用性。因此,希望通过仅使用图像级标签来精确定位细粒度部分,这些方法被称为"弱监督",因为它们只使用图像级标签。值得注意的是,自2016年以来,在这种弱监督设置下开发细粒度方法的趋势更明显。
值得注意的是,以前的大部分工作都是对判别性part级特征之间的内部语义关联进行了研究。具体地说,早期方法独立地选择有判别性的区域并直接利用它们的特征,而忽略了对象的特征是相互语义相关的,并且区域组可以更具判别性的事实。因此,最近一些方法试图联合学习part级特征之间的相互依赖性,以获得更通用和强大的细粒度图像表示。
端到端特征编码
细粒度识别的第二个学习范式是端到端特征编码。与其他视觉任务一样,特征学习在细粒度识别中也发挥着重要作用。由于子类别之间的差异通常非常细微和局部,因此仅使用全连接层捕获全局语义信息限制了细粒度模型的表示能力,因此限制了最终识别性能的进一步提高。因此,已经开发了一些方法,旨在学习一种统一但有判别性的图像表示,并通过以下方式对细粒度类别之间的细微差异进行建模:
- 通过执行高阶特征交互:在过去几年中,一系列方法在细粒度识别中显示出了有希望的准确性,其中最具代表性的方法是双线性神经网络,它将图像表示为源自两个深度神经网络的特征的outer product,从而对卷积激活的二阶统计进行编码,从而明显改善了细粒度识别。
- 通过设计新的损失函数:损失函数在深度网络的构建中起着重要作用。它们可以直接影响学习的分类器和特征。因此,设计细粒度损失函数是细粒度图像识别的一个重要方向。
引入额外信息
除了传统的识别范式(仅限于使用与图像本身相关的监督信息)之外,另一种范式是利用外部信息(例如,web数据、多模态数据)来进一步辅助细粒度识别。
对于Noisy Web Data,为了识别各种细粒度类别之间的细微差异,需要大型且标记良好的训练数据集。然而,由于需要领域专业知识和无数细粒度类别,为细粒度类别获取准确的标签是困难的。因此,一些细粒度的识别方法试图利用免费可用但有噪声的web数据来提高识别性能。这方面的大部分现有工作大致可分为两个方向:
- 第一个方向涉及将感兴趣类别的带噪标签的网络数据作为训练数据,这被视为网络监督学习(webly supervised learning)。这些方法通常集中的挑战有:1克服容易获取的网络图像和来自标准数据集的标记良好的数据之间的领域差距,2减少由噪声数据引起的负面影响。
- 第二个方向是将知识从具有良好标记的训练数据的辅助类别转移到测试类别,这通常采用zero-shot学习或元学习。Niu等人利用zero-shot学习将知识从带注释的细粒度类别转移到其他细粒度类别。随后,Zhang等人、Yang等人研究了选择高质量网络训练图像以扩展训练集的不同方法。Zhang等人提出了一种新的正则化元学习目标,以指导网络参数的学习,从而使其适合于目标细粒度类别。
对于多模态信息,随着多媒体数据(如图像、文本、知识库等)的快速增长,多模态分析引起了大量关注。在细粒度识别中,多模态数据可用于通过合并多模态数据来建立联合表示,以提高细粒度识别精度。与来自细粒度图像的强语义监督(例如,part注释)相比,文本描述是一种弱监督形式(即,它们仅提供图像级监督)。然而,一个优点是非专家可以相对准确地生成文本描述。因此,它们既容易收集,又便宜。此外,高级的知识图可以包含丰富的知识(例如,DBpedia)。在实践中,文本描述和知识库对于推进细粒度图像表示学习都是有用的额外指导。
检索
细粒度检索是FGIA的另一个基本方面,近年来获得了更多的关注。细粒度检索与细粒度识别的区别在于,除了正确估计子类别之外,还需要对所有实例进行排序,以便根据query中的细粒度细节对属于同一子类别的图像进行最高排序。与一般图像检索相比,一般图像检索侧重于基于内容的相似性(例如,纹理、颜色和形状)检索接近重复的图像,细粒度检索侧重于检索相同类别类型的图像(例如,相同的从属动物物种或相同的车辆模型)。更具挑战性的是,细粒度类别的对象具有细微的差异,并且可以在姿态、比例和方向上变化,或者可以包含较大的跨模态差异(例如,在基于草图的检索的情况下)。
根据query图像的类型,细粒度图像检索的研究最多的领域可以分为两组:细粒度基于内容的图像检索(FG-CBIR,参见图6)和细粒度基于草图的图像检索(FG-SBIR,参见图7)。细粒度图像检索也可以扩展为细粒度跨媒体检索,它可以利用一种媒体类型来检索任何媒体类型,例如使用图像来检索相关文本、视频或音频。
- 图6:细粒度基于内容的图像检索(FG-CBIR)的图示。给定一个描述"Dodge Charger Sedan 2012"的query图像(又名探针probe),需要细粒度检索才能从汽车数据库(又名galaxy)中返回相同车型的图像。在这张图中,第四张返回的图片,用红色轮廓标记,是不正确的,因为它是一个不同的车型,它是一辆"Dodge Caliber Wagon 2012"。
- 图7:一个基于细粒度草图的图像检索(FG-SBIR)的示例,其中徒手绘制的草图用作图像实例级检索的query。FG-SBIR具有挑战性,因为1任务的细粒度和跨域性质,2徒手绘制的草图高度抽象,使得细粒度匹配更加困难。