当前位置: 首页 > news >正文

【博士每天一篇文献-综述】A survey on few-shot class-incremental learning

阅读时间:2023-12-19

1 介绍

年份:2024
作者:田松松,中国科学院半导体研究所;李璐思,老道明大学助理教授;李伟军,中国科学院半导体研究所AnnLab;
期刊: Neural Networks
引用量:30
Tian S, Li L, Li W, et al. A survey on few-shot class-incremental learning[J]. Neural Networks, 2024, 169: 307-324.
image.png
image.png
image.png
是关于少量样本增量学习(Few-shot Class-Incremental Learning, FSCIL)的综述。FSCIL面临的主要挑战包括灾难性遗忘(Catastrophic Forgetting)和过拟合(Overfitting),这些问题严重影响了模型性能。研究FSCIL有助于克服深度学习模型在数据量和获取时间上的限制,提高机器学习模型的实用性和适应性。从理论角度,将FSCIL领域分为五个子类别,包括传统机器学习方法、基于元学习的方法、基于特征和特征空间的方法、重放方法和动态网络结构方法。定义了FSCIL问题,并讨论了与之相关的学习问题,如少量学习、零样本学习、元学习和增量学习。

2 创新点

  1. 综合性研究视角:与以往研究不同,本文综合了少样本学习(Few-shot Learning, FSL)和增量学习(Incremental Learning, IL),专注于介绍和分析少样本增量学习(Few-shot Class-Incremental Learning, FSCIL)。
  2. 新颖的分类方法:提出了一种新的分类方法,将FSCIL领域分为五个子类别,包括传统机器学习方法、基于元学习的方法、基于特征和特征空间的方法、重放方法,以及动态网络结构方法。
  3. 广泛的文献回顾:回顾了30多项理论研究成果和20多项应用研究成果,提供了FSCIL领域的全面概述。
  4. 性能评估:对FSCIL的最新理论研究成果在基准数据集上进行了性能评估,提供了不同方法的优势和局限性的见解。

3 相关研究

3.1 小样本学习(few-shot learning)

  1. 数据增强方法 (Data augmentation methods)
    • 数据增强通过增加现有数据的多样性来缓解数据稀缺问题,而不是收集新数据。
    • 代表性算法:包括基于训练集样本的变换、来自弱标注或未标注数据集的样本变换,以及来自类似数据集的样本变换。还可以训练模型生成新样本或特征,例如使用变分自编码器(VAEs)或生成对抗网络(GANs)。
  2. 基于度量的方法 (Metric-based methods)
    • 基于度量的方法通过计算支持集和查询集样本之间的相似性或距离来在嵌入空间中分类对象。
    • 代表性算法:包括孪生网络(Siamese Network)、匹配网络(Matching Network)和原型网络(Prototypical Network)。这些方法不需要大量数据,而是优化度量以确保相似样本的接近性,不同类别样本的距离。

image.png

  • 孪生网络 (Siamese Networks):孪生网络由两个相同的子网络组成,它们共享相同的参数和权重。每个子网络接收一个输入样本,并提取相应的特征。该架构主要用于计算两个输入样本特征之间的距离或相似度。通过比较特征,孪生网络能够判断样本是否属于同一类别或执行其他相似性度量任务。
  • 匹配网络 (Matching Networks):匹配网络使用注意力机制来动态匹配支持集(support set)和查询集(query set)中的例子。支持集是已知类别的样本集合,查询集是待分类的新样本。通过注意力加权,匹配网络能够聚合来自支持集的信息,为查询样本生成与类别相关的特征表示。这种方法允许模型在分类新样本时,更加关注与样本最相关的已知类别信息。
  • 原型网络 (Prototypical Networks):原型网络通过计算每个类别样本特征的平均值来代表该类别的原型。在嵌入空间中,每个类别由其样本特征的中心点(即原型)表示。该方法假设在嵌入空间中距离原型近的特征更有可能属于同一类别。原型网络利用了类别内部的统计分布,通过计算新样本与各个原型之间的距离来进行分类。
  1. 基于模型的方法 (Model-based methods)
    • 基于模型的方法指设计或使用特定的网络架构来解决少样本学习的挑战。
    • 代表性算法:如记忆增强神经网络(Memory-Augmented Neural Networks, MANN)使用外部记忆空间显式存储类别信息;元网络(Meta Networks)跨任务学习元级知识,并通过快速参数化调整以实现快速泛化。
  2. 基于优化的方法 (Optimization-based methods)
    • 基于优化的方法关注于调整模型的训练策略,以适应有限标注数据的情况。
    • 代表性算法:如模型无关的元学习(Model-Agnostic Meta-Learning, MAML)快速从有限的新数据中学习知识;基于MAML的Reptile简化计算复杂性,将梯度计算从两步减少到一步,提高计算速度。

3.2 小样本类增量学习

image.png
image.png

3.2.1 传统机器学习方法

  1. 监督学习策略 (Supervised learning strategies)
    • 在FSCIL中,模型通过增量过程进行微调,其容量受到新类别样本数据量的限制。为了缓解这一限制,一些研究引入了半监督或无监督数据,以增强学习方法。
    • 代表算法论文:Cui, Xiong, Tavakolian, 和 Liu (2021) 提出了一种在每个增量会话中引入50个未标记数据的半监督学习方法。
  2. 统计分布 (Statistical distribution)
    • 从统计分布的角度来看,解决FSCIL问题涉及对现有数据集的模型拟合和对类别数据分布的预测,这具有很好的模型可解释性。
    • 代表算法论文:Achituve, Navon, Yemini, Chechik, 和 Fetaya (2021) 提出了GP-Tree,这是一个基于树的分层模型,使用Polya-Gamma数据增强来适配高斯过程;Liu, Yang, 等人 (2022) 提出了可学习的分布校准(LDC)方法,该方法使用参数化校准单元(PCU)来初始化每个类别的特征分布。
  3. 函数优化 (Function optimization)
    • 现有方法专注于在新任务学习中克服灾难性遗忘,而Shi, Chen, Zhang, Zhan, 和 Wu (2021) 从函数优化的角度分析了这一问题,并发现在基类上训练期间获得的平坦局部最小值比尖锐最小值具有更好的泛化能力。
    • 代表算法论文:Shi, Chen, Zhang, Zhan, 和 Wu (2021) 提出了在新任务上微调模型参数以减少灾难性遗忘的方法,通过寻找基训练目标函数的平坦局部最小值。

3.2.2 基于元学习的方法

基于元学习的FSCIL方法利用现有知识来解决当前的学习问题,并通过持续的知识积累来提高系统的稳定性和可靠性。原型学习方法通过优化原型的表示来增强模型对新类别的泛化能力,而元过程方法则通过将学习任务转化为元学习目标来提高模型对新知识的适应性。

  1. 原型学习 (Prototype learning)
    • 原型学习的目标是识别一组能够准确代表给定数据集的小样本(原型),然后使用数据点与原型之间的相似性来分类新的数据点或完成其他视觉任务。
    • 代表算法论文:Zheng 和 Zhang (2021) 提出了一种正则化类结构的方法,以调节FSCIL中学习到的类别在嵌入空间中的分布;Zhu, Cao, Zhai, Cheng, 和 Zha (2021) 提出了一种增量原型学习方案,包括随机情节选择和动态关系投影。
  2. 元过程 (Meta process)
    • 元过程受多任务优化方法MAXL启发,将适应新知识和保留旧知识直接转化为一个元目标,模仿元测试过程中的场景,通过从基础类别中采样一系列增量任务。
    • 代表算法论文:Chi 等人 (2022) 提出了MetaFSCIL,它将适应新知识和保留旧知识直接转化为一个元目标;Zou 等人 (2022) 发现使用大边界分类可以提高基础类别的性能,但在学习新类别时会导致性能下降,他们提出了基于边界的CLOM框架来有效解决这个问题。

3.2.3 基于特征和特征空间的方法

基于特征和特征空间的方法通过学习更健壮和高效的特征表示来提高模型对新类别的适应性。

  1. 特征解耦 (Feature decoupling)
    • 特征解耦涉及将特征划分为不同的表示,使模型能够集中注意力在更相关的信息上。特征的解耦可以导致低频成分在保留旧知识方面发挥更重要的作用。
    • 代表算法论文:Zhao 等人 (2021) 使用离散余弦变换来解耦特征,并提出了频率感知正则化方法来增强特征空间之间的学习性能。
  2. 特征空间 (Feature space)
    • 特征空间通过将原始数据映射到低维空间同时保留其有用特征来提高算法的效率。在FSCIL中,新类别数据被投影到由基础或旧类别特征组成的特征子空间中,使模型能够更好地适应新类别。
    • 代表算法论文:Cheraghian, Rahman, Ramasinghe 等人 (2021) 提出了一种混合子空间方法来描述数据的视觉和语义域分布,有助于避免遗忘旧类别;Kim, Han, Seo, 和 Moon (2023) 提出了WaRP方法,它结合了寻找损失函数平坦最小值的F2M方法和参数微调的FSLL方法。
  3. 前瞻性学习 (Prospective learning)
    • 前瞻性学习指的是在FSCIL中,模型在基础数据集上训练时就具有向前兼容性能,从而使模型能够更好地处理增量的少量新类别。
    • 代表算法论文:Zhou, Wang, 等人 (2022) 提出了前向兼容训练(FACT),它在特征空间中分配多个虚拟原型作为保留空间,使模型可扩展;Zhou, Ye, 等人 (2022) 提出了LIMIT方法,它通过从基础数据集创建假的FSCIL任务,并通过不同假任务的元学习获得通用特征,为模型准备好面对真实的FSCIL任务。

3.2.4 基于回放的方法

直接重放和生成式重放方法都旨在解决FSCIL中的灾难性遗忘问题,它们通过不同方式重用旧知识来帮助模型学习新任务,同时保持对旧任务的记忆。直接重放依赖于存储旧任务的样本,而生成式重放则依赖于生成模型来模拟旧数据的分布。

  1. 直接重放 (Direct replay)
    • 直接重放方法涉及将之前任务中学习到的信息通过存储旧任务的样本来进行重放,以便在面对新任务时帮助任务求解器。
    • 代表算法论文:Kukleva, Kuehne, 和 Schiele (2021) 提出了一个三阶段框架,使用模型参数约束方法来防止旧知识遗忘,并在第三阶段使用存储的样本进行重放和校准。
  2. 生成式重放 (Generative replay)
    • 生成式重放方法使用生成模型来记忆旧任务数据的分布,并生成样本进行重放,以此来解决直接存储旧数据可能引起的隐私问题。
    • 代表算法论文:Liu, Gu, 等人 (2022) 提出了一种无需数据的重放方案,通过熵正则化鼓励生成器产生接近决策边界的不确定样本;Agarwal, Banerjee, Cuzzolin, 和 Chaudhuri (2022) 提出了一种增量少样本学习生成对抗网络(FSILGAN),用于解决用少量数据近似真实数据分布的问题。

3.2.5 基于动态网络结构的方法

基于动态网络结构的方法通过在运行时根据输入数据特征自动调整网络结构,提高了FSCIL的通用性和减少了过拟合风险。

  1. 神经气体网络 (Neural gas network)
    • 神经气体网络是一种无监督的网络结构,能够学习特征空间的拓扑结构,用于知识表示。在FSCIL中,神经气体网络通过保持其拓扑结构的稳定性来防止遗忘旧类别,并通过动态增长来适应新样本,从而改善对新类别的表示。
    • 代表算法论文:Tao 等人 (2020) 提出了TOPIC框架,使用神经气体网络学习不同类别形成的特征空间的拓扑结构。
  2. 图注意力网络 (Graph attention network)
    • 图注意力网络能够动态处理不同类型的图数据,并根据图中节点和边的重要性做出动态决策。在FSCIL中,图注意力网络用于分类器层,以适应增量任务的变化,并且随着新任务的到来,图中的节点和权重会动态增加。
    • 代表算法论文:Zhang 等人 (2021) 提出了Continually Evolved Classifier (CEC),首先使用基础数据训练网络的背部以获得强大的特征提取能力,然后引入图注意力模型。
  3. 动态神经网络 (Dynamic neural networks)
    • 动态神经网络通过选择性地扩展网络节点来增强特征表示能力,并从模型正则化的角度减少特征漂移。这些网络在增量任务中自适应地扩展,通过压缩网络扩展来丰富特征表示,并动态调整特征空间以适应旧类别的分布。
    • 代表算法论文:Yang 等人 (2021) 提出了可学习的扩展和压缩网络 (LEC-Net),通过选择性地扩展和压缩网络节点来增强特征表示并减少特征漂移;Yang 等人 (2022) 提出了动态支持网络 (DSN),它可以自适应地扩展网络,通过压缩网络扩展来丰富每个增量任务的特征表示,然后通过节点自激活动态压缩和扩展网络,追求紧凑的特征表示,从而缓解过拟合。

image.png
图5展示了在FSCIL(少样本增量学习)中,网络结构如何根据训练数据的动态变化进行调整。通过不同的方式调整网络结构来适应新数据,同时保留对旧数据的记忆。

  • TOPIC方法
    • 展示了TOPIC(Tao et al., 2020)方法,其中样本特征形成了神经图的拓扑结构。当新节点(代表新类别或新样本)被添加到网络中时,TOPIC使用损失约束来更新拓扑结构。这种方法通过维持神经气体(Neural Gas)网络的拓扑稳定性来防止遗忘旧类别,并通过动态增长来适应新样本,从而改善对新类别的表示。
  • CEC方法
    • 展示了CEC(Continually Evolved Classifier,Zhang et al., 2021)方法,该方法将图模型应用于分类器。CEC首先使用基础数据训练网络的背部,以赋予网络强大的特征提取能力。随着新任务的出现和类别数量的增加,分类器的拓扑结构会持续演化,图注意力网络在分类器层中被用来适应增量任务的变化。
  • DSN方法
    • 展示了DSN(Dynamic Support Network,Yang et al., 2022)方法,在训练新类别时,DSN暂时扩展网络节点以学习新类别的特征。学习完成后,DSN通过节点自激活动态压缩和扩展网络,以去除冗余节点,从而提供一种紧凑的特征表示。这种方法通过选择性地扩展和压缩网络节点,增强了增量类别的特征表示能力,并从模型正则化的角度减少了特征漂移。

4 实验分析

(1)准确率
image.png
在CUB-200数据集的增量学习过程中,各种FSCIL方法在每个会话(session)的准确率表现。
image.png
图7展示了CIFAR-100数据集上不同FSCIL(少样本增量学习)方法在帧率(Frames Per Second, FPS)与准确率之间的性能比较**帧率(FPS)**是指模型在一秒钟内能够处理的图像帧数,是衡量模型推理速度的一个重要指标。越靠近图中的右上角,这意味着它在保持高准确率的同时,也具有较高的推理速度。

(1)计算机视觉领域的应用
少样本增量学习在计算机视觉领域的三个主要应用:图像分类、目标检测和图像分割。FSCIL技术在计算机视觉中的广泛适用性,无论是在图像分类、目标检测还是图像分割任务中,都能够有效地处理新类别的增量学习问题,同时减少对旧知识的遗忘。

  1. 图像分类中的应用 (Applications in image classification)
    • FSCIL技术被应用于图像分类,以处理分类任务中新类别的增量学习问题。
    • 例如,Bai等人 (2020) 提出了一种基于线性规划的增量学习分类器,用于高光谱图像分类,以适应新类别的出现。
    • Xiang等人 (2019) 利用元学习的思想,通过属性原型生成模块和属性关系模块,为视频监控中的行人属性识别任务生成新的分类权重。
  2. 目标检测中的应用 (Applications in object detection)
    • 目标检测领域中,FSCIL技术使计算机系统能够通过少量样本学习检测新的物体类别。
    • Kang等人 (2019) 提出了一个新颖的少样本检测模型,但该模型无法在开放环境中增量学习新目标。
    • Perez-Rua等人 (2020) 提出了ONCE模型,基于CenterNet方法,通过元学习算法为每个新类别训练一个类特定代码生成器,用于增量少样本目标检测问题。
  3. 图像分割中的应用 (Applications in image segmentation)
    • 图像分割任务要求对图像中的每个像素进行分类,比图像分类更具挑战性。
    • Cermelli等人 (2021) 提出了PIFS方法,结合原型学习和知识蒸馏,用于增量少样本语义分割。
    • Ganea等人 (2021) 提出了iMTFA方法,用于增量少样本实例分割,通过重用在基础类别上预训练的Mask R-CNN网络,并使用余弦相似性分类器来表示每个类别。

(2)FSCIL技术在不同领域的应用

  1. 计算机视觉中的少样本增量学习 (Few-shot incremental learning in computer vision)
    • FSCIL技术起源于计算机视觉领域,已经广泛应用于图像分类、目标检测和图像分割等任务。
    • 例如,在高光谱成像的分类问题上,提出了基于线性规划的增量学习分类器来应对新类别的识别需求。
  2. 目标检测中的应用 (Applications in object detection)
    • 目标检测是计算机视觉中的一个重要任务,FSCIL技术在此领域的应用允许计算机系统通过少量样本学习检测新对象。
    • 例如,Kang等人 (2019) 提出了一种新颖的少样本检测模型,但由于模型缺乏从数据流中增量学习新目标的能力,限制了其在开放环境和边缘设备中的实际部署。
    • 后续研究如Perez-Rua等人 (2020) 提出的ONCE模型,基于CenterNet方法,通过元学习算法为每个新类别训练一个类特定代码生成器,以注册新类别。
  3. 图像分割中的应用 (Applications in image segmentation)
    • 图像分割任务比图像分类和目标检测更具挑战性,因为它需要对每个像素进行分类。
    • 实例分割作为图像分割的一个子任务,比语义分割更困难,因为它需要区分不同实例之间的边界。
    • 例如,Cermelli等人 (2021) 提出了PIFS方法,结合原型学习和知识蒸馏来解决增量少样本语义分割问题;Ganea等人 (2021) 提出了iMTFA方法,用于解决增量少样本实例分割问题。

5 思考

(1)算法的优缺点总结

  1. 传统机器学习方法
    • 优点:通过精心设计的监督学习策略和引入额外数据,可以有效提升模型性能;增强了模型的可解释性。
    • 缺点:统计分布建模过程复杂,可能难以处理。
  2. 基于元学习的方法
    • 优点:提高了模型的灵活性和适应性,能够快速适应新任务。
    • 缺点:对元训练集高度依赖,假设所有任务来自相同或相似的数据分布,可能在增量任务的数据分布与基础类别不同时影响模型性能。
  3. 基于特征和特征空间的方法
    • 优点:学习更健壮和高效的特征表示,特别是前瞻性学习方法在处理未见样本方面具有天然优势。
    • 缺点:文中未明确指出,但通常这类方法可能需要精心设计的特征提取机制,且可能在高维数据上面临维度灾难。
  4. 基于重放的方法
    • 优点:直接解决灾难性遗忘问题,通过重放旧任务样本来帮助模型学习新任务。
    • 缺点:直接重放受限于存储空间、样本选择和隐私问题;生成式重放虽提供更灵活的方法,但存在训练复杂性和生成数据质量不佳的问题。
  5. 基于动态网络结构的方法
    • 优点:适应不断变化的数据流,通过调整模型结构或类间关系来学习新知识,同时保留旧知识,适合于处理增量学习和少样本学习问题。
    • 缺点:文中未明确指出,但这类方法可能在网络结构调整和优化上较为复杂,需要平衡模型的稳定性和可扩展性。

(2)稳定性与可塑性的关系
稳定性指的是模型保持已学习知识的能力,抵抗新输入引起的变化。高稳定性的模型在旧数据上表现良好,但在接受新数据时可能表现不佳。可塑性指的是模型适应新输入或新任务的能力。随着可塑性的增加,模型在新数据上的泛化能力得到提升,但同时可能会逐渐遗忘旧数据。稳定性和可塑性通常不可兼得,模型需要在这两者之间找到平衡点。
image.png
(3)少样本学习、单样本学习、零样本学习、元学习 、迁移学习、增量学习的概念

  1. 少样本学习 (Few-shot Learning, FSL):
    • 少样本学习的目标是使机器学习模型能够在只学习了大量数据的少数类别之后,通过少量样本快速学习新类别。这受到人类快速学习能力的启发。
  2. 单样本学习 (One-shot Learning):
    • 单样本学习是少样本学习的一个特例,其中每个新类别只有一个或非常少的标记样本。这种情况下,先前学习的类别可以帮助预测新类别。
  3. 零样本学习 (Zero-shot Learning, ZSL):
    • 零样本学习是一种情况,其中学习任务的数据集中没有包含新类别的标记样本。模型通过使用类别的语义属性信息来识别新样本的类别。
  4. 元学习 (Meta Learning):
    • 元学习,或称为“学会学习”,是一个过程,它涉及从多个学习经历中提取经验,并使用这些经验来提升未来的学习表现。元学习特别适用于少样本学习,因为它允许模型从少量样本中快速学习新任务。
  5. 迁移学习 (Transfer Learning):
    • 迁移学习关注于跨不同领域或任务的知识转移,使知识能够从数据丰富的领域/任务迁移到数据稀缺的新领域/任务。
  6. 增量学习 (Incremental Learning, IL):
    • 增量学习,也称为持续学习或终身学习,是机器学习的一个领域,它关注于如何使模型在连续处理来自现实世界的信息流的同时,保留、整合和优化旧知识。
  7. FSCIL的变体 (Variants of few-shot class incremental learning):
    • 广义少样本增量学习(Generalized Few-shot Incremental Learning, GFSIL):涉及一个预训练模型,该模型使用有限的实例来学习新类别。目标是维持对旧类别和新类别的分类性能。GFSIL通常只有一个增量阶段,不涉及多个增量学习阶段,且数据分布可能更均匀。并且其数据分割格式与FSCIL不同,例如,CIFAR-100可能被随机分为40、10和50个类别,分别作为元训练、元验证和元测试集。
    • 增量少样本学习(Incremental Few-shot Learning, FSIL):关注于在增量学习过程中处理少量样本的情况。与GFSIL不同,FSIL的基础和增量阶段类别数量可能相同,这与FSCIL中丰富的基础数据设置不同。在FSIL的实验设置中,模型需要在只有少量样本的情况下学习新类别,同时保持对基础类别的记忆。

相关文章:

  • 【已解决】: fatal error: cuda_runtime_api.h: No such file or directory
  • 行业洞察 | 2024应用程序安全领域现状报告
  • Dataweave2 语法教程
  • 【前端项目笔记】8 订单管理
  • python笔记
  • 详细分析Oracle修改默认的时间格式(四种方式)
  • Anaconda创建虚拟环境+Pycharm和Jupyter使用虚拟环境
  • 数据结构--顺序表
  • flink使用StatementSet降低资源浪费
  • 深入探讨JavaScript中的队列,结合leetcode全面解读
  • nvm安装以及idea下vue启动项目过程和注意事项
  • 华为仓颉编程语言
  • SOLID:软件系统设计的五个基本原则
  • [笔记] 高等数学在各工程门类的典型应用场景
  • adb push 报错 ...error: failed to copy...
  • 3.7、@ResponseBody 和 @RestController
  • canvas 绘制双线技巧
  • CentOS 7 修改主机名
  • css选择器
  • JavaScript 一些 DOM 的知识点
  • MQ框架的比较
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Vue.js源码(2):初探List Rendering
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 多线程 start 和 run 方法到底有什么区别?
  • 嵌入式文件系统
  • 巧用 TypeScript (一)
  • 小李飞刀:SQL题目刷起来!
  • 主流的CSS水平和垂直居中技术大全
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #Linux(Source Insight安装及工程建立)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (七)c52学习之旅-中断
  • (十六)串口UART
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET BackgroundWorker
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net core 控制台应用程序读取配置文件app.config
  • .Net7 环境安装配置
  • .net经典笔试题
  • .Net面试题4
  • .Net下的签名与混淆
  • [].slice.call()将类数组转化为真正的数组
  • [2024-06]-[大模型]-[Ollama]- WebUI
  • [Android]Tool-Systrace
  • [Android]使用Retrofit进行网络请求
  • [Angularjs]ng-select和ng-options
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C#]winform部署yolov9的onnx模型
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [C++]二叉搜索树