Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

超全深度学习细粒度图像分析:项目、综述、教程一网打尽

在本文中,来自旷视科技、南京大学和早稻田大学的研究者对基于深度学习的细粒度图像分析进行了综述,从细粒度图像识别、检索和生成三个方向展开论述。此外,他们还对该领域未来的发展方向进行了讨论。

计算机视觉(CV)是用机器来理解和分析图像的过程,是人工智能中一个重要分支。在 CV 的各个研究领域中,细粒度图像分析(fine-grained image analysis, FGIA)是一个长期存在的基础性问题,而且在各种实际应用(比如鸟的种类、汽车模型、商品识别等)中无处不在。由细粒度特性造成的类间(inter-class)小变化和类内(intra-class)大变化使得这一问题具有极大的挑战性。由于深度学习的蓬勃发展,近年来应用了深度学习的 FGIA 取得了显著的进步。

本文系统地对基于深度学习的 FGIA 技术进行了综述。具体来说,本文将针对 FGIA 技术的研究分为三大类:细粒度图像识别、细粒度图像检索和细粒度图像生成。本文还讨论了其他 FGIA 的重要问题,比如公开可用的基准数据集及其在相关领域的特定应用。本文在结尾处强调了未来仍需进一步探讨的几个方向以及待解决的问题。

  • 论文:Deep learning for fine-grained image analysis: A survey

  • 论文链接:https://arxiv.org/pdf/1907.03069.pdf

综述结构。

在环太平洋国家举办的另一个重要的 AI 会议中,本文作者(魏秀参、吴建鑫)针对细粒度图像分析组织了具体的教程。该教程中提供了一些关于细粒度图像分析的额外的细节信息,所以在此向想深入了解的读者推荐该教程。

教程大纲。

教程地址:http://www.weixiushen.com/tutorial/PRICAI18/FGIA.html

此外,论文作者还开放了一个细粒度图像分析的主页,内含代表性论文、代码、数据集等。

项目目录。

项目地址:http://www.weixiushen.com/project/Awesome_FGIA/Awesome_FGIA.html

背景:FGIA 中的主要问题和挑战

FGIA 与一般的图像分析之间的区别在于:在一般的图像分析中,目标对象属于粗粒度的元类别(例如:鸟、橙子和狗),因此它们看起来非常不同。但在 FGIA 中,由于对象都属于一个元类别的子类,细粒度的特性导致它们看起来非常相似。我们以图像识别为例。如图 1 所示。

图 1:细粒度图像分析(右)与一般的图像分析(左)

此外,细粒度特性也会导致由子类别高度相似而造成的类间变化较小以及因姿势、尺寸和角度等不同而造成的类内变化大的问题,如图 3 所示。

图 3:细粒度图像分析的关键挑战

基准数据集

表 1:主流细粒度图像数据集汇总

表 1 中列出了细粒度问题中常用的图像数据集,并特地标出了它们的元类别、细粒度图像的数量、细粒度类别的数量和额外可用的不同种类的监督(即边界框、部位注释、层次标签、属性标签以及文本视觉描述等),参见图 5。

图 5:带有 CUB200-2011 监督信息的示例图像

细粒度图像识别

这些细粒度识别方法可以总结为三个范式:(1)用定位分类子网络进行细粒度识别;(2)用端到端的特征编码进行细粒度识别;(3)用外部信息进行细粒度识别。

其中,第一个范式和第二个范式只用和细粒度图像相关的监督(比如图像标签、边界框以及部分注释等)进行了限制。此外,由于细粒度存在的挑战,自动识别系统还不能实现良好的性能。因此,研究人员逐渐试着在细粒度识别问题中融入外部但易于获得的信息(比如网页数据、文本描述等)来进一步提升准确率,这对应了细粒度识别的第三个范式。细粒度识别中常用的评估指标是数据集所有从属类别的平均分类准确率

4.1 用定位分类子网络进行细粒度识别

为了缓解类内变化较大的问题,细粒度社区注重捕获细粒度对象具有辨别性的语义部分,然后再建立和这些语义部分相关的中级表征用于最后的分类。具体而言,研究人员为了定位这些关键部位,设计出了定位子网络。之后再连接一个用于识别的分类子网络。这两个子网络合作组成的框架就是第一个范式,也就是用定位分类子网络进行细粒度识别。

有了定位信息(比如部位边界框或分割掩码),就可以获得更有辨别力的中级(部位)表征。此外,它还进一步提高了分类子网络的学习能力,这可以显著增强最终识别的准确率

属于这一范式的早期工作依赖于额外的密集部位注释(又称关键点定位)来定位目标的语义关键部位(例如头部、躯干)。它们中的一些学习了基于部位的检测器 [Zhang et al.,2014;Lin et al.,2015a],还有一些利用分割方法来定位部位。然后,这些方法将多个部位特征当做整个图像的表征,并将其馈送到接下来的分类子网络中进行最终的识别。因此,这些方法也称为基于部位的识别方法。

但这样的密集部位注释是劳动密集型工作,限制了细粒度应用在现实世界中的可扩展性和实用性。最近还出现了一种趋势,在这种范式下,更多只需要图像标签 [Jaderberg et al.,2015;Fu et al.,2017;Zheng et al.,2017;Sun et al.,2018] 就可以准确定位这些部位的技术出现了。它们共同的思路是先找到相对应的部位,然后再比较它们的外观。具体而言,我们希望能捕获到在细粒度类别中共享的语义部位(比如头部和躯干),同时还希望发现这些部位表征之间的微小差别。像注意力机制 [Yang et al.,2018] 和多阶段策略 [He 和 Peng,2017b] 这样的先进技术可以对集成的定位分类子网络进行复杂的联合训练。

4.2 用端到端的特征编码进行细粒度识别

和第一个范式不同,第二个范式是端到端特征编码,它是通过开发用于细粒度识别的强大深度模型来直接学习更具辨别力的表征实现的。这些方法中最具代表性的方法是双线性 CNN(Bilinear CNNs[Lin et al.,2015b]),它用来自两个深度 CNN 池化后的特征的外积来表征图像,从而对卷积激活的高阶统计量进行编码,以增强中级学习能力。由于其模型容量较高,双线性 CNN 在细粒度识别中实现了优良的性能。但双线性特征的维度极高,因此它无法在现实世界中应用,尤其是大规模应用。

最近也有一些尝试解决这一问题的工作,比如 [Gao et al.,2016;Kong 和 Fowlkes,2017;Cui et al.,2017],[Pham 和 Pagh,2013;Charikar et al.,2002] 试着用张量草图(tensor sketching)来聚合低维嵌入,该方法可以近似双线性特征,还可以保持相当程度或更高的准确率。其他工作,比如 [Dubey et al.,2018] 则专门为细粒度量身设计了特定的损失函数,它可以驱动整个深度模型学习具有辨别性的细粒度表征。

4.3 用外部信息进行细粒度识别

如前文所述,除了传统的识别范式外,另一种范式是利用外部信息(比如网络数据、多模态数据或人机交互)来进一步帮助细粒度识别。详细内容参见论文。

细粒度图像检索

除了图像识别,细粒度检索是 FGIA 的另一个重要方面,它也是当前的研究热点。在细粒度检索中,常用的评估指标是平均精度均值(mean average precision,mAP)。在细粒度图像检索中,给出同一个子类(比如鸟类或车类)的数据库图像和要查询的图像,它可以在不依赖任何其他监督信号的情况下,返回与查询图像属于同一类别的图像,如图 7 所示。

图 7:细粒度检索图示。

一般的图像检索是基于图像内容(比如纹理、颜色和形状)的相似性来检索非常相似的图像,而细粒度检索则侧重于检索属于同一类别(比如同一物种的生物或一种车型)的图像。同时,细粒度图像中目标的差别很小,而在姿势、尺寸以及角度等方面存在差异。

[Wei et al.,2017] 首次试着用深度学习进行细粒度图像检索。该模型用预训练的 CNN 模型,在无监督的情况下,通过在细粒度图像中定位主要目标选出了有意义的深度描述符,进一步揭示了只用去除背景或噪声的深度描述符可以显著提高检索任务的性能。为了打破通过预训练模型进行无监督细粒度检索的局限性,一些实验 [Zheng et al.,2018;Zheng et al.,2019] 倾向于在有监督指标学习范式下,研究出全新的损失函数。与此同时,他们还为细粒度目标量身设计了额外的特定子模块,例如,[Zheng et al.,2018] 受 [Wei et al.,2017] 启发后提出的弱监督定位模块。

细粒度图像生成

除了监督学习任务,图像生成也是无监督学习中的代表性主题。它用像 GAN[Goodfellow et al.,2014] 这样的深度生成模型来学习合成看起来很真实的逼真图像。随着生成图像的质量越来越高,更具挑战性的任务——细粒度图像生成,出现了。顾名思义,细粒度生成可以在细粒度类别(比如特定人物的面部或从属类别中的对象)中合成图像。

这方面的第一项工作是 [Bao et al.,2017] 提出的 CVAE-GAN,它将变分自编码器和条件生成过程下的生成对抗网络结合在一起,来解决这一问题。具体而言,CVAE-GAN 将图像建模成概率模型中的标签和隐含属性的组合。通过改变馈入生成模型的细粒度类别,它就可以生成特定类别的图像。最近,根据文本描述生成图像 [Xu et al.,2018b] 因其多样化和实用性(如艺术生成和计算机辅助设计)而流行起来。执行配备了注意力的生成网络后,模型可以根据文本描述中的相关细节来合成细微区域的细粒度细节。

与细粒度图像分析相关领域的特定应用

在真实世界中,基于深度学习的细粒度图像分析技术在不同领域中都得到了应用,并表现出了很好的性能,例如在推荐系统中检索衣服或鞋 [Song et al.,2017],在电子商务平台上识别时尚图像 [Wei et al.,2016] 以及在智能零售平台中识别产品 [Wei et al.,2019a] 等。这些应用都和 FGIA 的细粒度检索与识别高度相关。

此外,如果我们向下移动粒度范围,极端点说,也可以将人脸识别看作细粒度识别的实例,在这个例子中粒度降到了身份粒度级别之下。此外,人员或机动车的再识别也是细粒度的一项相关任务,这项任务的目标是确定两张图像是否属于同一个特定的人或机动车。显然,再识别任务的粒度等级也在身份粒度之下。

在实际应用中,这些工作都遵循了 FGIA 的思路,来解决相关领域的特定任务,FGIA 的思路包括捕获目标极具辨别性的部位(人脸、人和机动车)[Suh et al.,2018]、发现由粗到细的结构信息 [Wei et al.,2018b] 以及开发基于属性的模型 [Liu et al.,2016] 等等。

未来的方向

在这一部分,研究者明确指出了 FGIA 相关领域中尚未解决的问题,以及一些未来的研究趋势。

自动细粒度模型

AutoML 和 NAS 的最新方法在计算机视觉的各种应用中都取得了和手工设计架构相媲美、甚至更好的结果。因此,希望可以利用 AutoML 或 NAS 技术开发自动细粒度模型,有望找到更好、更合适的深度模型,同时也可以反向促进 AutoML 和 NAS 研究的进步。

细粒度 few-shot 学习

我们最好的深度学习细粒度系统需要成百上千个标记好的样本。更糟的是,细粒度图像的监督不仅耗时而且昂贵,因为细粒度目标是由该领域的专家做准确标记的。因此,现实应用迫切需要开发出基于小样本的细粒度学习方法(fine-grained few-shot,FGFS)[Wei et al.,2019b]。FGFS 任务需要学习系统以元学习的方式,根据少量(只有一个或少于五个)样本构建针对全新细粒度类别的分类器。鲁棒的 FGFS 方法可以很大程度上地增强细粒度识别的可用性和可扩展性。

细粒度哈希

在像细粒度图像检索这样的实际应用中,会自然地出现这样的问题——在参考数据非常大的情况下,找到准确的最近邻的成本是非常高的。哈希 [Wang et al.,2018;Li et al.,2016] 是近似最近邻搜索中最流行也最有效的技术之一,它有处理大量细粒度数据的潜力。因此,细粒度哈希是 FGIA 中值得进一步探索的方向。

在更实际的环境中进行细粒度分析

细粒度图像分析还有许多新颖的主题——用域自适应进行细粒度分析、用知识迁移进行细粒度分析、用长尾分布进行细粒度分析以及在资源受限的嵌入设备上运行细粒度分析等。这些更高级也更实际的 FGIA 都很值得进行大量的研究工作。

理论细粒度识别计算机视觉综述论文
2
相关数据
池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

图像检索技术

图像检索系统是用于从大型数字图像数据库浏览、搜索和检索图像的计算机系统。 大多数传统和常见的图像检索方法利用向图像添加诸如字幕、关键字或描述之类的元数据的一些方法,以便可以对注释词执行检索。 手动图像注释耗时,费力且昂贵; 为了解决这个问题,人们已经对自动图像标注进行了大量研究。

变分自编码器技术

变分自编码器可用于对先验数据分布进行建模。从名字上就可以看出,它包括两部分:编码器和解码器。编码器将数据分布的高级特征映射到数据的低级表征,低级表征叫作本征向量(latent vector)。解码器吸收数据的低级表征,然后输出同样数据的高级表征。变分编码器是自动编码器的升级版本,其结构跟自动编码器是类似的,也由编码器和解码器构成。在自动编码器中,需要输入一张图片,然后将一张图片编码之后得到一个隐含向量,这比原始方法的随机取一个随机噪声更好,因为这包含着原图片的信息,然后隐含向量解码得到与原图片对应的照片。但是这样其实并不能任意生成图片,因为没有办法自己去构造隐藏向量,所以它需要通过一张图片输入编码才知道得到的隐含向量是什么,这时就可以通过变分自动编码器来解决这个问题。解决办法就是在编码过程给它增加一些限制,迫使其生成的隐含向量能够粗略的遵循一个标准正态分布,这就是其与一般的自动编码器最大的不同。这样生成一张新图片就比较容易,只需要给它一个标准正态分布的随机隐含向量,这样通过解码器就能够生成想要的图片,而不需要给它一张原始图片先编码。

最近邻搜索技术

最邻近搜索(Nearest Neighbor Search, NNS)又称为“最近点搜索”(Closest point search),是一个在尺度空间中寻找最近点的优化问题。问题描述如下:在尺度空间M中给定一个点集S和一个目标点q ∈ M,在S中找到距离q最近的点。很多情况下,M为多维的欧几里得空间,距离由欧几里得距离或曼哈顿距离决定。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

自动识别系统技术

自动识别系统,是安装在船舶上的一自动追踪套系统,借由与邻近船舶、AIS岸台、以及卫星等设备交换电子资料,并且供船舶交通通管制辨识及定位。当卫星侦测到AIS讯号,则会显示S-AIS。AIS资料可供应到海事雷达,以优先避免在海上交通发生碰撞事故。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

元学习技术

元学习是机器学习的一个子领域,是将自动学习算法应用于机器学习实验的元数据上。现在的 AI 系统可以通过大量时间和经验从头学习一项复杂技能。但是,我们如果想使智能体掌握多种技能、适应多种环境,则不应该从头开始在每一个环境中训练每一项技能,而是需要智能体通过对以往经验的再利用来学习如何学习多项新任务,因此我们不应该独立地训练每一个新任务。这种学习如何学习的方法,又叫元学习(meta-learning),是通往可持续学习多项新任务的多面智能体的必经之路。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

深度生成模型技术

深度生成模型基本都是以某种方式寻找并表达(多变量)数据的概率分布。有基于无向图模型(马尔可夫模型)的联合概率分布模型,另外就是基于有向图模型(贝叶斯模型)的条件概率分布。前者的模型是构建隐含层(latent)和显示层(visible)的联合概率,然后去采样。基于有向图的则是寻找latent和visible之间的条件概率分布,也就是给定一个随机采样的隐含层,模型可以生成数据。 生成模型的训练是一个非监督过程,输入只需要无标签的数据。除了可以生成数据,还可以用于半监督的学习。比如,先利用大量无标签数据训练好模型,然后利用模型去提取数据特征(即从数据层到隐含层的编码过程),之后用数据特征结合标签去训练最终的网络模型。另一种方法是利用生成模型网络中的参数去初始化监督训练中的网络模型,当然,两个模型需要结构一致。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

图像生成技术

图像生成(合成)是从现有数据集生成新图像的任务。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

生成对抗网络技术

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

人机交互技术

人机交互,是一门研究系统与用户之间的交互关系的学问。系统可以是各种各样的机器,也可以是计算机化的系统和软件。人机交互界面通常是指用户可见的部分。用户通过人机交互界面与系统交流,并进行操作。小如收音机的播放按键,大至飞机上的仪表板、或是发电厂的控制室。

推荐文章
暂无评论
暂无评论~