【综述翻译】A Survey on Machine Learning from Few Samples

A Survey on Machine Learning from Few Samples

小样本机器学习综述

引用:Lu, Jiang, et al. “A survey on machine learning from few samples.” Pattern Recognition 139 (2023): 109480.
论文链接https://arxiv.org/pdf/2009.02653

Abstract 摘要

 小样本学习(FSL)在机器学习领域是一项重要且具有挑战性的研究课题。成功从极少量样本中学习和泛化的能力是人工智能与人类智能之间显著的区别,因为人类可以通过单个或少数例子对新事物建立认知,而机器学习算法通常需要数百或数千个有监督的样本来确保泛化能力。尽管小样本学习早在21世纪初就有了悠久的历史,并且近年来随着深度学习技术的快速发展受到了广泛关注,但至今针对小样本学习的调查或综述却寥寥无几。在此背景下,我们对从2000年至2019年期间发表的300多篇关于小样本学习的论文进行了广泛综述,为小样本学习提供了一份及时且全面的综述。在这篇综述中,我们回顾了小样本学习的发展历程和当前进展,并按照基本原理将小样本学习的方法分为生成模型和判别模型两大类,特别强调了基于元学习(Meta Learning)的小样本学习方法。我们还总结了一些近期出现的小样本学习的扩展性主题,并回顾了这些主题的最新进展。此外,我们强调了小样本学习在许多研究热点中的重要应用,包括计算机视觉、自然语言处理、音频与语音、强化学习与机器人、数据分析等领域。最后,我们对未来的发展趋势进行了讨论,希望能为后续研究提供指导和启示。

1 Introduction 引言

  人类智能的一个显著标志是能够从单个或少数例子中快速建立对新概念的认知。许多认知和心理学证据1 2 3表明,人类可以通过极少量图像来识别视觉对象4,甚至儿童也能通过一次接触来记住一个新的词汇5 6。虽然究竟是什么支持了人类从极少样本中学习和泛化的能力仍然是一个深奥的谜团,但一些神经生物学研究7 8 9认为,人类卓越的学习能力得益于大脑中的前额皮质(PFC)和工作记忆,特别是前额皮质特有的神经生物机制与大脑中存储的既往经验之间的相互作用。相比之下,大多数最前沿的机器学习算法对数据的需求量非常大,尤其是最为广泛知晓的深度学习10,它将人工智能推向了新的高潮。作为机器学习发展的重要里程碑,深度学习在包括视觉11 12 13、语言1415、语音16、游戏17、人口学18、医学19、植物病理学20和动物学21等一系列研究领域都取得了卓越成就。通常来说,深度学习的成功归功于三个关键因素:强大的计算资源(如GPU)、复杂的神经网络(如卷积神经网络CNN11、长短时记忆网络LSTM22)以及大规模数据集(如ImageNet23、Pascal-VOC24)。然而,在许多实际应用场景中,比如医学、军事和金融领域,受限于隐私、安全或高昂的数据标注成本等因素,无法获得足够的有标签训练样本。因此,几乎所有机器学习研究者都迫切希望能够让学习系统从极少样本中高效学习和泛化。

  从更高层面来看,研究小样本学习(FSL)在理论和实践上的意义主要体现在三个方面。首先,FSL方法期望不依赖大规模训练样本,从而避免在某些特定应用中高昂的数据准备成本。其次,FSL可以缩小人类智能与人工智能之间的差距,是开发通用人工智能(universal AI)25所需的重要一步。第三,FSL可以实现对仅有少量样本的新兴任务的低成本和快速模型部署,有助于更早揭示任务中的潜在规律。

  尽管小样本学习(FSL)具备这些令人鼓舞的优点,但由于其固有的难度,过去几十年中 FSL 的研究进展相比大样本学习要缓慢得多。我们从优化的角度来说明这一困难。设想一个通用的机器学习问题,它由一个已准备好的监督训练集 D t = { ( x i , y i ) } i = 1 n D_t = \{(x_i, y_i)\}_{i=1}^n Dt={(xi,yi)}i=1n 描述,其中 x ∈ X x \in X xX y ∈ Y y \in Y yY 是从联合分布 P X × Y P_{X \times Y} PX×Y 中抽取的。学习算法的目标是产生一个映射函数 f ∈ F : X → Y f \in F: X \rightarrow Y fF:XY,使得期望误差 E e x = E ( x , y ) ∼ P X × Y L ( f ( x ) , y ) E_{ex} = E_{(x,y) \sim P_{X \times Y}} L(f(x), y) Eex=E(x,y)PX×YL(f(x),y) 最小化,其中 L ( f ( x ) , y ) L(f(x), y) L(f(x),y) 表示将预测值 f ( x ) f(x) f(x) 与其监督目标 y y y 进行比较的损失函数。

  实际上,联合分布 P X × Y P_{X \times Y} PX×Y 是未知的,因此学习算法通常旨在最小化经验误差 E e m = E ( x , y ) ∼ D t L ( f ( x ) , y ) E_{em} = E_{(x,y) \sim D_t} L(f(x), y) Eem=E(x,y)DtL(f(x),y)。在这种情况下,一个典型的问题是:如果学习算法从中选择函数 f f f 的函数空间 F F F 太大,那么泛化误差 E = ∣ E e x − E e m ∣ E = |E_{ex} - E_{em}| E=EexEem 会变大,从而可能导致过拟合问题的出现。

  我们可以从以下角度重新审视这个问题:
min ⁡ f E e m , s.t. f ( x i ) = y i , ∀ ( x i , y i ) ∈ D t . (1) \min_f E_{em}, \quad \text{s.t.} \quad f(x_i) = y_i, \forall (x_i, y_i) \in D_t. \tag{1} fminEem,s.t.f(xi)=yi,(xi,yi)Dt.(1)
如果 D t D_t Dt 中包含更多的监督样本,则对 f f f 的约束会更多,这意味着函数 f f f 所在的空间会更小,从而有助于良好的泛化。相反,稀缺的监督训练集自然会导致较差的泛化性能。本质上,由每个监督样本形成的约束可以被视为对函数 f f f 的正则化,它能够压缩函数 f f f 冗余的可选空间,从而减少其泛化误差。因此,可以得出结论:如果一个学习算法仅使用基础的学习技术而没有任何复杂的学习策略或特定的网络设计来处理一个小样本学习任务,该学习算法将面临严重的过拟合问题。

  小样本学习(Few Sample Learning,FSL),又称小样本或单样本学习(Small or One Sample Learning)、少样本或单次学习(Few-Shot or One-Shot Learning),最早可以追溯到21世纪初。尽管其研究历史接近20年,并且在理论和应用层面具有重要意义,但至今相关的综述或评论却很少。在本文中,我们对从2000年至2019年几乎所有与FSL相关的科学论文进行了广泛研究,旨在阐明FSL系统性的综述。需要强调的是,这里讨论的FSL与零样本学习(Zero-Shot Learning,ZSL)26是正交的,后者是机器学习的另一个热点话题。ZSL的设定涉及特定概念的辅助信息,以支持跨概念知识转移,这与FSL的设定有很大不同。据我们所知,目前只有两篇与FSL相关的预印本综述2728。与它们相比,本文的创新性和贡献主要来自以下五个方面:

  1. 我们提供了一份更全面且及时的综述,涵盖了从2000年至2019年300多篇与FSL相关的论文,涵盖了从最早的Congealing模型29到最新的元学习(Meta Learning)方法的所有FSL方法。详尽的阐述有助于把握FSL的发展全过程,以及构建FSL的完整知识体系。
  2. 我们提供了一个易于理解的分层分类法,基于FSL问题的建模原理,将现有的FSL方法划分为基于生成模型的方法和基于判别模型的方法。在每个类别中,我们进一步根据其可泛化特性进行更详细的分类。
  3. 我们着重介绍了当前主流的FSL方法,即基于元学习的FSL方法,并根据它们希望通过元学习策略学到的内容将其分为五大类:Learn-to-Measure,Learn-to-Finetune,Learn-to-Parameterize,Learn-to-Adjust和Learn-to-Remember。此外,本综述还揭示了各种基于元学习的FSL方法之间的内在发展关系。
  4. 我们总结了最近涌现的一些超越基础FSL的扩展性研究主题,并回顾了这些主题的最新进展。这些主题包括半监督FSL、无监督FSL、跨领域FSL、广义FSL和多模态FSL,它们虽然具有挑战性,但为解决许多实际的机器学习问题赋予了重要的现实意义。之前的综述很少涉及这些扩展性主题。
  5. 我们广泛总结了FSL在计算机视觉、自然语言处理、音频和语音、强化学习与机器人、数据分析等各种领域的现有应用,以及FSL在基准测试中的性能,旨在为后续研究提供手册参考,这也是之前综述所未探讨的。

  本文的其余部分安排如下:第二节,我们对FSL的整体情况进行概述,包括FSL的发展历程、后续使用的符号和定义,以及提出的现有FSL方法的分类法。基于生成模型的方法和基于判别模型的方法将在第三节和第四节分别详细讨论。随后,在第五节总结了一些FSL的新兴扩展性主题。在第六节中,我们广泛探讨了FSL在各个领域的应用以及FSL在基准测试中的性能表现。最后在第八节,我们对本综述进行了总结并讨论了未来的发展方向。

2 Overview 概述

  在本节中,我们首先在第 2.1 节简要回顾 FSL 的演化历史。然后,在第 2.2 节中引入一些符号和定义。最后,我们在第 2.3 节中提供了现有 FSL 方法的高级分类。

2.1 Evolution History 进化历史

  机器学习的一般机制是使用在先前准备的训练样本上学习到的统计模型对未来数据进行预测。在大多数情况下,模型的泛化能力是由足够数量的训练样本所保证的。然而,在许多现实应用中,我们可能只能获取非常少量的用于新概念的训练数据,极限情况下,每个概念只有一个样本。例如,我们可能需要识别几种罕见的动物,但由于其稀有性,只有几张带注释的图片。同样地,我们可能需要基于移动传感器信息验证一些新用户的身份,而这些用户的历史使用记录可能只有几条。E. G. Miller 等人在 2000 年首次提出了从极少样本中学习的问题 29,他们假设数字变换共享一个密度,并提出了“凝结算法(Congealing algorithm)”来将测试数字图像与特定类别的凝结数字图像相对应。此后,越来越多的研究投入到了小样本学习(FSL)的领域。

  FSL 研究的发展过程可以大致分为两个阶段,非深度阶段(2000 至 2015 年)和深度阶段(2015 年至今),如图 1 所示。分隔这两个阶段的分水岭是 G. Koch 等人在 2015 年首次将深度学习技术与 FSL 问题相结合 30。在此之前,所有针对 FSL 问题提出的解决方案都基于非深度学习,非深度阶段中早期 FSL 的经典方法多基于生成模型。它们试图在非常少的训练样本上估计联合分布 P ( X , Y ) P(X, Y) P(X,Y) 或条件分布 P ( X ∣ Y ) P(X|Y) P(XY),然后从贝叶斯决策的角度为测试样本做出预测。非深度阶段中基于生成模型的 FSL 研究里程碑包括 E. G. Miller 等人的凝结算法 29,L. Fei-Fei 等人提出的变分贝叶斯框架(VBF)31, 32, 33,以及 B. M. Lake 等人提出的贝叶斯程序学习(BPL)34 35 36 37。其中,凝结算法 29 是研究如何从极少样本中学习的最早开创性工作,而 VBF 31 则是首次阐明了“单次学习(one-shot learning)”这一术语。相比较而言,BPL 37 利用人类在认知新概念时具备的组合性、因果性和想象力,实现了与人类水平相当的单次字符分类性能。在非深度阶段中,也有一些基于判别模型的 FSL 方法 38 39 40 41 42 43,尽管在该阶段它们并不是主流。与生成模型相对,基于判别模型的 FSL 方法寻求的是条件分布 P ( Y ∣ X ) P(Y|X) P(YX),它能够在给定一个观察样本时直接预测概率。尽管上述研究取得了一些进展,但 FSL 在非深度阶段的演进依然较为缓慢。

  随着深度学习的蓬勃发展,特别是卷积神经网络(CNN)在视觉任务上的巨大成功 11 12 13,许多 FSL 研究者开始从非深度模型转向深度模型。在 2015 年,G. Koch 等人 30 率先将深度学习引入到 FSL 问题的解决方案中,提出了一个基于 Siamese CNN 的方法来学习成对样本间与类别无关的相似度度量,这标志着 FSL 新时代的开始,即深度阶段。此后,随后的 FSL 方法充分利用了深度神经网络在特征表示和端到端模型优化方面的优势,从数据增强 44、度量学习 45 和元学习 46 等不同角度解决 FSL 问题,将 FSL 研究推入了快速发展的新阶段。尽管在深度阶段也提出了一些基于生成模型的方法,如 Neural Statistician 47 和 Sequential Generative Model 48,但基于判别模型的 FSL 方法主导了 FSL 研究的演变。尤其是近年来,大量基于元学习的 FSL 方法如雨后春笋般涌现,包括 O. Vinyals 等人提出的 Matching Nets 49,C. Finn 等人的 MAML 50,S. Ravi 和 H. Larochelle 提出的 Meta-Learner LSTM 51,A. Santoro 等人的 MANN 52,T. Munkhdalai 和 H. Yu 的 MetaNet 53,J. Snell 等人的 Prototypical Nets 54,F. Sung 等人的 Relation Net 55,以及 H. Li 等人的 LGM-Nets 56 等。值得注意的是,元学习策略已成为 FSL 的主流思想。在这个阶段,这些先进的 FSL 方法已被直接应用或改进以应对计算机视觉、自然语言处理、音频和语音、数据分析、机器人等多个领域的各种应用。同时,越来越多与 FSL 相关的具有挑战性的扩展主题,如半监督 FSL、无监督 FSL、跨领域 FSL、广义 FSL 和多模态 FSL,也被挖掘出来。

  简而言之,FSL 的发展历史见证了从非深度阶段到深度阶段的转变,生成模型和判别模型之间主流方法的交替,以及经典元学习思想的复兴。如今,与 FSL 相关的研究经常出现在机器学习或其应用的许多顶级会议上,吸引了机器学习社区的广泛关注。

2.2 Notations and Definitions 符号和定义

  正式地,我们用 x x x 表示输入数据,用 y y y 表示监督目标,分别用 X X X Y Y Y 表示输入数据的空间和监督目标的空间。一个 FSL 任务 T T T 是由一个特定于 T T T 的数据集 D T = { D trn , D tst } D_T = \{D_{\text{trn}}, D_{\text{tst}}\} DT={ Dtrn,Dtst} 描述的,其中 D trn = { ( x i , y i ) } i = 1 N trn D_{\text{trn}} = \{(x_i, y_i)\}_{i=1}^{N_{\text{trn}}} Dtrn={(xi,yi)}i=1Ntrn D tst = { x j } j = 1 N tst D_{\text{tst}} = \{x_j\}_{j=1}^{N_{\text{tst}}} Dtst={ xj}j=1Ntst,且 x i , x j ∈ X T ⊂ X x_i, x_j \in X_T \subset X xi,xjXTX y i ∈ Y T ⊂ Y y_i \in Y_T \subset Y yiYTY。任务 T T T 的样本 x i , x j x_i, x_j xi,xj 来自于特定领域 D T = { X T , P ( X T ) } D_T = \{X_T, P(X_T)\} DT={ XT,P(XT)},其中包括数据空间 X T X_T XT 和边缘概率分布 P ( X T ) P(X_T) P(XT)。通常, T T T 中有 C C C 个任务类别,每个类别在 D trn D_{\text{trn}} Dtrn 中只有 K K K 个样本(例如 K = 1 K = 1 K=1 K = 5 K = 5 K=5),即 N trn = C × K N_{\text{trn}} = C \times K Ntrn=C×K,因此 T T T 也称为 C C C-way K K K-shot 任务。目标是产生一个目标预测函数 f ∈ F : X → Y f \in F: X \to Y fF:XY,它能够对 D tst D_{\text{tst}} Dtst 中的测试样本进行预测。基于我们在第 1 节的分析,仅利用稀缺的 D trn D_{\text{trn}} Dtrn 来构建高质量的 f f f 是困难的。因此,在大多数情况下,研究人员可以利用一个监督的辅助数据集 D A = { ( x i a , y i a ) } i = 1 N aux D_A = \{(x_i^a, y_i^a)\}_{i=1}^{N_{\text{aux}}} DA={(xia,yia)}i=1Naux,其中 x i a ∈ X A ⊂ X x_i^a \in X_A \subset X xiaXAX y i a ∈ Y A ⊂ Y y_i^a \in Y_A \subset Y yiaYAY。该辅助数据集包含了充分的样本和类别( N aux ≫ N trn N_{\text{aux}} \gg N_{\text{trn}} NauxNtrn ∣ Y A ∣ ≫ ∣ Y T ∣ |Y_A| \gg |Y_T| YAYT),这些样本基于先前已知的概念收集而来。需要注意的是, D A D_A DA 不包含属于 T T T 中类别的数据,即 Y T ∩ Y A = ∅ Y_T \cap Y_A = \emptyset YTYA=,且 D T D_T DT D A D_A DA 的数据来自同一领域,即 D T = D A D_T = D_A DT=DA X T = X A X_T = X_A XT=XA,且 P ( X T ) = P ( X A ) P(X_T) = P(X_A) P(XT)=P(XA),其中 D A = { X A , P ( X A ) } D_A = \{X_A, P(X_A)\} DA={ XA,P(XA)}。这种设定是稳固且合理的,因为 D A D_A DA 很容易从与任务 T T T 相关的许多历史、离线或公开标注良好的数据中获取,尤其是在当今的大数据时代。

  基于这些基础,我们给出了 FSL 的统一定义。定义 1(小样本学习) 给定一个由任务特定数据集 D T D_T DT 描述的任务 T T T,其中仅有少量监督信息可用,以及一个与 T T T 无关的辅助数据集 D A D_A DA(如果存在),小样本学习的目标是为任务 T T T 构建一个函数 f f f,该函数使用 D T D_T DT 中的极少量监督信息以及 D A D_A DA 中的知识将输入映射到目标。

  上述定义中的“与 T T T 无关”一词意味着 D T D_T DT D A D_A DA 中的目标是正交的,即 Y T ∩ Y A = ∅ Y_T \cap Y_A = \emptyset YTYA=。如果 D A D_A DA 涵盖了 T T T 中的类别,即 Y T ∩ Y A = Y T Y_T \cap Y_A = Y_T YTYA=YT,则 FSL 问题将退化为传统的大样本学习问题。特别地,如果 ∣ Y T ∣ = 2 |Y_T| = 2 YT=2,则 T T T 是一个二分类 FSL 任务;如果 ∣ Y T ∣ > 2 |Y_T| > 2 YT>2,那么我们称 T T T 为多分类 FSL 任务。此外,基于上述符号和定义,我们总结了 FSL 的几个重要扩展主题。

  1. 半监督 FSL. 除了 C × K C \times K C×K 个监督样本外, D trn D_{\text{trn}} Dtrn 还包含一些未标记的训练样本。
  2. 无监督 FSL. 虽然 D A D_A DA 包含来自非任务类别的充足样本,但它是完全无监督的。
  3. 跨领域 FSL. D T D_T DT D A D_A DA 中的样本来自两个不同的数据域,即 D T ≠ D A D_T \neq D_A DT=DA
  4. 广义 FSL. 函数 f f f 被要求在联合标签空间 Y T ∪ Y A Y_T \cup Y_A YTYA 上进行推断,而不是仅在单一的 Y T Y_T YT 上。
  5. 多模态 FSL. 它有两种情况:多模态匹配和多模态融合。在前一种情况下,标记样本对 ( x i , y i ) (x_i, y_i) (xi,yi) 中的目标 y i y_i yi 不是简单的类别标签,而是来自与输入 x i x_i xi 不同模态的另一个数据。在后一种情况下,为属于其他模态的输入 x i x_i xi 提供了额外的信息 I i I_i Ii

  关于上述五个扩展主题的详细问题描述和文献综述,我们将在第 5 节中给出。

2.3 Taxonomy 分类

  如图 1 所示,我们根据 FSL 问题的建模原则将 FSL 方法组织为两大类,即基于生成模型的方法和基于判别模型的方法。对于一个测试样本 x j x_j xj,所有 FSL 解决方案都追求以下能够预测类别后验概率的统计模型:
y ^ j = arg ⁡ max ⁡ y ∈ Y T p ( y ∣ x j ) , (2) \hat{y}_j = \arg \max_{y \in Y_T} p(y|x_j), \tag{2} y^j=argyYTmaxp(yxj),(2)
其中 y ^ j \hat{y}_j y^j 表示该模型预测的目标。基于判别模型的 FSL 方法旨在直接建模后验概率 p ( y ∣ x ) p(y|x) p(yx),将 x x x 作为判别模型的输入,输出 x x x 属于 C C C 个任务类别之一的概率分布。相反,基于生成模型的方法则使用贝叶斯决策来解决此问题: p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x , y ) . p(y|x) = \frac{p(x|y)p(y)}{p(x, y)}. p(yx)=p(x,y)p(xy)p(y).因此,式 (2) 中对后验概率的最大化转换为:
y ^ j = arg ⁡ max ⁡ y ∈ Y T p ( x j ∣ y ) p ( y ) , (3) \hat{y}_j = \arg \max_{y \in Y_T} p(x_j|y)p(y), \tag{3} y^j=argyYTmaxp(xjy)p(y),(3)
其中 p ( y ) p(y) p(y) 是目标类别的先验分布, p ( x j ∣ y ) p(x_j|y) p(xjy) 是给定类别 y y y 时数据的条件分布。在大多数情况下, p ( y ) p(y) p(y) 被认为是类别之间的均匀分布,或者根据不同类别中数据的频率比率计算。因此,基于生成模型的 FSL 方法的核心目标是比较 p ( x ∣ y ) , y ∈ Y T p(x|y), y \in Y_T p(xy),yYT

  对于生成模型类别,研究人员通过某些中间潜在变量在 x x x y y y 之间建立联系,以便可以数学计算条件分布 p ( x ∣ y ) p(x|y) p(xy)。该类别中的大多数 FSL 方法需要对潜在变量的分布做出必要的假设。我们将在第 3 节简要讨论基于生成模型的方法。

  对于判别模型类别,总结了三种主流方法,包括数据增强、度量学习和元学习。根据是否使用额外的监督信息(如属性注释、词嵌入等),增强方法进一步分为有监督增强和无监督增强。作为近年来处理 FSL 问题最热门的方式,基于元学习的方法涉及从多种角度实现“学习如何学习”的目标。我们根据元学习策略背后希望被元学习的内容,将现有的基于元学习的 FSL 方法划分为五大类:Learn-to-Measure(学习度量)、Learn-to-Finetune(学习微调)、Learn-to-Parameterize(学习参数化)、Learn-to-Adjust(学习调整)和 Learn-to-Remember(学习记忆)。从广义上讲,Learn-to-Measure 方法属于度量学习的范畴,因为它们都追求一种使同类样本接近、异类样本分离的度量空间。即便如此,我们将 学习度量 方法归入元学习的一个重要依据是它们使用了元学习策略。此外,还有其他一些细分方向用于解决 FSL 问题。我们将在第 4 节回顾基于判别模型的 FSL 方法。

3 Generative model based approaches 基于生成模型的方法

  如第 2.3 节所述,基于生成模型的 FSL 方法试图建模后验概率 p ( x ∣ y ) p(x|y) p(xy)。然而,在大多数情况下,数据 x x x 和目标 y y y 之间的概率关系并不直接。例如,在小样本图像分类中, x x x 表示一张图像, y y y 表示其类别标签,它们之间的数学关系无法直接描述。为了在 x x x y y y 之间建立联系,一个可行的策略是引入一个中间潜在变量 z z z,如下所示:
p ( x ∣ y ) = ∫ z p ( x , z ∣ y ) d z = ∫ z p ( z ∣ y ) p ( x ∣ z , y ) d z . (4) p(x|y) = \int_z p(x, z|y) dz = \int_z p(z|y) p(x|z, y) dz. \tag{4} p(xy)=zp(x,zy)dz=zp(zy)p(xz,y)dz.(4

### 3D 高斯点绘研究综述 #### 定义与背景 3D 高斯点绘(Gaussian Splatting)是一种用于表示和渲染复杂三维场景的技术,通过将几何形状建模为一系列高斯分布来实现高效且高质量的视觉效果。这种方法不仅能够处理复杂的表面细节,还能有效应对光照变化等问题[^1]。 #### 关键技术与发展历程 早期的工作主要集中在如何有效地构建这些高斯分布以及优化其参数以适应不同的应用场景需求上。随着硬件性能提升和技术进步,近年来出现了更多基于学习的方法,它们可以自动从数据中提取特征并调整模型结构,从而进一步提高了生成图像的真实感度和计算效率[^2]。 #### 应用领域 - **自动驾驶**:利用3D高斯点绘可以在虚拟环境中创建逼真的交通状况模拟,帮助训练车辆感知算法识别行人和其他障碍物。 - **目标检测**:通过对物体周围环境进行精确描述,使得机器能够在杂乱背景下准确定位感兴趣的目标对象。 - **人像重建**:结合RGB摄像头获取的人体姿态信息,采用该技术可实现实时三维人体姿势估计,在娱乐、医疗等领域具有广泛的应用前景[^3]. ```python import numpy as np from scipy.stats import multivariate_normal def gaussian_splatting(points, covariances): """ Perform Gaussian splatting on given points. Args: points (np.ndarray): Array of shape (N, D), where N is the number of points, and D represents dimensions. covariances (list[np.ndarray]): List containing covariance matrices corresponding to each point. Returns: tuple: A pair consisting of mean positions and their associated weights after applying Gaussian kernels. """ means = [] weights = [] for i in range(len(points)): rv = multivariate_normal(mean=points[i], cov=covariances[i]) weight = rv.pdf(points) means.append(points[i]) weights.append(weight) return np.array(means), np.array(weights).reshape(-1, 1) # Example usage if __name__ == "__main__": sample_points = np.random.rand(50, 3) * 10 - 5 # Generate random points within [-5, 5]^3 space example_covs = [np.eye(3)]*len(sample_points) # Use identity matrix as initial guess for all samples result_means, result_weights = gaussian_splatting(sample_points, example_covs) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值