细粒度视觉分析综述TPAMI2021

news2024/11/16 3:27:29

细粒度图像分析(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所示,细粒度分析位于基本级别的类别分析(即通用图像分析)和实例级别的分析(例如,个体识别)之间的连续统一体。

fig1

  • 图1:细粒度分析介于基础类别分析和实例分析之间。

为了准确的细粒度图像识别,有必要捕捉细微的视觉差异,如耳朵、鼻子或尾巴。如前所述,由于高度相似的子类别引起的小的类间变化,以及在姿态、尺度和旋转方面的大的类内变化(见图2),问题的细粒度性质具有挑战性。因此,它与一般的图像分析相反(即小的类内变化和大的类间变化),这使得FGIA成为一个独特而具有挑战性的问题。

fig2

  • 图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,也包含了细粒度样本,比如动物的各种从属类别。
fig3

  • 表1:流行的细粒度图像数据集总结,按照主题和发布时间排序。"images"表示图像总数,"BBox"表示此数据集是否提供对象Bounding box标注,"Part anno"表示提供了关键部分的注释,"HRCHY"对应等级标签,"ATR"对应属性标签(翅膀颜色,雄性,雌性),"Texts"表示提供了文本描述。
  • *表示基于草图的检索,images为草图数量和图像数量。

CUB 200-2011是最流行的数据集,大多数方法都在该数据集上进行比较,并且在此基础上,有研究者补充了文本模态。近年来,更有挑战性的数据集被提出,例如iNat2017包含不同种类的动植物,零售产品。这些数据集的新特性是大规模,具有层次结构,表现出领域差距。除此之外,后续构建了一系列基于草图的检索数据集,进一步推进FGIA的发展。FG-Xmedia更进一步将FGIA推进到跨模态检索。

fig4

  • 图3:来自CUB 200-2011的示例图像,具有多种不同类型的注释,例如,类别标签,part anno(关键点注释),BBox,ATR(属性标签),文本描述。

识别

在过去十年中,细粒度图像识别一直是FGIA最活跃的研究领域。细粒度识别旨在区分属于同一基本类别的许多视觉上相似的从属类别,如动物物种、汽车、水果、飞机模型等。它已频繁应用于现实世界的任务,例如生态系统保护(识别生物物种)、智能零售系统等。由于判别区域定位和细粒度特征学习的挑战,识别细粒度类别是困难的。研究人员试图从不同的角度应对这些挑战。从广义上看,现有的识别方法分为3种范式:

  • 基于定位子网络的识别;
  • 端到端特征编码;
  • 引入额外信息的识别;

其中,前两种范式通过仅利用与细粒度图像(如图像标签、边界框、关键点注释等)相关的监督信息。为了进一步解决模糊的细粒度问题,有一系列工作使用了附加信息,如图像拍摄的地点和时间、web图像,文本描述。为了直观地展示这些具有代表性的基于深度学习的细粒度识别方法,图4中通过将它们组织成上述三种范式来展示了按时间顺序排列的概述。
fig5

  • 图4:FGIA的识别方法发展。

基于定位子网络的识别

研究人员试图创建模型,捕捉细粒度对象的判别性语义part,然后构建与这些part相对应的中级表示,用于最终分类,参见图5。
fig6

  • 图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)。细粒度图像检索也可以扩展为细粒度跨媒体检索,它可以利用一种媒体类型来检索任何媒体类型,例如使用图像来检索相关文本、视频或音频。
fig7

  • 图6:细粒度基于内容的图像检索(FG-CBIR)的图示。给定一个描述"Dodge Charger Sedan 2012"的query图像(又名探针probe),需要细粒度检索才能从汽车数据库(又名galaxy)中返回相同车型的图像。在这张图中,第四张返回的图片,用红色轮廓标记,是不正确的,因为它是一个不同的车型,它是一辆"Dodge Caliber Wagon 2012"。

fig8

  • 图7:一个基于细粒度草图的图像检索(FG-SBIR)的示例,其中徒手绘制的草图用作图像实例级检索的query。FG-SBIR具有挑战性,因为1任务的细粒度和跨域性质,2徒手绘制的草图高度抽象,使得细粒度匹配更加困难。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/360247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Azure 架构师学习笔记】-Azure Data Factory (1)-调度入门

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Data Factory】系列。 前言 在开发好一个ADF pipeline(功能)之后,需要将其按需要运行起来,这个称之为调度。下图是一个简单的ADF 运作图, 按照需要的顺序&am…

uniapp 原生安卓开发插件(module),以及android环境本地调试(二)

uniapp 原生安卓开发插件(module),以及android环境本地调试(一) 1、前景 承接上一篇文章,由于uniapp每天只有限定的打包次数,所以每次插件调试都打包成为基座,这个不太方便&#x…

java 集合常见面试(一)

集合概述 java集合预览 Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有…

预告|第四届OpenI/O启智开发者大会NLP大模型论坛强势来袭!

最近,ChatGPT刷爆了所有人的朋友圈。它不仅能够与人类进行日常自然的聊天,还能胜任如写论文、编代码等诸多较为复杂的语言工作。ChatGPT 爆火的背后,是NLP(自然语言处理)技术的飞速革新。在过去的十年里,人工神经网络计算的加入、…

#461 年轻人的世界没有容易二字,除了脱发

点击文末“阅读原文”即可收听本期节目剪辑、音频 / 卷圈 编辑 / SandLiu 卷圈 监制 / 姝琦 文案 / 粒粒 产品统筹 / bobo 录音间 / 声湃轩提起二月二,你一定会脱口而出“龙抬头”。龙抬头吃什么很重要,重要到可以吵一架,但比吃什么更重要…

echo和swagger的结合使用(oapi-codegen使用)

echo和swagger的结合使用(oapi-codegen使用) 相关官网: echo官网swagger 这里介绍的重点是swagger和echo的整合使用,具体的框架的使用方法请看官方文档。 1. 初衷 swagger官网提供了文档转代码的操作,但转出来的代…

Allegro如何通过报表的方式检查单板上是否有假器件操作指导

Allegro如何通过报表的方式检查单板上是否有假器件操作指导 在做PCB设计的时候,输出生产文件之前,必须保证PCB上不能存在假器件,如下图,是不被允许的 当PCB单板比较大,如何通过报表的方式检查是否存在假器件,具体操作如下 点击Tools点击Reports

你看,ChatGPT都知道优先使用BigDecimal

不是三婶儿偏执,非要吐槽。家人们,咱就是说,按照基操逻辑谁会把严格金额计算相关的数据使用double类型呢… “我以为吕布已经够勇猛了,这是谁的部下?” 前几天,一同事让帮忙写段代码。内容比较常规&#xf…

iTerm2 的配置与美化

前言 iTerm2是默认终端的替代品,也是目前Mac系统下最好用的终端工具,集颜值和效率于一身。 最近换了一台新的 MacBook Pro ,需要重装电脑上的常用软件。为了将 ITerm2 DIY为自己喜欢的样子,花了不少时间。为了方便下次再配置&…

python五子棋代码最简单的,python五子棋代码画棋盘

大家好,本文将围绕python五子棋代码输赢逻辑判断展开说明,如何用python制作五子棋游戏是一个很多人都想弄明白的事情,想搞清楚python五子棋代码最简单的需要先了解以下几个事情。 1、求解用python 编写五子棋怎样编写判断输赢的函数&#xff…

C++项目——高并发内存池(1)--介绍及定长内存池

1.什么是内存池 1.1 池化技术 将程序中需要经常使用的核心资源先申请出来,放在一个池内,由程序自己管理,这样可以提高资源的使用效率,也可以保证本程序占有的资源数量。 比如之前博文实现的线程池,就是预先的申请出…

CRM哪家好?这5个CRM管理系统很好用!

CRM哪家好?这5个CRM管理系统很好用! CRM(Customer Relationship Management)即客户关系管理,能够帮助提高客户的价值、满意度、赢利性和忠实度,缩减销售周期和销售成本、增加收入、寻找扩展业务所需的新的市场和渠道,…

浅谈c++引用

浅谈c 在这里开设 <<浅谈C>> 系列专题,针对C重点内容展开探讨与观察底层,同时也是一个面试专栏,所选知识大多为面试常见问题.前期较为基础,难度会逐渐上升哦~ 本专栏采用经典的哲学三段论编写:是什么|为什么|怎么做 力图精简,高效. 第一章: 浅谈C函数重载 传送门…

ansible剧本(playbook)

目录 一、playbooks 概述以及实例操作 1、playbooks 的组成 2、操作示例一&#xff1a; 2.1 编写yaml文件也就是playbook 2.2 修改配置文件并放入/opt/目录下 2.3 运行playbook 3、操作实例二&#xff1a;定义、引用变量 4、操作示例三&#xff1a;指定远程主机sudo切换…

音频格式、参数、开发相关总结

常见的语音格式介绍PCM&#xff1a;音频纯裸数据。WAV&#xff1a;微软在windows存储的一种纯裸数据格式。AIFF&#xff1a;苹果在Mac上存储的一种纯裸数据格式。MP3&#xff1a;为ISO/IEC国际标准&#xff0c;是现在最普及的一种数字音频编码和有损压缩格式&#xff0c;几乎所…

Android Spider XX兔 Wechat Cookie 校验 注册案例(二)

声明 此次案例只为学习交流使用&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;切勿用于其他非法用途&#xff1b; 文章目录声明前言一、资源推荐二、任务说明三、App抓包分析四、还原JS加密1、Date类2、MD5类3、组合调用还原 api_token 参数4、execjs模…

04- 图像卷积及图片的模糊和边缘检测 (OpenCV基础) (机器视觉)

知识重点 padding指的就是填充的0的圈数重构图片大小: img cv2.resize(img, dsize(300, 300))模糊操作: dst cv2.filter2D(img, -1, kernel) kernel np.ones((5, 5), np.float32)/ 25 dst cv2.filter2D(img, -1, kernel) # 卷积操作 模糊操作: 方盒滤波: dst cv2.b…

AD使用教程 图文并茂 AD2020四层板

文章目录设计流程图&#xff1a;资源下载&#xff1a;自定义快捷键&#xff1a;&#xff08;按照个人习惯&#xff09;默认快捷键&#xff1a;一、软件主页面1.主界面2.Panels面板3.系统设置3.自定义快捷键4.新建工程二、原理图库1.原理图库面板2.管脚属性三、原理图绘制绘制步…

C++011-C++循环+枚举

文章目录C011-C循环枚举枚举枚举思想枚举举例题目描述 统计因数题目描述 质数判定错误方法一&#xff1a;优化方法1&#xff1a; 用break实现优化优化方法2&#xff1a; sqrt(n)题目描述 水仙花数题目描述 7744问题实现方法1优化方法2题目描述 余数相同问题题目描述 特殊自然数…

《第一行代码》 第六章:数据库与存储方案

一&#xff0c;持久化技术简介 也就是数据存储在内存中&#xff0c;会丢失。需要存储在存储设备中。而持久化技术&#xff0c;就是提供了手段&#xff0c;让数据再试瞬时状态和持久状态之间转换。 安卓开发提供了三种数据的持久化技术&#xff1a; 二&#xff0c;文件存储 …