【学习笔记】元学习如何解决计算机视觉少样本学习的问题?
目录
1 计算机视觉少样本学习
2 元学习
3 寻找最优初始参数值方法:MAML
3.1 算法步骤
3.2 代码:使用MAML 和 FO-MAML、任务增强完成Few-shot Classification
4 距离度量方法:Siamese Network,ProtoNet,RN
4.1 孪生网络(Siamese Network)
算法步骤
Siamese Network代码
4.2 原型网络(Prototypical Networks)
算法步骤
ProtoNet代码
4.3 关系网络(Relation Network)
算法步骤
RN代码
5 其他应用于少样本学习的方法
6 参考资料
今天为大家总结元学习解决计算机视觉领域问题的方法,先介绍少样本学习和元学习的概念,然后介绍寻找最优初始参数值和距离度量方法的原理和代码,希望大家看完文章后可以动手实践以便解决现实问题。
1 计算机视觉少样本学习
在工业领域解决计算机视觉问题,例如质检相关工作通常会遇到样本少的情形。这时候就需要采用少样本学习方法。
少样本学习(few-shot leaming)或 k 样本学习(k-shot learning)指的是利用较少的数据点进行学习,k表示数据集各个类别中数据点的数量。
2 元学习
元学习是学习如何学习,这样设计的模型能够快速适应新任务,特别是那些从未见过的新任务。
元学习可以通过较少的标记数据完成,通过学习任务之间的相似性,不是单独学习每个任务。
元学习能够学习到任务之间的共享知识,具备更好的泛化能力。元学习模型在处理新任务时,能够利用已经学习到的知识,而无需从头开始。
元学习的学习过程和框架如下图所示

图片来源:https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/meta_v3.pdf
感谢台湾大学李宏毅教授!大家可以查看李宏毅教授的讲解 第十五节 2021 - 元学习 Meta Learning (一) - 元学习和机器学习一样也是三個步骤_哔哩哔哩_bilibili,我就不重复了。
| 方法 | 学习目标 | 优点 | 典型代表 | 适用场景 |
|---|---|---|---|---|
| 学习最优初始参数值 | 通过在多个任务上进行训练,学习到一个初始参数设置,这个参数设置可以在新任务上通过少量的梯度更新进行快速适应 | MAML可以与任何模型一起使用,只要该模型的参数可以通过梯度下降进行更新 | MAML(Model-Agnostic Meta-Learning) Meta-SGD Reptile | 少样本学习 强化学习 |
| 基于优化 | 学习一个优化器,该优化器可以快速适应新任务 | 直接学习到从损失函数到模型更新的映射,从而在新任务上实现快速适应 | Optimization as a Model for Few-Shot Learning Learning to Learn by Gradient Descent by Gradient Descent | 少样本学习 |
| 基于度量 | 学习距离度量,该度量可以用于比较新任务中的样本 | 利用所有的支持集样本来对查询集样本进行分类,从而在新任务上实现快速适应 | Siamese neural network Relation Network ProtoNet(Prototypical Networks) | 图像分类和对象识别 |
| 基于模型 | 学习一个模型,该模型可以预测新任务的输出 | 可以存储和检索过去的经验,从而在新任务上实现快速适应 | Memory-Augmented Neural Networks | 少样本学习 序列预测 强化学习 |
| 学习网络结构 | 学习一个网络结构,该网络结构可以在新任务上实现最优性能 | 自动搜索最优的网络结构,避免人工设计网络结构的复杂性 | Neural Architecture Search | 自动机器学习AutoML |
李宏毅老师也总结了元学习的应用场景

图片来源:http://speech.ee.ntu.edu.tw/~tlkagk/meta_learning_table.pdf
3 寻找最优初始参数值方法:MAML
MAML试图找到一组模型参数,这组参数能够通过少量的梯度更新步骤快速适应新的任务。
3.1 算法步骤
- 首先,对于每个任务,从模型的参数开始,并计算出损失函数。
- 然后,使用梯度下降法更新模型的参数以最小化损失函数。
- 在所有任务上重复这个过程几次(这被称为内部循环)。
- 然后,计算出在所有任务上的平均损失,并使用这个损失来更新模型的参数(这被称为外部循环)。
- 重复这个过程,直到模型的性能达到满意的水平。
3.2 代码:使用MAML 和 FO-MAML、任务增强完成Few-shot Classification
MAML的挑战是需要计算二阶梯度,这在计算上可能会比较昂贵。有一些变体如FOMAML(First-Order MAML)和REPTILE,只需要计算一阶梯度,从而降低了计算复杂性。
- 源代码:https://github.com/virginiakm1988/ML2022-Spring/blob/main/HW15/HW15.ipynb
- 源代码说明幻灯片:https://github.com/virginiakm1988/ML2022-Spring/blob/main/HW15/HW15.pdf
- 配套练习说明视频:2022 - 作业说明 HW15_哔哩哔哩_bilibili
- Building MAML From Scratch代码:
https://github.com/PacktPublishing/Hands-On-Meta-Learning-with-Python/blob/master/Chapter06/6.5%20Building%20MAML%20From%20Scratch.ipynb
4 距离度量方法:Siamese Network,ProtoNet,RN
4.1 孪生网络(Siamese Network)
主要用于处理少样本学习和相似性比较问题。在计算机视觉中,孪生网络常常被用于面部识别、签名识别等任务。
算法步骤
- 首先,孪生网络由两个完全相同的神经网络组成,这两个网络共享相同的参数。
- 然后,将一对样本(例如,两个图像)分别输入到这两个网络中,每个网络会输出一个特征向量。
- 接着,计算这两个特征向量之间的距离或相似度。
- 最后,根据这个距离或相似度来进行分类或回归。例如,如果距离小于某个阈值,就认为这两个样本属于同一类别。
Siamese Network代码
https://github.com/PacktPublishing/Hands-On-Meta-Learning-with-Python/tree/master/Chapter02
4.2 原型网络(Prototypical Networks)
原型网络通过创建每个类的原型表示,根据类原型与查询点之间的距离对查询点(新点)进行分类。
算法步骤
- 首先,对于每个类别,计算出该类别下所有样本的特征向量的均值,这个均值向量被称为该类别的“原型”。
- 然后,对于一个新的样本,计算它的特征向量与所有类别的原型之间的距离,将其分类到距离最近的原型所代表的类别。
- 在训练过程中,通过优化一个目标函数来更新模型的参数,这个目标函数基于新的样本与其对应原型之间的距离。
ProtoNet代码
https://github.com/PacktPublishing/Hands-On-Meta-Learning-with-Python/blob/master/Chapter03/3.3%20Omniglot%20Character%20set%20classification%20using%20Prototypical%20Network.ipynb
4.3 关系网络(Relation Network)
关系网络是一种特别设计用来处理少样本学习问题的元学习算法。它通过学习一个深度神经网络来度量样本之间的关系,从而进行分类。关系网络的优点是它可以处理任意数量的支持集样本和查询集样本。
算法步骤
-
特征提取:首先,使用一个深度神经网络(例如卷积神经网络)来提取样本的特征。将这个网络称为特征提取器。
-
计算关系得分:然后,将支持集中的每个样本的特征与查询集中的样本的特征配对,形成一个特征对。将每个特征对输入到另一个深度神经网络中,这个网络被称为关系网络。关系网络的输出是一个关系得分,表示这个特征对中两个样本的相似度。
-
分类:最后,将查询集中的样本分类到关系得分最高的支持集样本所属的类别。
注意,因为需要计算支持集中的每个样本与查询集中的每个样本之间的关系得分,关系网络的训练需要大量的计算资源。
RN代码
https://github.com/PacktPublishing/Hands-On-Meta-Learning-with-Python/blob/master/Chapter04/4.5%20Building%20Relation%20Network%20Using%20Tensorflow.ipynb
5 其他应用于少样本学习的方法
除了元学习,数据增强、迁移学习、自监督学习和零样本学习等方法也可以应用于少样本学习。
自监督学习可以查看我的视频
【专题11:用自监督学习方法解决计算机视觉问题】1.概述和DINOv2原理
幻灯片在这里
【专题11:用自监督学习方法解决计算机视觉问题】1.概述和DINOv2_1sthalf.pdf
6 参考资料
- 元学习:基础与应用(博文视点出品)
- Python元学习:通用人工智能的实现 (印) 苏达桑·拉维尚迪兰 配套代码 https://github.com/PacktPublishing/Hands-On-Meta-Learning-with-Python Meta learning using one-shot learning, MAML, Reptile, and Meta-SGD with TensorFlow
- Meta-Learning | Papers With Code
- A COMPREHENSIVE OVERVIEW AND SURVEY OF RECENT ADVANCES IN META-LEARNING https://arxiv.org/pdf/2004.11149.pdf
- Yisheng Song, Ting Wang, Subrota K Mondal, Jyoti Prakash Sahoo.A Comprehensive Survey of Few-shot Learning: Evolution, Applications, Challenges, and Opportunities. https://arxiv.org/pdf/2205.06743.pdf
- Chelsea Finn, Pieter Abbeel, & Sergey Levine. (2017). Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks.
- Mengye Ren, Eleni Triantafillou, Sachin Ravi, Jake Snell, Kevin Swersky, Joshua B. Tenenbaum, Hugo Larochelle, Richard S. Zemel.Meta-Learning for Semi-Supervised Few-Shot Classification.
- Aniruddh Raghu, Maithra Raghu, Samy Bengio, & Oriol Vinyals. (2020). Rapid Learning or Feature Reuse? Towards Understanding the Effectiveness of MAML.
- https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/meta_v3.pdf
相关文章:
【学习笔记】元学习如何解决计算机视觉少样本学习的问题?
目录 1 计算机视觉少样本学习 2 元学习 3 寻找最优初始参数值方法:MAML 3.1 算法步骤 3.2 代码:使用MAML 和 FO-MAML、任务增强完成Few-shot Classification 4 距离度量方法:Siamese Network,ProtoNet,RN 4.1 孪生网络(Sia…...
【C语言】17-函数-3
1. 链接属性 当组成一个程序的各个源文件分别被编译之后,所有的目标文件以及那些从一个或多个函数库中引用的函数将链接在一起,形成可执行程序。然而,如果相同的标识符出现在几个不同的源文件中时,它们是表示同一个实体,还是表示不同的实体?标识符的链接属性决定如何处理…...
人工智能:为你提供的未来工作岗位
随着科技的快速发展,人工智能(Artificial Intelligence,AI)正逐渐渗透到各个领域。本文探讨一下人工智能可以提供的工作岗位,以期帮助大家更好地了解这个新兴行业的就业前景。 文章目录 1 机器学习工程师2 数据科学家3 自然语言处理工程师4 机器视觉工程…...
HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现。
HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现。 HashMap相关问题 1、你用过HashMap吗?什么是HashMap?你为什么用到它?用过,HashMap是基于哈希表的Map接口的非同步实现, 它允许null键…...
flink学习之广播流与合流操作demo
广播流是什么? 将一条数据广播到所有的节点。使用 dataStream.broadCast() 广播流使用场景? 一般用于动态加载配置项。比如lol,每天不断有人再投诉举报,客服根本忙不过来,腾讯内部做了一个判断,只有vip3…...
PPT架构师架构技能图
PPT架构师架构技能图 目录概述需求: 设计思路实现思路分析1.软素质2.核心输出(office输出) 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,ma…...
STM32微控制器的低功耗模式
STM32微控制器的低功耗模式(Low-power modes):Sleep mode、Stop mode 和 Standby mode。 1.1 Sleep Mode(睡眠模式): 把STM32微控制器当作一位劳累的工人,他在工作过程中需要短暂的休息。在Sleep模式下,微控制器会关闭一部分电路,减小功耗,但仍然保持对中央处理单…...
tensorflow QAT
tensorflow qat https://www.wpgdadatong.com/tw/blog/detail/70672 在边缘运算的重点技术之中,除了简化复杂的模块构架,来简化参数量以提高运算速度的这项模块轻量化网络构架技术之外。另一项技术就是各家神经网络框架(TensorFlow、Pytorc…...
[杂谈]-快速了解LoRaWAN网络以及工作原理
快速了解LoRaWAN网络以及工作原理 文章目录 快速了解LoRaWAN网络以及工作原理1、LoRaWAN网络元素1.1 终端设备(End Devices)1.2 网关(Gateways)1.3 网络服务器(Net Server)1.4 应用服务器(Appli…...
MySQL--MySQL表的增删改查(基础)
排序:ORDER BY 语法: – ASC 为升序(从小到大) – DESC 为降序(从大到小) – 默认为 ASC SELECT … FROM table_name [WHERE …] ORDER BY column [ASC|DESC], […]; *** update...
Vue中启动提示polyfill缺少-webpack v5版本导致
安装 npm i node-polyfill-webpack-plugin 因为我们的项目使用webpack v5,其中polyfill Node核心模块被删除。所以,我们安装它是为了在项目中访问这些模块 vue.config.js文件 const { defineConfig } require("vue/cli-service"); const No…...
Hugging Face实战-系列教程3:AutoModelForSequenceClassification文本2分类
🚩🚩🚩Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在notebook中进行 本篇文章配套的代码资源已经上传 下篇内容: Hugging Face实战-系列教程4:padding与attention_mask 输出我…...
《TCP/IP网络编程》阅读笔记--Socket类型及协议设置
目录 1--协议的定义 2--Socket的创建 2-1--协议族(Protocol Family) 2-2--Socket类型(Type) 3--Linux下实现TCP Socket 3-1--服务器端 3-2--客户端 3-3--编译运行 4--Windows下实现 TCP Socket 4-1--TCP服务端 4-2--TC…...
GitHub使用教程
GitHub使用教程 视频教程一:Github 新手够用指南 | 全程演示&个人找项目技巧放送_哔哩哔哩_bilibili 笔记: README.md编写教程:Typora官方免费版与入门教程__阿伟_的博客-CSDN博客 找开源项目的一些途径 • https://github.com/trendin…...
sql server 分区表
分区表 分区表是在SQL Server 2005之后的版本引入的特性,这个特性允许把逻辑上的一个表在物理上分为很多部分。换句话说,分区表从物理上看是将一个大表分成几个小表,但是从逻辑上看,还是一个大表。 步骤 创建分表区的步骤分为…...
开源许可证概述:GNU, BSD, Apache, MPL, 和 MIT
前言 开源许可证是开源软件分发的基础。它们定义了使用者如何使用,修改,分发开源软件。在这篇文章中,我们将探讨五种常见的开源许可证:GNU通用公共许可证 (GNU GPL),BSD许可证,Apache许可证,Mo…...
java中log使用总结
目录 一、概述1.1. 核心日志框架1.2 门面日志框架 二、最佳实践2.1 核心日志框架API包2.2 门面日志框架依赖2.3 集成使用2.3.1 集成jcl2.3.2 集成slf4j2.3.2.1 slf4j集成单一框架2.3.2.2 slf4j整合混合框架 三、总结3.1 所有相关包3.1.1 核心日志框架包3.1.2 门面日志框架3.1.3…...
【Java】传输层协议TCP
传输层协议TCP TCP报文格式首部长度保留位32位序列号和32位确认应答号标记ACKSYNFINRSTURGPSH 16位窗口大小16位校验和16位紧急指针选项 TCP特点可靠传输实现机制-确认应答超时重传连接管理机制三次握手四次挥手特殊情况 滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流粘…...
计算机网络基础知识(非常详细)
1. 网络模型 1.1 OSI 七层参考模型 七层模型,亦称 OSI(Open System Interconnection)参考模型,即开放式系统互联,是网络通信的标准模型。一般称为 OSI 参考模型或七层模型。 它是一个七层的、抽象的模型体ÿ…...
如何进行SEO优化数据分析?(掌握正确的数据分析方法,让您的网站更上一层楼!)
在互联网时代,SEO优化已经成为了每一个网站运营者必备的技能。而在SEO优化中,数据分析更是至关重要的一环。在本文中,我们将会详细介绍如何正确的进行SEO优化数据分析,让您的网站更上一层楼! 数据分析的重要性 数据分…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
