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

【学习笔记】元学习如何解决计算机视觉少样本学习的问题?

目录

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 算法步骤

  1. 首先,对于每个任务,从模型的参数开始,并计算出损失函数。
  2. 然后,使用梯度下降法更新模型的参数以最小化损失函数。
  3. 在所有任务上重复这个过程几次(这被称为内部循环)。
  4. 然后,计算出在所有任务上的平均损失,并使用这个损失来更新模型的参数(这被称为外部循环)。
  5. 重复这个过程,直到模型的性能达到满意的水平。

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)

主要用于处理少样本学习和相似性比较问题。在计算机视觉中,孪生网络常常被用于面部识别、签名识别等任务。

算法步骤

  1. 首先,孪生网络由两个完全相同的神经网络组成,这两个网络共享相同的参数。
  2. 然后,将一对样本(例如,两个图像)分别输入到这两个网络中,每个网络会输出一个特征向量。
  3. 接着,计算这两个特征向量之间的距离或相似度。
  4. 最后,根据这个距离或相似度来进行分类或回归。例如,如果距离小于某个阈值,就认为这两个样本属于同一类别。

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)

关系网络是一种特别设计用来处理少样本学习问题的元学习算法。它通过学习一个深度神经网络来度量样本之间的关系,从而进行分类。关系网络的优点是它可以处理任意数量的支持集样本和查询集样本。

算法步骤

  1. 特征提取:首先,使用一个深度神经网络(例如卷积神经网络)来提取样本的特征。将这个网络称为特征提取器。

  2. 计算关系得分:然后,将支持集中的每个样本的特征与查询集中的样本的特征配对,形成一个特征对。将每个特征对输入到另一个深度神经网络中,这个网络被称为关系网络。关系网络的输出是一个关系得分,表示这个特征对中两个样本的相似度。

  3. 分类:最后,将查询集中的样本分类到关系得分最高的支持集样本所属的类别。

注意,因为需要计算支持集中的每个样本与查询集中的每个样本之间的关系得分,关系网络的训练需要大量的计算资源。

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 参考模型或七层模型。 它是一个七层的、抽象的模型体&#xff…...

如何进行SEO优化数据分析?(掌握正确的数据分析方法,让您的网站更上一层楼!)

在互联网时代,SEO优化已经成为了每一个网站运营者必备的技能。而在SEO优化中,数据分析更是至关重要的一环。在本文中,我们将会详细介绍如何正确的进行SEO优化数据分析,让您的网站更上一层楼! 数据分析的重要性 数据分…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...