论文笔记:Piecewise classifier mappings: Learning FG learners for novel categories with few examples

本文主要是介绍论文笔记:Piecewise classifier mappings: Learning FG learners for novel categories with few examples,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Piecewise classifier mappings: Learning fine-grained learners for novel categories with few examples

文章目录

  • Piecewise classifier mappings: Learning fine-grained learners for novel categories with few examples
    • 0 摘要
    • 1 引言
    • 2 相关工作
    • 3 方法
      • 3.1 学习策略、涉及到的符号
      • 3.2 模型
        • 特征表示
        • 分类器映射
        • 网络训练
        • 不懂之处
    • 4 实验
    • 5 结论

0 摘要

few-shot细粒度分类(FSFG,few-shot fine-grained recognition),用极少样本为新类别建立分类器。

本文提到的网络包括双线性特征学习模块分类器映射模块。关键是后者分类模块的分段映射"piecewise mapping"函数,它学习一组更多可获得的子分类器来生成决策边界。以元学习的方式学习基于辅助数据集的**“示例-分类器”映射**。

1 引言

旨在从很少的带有标签的训练示例中学习细粒度分类器。

提出了一个端到端可训练网络,包括双线性特征学习模块(将少量样本的区别信息编码进特征向量)和分类器映射模块(学习一组更多可获得的子分类器来生成决策边界)。

高度非线性映射用子向量-子分类器映射来拟合,再将子分类器组合为全局分类器,区分不同类别的样本。基于隐式“部分”的特征到分类器映射可对简单和纯净的信息进行编码,使映射更容易。

piecewise mapping减少了模型参数量,计算效率更高。以元学习方式,使用辅助数据集学习示例-分类器映射。贡献:

  1. few-shot设置,提出了一种元学习策略来解决FSFG问题。
  2. 名为“piecewise mapping”的示例到分类器映射策略,用BCNN特征以参数很少的方式学习判别式分类器。
  3. 充分实验,性能优异

2 相关工作

细粒度分类

区别特征表示、对齐、[无]监督定位等。

通用few-shot图像识别

研究从几个示例中赋予学习系统快速学习新颖类别的能力的可能性。极端的one-shot learning。

learning-to-learn范式、匹配网络、原型网络、回归网络、元学习、与模型无关的元学习方案、训练新颖类别的参数预测器。

few-shot 细粒度图像识别更具挑战。分段映射组件。

3 方法

3.1 学习策略、涉及到的符号

元学习(meta-learning)框架为基础,将分类器生成过程看作是映射函数(从少数带有类别标签的训练示例到其相应类别分类器不是类别,是分类器)。

image-20210114163840967

辅助训练集 B \mathcal B B包含 N N N个训练图像 B = { ( I 1 , y 1 ) , . . . , ( I N , y N ) } \mathcal B=\{(\mathcal{I_1},y_1),...,(\mathcal{I_N},y_N)\} B={(I1,y1),...,(IN,yN)} I i \mathcal I_i Ii是示例图像, y 1 ∈ { 1 , 2 , . . . , C B } y_1\in\{1,2,...,C_\mathcal{B}\} y1{1,2,...,CB}是标签)。映射功能学习之后,应用于测试集 N \mathcal{N} N评估性能,注意, N \mathcal{N} N中存在 B \mathcal{B} B没有的类别(新类别)。

image-20210114171814537

在训练过程中, E \mathcal{E} E将被输入到要学习的映射函数 M M M中,以生成类别分类器 F E F_{\mathcal{E}} FE E → F E \mathcal{E}\to F_{\mathcal{E}} EFE F E F_{\mathcal{E}} FE再应用于 Q \mathcal{Q} Q评估分类损失(通过损失优化模型是通过查询集而不是示例集),通过最小化分类损失来学习映射功能。形式化表示: min ⁡ λ E E , Q ∼ B { L ( F E ◦ Q ) } \min_λ E_{{\mathcal E,\mathcal Q}\sim \mathcal B}\{\mathcal L(F_\mathcal{E}◦\mathcal Q)\} minλEE,QB{L(FEQ)} λ \lambda λ表示映射函数 M M M的参数, L \mathcal L L是损失函数, F E ◦ Q F_\mathcal{E}◦\mathcal Q FEQ表示将示例集 E \mathcal E E生成的类别分类器 F E F_{\mathcal E} FE应用于查询集 Q \mathcal Q Q

3.2 模型

image-20210114171918494

特征表示

使用BCNN(见论文《Bilinear CNN Models for Fine-grained Visual Recognition),特征图 f A ( I ) ∈ R n A × L f_A(\mathcal I)\in \mathbb R^{n_A\times L} fA(I)RnA×L f B ( I ) ∈ R n B × L f_B(\mathcal I)\in \mathbb R^{n_B\times L} fB(I)RnB×L的位置向量做向量外积生成特征图,再全局池化生成特征向量 x ∈ R D × 1 , D = n A × n B x\in\mathbb R^{D\times1},D=n_A\times n_B xRD×1,D=nA×nB(BCNN论文里面是 f A T f B f_A^Tf_B fATfB,这篇论文是 f A f B T f_Af_B^T fAfBT,不过基本上差不多)

x x x看作是子向量 x t x^t xt的集合: x = [ x 1 ; x 2 ; . . . ; x t ; . . . ; x n B ] , ∀ t : x t ∈ R n A × 1 x=[x^1;x^2;...;x^t;...;x^{n_B}],\forall t:x^t\in \mathbb{R}^{n_A\times1} x=[x1;x2;...;xt;...;xnB],t:xtRnA×1 x t x^t xt f A f_A fA f B f_B fB的第 t t t个特征的调制特征,类似于注意力机制中的乘法特征交互。(把整个长向量看作 n B n_B nB n A n_A nA维短(段)向量)

为了表示一组属于类别 k k k N e N_e Ne样本图像,通过以下方式将平均图像表示形式计算为类别级别表示:
X k = 1 N e ∑ i = 1 N e x i X_k=\frac1{N_e}\sum_{i=1}^{N_e}x_i Xk=Ne1i=1Nexi
所有 x i x_i xi对应的 y i = k y_i=k yi=k

分类器映射

该任务是将这些中间类别级别表示形式映射到其相应的类别分类器中。

通过映射 M M M计算每个类别的 D D D维分类器 F k ∈ R D F_k\in\mathbb R^D FkRD,形式化表示: M : R D → R D M:\mathbb R^D\to\mathbb R^D M:RDRD

朴素方案:线性或非线性全连接映射(原文global mapping)eg, F K = W g X k + b g F_K=W_gX_k+b_g FK=WgXk+bg。缺点:拟合困难、参数爆炸

分段映射策略:双线性特征 X k X_k Xk可以看作是子向量 X k t X^t_k Xkt的集合,每个子向量都描述了对象的隐式“部分”。可以通过检查对象的每个“部分”是否与示例兼容来测试对象是否属于示例中描述的类别。

做法:将每个子向量 X t k X_t^k Xtk映射到其对应的子分类器 F k t F^t_k Fkt中,然后将子分类器组合在一起以生成全局类别分类器。

image-20210114200418300
F k t = m ϕ t ( X k t ) F k = [ F k 1 ; F k 2 ; . . . ; F k n B ] F^t_k=m_{\phi_t}(X^t_k)\\ F_k=[F^1_k;F^2_k;...;F^{n_B}_k] Fkt=mϕt(Xkt)Fk=[Fk1;Fk2;...;FknB]
通过对全连接层分段,减少了参数量,容易训练。

这样理解:通过第一个短向量(描述头部)看是否是第一个类别,通过第二个短向量(表示翅膀)看是否是第二个类别……,整合所有结果得到最终预测。

网络训练

查询样本 x x x,类别标签 y = c y=c y=c,预测分布 p M ( y = c ∣ x ) = exp ⁡ ( F c ⋅ x ) ∑ c ′ exp ⁡ ( F c ′ ⋅ x ) p_M(y=c|x)=\frac{\exp(F_c\cdot x)}{\sum_{c'}\exp(F_{c'}\cdot x)} pM(y=cx)=cexp(Fcx)exp(Fcx),损失: J ( x , y ) = − log ⁡ ( p M ( c ∣ x ) ) \mathcal{J}(x,y)=-\log(p_M(c|x)) J(x,y)=log(pM(cx))

  1. B \mathcal B B中采样示例集 E \mathcal E E训练,训练得到分类器 F E F_{\mathcal E} FE
  2. 建立查询集,通过最小化 J ( Q ) \mathcal{J(Q)} J(Q)进行优化

image-20210114201553931

E \mathcal E E用于建立分类器, Q \mathcal Q Q用于优化分类器。

image-20210114205406869

不懂之处

image-20210114204348063

  1. 从上面这句话和公式来说,类别数目应该和分类器数目相同,但是按照前面双线性那部分,有多少个分类器,每个分类器维数应该取决于主干网络得到特征图的通道数?
  2. 怎么从数据集 B \mathcal B B应用到数据集 N \mathcal N N上?可能存在新的类别,怎么保证兼容?

4 实验

4.1 数据集、细节

数据集:cub,dogs,cars。每个数据集分成两个部分 B , N \mathcal{B,N} B,N(不重叠)。

训练:将示例集 E \mathcal E E的类别大小设置为与测试集中 N \mathcal N N的类别数相同。 N e = 1 N_e=1 Ne=1 N e = 5 N_e=5 Ne=5)分别对应few-shot和five-shot, N q N_q Nq都设置为20。

测试: N \mathcal N N的每个类别随机选择1或5各示例。随机选择另外20个样本来评估识别性能。重复此评估过程20次,并将平均分类准确性用作评估标准。

AlexNet作为BCNN中的两个流。采用Places 205数据库预先训练AlexNet模型。

首先在辅助训练集上微调双线性特征学习模块,然后在分类器学习过程中冻结。映射函数为三层,其中每层采用1024个隐藏单元,激活函数为指数线性单元,SGD,学习率0.1。

4.2 结果

image-20210114202648024

4.3 消融实验

分段映射vs全连接映射

image-20210114205651809

m ϕ t m_{\phi_{t}} mϕt的层数

image-20210114202933114

5 结论

提出了端到端的可训练网络,受BCNN的启发,是为细粒度的few-shot learning量身定制。关键是分段分类器映射模块

未来方向,使用迁移学习将数据集进行推广。

这篇关于论文笔记:Piecewise classifier mappings: Learning FG learners for novel categories with few examples的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/232490

相关文章

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi