精读Relational Embedding for Few-Shot Classification (ICCV 2021)

Relational Embedding for Few-Shot Classification (ICCV 2021)

一、摘要

该研究提出了一种针对少样本分类问题的新方法,通过元学习策略来学习“观察什么”和“在哪里关注”。这种方法依赖于两个关键模块:自相关表示(SCR)和交叉相关注意力(CCA),来分别处理图像内部和图像之间的关系模式。

  • 自相关表示(SCR)模块:用于捕捉单个图像内的结构化模式,通过转换基础特征图为自相关张量,从而提取出图像内部的关系信息。
  • 交叉相关注意力(CCA)模块:旨在学习不同图像之间的关系,通过计算和学习两个图像表示之间的交叉相关性,以及它们之间的共同注意力。

这两个模块被集成在关系嵌入网络(RENet)中,该网络能够端到端地学习图像的关系嵌入。这种关系嵌入有助于在处理少样本学习任务时,更好地识别和分类图像。

在四个广泛使用的少样本分类基准数据集(miniImageNet, tieredImageNet, CUB-200-2011, 和CIFAR-FS)上的实验评估显示,该方法与现有的最先进方法相比,取得了一致的性能提升。

简而言之,这项研究通过深入挖掘图像内外的关系模式,为解决少样本分类问题提供了一种新的视角和有效方法。

二、引言

该研究针对少样本图像分类问题,提出了一种基于关系模式学习的新方法。这种方法通过元学习深度嵌入函数来解决从极少量样本中学习新视觉概念的挑战,同时克服了传统方法中的过拟合问题。研究的核心理念是,相比于单个特征模式,关系模式(即元模式)具有更好的泛化能力,因为一个项目的意义是通过与系统中其他项目的比较来获得的。基于这个原理,提出了从关系角度学习“观察什么”和“在哪里关注”的策略,并将其融合以生成少样本学习的关系嵌入。

解决方案主要包含两个模块:

  1. 自相关表示(SCR)模块:转换基础表示为自相关张量,并学习从中提取结构化模式,捕获特征图中每个激活与其邻域的相关性,从而编码丰富的语义结构。
  2. 交叉相关注意力(CCA)模块:计算两个图像表示之间的交叉相关性,并从中学习产生共注意力,捕捉两图像间的语义对应关系。

这两个模块的结合,以端到端的方式学习关系嵌入,旨在图像内部提取自相关模式(通过SCR),在图像之间生成关系注意力(通过CCA),并整合这些信息来产生用于少样本分类的嵌入。通过在几个标准数据集上的实验验证,该方法有效地提高了少样本图像分类的准确性,展示了利用图像内部和图像间关系模式的强大能力。

三、相关工作

在“相关工作”部分,作者概述了针对少样本分类问题的现有方法,并将这些方法大致分为三类:基于度量的方法、基于优化的方法和基于迁移学习的方法。此外,该部分还特别讨论了自相关和交叉相关的概念及其在视觉任务中的应用,从而为提出的方法提供了理论和技术背景。

少样本分类方法的三种主要方向:

  1. 基于度量的方法:旨在学习将图像映射到一个度量空间的嵌入函数,其中图像对的相关性基于它们之间的距离来区分。这是作者所采用的方法。
  2. 基于优化的方法:通过元学习的方式,学习如何根据少量支持样本在线快速更新模型。
  3. 基于迁移学习的方法:表明通过早期的预训练和随后的微调,标准的迁移学习程序对于使用深度骨干网络进行少样本学习是一个强大的基线。

特殊关注的技术概念:

  • 自相关(Self-correlation):通过测量图像内局部区域与其邻域的相似性,揭示图像的结构布局。近期的工作将自相关作为深度神经网络中的中间特征转换,证明它有助于学习有效的语义对应、图像翻译和视频理解的表示。
  • 交叉相关(Cross-correlation):长期以来被用作计算机视觉中广泛的对应相关问题的核心组件。近期的少样本分类方法采用查询和每个支持之间的交叉相关,以识别分类的相关区域,但这些方法常常受到外观变化大导致的不可靠相关的影响。

本文贡献的总结:

  • 提出了用于少样本分类的自相关表示方法,从图像内部提取可迁移的结构模式。
  • 提出了用于少样本分类的交叉相关注意力模块,通过卷积滤波学习图像之间的可靠共注意力。
  • 在四个标准基准数据集上的实验显示,本文方法达到了最先进的水平,且通过消融研究验证了组件的有效性。

这一部分为读者提供了该研究背景的深入理解,展示了其相对于现有工作的创新点和优势,特别是在处理自相关和交叉相关以提高少样本分类性能方面的新颖贡献。

四、Renet的整体架构

在这里插入图片描述

在少样本学习和元学习领域,"episodes"的概念是模仿人类学习方式而设计的一种训练策略。这种策略旨在让模型通过处理多个小任务(即episodes),来提高其对新任务的适应能力,尤其是在数据量有限的情况下。每个episode都旨在模拟一个小的学习任务,包含从多个类别中选取的少量样本,这些样本被分为support set和query set。

Support Set

Support set(支持集合)包含了一定数量的样本和对应的标签,这些样本代表了当前episode中模型需要学习的类别。在N-way K-shot任务中,support set包含了N个类别,每个类别有K个样本,模型使用这些有标签的样本来学习或调整其参数。

Query Set

Query set(查询集合)包含了另外一些样本(不包括在support set中),模型需要使用在support set上学到的知识来预测这些样本的标签。这些样本用于评估模型在学习了support set提供的信息后,对未见过的样本进行分类的能力。

Episodes 的工作流程

  1. 采样:在训练阶段,从整个训练数据集中随机选择N个类别,并从每个类别中随机选择K个样本构成support set,再选择更多的样本构成query set。

  2. 学习:模型使用support set中的样本和标签来学习或调整其参数。

  3. 测试:然后,模型在query set上进行测试,使用它在support set上学到的知识来预测query set中样本的类别。

  4. 迭代:此过程重复进行,每次都从数据集中采样不同的类别和样本来构建新的episodes,以此方式模型经历了多种不同的学习任务,目的是提高其泛化能力。

为什么使用Episodes

使用episodes的目的是让模型能够适应在只有少量样本可用时对新类别进行学习和分类的场景,即模拟真实世界中经常遇到的学习情况。这种方法尤其适用于少样本学习和元学习任务,因为它强调了模型从每个任务中快速适应和学习的能力,而不是在海量数据上进行长时间的训练。通过这种方式,模型能够在面对新类别时,更好地泛化其之前学到的知识。

五、SCR模块:增强特征

在这里插入图片描述

六、CCA模块

在这里插入图片描述

七、dataset

在评估中,我们使用四个标准基准数据集来进行小样本分类:miniImageNet、tieredImageNet、CUB-200-2011(简称CUB)和CIFAR-FS。

miniImageNet

  • 来源:miniImageNet是ImageNet的一个子集,由72个研究提出。它包含60,000张图像,这些图像均匀分布在100个对象类别中。
  • 数据集划分:训练/验证/测试划分分别包含64/16/20个对象类别。

tieredImageNet

  • 特点:tieredImageNet是一个挑战性的数据集,由55个研究提出。其训练/验证/测试划分在ImageNet层次结构的超类别上是不相交的,这通常要求比其他数据集更好的泛化能力。
  • 数据集划分:各自的训练/验证/测试划分包含20/6/8个超类别,这些超类别是351/97/160个子类别的超集。

CUB-200-2011 (CUB)

  • 应用:CUB是用于鸟类细粒度分类的数据集,由73个研究提出。它包含100/50/50个对象类别的训练/验证/测试划分。
  • 特殊处理:遵循最近的研究[80, 84],我们使用预裁剪到人工标注的边界框的图像。

CIFAR-FS

  • 基础:CIFAR-FS是基于CIFAR-100数据集构建的,由3个研究提出。遵循最近的研究[3],我们使用相同的训练/验证/测试划分,分别包含64/16/20个对象类别。

在这里插入图片描述
未完待续…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OS内存管理

内存 定义 内存是计算机用于存储数据和程序的硬件设备,它允许计算机快速读取和写入数据。内存通常是临时存储,其内容在计算机关闭或断电时会丢失。内存可存放数据。程序执行前需要先放到内存中才能被CPU处理(缓和CPU与硬盘之间的速度矛盾)。 在多道程…

ZBX_NOTSUPPORTED: Unsupported item key. 原因排查

进行自定义监控项时,在zabbix-agent端测试没问题,却在zabbix-server进行测试时,出现 ZBX_NOTSUPPORTED: Unsupported item key. 1.在zabbix-agent测试没问题,证明自定义监控项的脚本没问题,却在zabbix-server端测试出…

表的连接

目录 内连接实现效果 使用左外连接,将所有的员工信息都显示出来,即便他没有对应的部门 使用右外连接,将所有的部门信息都显示出来 查询每个员工的编号、姓名、职位,以及所在各部门的领导姓名、领导职位 确定所需要的数据表 确…

IMX6ULL移植U-Boot 2022.04

目录 目录 1.编译环境以及uboot版本 2.默认编译测试 3.uboot中新增自己的开发板 3.编译测试 4.烧录测试 5.patch文件 1.编译环境以及uboot版本 宿主机Debian12u-boot版本lf_v2022.04 ; git 连接GitHub - nxp-imx/uboot-imx: i.MX U-Boot交叉编译工具gcc-arm-10.3-2021.0…

机器学习:卷积介绍及代码实现卷积操作

传统卷积运算是将卷积核以滑动窗口的方式在输入图上滑动,当前窗口内对应元素相乘然后求和得到结果,一个窗口一个结果。相乘然后求和恰好也是向量内积的计算方式,所以可以将每个窗口内的元素拉成向量,通过向量内积进行运算&#xf…

关于nuclei-ai-extension

nuclei-ai-extension 🍁 Nuclei 官方开发的 利用 AI 生成 nuclei 模板的工具。Nuclei AI - 用于快速生成 Nuclei 模板的浏览器扩展,Nuclei AI Browser Extension建立在 cloud.projectdiscovery.io 之上,使用户能够从任何网页中提取漏洞信息&…

设计模式之创建型模式

创建型模式提供创建对象的机制,能够提升已有代码的灵活性和复用性 常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。 不常用的有:原型模式。 4.1 单例模式 创建型模式提供创建对象的机制,能够提升已有代码的灵…

【MATLAB】在图框中加箭头文本注释

1、在图框中加 文本方法 —— text()函数 2、使用箭头标注——annotation()函数 X、Y是箭头的位置相对于整个方框的比例, [0.32,0.5]是指:x坐标从整个图形32%的地方到50%的地方(从左到右&…

基于laravel开发的开源交易所源码|BTC交易所/ETH交易所/交易所/交易平台/撮合交易引擎

开源交易所,基于Laravel开发的交易所 | BTC交易所 | ETH交易所 | 交易所 | 交易平台 | 撮合交易引擎。本项目有完整的撮合交易引擎源码、后台管理(后端前端)、前台(交易页面、活动页面、个人中心等)、安卓APP源码、苹果…

【蓝桥杯单片机入门记录】认识单片机

目录 单片机硬件平台 单片机的发展过程 单片机开发板 单片机基础知识 电平 数字电路中只有两种电平:高和低 二进制(8421码) 十六进制 二进制数的逻辑运算 “与” “或” “异或” 标准C与C51 如何学好单片机 端正学习的态度、培…

BUGKU-WEB 矛盾

题目描述 进入场景看看: 代码如下: $num$_GET[num]; if(!is_numeric($num)) { echo $num; if($num1) echo flag{**********}; }解题思路 需要读懂一下这段PHP代码的意思明显是一道get相关的题目,需要提供一个num的参数,然后需要传入一个不…

CSGO搬砖项目怎么样?分享一下个人的看法!

对于steam搬砖平台,无人不知,无人不晓啊,全球最大的一个游戏平台,像我们知道的PUBG,CS:GO,都是里面的,比较火的一个平台。 对于想了解Steam搬砖的,今天分享一下个人的看法。 首先&a…

【C语言】数据结构#实现堆

目录 (一)堆 (1)堆区与数据结构的堆 (二)头文件 (三)功能实现 (1)堆的初始化 (2)堆的销毁 (3)插入数据 …

java中stream流中的concat合并操作

可以用stream.of来合并两个流 public class Test7concat {public static void main(String[] args) {/*Stream流:static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b);合并2个流中的元素*/Stream<String> stream1 St…

石子合并+环形石子合并+能量项链+凸多边形的划分——区间DP

一、石子合并 (经典例题) 设有 N 堆石子排成一排&#xff0c;其编号为 1,2,3,…,N。 每堆石子有一定的质量&#xff0c;可以用一个整数来描述&#xff0c;现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆&#xff0c;合并的代价为这两堆石子的质量之和&#xff0c;…

python系统学习Day2

section3 python Foudamentals part one&#xff1a;data types and variables 数据类型&#xff1a;整数、浮点数、字符串、布尔值、空值 #整型&#xff0c;没有大小限制 >>>9 / 3 #3.0 >>>10 // 3 #3 地板除 >>>10 % 3 #1 取余#浮点型&#xff…

[职场] 优质简历怎么做 #学习方法#笔记

优质简历怎么做 简历是求职的“敲门砖”&#xff0c;直接影响着求职成败。然而&#xff0c;不少求职者对简历不太重视&#xff0c;认为简历就是写自己的经历。因此&#xff0c;在招聘现场&#xff0c;常会看到这样的简历&#xff1a;有的是从某招聘网站直接下载而来&#xff0c…

LeetCode “AddressSanitizer:heat-use-after-free on address“问题解决方法

heat-use-after-free &#xff1a; 访问堆上已经被释放的内存地址 现象&#xff1a;同样代码在LeetCode上报错&#xff0c;但是自己在IDE手动打印并不会报错 个人猜测&#xff0c;这个bug可能来源于LeetCode后台输出打印链表的代码逻辑问题。 问题描述 题目来自LeetCode的8…

五官行为检测(表情基)解决方案提供商

随着人工智能技术的日益成熟&#xff0c;情感识别与行为分析在企业界的应用逐渐广泛。美摄科技作为业内领先的五官行为检测&#xff08;表情基&#xff09;解决方案提供商&#xff0c;致力于为企业提供高效、精准的情感识别与行为分析服务。 美摄科技的五官行为检测&#xff0…

Linux系统编程(四)进程

一、进程的产生&#xff08;fork&#xff09; fork(2) 系统调用会复制调用进程来创建一个子进程&#xff0c;在父进程中 fork 返回子进程的 pid&#xff0c;在子进程中返回 0。 #include <sys/types.h> #include <unistd.h>pid_t fork(void); fork 后子进程不继…
最新文章