小样本图像分类研究综述

news2025/1/16 14:42:29

https://kns.cnki.net/kcms2/article/abstract?v=3uoqIhG8C44YLTlOAiTRKibYlV5Vjs7ioT0BO4yQ4m_mOgeS2ml3UDKtyAQtTA0dGC-TDvW_fPi0YZxfWg8dHOnpSvOL7pVA&uniplatform=NZKPT
摘 要: 近年来,借助大规模数据集和庞大的计算资源,以深度学习为代表的人工智能算法在诸多领域取得成 功。其中计算机视觉领域的图像分类技术蓬勃发展,并涌现出许多成熟的视觉任务分类模型。这些模型均需 要利用大量的标注样本进行训练,但在实际场景中因诸多限制导致数据量稀少,往往很难获得相应规模的高 质量标注样本。因此如何使用少量样本进行学习已经逐渐成为当前的研究热点。针对分类任务系统梳理了 当前小样本图像分类的相关工作, 小样本学习主要采用元学习、度量学习和数据增强等深度学习方法 。从有 监督、半监督和无监督等层次归纳总结了小样本图像分类的研究进展和典型技术模型,以及这些模型方法在 若干公共数据集上的表现,并从机制、优势、局限性等方面进行了对比分析。最后,讨论了当前小样本图像分 类面临的技术难点以及未来的发展趋势。
关键词: 深度学习;监督学习;元学习;度量学习;图像分类
大规模标注数据集是深度学习成功的必要条件 之一[1- 4] 。在现实世界的真实场景中,许多领域并不 具有获得大规模数据集的条件,这对于工作开展十分不便。也有一些领域,涉及到隐私、成本、道德等 问题,也很难获得高质量数据。例如,在医疗诊断领 域,医学图像的来源是病例,而病例会因为隐私等问 题获取难度较大;在半导体芯片缺陷检测领域,会面 临半导体芯片的型号不同和缺陷数据较少等问题。
为了解决诸多领域中数据有限和获取难度较大 的问题,小样本学习(few-shot learning FSL [5- 8] 方法 被提出。小样本学习是指在训练类别样本较少的情 况下,进行相关的学习任务。机器通过学习大量的 基类(base class )后,仅仅需要少量样本就能快速学习到新类(new class )。通常情况下,小样本学习能够利用类别中的少量样本,即一个或者几个样本进行学习。例如,一个小朋友去动物园并没有见过“黄莺”这个动物,但是阅读过有关动物书籍,书籍上有“黄 莺”的信息,通过学习书上的内容,小朋友就知道动物园中哪个动物是“黄莺”。这是因为人们可以高效地利用以往的先验知识,对现在的任务快速理解。人们这种快速理解新事物的能力,也是当前深度学习难以具备的。本文针对小样本图像分类问题介绍小样本学习的相关技术,主要是介绍小样本图像分类。小样本图像分类的最终目的是达到人类的水平[9]
小样本图像分类问题建模如图 1 所示。图中将任务划分为两部分,训练集(training set )也叫作支持集(support set ),其中分为 N 个数据类别 , N 个数 据 类 别 包 括 K 个 样 本 ,简 称 为 N - way K - shot 题。测试集( test set )也叫作查询集( query set ),查询 集的类别属于支持集中的类别。解决 N - way K - shot 小样本图像分类问题,首先从辅助的数据集学习先 验知识 [10] ,再在标注有限的目标数据集上利用已经学 习的先验知识进行图像分类和预测。

 1 小样本图像分类示例

目前已经有一些关于小样本学习各方面的综述。赵凯琳等人[11] 从基于模型微调、数据增强和迁移
学习的三个方向来介绍小样本学习的方法,并且进行了归纳总结;刘春磊等人[12] 将小样本学习方法归纳为基于迁移学习的范式和基于元学习的范式,再按照改进策略的不同进行小样本目标检测综述介绍;张振伟等人[13] 从基于度量学习、数据增强、模型结构、元学习等六方面对小样本目标检测方法进行了总结分析。综合近些年小样本学习发展,元学习、度量学习和数据增强等深度学习方法已经逐渐成为解决小样本图像处理的主流方法。随着无监督学习[14] 、半监督学习[15] 和主动学习 [16] 的兴起和发展,很多研究者也将其应用到小样本图像分类问题中。与这些综述[11-13] 不同,本文首先将这些方法分为有监督、半监督和无监督三种范式,如图 2 所示,再按照各种情况的不同
方法,从度量学习、元学习、伪标注、对比学习等角度进行归纳总结,对比分析了这些方法的性能表现,并总结了各自的核心思想以及使用领域。

 2 小样本图像分类方法

1 小样本图像分类框架及其数据集介绍
1.1 符号和定义
        在标准 FSL 场景中,一般需要建立两个数据集:一个带有 C base 类的基集和一个带有 C novel 类的新集,其中 C base C novel = C base 是一个辅助数据集,目的是通过迁移学习来训练分类器。 C novel 是执行任务分类的数据集。训练通常在 C base 类上进行,其目标是 将学到的知识迁移到基于 C novel 构建的新任务中。在 测试期间,需要为每个任务都建立一个支持集 S 和一 个查询集 Q 。支持集 S 包含 N 个类,每个类有 K 个图像。查询集 Q 包括 N × Q 个未标记的图像。在大多数文献中,N 设置为 5 K 设置为 1 5
1.2 小样本图像分类方法
        针对小样本图像分类任务,现有的基于小样本 图像分类方法可以总结以下三类:(1)元学习[17] ;(2)度 量学习[18] ;(3)数据增强 [19-25]
1.2.1 元学习
        元学习也称为 learn to learn ,利用以往的知识经 验指导新任务的学习,被广泛应用在小样本学习 中。元学习通过既有数据集和元学习器跨任务提取的元知识来解决新任务。具体来说,元学习器逐步学习跨任务的通用信息(元知识),并且学习器使用特定于任务的信息将元学习器概括为新任务。        
        如图 3所示,在小样本学习中元学习将数据集划分为训练任务和测试任务。在训练阶段,通过对已 有的数据进行随机采样,区分出支持集和查询集,从 而构造出多个不同的元任务。其中支持集用于训 练,查询集用于验证训练阶段的分类是否正确。之 后,在测试阶段,对训练阶段未见过的小样本数据集 也做相同数据划分,便可以在训练好的模型上直接 对小样本查询集进行判别。图 3 中,对于各种鸟类的小样本分类问题,可以利用已有的各种鸟类数据,通 过采样构造支持集和查询集,训练小样本模型。测 试阶段,对于黄雀和海鸥等未知鸟类,用同样的采样 方法区分出支持集和查询集,之后提取图像特征,并 计算支持集和查询集特征的距离或相似度。对于一 个小样本分类任务,元学习不会直接学习如何做到 这件事情,它要做的是去学习一些相似的任务,在这 些任务中有足够的知识或样本来学习,当学习了很 多这样的任务之后,元学习模型便学会了举一反三, 之后用这个分类任务来测试元学习模型,只要模型 在之前的训练中已经具备了足够好的举一反三的能 力,那么模型就可以完成任务。
1.2.2 度量学习
        度量学习是解决小样本图像分类最常用也是很 有效的方法之一。度量学习可以解释为是一种空间映射的方法,能够学习到某种特征空间。在小样本图像分类中,可以理解为将数据转换成特征向量。 度量学习也指相似度学习,衡量在嵌入空间中两个目标特征或者多个相似度或者距离,相同的类特征 距离较近,反之不同的类特征距离较远。
         度量学习的小样本图像分类方法,如图 4 所示。 度量学习网络主要由嵌入模块 f (特征提取器)和度 量模块 g (分类器)两部分组成。首先将样本分为支 持集和测试集,将图像输入嵌入模块 f 获得特征,并 且以一定的规则计算得到支持集图像中每类的中心 特征,以这些中心特征作为支持集中各类图像的代 表,再使用度量模块 g 求得与查询集中样本最近的 中心特征,将这个中心特征所属的类别标签作为该 查询集样本的预测标签。最终根据相似度得分获得 分类结果。
        通过卷积神经网络和循环神经网络等方法来实现特征的提取。度量分类器可以使用基于布雷格曼 散度的欧氏距离、马氏距离和余弦距离的固定度量方法或者基于深度神经网络的可学习度量方式[26]。基于度量学习的小样本图像分类方法的性能取决于两方面:一方面是特征提取器和分类器的性能;另一方面是特征与分类器的匹配程度。因此,如何设计一个小样本条件下表达能力强的特征提取器,并使提取的特征与分类器的要求相匹配,对于提升网络的分类性能十分重要。
1.2.3 数据增强
        数据增强又称为数据扩充,通过增加既有数据的多样性,而不是实际收集新数据来缓解数据稀缺问题。基于增广数据集,可以明显降低过度拟合[27] 的风险,有效地增强模型的泛化能力。数据增强方法可以分为基于数据扭曲的数据扩充和基于深度生成模型的数据扩充。
        基于数据扭曲的数据扩充:数据扭曲是一种通 过基于现有数据执行基本图像操作来生成新样本的 方法。常用的变换技术包括裁剪、翻转、过滤、旋转 和去噪。这些转换较容易实现,以增加数据规模。然而,这些方法均无法生成新的语义信息来增加数据的多样性,并且数据增强方法对提高模型性能的 效果有限。因此,这种方法不能完全解决样本限制问题,通常被用作数据预处理的辅助技术。
        基于深度生成模型的数据扩充:深度生成模型 可用于学习目标图像上丰富的概率分布,并生成具有变化的新样本。生成对抗网络(generative adversarial network,GAN 28] 是生成模型中较有代表性的一类,是由 Goodfellow 等人于 2014 年提出来的一种新颖的生成模型框架。GAN 包含生成器( generator G ) 和判别器(discriminator D )两个神经网络。训练 G D 的过程可以看作是造假团队 G 与警察团队 D 之间的一种相互博弈。造假团队 G 的目标是生成以假乱真的图片,而警察团队 D 的目标是判别图片的真假。两者通过不断地对抗来提高自己的水平[29] 。直到警察团队 D 无法判别图像真假时,说造假团队 G 能够生成骗过警察团队 D 的图像。
        生成对抗网络的基本模型如图 5所示。

        生成式对抗网络巧妙地利用了博弈的思想,将图像生成任务转化为最大最小化目标函数的优化问题。进一步地,又转化为两个神经网络采取梯度下降方法交替训练的问题。
        无论是基于数据扭曲还是基于深度生成模型, 数据增强的手段都是来增加小样本数据,缓解小样本分类中因为缺乏数据导致分类率低的问题。采用数据增强的思路来解决小样本学习问题是人们最常用、最简单的一种方式,并且这种方式相对来说方式较为灵活,选择也很多。基于数据增强的小样本图像分类研究具有普遍通用性,是不可或缺的。
1.3 小样本图像分类数据集
        本节介绍了用于小样本图像分类的公共数据集,如图 6所示。下面列出了数据集的统计数据和常 用实验设置。
        Mini-ImageNet[30] Mini-ImageNet 数据集是另一 个广泛使用的数据集。它由 ImageNet 中选择的 100 个类组成,每个类有 600 张图像。该数据集最初由Vinyals 等人提出,但最近的研究遵循 Ravi Larochelle 提供的实验设置,将 100 个类分为 64 个基类、16个验证类和 20 个测试类。
        Tiered-ImageNet[31] :与 Mini-ImageNet 一样,它是 ILSVRC-12的子集,但Tiered-ImageNet 代表了 ILSVRC- 12 的更大子集( 608 个类,而 Mini-ImageNet 则为 100 个类)。类似于将字符分组为字母的Omniglot Tiered ImageNet将类别分为与 ImageNet 层次结构中较高级别的节点相对应的更广泛的类别,共有 34 个大类别,每个类别包含 10 30 个小类别。数据集分为 20 个基类、6个验证类和 8 个测试类。
        CIFAR- FS[32] CIFAR- Fewshot 数 据 集 建 立 在 CIFAR-100 之上,包含 100 个类,每个类 600 张图像。数据集划分为64 个基类、 16 个验证类和 20 个测试类。
        CUB- 200[33] CUB- 200 数 据 集 全 称 为 Caltech UCSD Birds-200-2011 数据集。 CUB 数据集是一个细粒度的鸟类分类数据集 ,共包含 200 个类别和11 788张图像。数据集通常分为 100 个基类、 50 个验证类和 50 个测试类。
        Omniglot[34] Omniglot 数据集包含 50 个不同字母(语言的 1 623 个不同手写字符)。每一个字符都是由 20 个不同的人通过亚马逊的 Mechanical Turk在线绘制的。每个字符产生了 20 幅图像,相当于1 623 个类,每类 20 个样本。在实验时,取 1 200 个字符进行训练,其余 423 个字符进行测试。此外,将每个图像的大小调整为 28×28 像素,并旋转 90° 作为数据增强。
2 有监督小样本图像分类
2.1 基于元学习的有监督小样本学习
元学习在处理小样本问题时包括元训练( metatraining)和元测试( meta-testing )两个阶段。在元训练阶段,如图 7 所示,基础学习器将面对元学习器提供的许多个独立的监督任务 T ,任务之间所包含样本的类别不完全相同。在每一个任务内,从已有的基础类别集 C base 中随机抽取 N 个类别,从每类样本中抽取 K 个样本(共 N × K 个样本)组成支持集 S 作为基础学习器的输入,再从这 N 类的剩余样本中随机抽取一批作为查询集用于测试。

 

本节回顾了近年来用于小样本图像分类的代表 性有监督元学习方法。调查研究发现,小样本元学
习的一个主流方法是梯度迭代,通过迭代,获得合适的模型,因此众多研究基于迭代的研究思路展开。

 2.2 基于度量学习的有监督小样本学习

Snell 等人 [45] 2017 年提出了原型网络( proto typical network)。原型网络的思想为每个类别在向量空间中都存在一个原型(prototype ),也称为类别中心点。原型网络使用深度神经网络将图像映射成特征向量,对于同属一个类别的样本,求得这一类样本向量的平均值作为该类别的原型。通过不断训练模型和最小化损失函数,使同一类别的样本距离更加接近,不同类别的样本更加远离,从而更新嵌入函数的参数。原型网络思路架构如图 8 所示,在原型网络中 f g 是参数共享的嵌入网络,这种思路框架也是许多后续基于度量的小样本学习方法的基石。
早期的小样本度量学习方法,如孪生网络( Siamese network)和匹配网络( matching network),通过测 量和比较查询样本与支持样本的距离来对查询样本 进行分类。孪生卷积神经网络( Siamese convolutional  neural network [46] 是首个用于一次性图像分类的深度 度量学习方法。孪生网络首先在文献 [47] 中引入,由 两个具有相同架构和共享权重的子网络组成。孪生 神经网络可以提取两个输入图片在同一分布域的特 征,从而判断两个输入图片的相似性。匹配网络 [48]
整个支持集的上下文中使用不同的网络对支持和查询图像进行编码,并且将情景训练引入小样本分类,支持图像通过双向 LSTM 网络嵌入。该网络不仅考虑图像本身,还考虑集合中的其他图像;查询图像通过具有注意机制的 LSTM 嵌入,以启用对支持集的依赖。早期度量学习方法特征学习能力有限,鲁棒性较差,无法达到理想的效果。这些方法为度量学习建立了理论基础,近几年度量学习方法在此基础上取得了较好的效果。
很多研究者将度量学习下小样本学习目光放在 了特征问题上,通过有效提取特征之间的关联性,来提高小样本图像分类的准确率。
子空间是度量学习经常用到的一种方法。 Simon等人[49] 2020 年提出了深度子空间网络( deep sub space networks, DSN )。引入小样本构建的动态分类器,为小样本学习提供了一个框架。通过使用子空间来扩展现有的动态分类器。子空间方法被用作动态分类器的中心块,这种建模会导致对扰动异常值的鲁棒性。还引入了一个判别公式,在训练期间鼓励子空间之间的最大区分,并在监督和半监督的小样本分类任务上产生较有竞争力的结果。
Hou 等人 [50] 2019 年提出了一种新颖的交叉注意网络(cross attention network CAN )来解决小样本 分类问题,CAN 引入交叉注意力模块来处理看不见类的问题。该模块为每一对类特征和查询样本特征生成交叉注意力图,以突出目标对象区域,使提取的特征更具判别力。其次提出了一种转导推理算法来缓解低数据问题,该算法迭代地利用未标记的查询集来扩充支持集,从而使类特征更具代表性。
国内 Zhang 等人 [51] 也在 2020 年提出了具有可微推 土 机 距 离 和 结 构 化 分 类 器(deep earth mover ’s distance, DeepEMD )的小样本图像分类。地球移动距(earth mover s distance, EMD )可以作为度量来计 算密集图像表示之间的结构距离,以确定图像相关性。EMD 生成具有最小匹配成本的结构元素之间的最佳匹配流,用于表示分类的图像距离。EMD 中的最佳匹配流参数和特征嵌入中的参数以端到端的方式进行训练。为了生成 EMD 公式中元素的重要权重, Zhang等人设计了一种交叉引用机制,可以有效地减少由杂乱的背景和较大的类内外观变化造成的影响。
通过设计归纳偏差提出一种新颖的特征学习方 法。Rizve 等人 [52] 2021 年提出了小样本学习不变和等变表示的互补优势,实现了输入变换所需的特征,可以提供更好的区分。专注于转换判别的特征对于类判别不是最优的,而是有助于学习数据结构的等变属性,从而获得更好的可迁移性。
CAN DSN DeepEMD 和互补优势等方法从度量学习的特征角度入手,通过设计有效的特征学习
方法,使得小样本学习性能得以提升。也有众多研究者从度量学习其他角度来解决小样本图像分类问题,如质心、类空间等方法,并同样使得性能得到提升。

 基于质心的方法通过最近邻规则实现了较好分 类性能。Liu等人[53]认为这些方法本质上忽略了每类分布,由于类内方差的多样性,决策边界是有偏差的。Liu 等人在 2021 年提出了用于改进小样本分类的类度量尺度机制(class-wise metric scalingCMS)。CMS 使得度量标量在训练阶段被设置为可学习的参数,有助于学习更具区分性和可转移性的特征表示。CMS 构建了一个凸优化问题来生成一个最优标量向量,以优化最近邻决策。CMS 可以应用于训练 和测试阶段,充分利用类分布之间的信息来解决小样本问题。

从基集类空间的角度来看,研究者要么侧重于通过常规预训练来利用全局视图下的所有类,要么

更注重采用情节式的方法在局部视图中对少数类内的元任务进行训练。Zhou等人[54]2021年提出小样本分类的双目互学习(binocular mutual learningBML)。 BML通过视图内和交叉视图建模来实现全局视图和 局部视图的兼容。全局视图在整个类空间中学习以捕捉丰富的类间关系。同时,局部视图在每一集的局部类空间中学习,专注于正确匹配正对。此外,跨视图交互进一步促进了协作学习和对有用知识的隐性探索。由于这两个视图捕获了互补的信息,大大提高了分类的准确性。

选择一个距离度量来直接计算查询和支持图像 之间的距离以进行分类,然而这些方法中的大多数
使用图像级池表示进行分类,可能会失去相当大的 判别性局部线索,这些线索在类之间享有良好的可转移性。Wu 等人 [55] 2021 年通过将自动零件挖掘过程集成到 FSL 的基于度量的模型中,提出了一个端到端的任务感知零件挖掘网络(task-aware part mining network, TPMN )。 TPMN 设计了一个元过滤器学习器,以元学习方式基于任务嵌入生成任务感知部分过滤器。任务感知部分过滤器可以适应任何单个任务,并自动挖掘与任务相关的本地部分,即使是看不见的任务。其次,提出了一种自适应重要性生成器来识别关键的局部部分,并将自适应重要性权重分配给不同的部分。

 

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

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

相关文章

UE4/5Niagara粒子特效之Niagara_Particles官方案例:1.1->1.4

目录 1.1-Simple Sprite Emitter ​编辑 发射器更新 粒子生成 粒子更新 1.2-Simple Sprite Emitter 发射器更新 粒子生成 粒子更新 渲染 1.3-Simple GPU Emitter 属性 发射器更新 粒子生成 粒子更新 1.4-Sprite Facing 发射器更新 粒子生成 粒子更新 通过对官方…

Web菜鸟入门教程 - Radis实现高性能数据库

Redis是用C语言开发的一个高性能键值对数据库,可用于数据缓存,主要用于处理大量数据的高访问负载。 也就是说,如果你对性能要求不高,不用Radis也是可以的。不过作为最自己写的程序有高要求的程序员,自然是要学一下的&a…

博客系统之单元测试

对博客系统进行单元测试 1、测试查找已存在的用户 测试名称 selectByUsernameTest01 测试源码 //查找用户,存在 Test public void selectByUsernameTest01 () { UserDao userDao new UserDao(); String ret1 userDao.selectByUsername("张三").toStr…

【C++数据结构】智能指针的构建

文章目录 一、构建智能指针的原因二、智能指针分析三、实现智能指针数据结构使用的编译器创建Qt控制台项目 智能指针的构建新文件结构创建指针成员实现析构函数构造函数操作符重载成员函数的实现拷贝构造函数和""重载操作符 四、代码一览总结 一、构建智能指针的原因…

通过 kk 创建 k8s 集群和 kubesphere

官方文档:多节点安装 确保从正确的区域下载 KubeKey export KKZONEcn下载 KubeKey curl -sfL https://get-kk.kubesphere.io | VERSIONv3.0.7 sh -为 kk 添加可执行权限: chmod x kk创建 config 文件 KubeSphere 版本:v3.3 支持的 Kuber…

中睿天下受邀参加第六届电力信息通信新技术大会并发表主题演讲

2023年8月9-11日,中国电力企业联合会科技开发服务中心以“加快数字化转型助力新型电力系统建设”为主题,在杭州举办2023年(第六届)电力信息通信新技术大会暨数字化发展论坛。 大会旨在加快推进“双碳”目标下的新型能源体系和新型…

【电商领域】Axure在线购物商城小程序原型图,品牌自营垂直电商APP原型

作品概况 页面数量:共 60 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:网上商城、品牌自营商城、商城模块插件 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本作品为品牌自营网上商城…

前端技术Vue学习笔记--004

Vue学习 文章目录 Vue学习一、scoped解决样式冲突二、data必须是一个函数三、组件通信3.1、组件关系3.2、组件通信解决方案3.3、父传子通信3.4、子传父通信3.5、组件通信案例 四、prop语法4.1、prop语法基础语法4.2、 <font color blue>prop校验4.3、prop&data、单向…

流程图用什么软件做?这几款常用软件了解一下

流程图用什么软件做&#xff1f;流程图是在工作中非常常见的一种图形&#xff0c;它可以清晰地展示一个流程的步骤和流向。在工作中&#xff0c;我们经常需要制作各种流程图&#xff0c;如项目流程图、销售流程图等&#xff0c;以便更好地组织和管理工作。那么&#xff0c;应该…

boot-admin整合flowable官方editor-app源码进行BPMN2-0建模

boot-admin整合flowable官方editor-app源码进行BPMN2-0建模&#xff08;续&#xff09;书接上回 项目源码仓库github项目源码仓库gitee boot-admin 是一款采用前后端分离模式、基于SpringCloud微服务架构的SaaS后台管理框架。系统内置基础管理、权限管理、运行管理、定义管理…

Spark第三课

1.分区规则 1.分区规则 shuffle 1.打乱顺序 2.重新组合 1.分区的规则 默认与MapReduce的规则一致,都是按照哈希值取余进行分配. 一个分区可以多个组,一个组的数据必须一个分区 2. 分组的分区导致数据倾斜怎么解决? 扩容 让分区变多修改分区规则 3.HashMap扩容为什么必须…

【源码篇】ThreadLocal源码解析(主打的就是通俗易懂,言简意赅)

文章目录 ThreadLocal学习笔记前言1、TheadLocal基本介绍2、ThreadLocal基本使用3、体验ThreadLocal的优点3.1 ThreadLocal与synchronized的比较3.2、ThreadLoca的应用场景 4、ThreadLocal的内部原理4.1 ThreadLocal内部结构4.2 ThreadLocal常用方法分析4.2.1 set原理分析4.2.2…

10.4K Star!程序员为程序员针对性优化的开源免费笔记

平时我一直用Notion来记录内容为主&#xff0c;但也一直关注着其他开源产品。上周正好看到一款非常受欢迎的开源免费笔记&#xff0c;今天就推荐给大家&#xff1a;VNote。 VNote一个由程序员为程序员打造的开源笔记应用&#xff0c;基于Qt开发&#xff0c;专注于使用 Markdown…

视觉三维重建第一课

0. 简介 对于视觉而言&#xff0c;想要获得比较精细的地图信息&#xff0c;这离不开地图的三维重建。三维重建&#xff08;3D Reconstruction&#xff09;的定义就是&#xff0c;从一堆二维图像中恢复物体的三维结构&#xff0c;并进行渲染&#xff0c;最终在计算机中进行客观…

【Math】特征值和奇异值辨析

奇异值和特征值都描述了一个矩阵的一些特性&#xff0c;但很多情况下&#xff0c;对于两者之间的区别和联系都不太清楚。 本文就这两者进行解析&#xff0c;并对奇异值的一些简单应用进行探索。 奇异值与特征值的定义 奇异值与特征值都被用于描述矩阵作用于某些向量的标量&am…

智能排水解决方案,设备实时监控+预测分析,真正实现“无人值守”!

什么是矿山排水 随着煤炭开采深度不断增加&#xff0c;地质条件也愈加复杂&#xff0c;井下综采作业会面临越来越高的渗水风险。为确保井下综采作业安全&#xff0c;需要设置大量排水系统&#xff0c;在矿山建设和生产过程中排除进入矿山的地下水和地表水。矿井排水系统是保障…

【C++】C++ 语言对 C 语言的加强 ① ( 实用性增强 - 变量任意位置定义 | register 关键字增强 - 自动进行寄存器优化 )

文章目录 一、实用性增强 - 变量任意位置定义二、register 关键字增强 - 自动进行寄存器优化 一、实用性增强 - 变量任意位置定义 C 语言定义变量位置 : 在 C 语言中 , 函数作用域中使用到的变量 , 必须在 作用域 开始的位置定义 , 一旦开始编写代码逻辑后 , 在逻辑代码行之间 …

【100天精通python】Day39:GUI界面编程_PyQt 从入门到实战(下)_图形绘制和动画效果,数据可视化,刷新交互

目录 专栏导读 6 图形绘制与动画效果 6.1 绘制基本图形、文本和图片 6.2 实现动画效果和过渡效果 7 数据可视化 7.1 使用 Matplotlib绘制图表 7.2 使用PyQtGraph绘制图表 7.3 数据的实时刷新和交互操作 7.3.1 数据的实时刷新 7.3.2 交互操作 7.4 自定义数据可视化…

vue实现穿梭框,ctrl多选,shift多选

效果图 代码 <template><div class"container"><!--左侧--><div><div class"title">{{ titles[0] }}</div><div class"layerContainer"><div v-for"item in leftLayerArray":key"…

Flink之时间语义

Flink之时间语义 简介 Flink中时间语义可以说是最重要的一个概念了,这里就说一下关于时间语义的机制,我们下看一下下面的表格,简单了解一下 时间定义processing time处理时间,也就是现实世界的时间,或者说代码执行时,服务器的时间event time事件时间,就是事件数据中所带的时…