学界 |「分段映射」帮助利用少量样本习得新类别细粒度分类器

作者:Xiu-Shen Wei等

机器之心编译

参与:Pedro、路

近日,来自南京大学、旷视和阿德莱德大学的研究者在 arXiv 上发布论文,提出一种利用少量样本学习新类别细粒度分类器的新方法 FSFG 模型,该方法包含两个模块:双线性特征学习模块和分类器映射模块。后者中的「分段映射」功能是该模型的关键部分,它通过一种参数更少的方式学习一组相对易实现的子分类器,进而生成决策边界。

细粒度图像识别是一个重要的计算机视觉问题。得益于复杂深层网络结构的应用,该问题解决方案的表现也越来越好。训练这种分类算法所需的大规模细粒度数据量限制了其应用范围(例如对于稀有鸟类,可收集的训练样本较少),而人类却能够在缺乏监督的条件下学习新的细粒度概念。为了模仿人的这种能力,本论文在少样本的设置下研究细粒度图像识别问题,也就是说,本论文的研究目标是从数量极少的训练样本中学习新型细粒度类别的分类器(样本(sample)又叫范例(exemplar),数量通常为 1 或 5)。

图 1:少样本的细粒度图像识别(FSFG)任务图示。任务目标是从少数范例中学习得到细粒度类别分类器(本示例中是从少量范例中学习得到鸟类品种分类器)。研究者使用辅助数据集 B 训练得到范例到分类器的映射,并在另一个数据集 N 上测试 FSFG 的性能。这两个数据集间没有类别重叠。

如何基于少量训练样本学习得到细粒度类别分类器是个难题,因为我们对学得分类器的期望是:能够捕获类别之间的细微差别,并且可泛化至有限监督之外。为了实现这样的范例到分类器映射,本论文研究者提出一个为 FSFG 任务量身定制的端到端可训练网络,该网络受当前最优的细粒度识别模型的启发。具体而言,该网络由双线性特征学习模块和分类器映射模块组成。前者将样本图像的分类信息编码为特征向量,而后者是整个网络的关键部分,它将中间图像特征映射到类别级别决策边界。这种映射存在两个问题。一方面,图像级别表征的分布可能很复杂,会对后续映射造成困难。另一方面,双线性池化生成的特征维数非常大,它可能造成的参数爆炸进一步阻碍了后续映射。

本文提出模型的新颖之处在于分类器映射模块中的「分段映射」功能,该功能用一种参数更少的方式学习一组相对易实现的子分类器,进而生成决策边界。由于双线性池化中的外积计算,其获得的特征本质上可以看作是一组子向量,每个子向量都隐性地表示图像的一部分。研究者使用高度非线性映射来执行子向量到子分类器的映射。然后,将这些子分类器重新组合为全局分类器,这样就能给样本分类了。直观来看,研究者利用隐性表示「部分」的子向量学习得到了特征到分类器的映射,子向量可以编码更简单纯粹的信息,最终使分类变得更容易。此外,分段映射显著减少了模型参数的数量,使计算更加高效。研究者用元学习的方式借助辅助数据集学习得到范例到分类器的映射,如图 1 所示。元学习过程的目的是学习得到一个「映射原型」,研究者希望这个原型能泛化至新的类别。

实验中,研究者在三个细粒度基准数据集(CUB Birds [23]、Stanford Dogs [9] 和 Stanford Cars [11])上运行上述 FSFG 方法。实证结果表明,FSFG 模型显著优于其他基线方法。

本论文的主要成果如下:

  • 研究了少样本条件下细粒度图像识别问题,并提出一种新型元学习策略来解决这个问题。
  • 设计了一种名为分段映射的新型范例到分类器映射方法,它采用双线性 CNN 特征的特殊结构,利用相对较少的参数学习得到分类器。
  • 利用三个细粒度基准数据集进行了全面的实验,发现 FSFG 模型的性能比其他所有的解决方案都要好。

图 2:FSFG 模型的思路。在每个 episode 中,研究者从 B 中抽取样本集合 E,它由一个类别子集(本例中一共有三个类别)组成,每个类别包含很少的范例(红色边框的图像)。研究者希望学习得到映射 M,它可以将这些范例映射到相应的类别分类器(虚线)。学习得到的映射参数能够使这些分类器准确地区分待识别图像(黄色边框图像)。

图 3:FSFG 模型的架构图示。左边是表征学习的第一个组件(双线性池化模块)。右边是第二个组件(分类器映射模块),它将中间图像特征映射到类别分类器。

表 2:三个细粒度数据集上的对比结果(平均值 ± 标准差)。每列的最大平均精度用粗体标出。「•/◦」表示 FSFG 模型优于/差于其他方法(通过置信水平为 0.05 的成对 t 检验来比较)。「FB」表示使用完全双线性池化表征,「CB」表示使用紧凑双线性池化。

表 3:全局映射和分段映射的对比结果。每列的最大平均精度用粗体标出。「•」表示分段映射性能优于全局映射(通过置信水平为 0.05 的成对 t 检验来比较)。

图 4:全局映射和分段映射生成的类别分类器利用 t-SNE [21] 得到的二维可视化结果。每个点表示一个生成的分类器,不同的颜色表示不同的类别。每个类别显示五十个分类器,每个分类器都是通过学习随机抽样的五个范例获得的。该可视化基于 CUB Birds 数据集。

图 5:不同层数的

模型简化测试。在每个子图中,横轴代表层数,纵轴代表准确率。

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

论文链接:https://arxiv.org/pdf/1805.04288.pdf

摘要:人类能够在缺乏监督的情况下学习新的细粒度概念,而最好的深度学习系统却需要成百上千的标注数据来训练。我们试图通过研究少样本条件下的细粒度图像识别问题(FSFG)来缩小人类与深度学习系统之间的上述差距。FSFG 要求学习系统利用少量样本(只有一个样本或者样本数小于 5)为新的细粒度类别构建分类器。为解决上述问题,我们提出了一个为 FSFG 任务量身定制的端到端可训练深度网络。

具体而言,我们的网络由双线性特征学习模块和分类器映射模块组成:前者将示例图像的分类信息编码为特征向量,后者将中间特征映射到新类别的决策边界。模型的新颖之处在于分类器映射模块中的「分段映射」功能,该功能通过一种参数更少的方式学习一组相对易实现的子分类器,进而生成决策边界。基于辅助数据集我们用元学习的方式学习范例到分类器的映射,它可以泛化至新类别中。我们在三个细粒度基准数据集上进行了相关测试,实验结果表明,我们的 FSFG 模型显著优于其他方法。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-05-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hongten

ArrayList VS Vector(ArrayList和Vector的区别)_面试的时候经常出现

1692
来自专栏MelonTeam专栏

ArrayList源码完全分析

导语: 这里分析的ArrayList是使用的JDK1.8里面的类,AndroidSDK里面的ArrayList基本和这个一样。 分析的方式是逐个API进行解析 ...

4489
来自专栏ml

朴素贝叶斯分类器(离散型)算法实现(一)

1. 贝叶斯定理:        (1)   P(A^B) = P(A|B)P(B) = P(B|A)P(A)   由(1)得    P(A|B) = P(B|...

3437
来自专栏刘君君

JDK8的HashMap源码学习笔记

3008
来自专栏拭心的安卓进阶之路

Java 集合深入理解(6):AbstractList

今天心情比天蓝,来学学 AbstractList 吧! ? 什么是 AbstractList ? AbstractList 继承自 AbstractCollec...

19110
来自专栏后端之路

LinkedList源码解读

List中除了ArrayList我们最常用的就是LinkedList了。 LInkedList与ArrayList的最大区别在于元素的插入效率和随机访问效率 ...

19510
来自专栏项勇

笔记68 | 切换fragmengt的replace和add方法笔记

1444
来自专栏alexqdjay

HashMap 多线程下死循环分析及JDK8修复

1K4
来自专栏java闲聊

JDK1.8 ArrayList 源码解析

当运行 ArrayList<Integer> list = new ArrayList<>() ; ,因为它没有指定初始容量,所以它调用的是它的无参构造

1192
来自专栏xingoo, 一个梦想做发明家的程序员

Spark踩坑——java.lang.AbstractMethodError

百度了一下说是版本不一致导致的。于是重新检查各个jar包,发现spark-sql-kafka的版本是2.2,而spark的版本是2.3,修改spark-sql-...

1200

扫码关注云+社区