1.本发明属于计算机视觉技术领域,具体涉及一种能够在小样本场景下分类图像的方法及系统。
背景技术:2.图像分类是计算机视觉需要解决的一个基础任务。当前深度学习的发展趋势是不断加深网络结构,从而提高模型的分类准确率,然而更深的模型意味着更多的可学习参数,训练这些参数需要更多的数据,这也是当前深度学习的主流趋势之一,即数据驱动的模型训练。这种数据驱动的深度学习方法通常需要大量的标注数据,这带来了很大的问题。一方面标注数据的过程是非常耗费人力的,半监督学习和无监督学习的方法也是从这一角度出发,减少网络对标注数据的依赖;另一方面,在很多应用场景下,我们没有办法获取大规模数据,比如稀有物种和新出现的事物。在这两种情况下,传统的深度学习方法都很难达到理想的分类效果。
3.小样本学习就是为了解决在数据较少的情况下,模型学习困难的问题。小样本学习通常只需要获得某一类别的少量图像,就可以对此种类别进行分类预测。然而,小样本学习模型的好坏很大程度上取决于测试集和训练集的数据分布差异,这是因为很多深度学习网络有处理相似任务的能力,然而对于没有涉及到的领域难以自适应。这也是小样本学习任务与传统图像分类任务的差异,即网络需要有处理没有见过的数据类别的能力。
4.从类型来看,小样本学习主要分为两种,一种是直推式学习,一种是归纳式学习。它们的主要区别在于训练中是否可以获得到无标签的待预测的样本。直推式学习在训练中可以获取测试数据,最终目标只需要预测测试数据的标签,当有新的待预测样本出现的时候,模型需要重新训练;归纳式学习在训练中不用获取测试数据,即训练后的模型可以直接用于预测未知的测试数据。这两种类型中,归纳式的小样本学习可以处理更多网络没见过的数据,不需要重新训练,要求网络具有泛化性,使用场景也更广。
5.小样本学习的主要方法包括以下三种:
6.1)基于优化的方法,把小样本学习看作是一个个新的任务,这里用到了元学习的思想,即让模型学会学习,最终目标是当模型面对一组新的学习任务的时候可以尽快收敛。基于此方法的训练通常由两个循环构成。如maml由一个基学习器和一个元学习器构成,在训练过程中,内部循环为每一个独立的任务训练基学习器,外部循环根据得到的基学习器的验证效果优化元学习器,最后得到对于新任务可以快速适应的基学习器的最优初始化参数。
7.2)基于生成的数据增广方法。在数据层面,可以通过生成新的数据样本来解决原始数据过少的问题;在特征层面,通过使用生成方法,不仅可以学到特定类别之间的分类边界,还可以通过引入数据分布的概念得到类别分布的完整边界,从而处理类别组合的问题。
8.3)基于度量学习的方法。先通过训练得到一个特征提取器,图像通过这个特征提取器得到在特征空间的特征向量,通过合适的度量函数(如欧氏距离、余弦距离等),得到不
同图像之间的距离,最终通过距离关系对图像进行分类。在rfs一文中也指出了得到更好的特征空间在小样本学习中的重要性。
9.当前小样本学习也面临很大的挑战,在训练过程中,数据量较小,会导致较深的模型发生欠拟合,模型表示能力差,而较浅的模型很容易过拟合,模型泛化性能差;在测试过程中,过少的支持集会导致数据整体和真实分布有较大的差异,支持集无法较好地代表这个新类,从而导致查询集的分类准确率低,以上问题有待解决。
技术实现要素:10.本发明的目的是提出一种基于自监督学习的小样本图像分类方法及系统,能够基于自监督学习,利用较少的数据量就能实现图像分类。
11.为实现上述目的,本发明采用的技术方案如下:
12.一种基于自监督学习的小样本图像分类方法,包括以下步骤:
13.构建两个结构相同但不共享权值的图像分类网络,每个图像分类网络包括特征提取器、旋转类别分类器、监督对比学习分类器和图像类别分类器;
14.在训练阶段,给两个图像分类器中分别输入带类别标签的图像训练数据,对这两个图像分类器同时进行训练,训练步骤如下:
15.将输入的每张图像按照每隔90度进行旋转,得到四个方向的四张图像,再分别通过特征提取器提取这些图像的特征向量;
16.将所述旋转得到的图像的特征向量输入到旋转类别分类器中来对图像的旋转方向进行分类,计算旋转类别分类器的交叉熵损失;
17.将所述旋转得到的图像和同类别的旋转得到的图像作为图像的正例,将其他类别的旋转得到的图像作为负例,将正例和反例图像的特征向量输入到监督对比学习分类器中进行分类,得到属于同一类别的概率,并计算监督对比学习分类器的交叉熵损失;
18.将每一张图像的特征向量直接输入到图像类别分类器中进行分类,计算图像类别分类器的交叉熵损失;
19.在所述两个图像分类网络的图像类别分类器的输出之间通过kl散度约束进行共同学习,计算共同学习的交叉熵损失;
20.将旋转类别分类器的交叉熵损失、监督对比学习分类器的交叉熵损失、图像类别分类器的交叉熵损失和共同学习的交叉熵损失进行加权求和,得到总体损失;通过迭代训练,使得总体损失最小,得到训练好的特征提取器;
21.在使用阶段,对待分类图像进行分类,步骤如下:
22.利用与待分类图像类别一致的带类别标签训练图像输入到训练好的特征提取器中提取特征向量,并利用该特征向量训练旋转类别分类器、监督对比学习分类器和图像类别分类器;
23.将待分类图像输入到训练好的特征提取器中提取特征向量,并将提取的特征向量输入到训练好的旋转类别分类器、监督对比学习分类器和图像类别分类器中,输出图像分类结果。
24.一种基于自监督学习的小样本图像分类系统,包括两个结构相同但不共享权值的图像分类网络,每个图像分类网络包括:
25.特征提取器,用于提取旋转得到的图像的特征向量;
26.旋转类别分类器,用于对所述旋转得到的图像的特征向量按照旋转方向进行分类;
27.监督对比学习分类器,用于对正例和反例图像的特征向量进行分类,得到属于同一类别的概率,其中正例是指所述旋转得到的图像和同类别的旋转得到的图像,反例是指其他类别的旋转得到的图像;
28.图像类别分类器,用于根据输入的每一张图像的特征向量对图像进行分类;
29.其中,特征提取器预先通过带类别标签的图像训练数据进行训练,训练时两个图像分类网络的图像类别分类器的输出之间通过kl散度约束进行共同学习,通过迭代训练使得总体损失最小,完成训练。
30.本发明的主要的创新点包括以下三点:
31.1)把自监督学习应用到小样本学习的训练中,提高小样本学习中特征提取器的表示能力。
32.2)把对比学习应用到小样本学习中,同时对度量函数进行优化,让特征提取器学习的特征具有更显著的分类边界。
33.3)把共同学习应用到小样本学习的训练中,从而引入正则化约束,提高网络的泛化性能。
附图说明
34.图1是本发明方法训练阶段的网络结构示意图;
35.图2是本发明方法测试阶段的网络结构示意图。
具体实施方式
36.为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
37.本实施例建立如图1所示的图像分类网络结构,由两个结构相同但不共享权值的网络构成,每个图像分类网络包括特征提取器、旋转类别分类器、监督对比学习分类器和图像类别分类器。
38.训练时,将带有类别标签(例如鸟、水果、广告牌等)的训练用图像经过旋转(0
°
、90
°
、180
°
、270
°
)增广后的四个方向上的图像作为网络输入,输入到特征提取器中,提取图像的特征向量。
39.1.在每一个网络中,特征提取器提取出来的特征输入到以下三个分类器:
40.1)旋转类别分类器θ
41.通过对图像旋转构成自监督学习任务。直观上来看,图像的拍摄角度和物体本身的方向有着很大的关系,比如正常拍摄的房屋一定是屋顶在上、广告牌在地面上面,一张被旋转的图片根据这些线索推断,可以找到它正确的方向。在实验层面,对于每一张输入的图像,需要预测它的旋转角度,把顺时针旋转0度、90度、180度、270度作为4个旋转角度类别,即解决一个四分类的问题。具体表示如下,其中d为小样本训练数据集,cr为4个旋转类别的集合,xr表示对输入x做第r种旋转变换,l为交叉熵损失函数,fi表示第i个网络的特征提取
器,为第i个网络的旋转类别分类器。
[0042][0043]
2)监督对比学习分类器φ
[0044]
通过把特征提取器得到的特征输入到多层神经网络中,把特征映射到更小的空间内。在此空间,希望同类别的特征距离尽可能相近,不同类别尽可能疏远,从而得到更鲁棒的分类边界。具体来说,在一个训练批中,一张图像通过旋转得到的四张输入图像和与它同类别的图像及其旋转后的图像即四个方向上的图像同属于这张图像的正例,这个训练批的其他类别的图像和它们旋转后的图像即四个方向上的图像都属于这张图像的负例,从而构建一个二分类任务,正例和反例的图像特征向量输入到监督对比学习分类器φ中,最后用交叉熵作为正例和负例的损失函数。
[0045]
计算一个训练批内特征的相似度,正例的标签为1,负例的标签为0,计算交叉熵损失函数。具体表示如下,其中d
*
表示经过了旋转增强后的数据集,b(x,y)表示和x在同一训练批且标签为y的样本,表示和x在同一数据集但标签不为y的样本,fi表示第i个网络的特征提取器,表示第i个网络的监督对比学习分类器。τ表示温度系数,温度系数越低训练越好,但特别低的温度系数会使网络更难训练。
[0046][0047]
式中,e是数学期望,(x,y)∈d
*
是e的下标,表示数据范围;x、是输入图像,分别所属的集合d
*
、b(x,y)、y、表示不相同的标签;log底数不限,τ是温度系数。
[0048]
3)图像类别分类器ψ
[0049]
将输入的旋转图像的特征向量输入到图像类别分类器ψ中进行类别预测,判断此图片的真实类别。用交叉熵作为损失函数。具体表示如下,其中d
*
表示经过了旋转增强后的数据集,l为交叉熵损失函数。fi表示第i个网络的特征提取器,表示第i个网络的图像类别分类器。
[0050][0051]
2.两个特征提取器之间共同学习
[0052]
通过共同学习的方法,在两个图像类别分类器的输出之间通过kl散度约束进行共同学习。
[0053][0054]
其中l
kl
是kl散度所对应的损失函数;d
*
表示经过了旋转增强后的数据集,fi表示第i个网络的特征提取器,表示第i个网络的图像类别分类器,kl表示kl散度计算公式。考虑kl散度的不对称性,在共同学习中,通过交换两项的位置达到让两个网络互相学习的
目的。
[0055]
3.总体的损失函数
[0056]
把上述损失函数乘以各自的系数相加,得到总体的损失函数,具体表示如下,其中α、β、γ、η表示各项损失函数的权重系数。
[0057]
l
total
=α
·
l
cls
+β
·
l
rot
+γ
·
l
scl
+η
·
l
kl
[0058]
4.算法流程
[0059]
训练过程的算法流程如表1所示,数据集d经在2-3步的旋转增广,变成d*,最终输出两个用于测试阶段提取特征的特征提取器f1和f2。
[0060]
本实施例基于自监督学习的小样本场景下图像分类,主要分为训练阶段和测试阶段。
[0061]
1)训练阶段
[0062]
训练过程中,不同于基于优化的小样本学习方法用到的以片段为单位训练,本实施例以每一个图像和其类别标签作为一个数据单位。训练过程中用到的基于自监督学习方法的监督对比学习分类器不需要额外增加旋转方向的训练标签,通过数据本身构造标签。共同学习策略作为知识蒸馏的变体,不同于知识蒸馏先训练教师网络再训练学生网络的迭代过程,而是将两个网络一起训练,一步完成。
[0063]
训练过程中,输入一张图像,先通过依次旋转得到四张图像,把这四张图像输入到特征提取器中得到各自的特征向量。把每一个特征向量输入到旋转类别分类器中得到该图像的旋转角度。把一个训练批次中的所有图片输入到监督对比学习分类器中,得到这个训练批次中其他图像和某一图像属于同一个类别的概率。把每一个特征向量输入到图像类别分类器中得到图像的类别。
[0064]
把以上步骤在另一个同样的网络中重复一遍,考虑到分类任务相比于其他辅助任务是这个实验的主任务,只构造这两个网络对于类别分类结果的kl散度,实现共同学习,提高模型的泛化性能。
[0065]
在共同学习中,kl散度通过温度系数t来调节共同学习的程度,本实施例中t的取值为4。在对比学习中,通过温度系数τ来调节损失,本实施例中τ的取值为0.5。总体损失函数中,各项损失函数的权重系数α、β、γ、η在本实施例中均取0.5。
[0066]
[0067][0068]
2)测试阶段
[0069]
在测试时,把测试集分为支持集和查询集。用训练阶段训练好的特征提取器提取支持集的特征,在支持集的特征上训练一个分类器,并将此分类器用于查询集的分类,得到查询集的预测标签。本实施例采用两种小样本学习的通用设置进行实验,分别是支持集“五种类别,每个类别有一张图像”和“五种类别,每个类别有五张图像”。将在支持集上得到的分类器用于查询集的预测,并计算分类准确率,每一组实验中取每个类别的15张图像,共计75张图像作为查询集。重复600组实验,计算平均准确率。以上步骤重复三次,取平均准确率的中位数作为最后的结果。
[0070]
测试阶段的网络结构如图2所示,其中f为训练阶段得到的特征提取器,f为测试阶段单个任务在其支持集训练的特征分类器,最终用于在查询器的预测。算法流程如算法2所示,此时数据集d不需要再进行旋转的数据增广,特征提取器f选取f1和f2中的任意一个即可。算法中的s和q分别表示测试阶段的支持集和查询集,lr表示逻辑回归。最终输出在小样本学习中的平均分类准确率。
[0071][0072]
本发明主要解决小样本场景下的图像分类任务,通过自监督学习、对比学习、共同学习等方法,在数据集的所有训练数据上训练一个具有泛化性能的特征提取器。在测试过程中,小样本学习的每一个分类任务由支持集和查询集构成,支持集包含需要学习的类别,通常每个类别只有少量数据样本。查询集中包含支持集中出现过的需要预测类别,对查询集的预测准备率即为小样本学习的准确率。支持集通过特征提取器获取特征,在得到的特
征上通过逻辑回归、欧氏距离、余弦距离等方法得到分类函数,在此基础上预测查询集的类别,并计算分类准确率。
[0073]
在应用到具体的实例时,与测试阶段大体相同,除了不必分出查询集以外,即利用训练好的特征提取器提取待分类的图像的特征向量,然后通过指定类别的图像对分类器进行有关类别的临时训练,分类器训练好以后即可掌握对指定类别分类的知识,可以用来对待分类的图像进行分类。
[0074]
本发明提出的小样本场景下图像分类的方法,其测试环境及实验结果为:
[0075]
(1)测试环境:
[0076]
系统环境:centos7;
[0077]
硬件环境:内存:64gb,gpu:titan xp,硬盘:2tb;
[0078]
(2)实验数据:
[0079]
在miniimagenet、tieredimagenet、cifar-fs、fc100四个数据集上进行实验。
[0080]
1.miniimagenet是imagenet的一个子集,数据规模和大小远小于imagenet,在此数据集上训练需要更少的资源,常被用于小样本分类的任务中。共有100类,其中64类为训练集,16类为验证集,20类为测试集,每类有600张图像,每张图像的大小为84*84。
[0081]
2.tieredimagenet是imagenet的另一个子集,规模略大于miniimagenet,共用608个类别,可以合并为34个大类,其中20类为训练集,6类为验证集,8类为测试集,总计779165张图像。
[0082]
3.cifar-fs是基于cifar100构建的小样本学习数据集,把100类随机分为64类、16类和20类,分别作为训练集、验证集和测试集,每类有600张图像,每张图片的大小为32*32。
[0083]
4.fc100是基于cifar100构建的另一个小样本学习数据集,比cifar-fs更加复杂,共有隶属于20个大类的100个类别,其中隶属于12个大类的60类作为训练集,两个隶属于4个大类的20类分别作为验证集和测试集,每类有600张图像,每张图片的大小为32*32。
[0084]
对于cifar-fs和fc100中,在训练阶段,四周填充大小为4的边界后,随机剪裁成32*32,加上颜色扰动和水平翻转的数据增强并进行正则化操作;测试阶段只进行正则化操作。
[0085]
对于miniimagenet和tieredimagenet,在训练阶段,四周填充大小为4的边界后,随机剪裁成84*84,加上颜色扰动和水平翻转的数据增强并进行正则化操作;测试阶段只进行正则化操作。
[0086]
训练优化方法:adam,初始学习率为0.05。miniimagenet在第60和80个训练周期以0.1的权重衰减,共训练90个周期;fc100、cifar-fs在第50,65,80个训练周期以0.1的权重衰减,共训练90个周期;tieredimagenet在第30,40,50个epoch以0.1的权重衰减,共训练60个周期。
[0087]
(3)实验结果:
[0088]
现有主流方案和本发明实验效果对比结果如下面表1和表2所示,分别在cifar-fs和fc100,以及miniimagenet和tieredimagenet上进行实验。实验结果表明,本发明方法优于当前主流算法,在多个数据集的不同实验设置中,小样本学习的分类准确率均有所提升。
[0089]
表1在cifar-fs和fc-100上的实验效果对比
[0090][0091]
表2在miniimagenet和tieredimagenet上的实验效果对比
[0092][0093]
虽然本发明已以实施例公开如上,然其并非用以限定本发明,本领域的普通技术人员对本发明的技术方案进行的适当修改或者等同替换,均应涵盖于本发明的保护范围内,本发明的保护范围以权利要求所限定者为准。