基于知识蒸馏和一致性正则化的类增量图像分类方法
未命名
09-24
阅读:70
评论:0
1.本发明涉及计算机视觉中图像分类领域,具体涉及一种基于知识蒸馏和一致性正则化的类增量学习对图像进行分类的方法。
背景技术:
2.计算机视觉作为人工智能的重要研究领域,在近几年取得了令人瞩目的成就。人工智能作为新基建的关键技术之一,在多个方面得到了广泛地发展和应用,尤其是计算机视觉技术更是得到了快速发展。图像分类领域是计算机视觉技术的重要应用场景。随着人工智能技术的发展,现有的图像分类方法通常采用神经网络在大规模的数据集上进行训练,从而实现对所有目标的分类。大多数现有的图像分类方法都有一个固有的假设,即在训练阶段,所有目标类的示例均可用,传统的训练策略通常要求与新旧任务对应的所有样本在训练时都可用,从而在所有数据上重新进行模型训练。然而,在开放世界场景中,尤其是互联网世界中,新的数据和知识源源不断涌现。在实际应用中可能会遇到新的类别数据,这就要求分类模型能够在数据增量的过程中学习新的目标类别,获得更强的分类能力。现有的图像分类方法不能满足增量学习的需求,当采用新任务的数据进行微调时,对旧任务的泛化能力急剧下降,这被称为灾难性遗忘现象(也就是旧类别的识别精度急剧下降)。
3.针对灾难性遗忘问题,现有面向类增量学习场景的图像分类方法可分为以下四类:
4.(1)基于参数隔离的图像分类方法
5.该类图像分类方法假设对于旧的任务,模型中一部分参数是重要的,不应当调整,而不重要的参数可以调整以适应新的任务。因此,参数重要性的评估是一个重要的子任务。然而,基于参数隔离的图像分类方法假设模型的参数间是相互独立的,可以分别评估参数的重要性并施加约束。因此,基于参数隔离的图像分类方法在增量模型训练时,通过约束旧模型参数的重要性权重,为每个任务分配不同的模型参数,从而提升识别所有任务的类别精度。该类方法在如何估计模型参数的重要性方面有所不同。如ewc方法(见文献“j.kirkpatrick et al.,“overcoming catastrophic forgetting in neural networks,”arxiv161200796cs stat,jan.2017,accessed:may 08,2022.[online].available:http://arxiv.org/abs/1612.00796.”,j.kirkpatrick等人的论文:克服神经网络中的灾难性遗忘)。然而,该类方法需引入更多的参数,很难设计合理的指标来度量参数的重要性。
[0006]
(2)基于范例的图像分类方法
[0007]
基于范例的图像分类方法的核心思想是通过存储先前任务的少量数据,将存储的旧类范例与新任务的数据相结合,作为增量模型的输入,共同优化增量模型的参数,以达到识别所有类的目的。该方法的主要挑战是旧类数据较少,新类数据较多,导致新类和旧类间存在严重的数据不平衡问题。目前,典型的方法il2m(见文献“e.belouadah and a.popescu,“il2m:class incremental learning with dual memory,”in iccv,seoul,
korea(south),oct.2019,pp.583-592.”,e.belouadah等人的论文:il2m:使用双记忆的类增量学习)、bic(见文献“y.wu et al.,“large scale incremental learning,”arxiv190513260 cs,may 2019,accessed:may 08,2022.[online].available:http://arxiv.org/abs/1905.13260.”,y.wu等人的论文:大规模增量学习)、lucir(见文献“s.hou,x.pan,c.c.loy,z.wang,and d.lin,“learning a unified classifier incrementally via rebalancing,”in cvpr,long beach,ca,usa,jun.2019,pp.831-839.”,s.hou等人的论文:通过再平衡增量学习统一的分类器)和wa(见文献“b.zhao,x.xiao,g.gan,b.zhang,and s.-t.xia,“maintaining discrimination and fairness in class incremental learning,”in cvpr,seattle,wa,usa,2020,pp.13208-13217.”,b.zhao等人的论文:在类增量学习中保持歧视和公平)均利用以上思想解决面向类增量学习场景的图像分类中的数据不均衡问题。尽管上述方法能够有效提升旧类别的识别精度,但它们可能不适用于有限内存的场景。换言之,如果不存储一些旧类数据,则这些方法可能无法工作。而且,随着学习任务的连续出现,存储的旧类数据规模将变得庞大,训练过程中对计算机的存储要求越来越高,这对于内存和计算资源有限的应用程序(如手机或机器人)来说是不现实的。
[0008]
(3)基于生成模型的图像分类方法
[0009]
解决灾难性遗忘的另一种有效方法是通过学习生成对抗网络(generative adversarial networks,gans)生成先前类的伪样本,并利用生成的样本来表示旧数据的分布,再将其和新类图像共同输入至增量模型,以实现对所有类别的分类。该类方法避免了旧类图像的保存,但需同时训练一个额外的生成网络来生成旧类伪样本,需要更多的计算量和内存,导致增量模型的训练效率低下。
[0010]
(4)基于正则化策略的图像分类方法
[0011]
基于正则化策略的图像分类方法的核心思想是通过对增量模型的损失函数施加约束,保护旧模型的权重不被增量模型的权重所覆盖,这主要是通过设计蒸馏损失惩罚网络参数的变化来实现的。知识蒸馏技术(见文献“g.hinton,o.vinyals,and j.dean,“distilling the knowledge in a neural network,”arxiv,arxiv:1503.02531,mar.2015.doi:10.48550/arxiv.1503.02531.”,g.hinton等人的论文:在神经网络中蒸馏知识)最初被广泛应用于模型压缩中,其核心是将老师模型中学到的关键知识迁移到学生模型中。之后,该技术被用于类增量学习中解决灾难性遗忘问题,最早的工作是lwf(见文献“z.li and d.hoiem,“learning without forgetting,”arxiv160609282cs stat,feb.2017,accessed:may 08,2022.[online].available:http://arxiv.org/abs/1606.09282.”,z.li等人的论文:学而不忘),通过设计知识蒸馏损失,使增量模型对新任务的预测与旧模型对新任务的预测相似,从而提升对旧类别的识别精度。这项工作表明,知识蒸馏方法能够有效地保留旧类的信息。
[0012]
得益于增量学习技术的快速发展,打破了传统图像分类方法的训练要求与新旧任务对应的所有样本在训练时都可用,在所有数据上重新进行模型训练。然而,在实际应用中可能会遇到新的类别数据,基于类增量学习的图像分类方法能够在每次数据增量的过程中学习新的训练样本与目标类别,同时还能减少对旧类别的遗忘能力。上述提到的前三类图像分类方法需存储少量的旧类图像或采用生成模型生成旧类伪样本,这些旧类数据或伪样本与新类数据共同输入至模型中进行训练,导致训练效率低下和类不均衡问题。而基于正
则化策略的图像分类方法无需存储旧类图像,也不需要复杂的生成模型,即可实现对所有类图像的识别能力,从而减少传统的图像分类模型对大量旧类标注数据的依赖性。与此同时,pass(见文献“f.zhu,x.-y.zhang,c.wang,f.yin,and c.-l.liu,“prototype augmentation and self-supervision for incremental learning,”in cvpr,nashville,tn,usa,jun.2021,pp.5133
–
5141.”,f.zhu等人的论文:基于原型增强和自监督的增量学习)采用特征蒸馏保留旧类的知识,并为每个旧类记忆一个类表示原型,从而实现类增量学习场景下的图像分类。但是,该方法导致存储的旧类原型不稳定,出现分类偏差问题。因此,目前基于正则化策略的图像分类方法仍面临如下困境:
[0013]
(1)基于正则化策略的图像分类方法仅对旧模型的输出层和中间特征进行蒸馏,很难完全保持过去的知识,导致对旧类的灾难性遗忘程度较高,也就是旧类别的分类精度不高。
[0014]
(2)目前基于正则化策略的图像分类方法无需存储旧类图像,pass方法通过存储旧类原型的方式提升对旧类图像的分类精度。然而,该方法存储的旧类原型不稳定,会出现分类偏差问题,使得对所有类别的识别精度不佳。
[0015]
综上所述,以上四种面向类增量学习场景的图像分类方法会导致较高程度的旧类灾难性遗忘或分类偏差问题,使得所有类别的分类精度不佳。目前,还没有公开的技术方案涉及采用知识蒸馏和一致性正则化的方法解决以上问题,从而实现对所有类别图像的分类。
技术实现要素:
[0016]
本发明要解决的技术问题在于针对现有面向类增量学习的图像分类方法在不存储旧类图像的前提下对图像进行分类会出现旧类的灾难性遗忘和分类偏差导致所有类别的分类精度不佳的问题,提出一种基于知识蒸馏和一致性正则化的类增量图像分类方法,基于现有的老师-学生模型架构,利用知识蒸馏和一致性正则化的思想,无需存储旧类训练图像,利用新类数据对老师模型进行微调得到的学生模型可对所有类的图像进行识别,提高对所有类图像的识别精度。
[0017]
为解决上述技术问题,本发明的技术方案是:首先构建面向类增量学习场景的旧类图像识别系统,该系统由第一输入预处理模块、第一自监督增强模块、第一特征学习模块和第一分类预测模块构成。然后准备训练面向类增量学习场景的旧类图像分类系统所需要的数据集,将数据集中前50个类别的图像作为旧类图像数据集,然后采用旧类图像数据集对面向类增量学习场景的旧类图像分类系统进行训练,得到训练后的面向类增量学习场景的旧类图像分类系统。然后构建面向类增量学习场景的所有类别图像识别系统,面向类增量学习场景的所有类别图像识别系统由第二输入预处理模块、第二自监督增强模块、第二特征学习模块和第二分类预测模块构成,第二分类预测模块是在第一分类预测模块的输出基础上进行扩展,将输出扩展为所有类的图像的类别个数,且采用训练后的旧类分类系统参数的基础上对所有类图像分类系统初始化。将数据集中的后50个类别每次选择增加10个类别的图像作为新类图像数据集,采用新类图像数据集对初始化后的面向类增量学习场景的所有类图像分类系统进行训练,得到训练后的面向类增量学习场景的所有类图像分类系统。接着,重复构建面向类增量学习场景的所有类别图像识别系统,并在前面所有类类别个
数基础上再增加10个类别,选择增加的10个类别的图像作为新类图像数据集,采用新类图像数据集对重复构建的面向类增量学习场景的所有类图像分类系统进行训练,得到训练后的面向类增量学习场景的所有类图像分类系统。重复构建五次并训练面向类增量学习场景的所有类别图像识别系统之后,数据集中的100类别都参与了训练,得到最终训练好的面向类增量学习场景的所有类别图像识别系统。最后,采用最终训练好的面向类增量学习场景的所有类别图像识别系统,对包含所有类别的待识别图像进行识别,得到图像识别结果。
[0018]
本发明通过结合知识蒸馏和一致性正则化,能够在不依赖旧类图像的情况下对所有类别的图像进行识别,有效提升对旧类图像的识别精度,进而缓解旧类的灾难性遗忘问题。本发明采用训练后的旧类分类系统参数的基础上对所有类图像分类系统初始化,仅采用新类训练数据对所有类图像分类系统进行多次训练以达到增量图像分类的效果,使得训练后的所有类图像分类系统对待测试图像的识别精度较高。
[0019]
本发明技术方案是:
[0020]
第一步,构建识别旧类的面向类增量学习场景的旧类图像分类系统。面向类增量学习场景的旧类图像识别系统由旧类图像数据集x
old、
第一输入预处理模块、第一自监督增强模块、第一特征学习模块和第一分类预测模块构成。第一输入预处理模块、第一自监督增强模块、第一特征学习模块和第一分类预测模块均由多层卷积神经网络cnn(convolutional neural network)在深度学习框架pytorch中实现。
[0021]
第一输入预处理模块与旧类图像数据集、第一自监督增强及第一特征学习模块相连,从旧类图像数据集x
old
读取旧类图像,第一输入预处理模块对从x
old
中读取的旧类图像集合x中的旧类图像进行图像随机裁剪、水平翻转、亮度变化、规范化等预处理,得到预处理后的旧类图像集合x1,将x1的标签集合用y1表示,将预处理后的旧类图像集合x1和标签集合y1发送给第一自监督增强模块。
[0022]
第一自监督增强模块与第一输入预处理模块和第一特征学习模块相连,第一自监督增强模块从第一输入预处理模块接收x1和y1,对x1和y1采用自监督标签增强方法(h.lee,s.j.hwang,and j.shin,“self-supervised label augmentation via input transformations.”arxiv,jun.29,2020.doi:10.48550/arxiv.1910.05872.h.lee等人的论文:通过输入变换的自监督标签增强,5714-5724)进行增强,生成增强后的旧类图像集合x1′
,在x1′
基础上生成增强后的标签集合y1′
,将x1′
和y1′
发送给第一特征学习模块。
[0023]
第一特征学习模块与第一自监督增强模块和第一分类预测模块相连,第一特征学习模块从第一自监督增强模块接收增强后的x1′
和y1′
,从x1′
中提取高维的语义特征表示集合f1′
,将f1′
和y1′
发送给第一分类预测模块。第一特征学习模块是resnet18网络(he k,zhang x,ren s,et al.deep residual learning for image recognition[j].ieee,2016.he k等人的论文:图像识别的深度残差学习,770-778),该网络分为六个模块。其中,第一模块由第一卷积层、第一归一化层、激活函数层、第一下采样层组成,第一卷积层的卷积核大小为3
×
3,步长是1,填充大小是1;第二至第五模块均由两个残差单元组成,每个残差单元均由1个卷积层、1个归一化层和激活函数层组成;第二模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是1,填充大小是1;第三模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是2,填充大小是1;第四模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是2,填充大小是1;第五模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是2,填
充大小是1。第六模块由第二下采样层组成,第二下采样层的步长是1,无填充。第一特征学习模块采用的激活函数层均采用relu函数(蒋昂波,王维维.relu激活函数优化研究[j].传感器与微系统,2018,37(02):50-52.)。
[0024]
第一分类预测模块与第一特征学习模块相连,由1个全连接层组成。第一分类预测模块从第一特征学习模块接收高维的语义特征表示集合f1′
,将f1′
的维度降低到旧类图像的类别个数,然后利用交叉熵损失函数(见文献“mannor s,peleg d,rubinstein r.the cross entropy method for classification[c]//proceedings of the 22nd international conference on machine learning国际机器学习会议.2005:561-568.”,mannor s等人的论文:交叉熵方法方法用于分类)计算预测类别与真实标签之间的差值作为损失值,利用损失值的反向传播优化第一特征学习模块。
[0025]
第二步,构建用于训练面向类增量学习场景的旧类图像识别系统的旧类图像数据集x
old
。采用来自由亚历克斯
·
克里热夫斯基、维诺德
·
奈尔和杰弗里
·
辛顿收集的开源数据集cifar100(https://www.cs.toronto.edu/~kriz/cifar.html,2009年)作为训练集。cifar100数据集中有100个类,每个类包含600个大小为32
×
32的彩色图像,每类各有500个训练图像和100个测试图像。选择前50个类别的所有训练图像作为旧类图像数据集x
old
,为x
old
分配标签y
old
。
[0026]
第三步,第一输入预处理模块从x
old
中读取大小为n的旧类图像集合x,x={x1,x2,...,xn…
,xn},其中n=64,1≤n≤n,xn表示x中的第n个图像,第一输入预处理模块采用预处理方法对x中的xn进行预处理,包括图像随机裁剪、水平翻转、亮度变化、规范化,得到预处理后的旧类图像集合x1,将x1的标签集合用y1表示表示将预处理后的旧类图像集合x1和相应的标签集合y1发送给第一自监督增强模块,yn是xn的标签,方法是:
[0027]
3.1令变量n=1;
[0028]
3.2将xn转化到rgb色彩空间,得到3通道的xn;
[0029]
3.3对3通道的xn的尺寸规格化为32
×
32,得到规格化后的xn;
[0030]
3.4将规格化后的xn从向量形式转化为张量(tensor)形式,得到张量形式的xn,将张量形式的xn用表示,将放入预处理后的图像集合x1;
[0031]
3.5将xn的标签yn放入标签集合y1,yn∈y
old
;
[0032]
3.6若n<n,令n=n+1,转3.2;若n=n,得到预处理后的图像集合x1和标签集合y1,其中,y1={y1,y2,...,yn…
,yn},转3.7;
[0033]
3.7将x1和y1发送给自监督增强模块。
[0034]
第四步,第一自监督增强模块从第一输入预处理模块接收x1和y1,对x1采用自监督标签增强方法(h.lee,s.j.hwang,and j.shin,“self-supervised label augmentation via input transformations.”arxiv,jun.29,2020.doi:10.48550/arxiv.1910.05872.h.lee等人的论文:通过输入变换的自监督标签增强,5714-5724)进行增强,生成增强后的旧类图像集合x1′
和标签y1′
,将x1′
和y1′
发送给第一特征学习模块,方法是:
[0035]
4.1令变量n=1;
[0036]
4.2对x1中的分别旋转90度、180度和270度,得到旋转后的图像将和放到增强后的旧类图像集合x1′
中;
[0037]
4.3为计算相应的标签,将yn+1作为的标签,将yn+2作为的标签,将yn+3作为的标签,并将这3个标签放到增强后的标签集合y1′
中;
[0038]
4.4若n<n,令n=n+1,转4.2;若n=n,得到增强后的旧类图像集合x1′
,,和标签集合y1′
,y1′
={{y1,y1+1,y1+2,y1+3},{y2,y2+1,y2+2,y2+3},
…
,{yn,yn+1,yn+2,yn+3},
…
,{yn,yn+1,yn+2,yn+3}},转4.5;
[0039]
4.5将x1′
和y1′
发送给第一特征学习模块。
[0040]
第五步,采用x1′
对面向类增量学习场景的旧类图像识别系统的第一特征学习模块及第一分类预测模块进行训练,得到第一特征学习模块和第一分类预测模块的最佳网络权重参数。方法是:
[0041]
5.1初始化第一特征学习模块和第一分类预测模块模块中的权重参数,令初始学习率learningrate为0.01,批处理尺寸为n,n=64,1≤n≤64,训练迭代总轮数epoch_max为100,当前训练轮数epoch_cur为1。
[0042]
5.2第一特征学习模块从第一自监督增强模块接收x1′
和y1′
,采用特征提取方法对x1′
进行特征提取,得到x1′
的高维语义特征集合f1′
,此时f1′
={f2,f3,f4,f5,f6},f2表示第二高维语义特征集合,f3表示第三高维语义特征集合,f4表示第四高维语义特征集合,f5表示第五高维语义特征集合,f6表示第六高维语义特征集合,并将f1′
和y1′
发送给第一分类预测模块。具体方法是:
[0043]
5.2.1初始化n=1;
[0044]
5.2.2第一特征学习模块中第一模块采用卷积方法对x1′
中的第n个图像集合执行1次卷积操作,得到第一模块第一卷积模块的结果将发送给第二模块,方法是:
[0045]
5.2.2.1第一特征学习模块中第一模块的第一卷积层对(中每个图像的输入通道是3)进行二维卷积,得到通道数是64的二维卷积结果将发送给第一归一化层;
[0046]
5.2.2.2第一特征学习模块中第一模块的第一归一化层对进行归一化操作,得到归一化结果将发送给第一模块的激活函数层;
[0047]
5.2.2.3第一特征学习模块中第一模块的激活函数层对进行非线性激活,得到非线性激活结果将发送给第一下采样层;
[0048]
5.2.2.4第一特征学习模块中第一模块的第一下采样层对进行最大池化操作,得到通道数是64的特征学习模块中第一模块的结果将发送给第一特征学习模块中第二模块;
[0049]
5.2.3第一特征学习模块中第二模块从第一特征学习模块中第一模块接收,采
用残差单元操作方法(见文献“he k,zhang x,ren s,et al.deep residual learning for image recognition[c]//proceedings of the ieee conference on computer vision and pattern recognition.2016:770-778.”,he k等人的论文:基于深度残差学习的图像识别)对进行2次卷积操作,得到通道数是64的特征学习模块中第二模块的结果将发送给第一特征学习模块中第三模块,并将放到第二高维语义特征集合f2中。
[0050]
5.2.4第一特征学习模块中第三模块从第一特征学习模块中第二模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是128的特征学习模块中第三模块的结果将发送给第一特征学习模块中第四模块,并将放到第三高维语义特征集合f3中。
[0051]
5.2.5第一特征学习模块中第四模块从第一特征学习模块中第三模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是256的特征学习模块中第四模块的结果将送给第一特征学习模块中第五模块,并将放到第四高维语义特征集合f4中。
[0052]
5.2.6第一特征学习模块中第五模块从第一特征学习模块中第四模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是512的特征学习模块中第五模块的结果将发送给特征学习模块中第六模块,并将放到第五高维语义特征集合f5中。
[0053]
5.2.7第一特征学习模块中第六模块从第一特征学习模块中第五模块接收第六模块中的第二下采样层对进行下采样操作,得到通道数为512的特征学习模块中第六模块的结果将发送给第一分类预测模块,并将放到第六高维语义特征集合f6中。
[0054]
5.2.8若n<n,令n=n+1,转5.2.2;若n=n,得到五个高维语义特征集合f2,f3,f4,f5,f6,,将f2,f3,f4,f5,f6,放到x1′
的高维语义特征集合f1′
中,此时f1′
={f2,f3,f4,f5,f6}。
[0055]
5.2.9第一特征学习模块中第六模块将f1′
和y1′
发送给第一分类预测模块。
[0056]
5.3第一分类预测模块从特征学习模块中第六模块接收f1′
和y1′
,采用公式(1)计算f1′
中的f6与y1′
的交叉熵损失l1,公式(1)中的f表示第一分类预测模块中的全连接层分类器,f(f6)表示f6经分类器f处理后的预测类别,l
ce
(f(f6),y1′
)表示预测类别f(f6)与真实标签y1′
间的交叉熵损失。
[0057]
l1=l
ce
(f(f6),y1′
)
ꢀꢀ
公式(1)
[0058]
5.4令当前训练轮数epoch_cur=epoch_cur+1;若epoch_cur≤训练迭代总轮数epoch_max,转5.2;若epoch_cur>训练迭代总轮数epoch_max,结束训练,转5.5。
[0059]
5.5采用公式(2)计算旧类原型集合p
old
,p
old
中包含n个元素
[0060][0061]
5.6将训练好的旧类图像识别系统中的第一特征学习模块和第一分类预测模块得到的权重参数以pth格式保存,得到训练后的面向类增量学习场景的旧类图像分类系统。
[0062]
第六步,采用所有类图像识别系统构建方法构建识别所有类面向类增量学习场景
的所有类图像识别系统。面向类增量学习场景的所有类图像识别系统由新类训练图像数据集x
new
、第二输入预处理模块、第二自监督增强模块、第二特征学习模块和第二分类预测模块构成。x
new
为cifar100数据集中的第51到第60类,x
new
的标签表示为y
new
,第二输入预处理模块结构和功能与第一输入预处理模块结构和功能相同,第二自监督增强模块的结构和功能与第一自监督增强模块结构和功能相同,第二特征学习模块的结构和功能与第一特征学习模块的结构和功能的相同,第二分类预测模块与第一分类预测模板结构和功能有不同。第二特征学习模块的权重参数采用第一特征学习模块参数进行初始化,第二分类预测模块的权重参数采用第一分类预测模块参数进行初始化。第二输入预处理模块、第二自监督增强模块、第二特征学习模块和第二分类预测模块也均由多层卷积神经网络cnn(convolutional neural network)在深度学习框架pytorch中实现。
[0063]
第二输入预处理模块与新类图像数据集x
new
、第二自监督增强及第二特征学习模块相连,第二输入预处理模块从新类图像数据集x
new
读取新类图像集合xx,xx={xx1,xx2,...,xxn...,xxn},对xx中的xxn进行图像随机裁剪、水平翻转、亮度变化、规范化等预处理,得到预处理后的新类图像集合x2,将预处理后的新类图像集合x2和相应的标签y2(y2={yy1,yy2,...,yyn…
,yyn})发送给第二自监督增强模块,yyn是xxn的标签。
[0064]
第二自监督增强模块与第二输入预处理模块和第二特征学习模块相连,第二自监督增强模块从第二输入预处理模块接收x2和y2,对x2采用第四步所述的自监督标签增强方法进行增强,生成增强后的新类图像集合x2′
和标签集合y2′
,将x2′
和y2′
发送给第二特征学习模块。
[0065]
第二特征学习模块与第二自监督增强模块和第二分类预测模块相连,第二特征学习模块从第二自监督增强模块接收x2′
和y2′
,从x2′
中提取新类图像的高维语义特征表示,将新类图像的高维的语义特征表示发送给第二分类预测模块。第二特征学习模块是resnet18网络,该网络的六个模块的结构和功能与第一特征学习模块的六个模块的结构和功能相同。
[0066]
第二分类预测模块与第二特征学习模块相连,由1个全连接层组成。该全连接层的输出是在第一分类预测模块的输出基础上进行扩展,将输出扩展为所有类的图像的类别个数(旧类别和新类别个数之和)。第二分类预测模块从第二特征学习模块接收新类图像的高维语义特征表示,将新类图像的高维语义特征表示的维度降低到所有图像(新类+旧类)的类别个数,然后利用交叉熵损失函数计算预测类别与真实标签之间的差值作为损失值,利用损失值的反向传播优化第二特征学习模块。利用一致性正则化损失函数计算p
old
与p
aug
间的差值,利用知识蒸馏损失函数计算旧类图像和新类图像特征表示间的差值,将三个差值之和作为损失值,利用损失值的反向传播优化第二特征学习模块。
[0067]
第七步,构建用于训练所有类图像识别系统的新类图像数据集x
new
。方法是:从cifar100数据集选择第51到第60类的图像作为新类图像数据集x
new
。
[0068]
第八步,第二输入预处理模块从x
new
中读取大小为n的图像集合xx,xx={xx1,xx2,...,xxn...,xxn},其中n=64,1≤n≤64;第二输入预处理模块采用第三步所述预处理方法对xx中的xxn进行预处理,得到预处理后的新类图像集合x2,将预处理后的新类图像集合x2和相应的标签y2(y2={yy1,yy2,...,yyn...,yyn})发送给第二自监督增强模块,yyn是xxn的标签。
by reducing representational collapse,”arxiv,arxiv:2008.03156,aug.2020.doi:10.48550/arxiv.2008.03156,a.aghajanyan等人:通过减少表征崩溃更好地进行微调”)进行增强,采用公式(3)计算增强原型p
aug
[0081]
p
aug
=p
old
+e
×rt
ꢀꢀ
公式(3)
[0082]
公式(3)中的e表示高斯噪声,e服从正态分布,r
t
表示控制增强原型的不确定性尺度指标,r
t
通过公式来计算对计算平方根得到。d表示特征空间的维度512维,∑
t,k
表示k类特征的协方差矩阵,tr表示计算矩阵的迹。
[0083]
12.2.4.3通过公式(4)采用对称kullback-leibler(kl)技术(见文献“b.zheng et al.,“consistency regularization for cross-lingual fine-tuning.”arxiv,jun.15,2021.accessed:jun.06,2022.[online].available:http://arxiv.org/abs/2106.08226”,b.zheng等人的论文:跨语言微调的一致性正则化)计算5.5步中计算得到的旧类原型集合p
old
与5.6步计算得到的增强原型p
aug
之间的一致性损失作为原型一致性损失l
p
。其中,f(
·
)表示所有类图像分类系统中分类预测模块的全连接层分类器,kls是对称kl散度;
[0084]
l
p
=kls(f(p
old
),f(p
aug
))
ꢀꢀ
公式(4)
[0085]
12.2.4.4采用知识蒸馏方法计算知识蒸馏损失,知识蒸馏损失包含多尺度自注意蒸馏损失l
msfd
、特征相似性概率蒸馏损失l
fspd
和全局特征蒸馏损失l
gfd
三部分,方法是:
[0086]
12.2.4.4.1计算多尺度自注意蒸馏损失l
msfd
,方法是:
[0087]
12.2.4.4.1.1从f2′
中取出{ff2,ff3,ff4,ff5},对f2′
中的每个特征表示计算自注意特征表示,ff2的自注意特征表示ff2的通道数c=64,ff3的自注意特征表示ff3的通道数c=128,ff4的自注意特征表示ff4的通道数c=256,ff5的自注意特征表示ff5的通道数c=512,c表示为自注意特征表示的通道数。
[0088]
12.2.4.4.1.2从f1″
中取出{fff2,fff3,fff4,fff5},对f1″
中的每个特征表示计算自注意特征表示,fff2的自注意特征表示fff2的的通道数c=64,fff3的自注意特征表示fff3的通道数c=128,fff4的自注意特征表示的自注意特征表示fff4的通道数c=256,fff5的自注意特征表示fff5的通道数c=512。
[0089]
12.2.4.4.1.3计算多尺度自注意蒸馏损失l
msfd
,,||q||2表示对q求范数。
[0090]
12.2.4.4.2计算特征相似性概率蒸馏损失l
fspd
,方法是:
[0091]
12.2.4.4.2.1从f2′
中取出ff6,从f1″
中取出fff6,通过相似性概率分布技术(见文献“n.passalis and a.tefas,“learning deep representations with probabilistic knowledge transfer.”arxiv,mar.20,2019.accessed:jul.03,2022.[online].available:http://arxiv.org/abs/1803.10837.”,n.passalis等人的论文:利用概率知识转移学习深度表示)采用公式(5)计算第一特征相似性概率分布p
′
,采用公式(6)计算第二特征相似性概率分布p
″
。
[0092][0093][0094]
12.2.4.4.2.2采用kullback-leibler(kl)散度公式(见文献“joyce j m.kullback-leibler divergence[m]//international encyclopedia of statistical science.springer,berlin,heidelberg,2011:720-722.”,joyce j m等人的论文:k-l散度)计算特征相似性概率蒸馏损失l
fspd
=kl(p
″
,p
′
)(即对p
″
和p
′
计算kl散度)。
[0095]
12.2.4.4.3从f2′
中取出ff6,从f1″
中取出fff6,采用公式(7)计算全局特征蒸馏损失l
gfd
。
[0096]
l
gfd
=||ff
6-fff6||2ꢀꢀ
公式(7)
[0097]
12.2.4.4.4结合以上三种蒸馏损失,计算总的知识蒸馏损失l
kd
,l
kd
=l
msfd
+l
fspd
+l
gfd
;
[0098]
12.2.4.4.5利用总的优化目标l
total
更新所有类图像分类系统中第二特征学习模块和第二分类预测模块的参数,l
total
=l
clf
+λ1l
p
+λ2l
kd
。其中,l
clf
表示所有类图像分类系统对新类特征表示和旧类原型、增强原型进行分类的损失,l
clf
=l
ce
(f(p
old
;p
aug
),y1′
)+l2,l
ce
(f(p
old
;p
aug
),y1′
)表示旧类原型、增强原型与旧类标签y1′
的分类损失,l2=l
ce
(f(ff6),y2′
)表示新类特征表示ff6与新类标签y2′
的交叉熵分类损失。λ1表示为损失的第一权重因子,λ2表示为损失的第二权重因子,本发明中设置λ1=λ2=10。
[0099]
12.2.5令当前训练轮数epoch_cur=epoch_cur+1;若epoch_cur≤训练迭代总轮数epoch_max,转12.2.4.4;若epoch_cur>训练迭代总轮数epoch_max,得到第一次训练后的所有类图像分类系统,转第十三步。
[0100]
第十三步,采用第六步所述所有类图像识别系统构建方法构建新的面向类增量学习场景的所有类图像识别系统,不断构建新类数据集,不断采用新类数据集对重新构建的新的面向类增量学习场景的所有类图像识别系统进行训练,直到cifar100数据集中的100个类别全部参与训练,得到最终训练后的所有类图像分类系统,方法是:
[0101]
13.1令所有类图像识别系统再次训练轮数x=1;
[0102]
13.2采用第六步所述所有类图像识别系统构建方法构建第x+1个面向类增量学习场景的所有类图像识别系统,该系统由第x+2输入预处理模块、第x+2自监督增强模块、第x+2特征学习模块和第x+2分类预测模块组成。其中,第x+2输入预处理模块、第x+2自监督增强模块、第x+2特征学习模块的结构和功能与第二输入预处理模块、第二自监督增强模块、第二特征学习模块的结构和功能相同。第x+2分类预测模块的全连接层参数的维度初始化为[512,old_classes+(x+1)10];
[0103]
13.3将cifar100数据集第10(x+5)+1到第10(x+6)类别的所有训练图像作为新类
图像数据集x
new
;
[0104]
13.4第x+2输入预处理模块从x
new
中读取大小为n的图像集合xxx,xxx={xxx1,xxx2,...,xxxn…
,xxxn},其中n=64,1≤n≤64;第x+2输入预处理模块采用第三步所述预处理方法对xxx中的xxxn进行预处理,得到预处理后的新类图像集合x3,将预处理后的新类图像集合x3和相应的标签y3(y3={yyy1,yyy2,...,yyyn...,yyyn})发送给第x+2自监督增强模块,yyyn是xxxn的标签。
[0105]
13.5第x+2自监督增强模块从第x+2输入预处理模块接收x3和y3,对x3采用第四步所述的自监督标签增强方法进行增强,生成增强后的新类图像集合x3′
和标签y3′
,将x3′
和y3′
发送给第x+2特征学习模块。
[0106]
13.6采用第x次训练后的所有类图像分类系统中的第x+2特征学习模块的权重参数初始化面向类增量学习场景的所有类图像分类系统的第x+2特征学习模块的权重参数;
[0107]
13.7令第x+2分类预测模块中的全连接层参数的维度为[512,old_classes+10(x+1)],其中,第二分类预测模块中的全连接层参数的维度为[512,old_classes+10x]的部分采用第x+1分类预测模块的全连接层权重参数进行初始化,而另外[512,10]的维度采用随机赋值的方式进行初始化。
[0108]
13.8令t=x+1,k
old
=50+10x,k
new
=10,采用第十二步所述训练方法运用13.5步得到的增强后的新类数据集合x3′
对第x+1个面向类增量学习场景的所有类图像识别系统的第x+2特征学习模块和第x+2分类预测模块进行训练,得到第x+2特征学习模块和第x+2分类预测模块的最佳网络权重参数,得到第x+1次训练后的所有类图像分类系统。
[0109]
13.9若x<5,令x=x+1,转13.2;若x=5,得到最终(第五次)训练后的所有类图像识别系统,由第六输入预处理模块、第六自监督增强模块、第六特征学习模块和第六分类预测模块组成,转第十四步。
[0110]
第十四步,采用最终训练后的所有类图像分类系统对用户输入的测试图像x
user
进行图像分类,得到预测的图像分类结果。方法是:
[0111]
14.1训练后的所有类图像分类系统接收用户输入的属于cifar100中类别的测试图像集合x
user
和标签集合y
user
;
[0112]
14.2第六输入预处理模块采用第三步所述预处理方法对x
user
进行预处理,得到预处理后的图像集合将和相应的标签集合发送给第六自监督增强模块,发送给第六自监督增强模块,yyn是xxn的标签。
[0113]
14.3第六自监督增强模块从第六输入预处理模块接收预处理后的测试图像集合和对采用第四步所述的自监督标签增强方法进行增强,生成增强后的用户图像集合和标签将和标签发送给第六特征学习模块;
[0114]
14.4第六特征学习模块从自监督增强模块接收和,采用5.2步所述的特征提取方法对进行特征提取,得到的高维语义特征集合f
′
user
,,将f
′
user
和发送给第六分类预测模块。是第二高维语义特征集合,是第三高维语义特征集合,是第四高维语义特征集合,是第五高维语义特征集合,是第六高维语义特征集合;
[0115]
14.5第六分类预测模块从第六特征学习模块接收高维语义特征表示f
′
user
,将f′
user
的维度降低到包含的类别数(即将全连接层的权重参数从[256,512]的维度降低到[256,100]维度),选择[256,100]维度中概率最大向量对应的类别数作为对测试图像的分类结果。
[0116]
第十五步,结束。
[0117]
采用本发明可以达到以下技术效果:
[0118]
1.采用本发明能够提升图像对所有类别的识别精度,本发明在第10.4.3.3步采用知识蒸馏方法计算知识蒸馏损失,相比传统基于输出层和中间特征的知识蒸馏方法,本发明将多尺度自注意蒸馏损失l
msfd
、特征相似性概率蒸馏损失l
fspd
和全局特征蒸馏损失l
gfd
三部分相加,能够提升对所有类别的分类精度。
[0119]
2.本发明第十三步在无需存储任何旧类训练数据的情况下对用户输入的测试图像x
user
进行图像分类,有效克服了旧类的灾难性遗忘问题,提升了对用户输入图像的分类精度。
[0120]
以上对本发明进行了详细介绍,用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通研究人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
[0121]
本发明在cifar100数据集上进行了实验验证,实验结果表明本发明不仅能够缓解灾难性遗忘,还能降低分类偏差。
附图说明
[0122]
图1为本发明第一步构建的面向类增量学习场景的旧类图像分类系统和面向类增量学习场景的所有类图像识别系统的逻辑结构图;
[0123]
图2为本发明的总体流程图。
具体实施方式
[0124]
图2为本发明总体流程图;如图2所示,本发明包括以下步骤:
[0125]
第一步,构建识别旧类的面向类增量学习场景的旧类图像分类系统。面向类增量学习场景的旧类图像识别系统如图1所示,由旧类图像数据集k
old
、第一输入预处理模块、第一自监督增强模块、第一特征学习模块和第一分类预测模块构成。第一输入预处理模块、第一自监督增强模块、第一特征学习模块和第一分类预测模块均由多层卷积神经网络cnn(convolutional neural network)在深度学习框架pytorch中实现。
[0126]
第一输入预处理模块与旧类图像数据集、第一自监督增强及第一特征学习模块相连,从旧类图像数据集x
old
读取旧类图像,第一输入预处理模块对从x
old
中读取的旧类图像集合x中的旧类图像进行图像随机裁剪、水平翻转、亮度变化、规范化等预处理,得到预处理后的旧类图像集合x1,将x1的标签集合用y1表示,将预处理后的旧类图像集合x1和标签集合y1发送给第一自监督增强模块。
[0127]
第一自监督增强模块与第一输入预处理模块和第一特征学习模块相连,第一自监督增强模块从第一输入预处理模块接收x1和y1,对x1和y1采用自监督标签增强方法(h.lee,s.j.hwang,and j.shin,“self-supervised label augmentation via input transformations.”arxiv,jun.29,2020.doi:10.48550/arxiv.1910.05872.h.lee等人的
论文:通过输入变换的自监督标签增强,5714-5724)进行增强,生成增强后的旧类图像集合x1′
,在x1′
基础上生成增强后的标签集合y1′
,将x1′
和y1′
发送给第一特征学习模块。
[0128]
第一特征学习模块与第一自监督增强模块和第一分类预测模块相连,第一特征学习模块从第一自监督增强模块接收增强后的x1′
和y1′
,从x1′
中提取高维的语义特征表示集合f1′
,将f1′
和y1′
发送给第一分类预测模块。第一特征学习模块是resnet18网络(he k,zhang x,ren s,et al.deep residual learning for image recognition[j].ieee,2016.he k等人的论文:图像识别的深度残差学习,770-778),该网络分为六个模块。其中,第一模块由第一卷积层、第一归一化层、激活函数层、第一下采样层组成,第一卷积层的卷积核大小为3
×
3,步长是1,填充大小是1;第二至第五模块均由两个残差单元组成,每个残差单元均由1个卷积层、1个归一化层和激活函数层组成;第二模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是1,填充大小是1;第三模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是2,填充大小是1;第四模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是2,填充大小是1;第五模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是2,填充大小是1。第六模块由第二下采样层组成,第二下采样层的步长是1,无填充。第一特征学习模块采用的激活函数层均采用relu函数(蒋昂波,王维维.relu激活函数优化研究[j].传感器与微系统,2018,37(02):50-52.)。
[0129]
第一分类预测模块与第一特征学习模块相连,由1个全连接层组成。第一分类预测模块从第一特征学习模块接收高维的语义特征表示集合f1′
,将f1′
的维度降低到旧类图像的类别个数,然后利用交叉熵损失函数(见文献“mannor s,peleg d,rubinstein r.the cross entropy method for classification[c]//proceedings of the 22nd international conference on machine learning国际机器学习会议.2005:561-568.”,mannor s等人的论文:交叉熵方法方法用于分类)计算预测类别与真实标签之间的差值作为损失值,利用损失值的反向传播优化第一特征学习模块。
[0130]
第二步,构建用于训练面向类增量学习场景的旧类图像识别系统的旧类图像数据集x
old
。采用来自开源数据集cifar100(https://www.cs.toronto.edu/~kriz/cifar.html,2009年)作为训练集。cifar100数据集中有100个类,每个类包含600个大小为32
×
32的彩色图像,每类各有500个训练图像和100个测试图像。选择前50个类别的所有训练图像作为旧类图像数据集x
old
,为x
old
分配标签y
old
,所有类别的测试图像集合表示为x
test
。
[0131]
第三步,第一输入预处理模块从x
old
中读取大小为n的旧类图像集合x,x={x1,x2,...,xn...,xn},其中n=64,1≤n≤n,xn表示x中的第n个图像,第一输入预处理模块采用预处理方法对x中的xn进行预处理,包括图像随机裁剪、水平翻转、亮度变化、规范化等预处理,得到预处理后的旧类图像集合x1,将x1的标签集合用y1表示表示将预处理后的旧类图像集合x1和相应的标签集合y1发送给第一自监督增强模块,yn是xn的标签,方法是:
[0132]
3.1令变量n=1;
[0133]
3.2将xn转化到rgb色彩空间,得到3通道的xn;
[0134]
3.3对3通道的xn的尺寸规格化为32
×
32,得到规格化后的xn;
[0135]
3.4将规格化后的xn从向量形式转化为张量(tensor)形式,得到张量形式的xn,将
张量形式的xn用表示,将放入预处理后的图像集合x1;
[0136]
3.5将xn的标签yn放入标签集合y1,yn∈y
old
;
[0137]
3.6若n<n,令n=n+1,转3.2;若n=n,得到预处理后的图像集合x1和标签集合y1,其中,y1={y1,y2,...,yn...,yn},转3.7;
[0138]
3.7将x1和y1发送给自监督增强模块。
[0139]
第四步,第一自监督增强模块从第一输入预处理模块接收x1和y1,对x1采用自监督标签增强方法(h.lee,s.j.hwang,and j.shin,“self-supervised label augmentation via input transformations.”arxiv,jun.29,2020.doi:10.48550/arxiv.1910.05872.h.lee等人的论文:通过输入变换的自监督标签增强,5714-5724)进行增强,生成增强后的旧类图像集合x1′
和标签y1′
,将x1′
和y1′
发送给第一特征学习模块,方法是:
[0140]
4.1令变量n=1;
[0141]
4.2对x1中的分别旋转90度、180度和270度,得到旋转后的图像将和放到增强后的旧类图像集合x1′
中;
[0142]
4.3为计算相应的标签,将yn+1作为的标签,将yn+2作为的标签,将yn+3作为的标签,并将这3个标签放到增强后的标签集合y1′
中;
[0143]
4.4若n<n,令n=n+1,转4.2;若n=n,得到增强后的旧类图像集合x1′
,,和标签集合y1′
,y1′
={{y1,y1+1,y1+2,y1+3},{y2,y2+1,y2+2,y2+3},
…
,{yn,yn+1,yn+2,yn+3},
…
,{yn,yn+1,yn+2,yn+3}},转4.5;
[0144]
4.5将x1′
和y1′
发送给第一特征学习模块。
[0145]
第五步,采用x1′
对面向类增量学习场景的旧类图像识别系统的第一特征学习模块及第一分类预测模块进行训练,得到第一特征学习模块和第一分类预测模块的最佳网络权重参数。方法是:
[0146]
5.1初始化第一特征学习模块和第一分类预测模块模块中的权重参数,令初始学习率learningrate为0.01,批处理尺寸为n,n=64,1≤n≤n,训练迭代总轮数epoch_max为100,当前训练轮数epoch_cur为1。
[0147]
5.2第一特征学习模块从第一自监督增强模块接收x1′
和y1′
,采用特征提取方法对x1′
进行特征提取,得到x1′
的高维语义特征集合f1′
,此时f1′
={f2,f3,f4,f5,f6},f2表示第二高维语义特征集合,f3表示第三高维语义特征集合,f4表示第四高维语义特征集合,f5表示第五高维语义特征集合,f6表示第六高维语义特征集合,并将f1′
和y1′
发送给第一分类预测模块。具体方法是:
[0148]
5.2.1初始化n=1;
[0149]
5.2.2第一特征学习模块中第一模块采用卷积方法对x1′
中的第n个图像集合执行1次卷积操作,得到第一模块第一卷积模块的结果将发送给第二模块,方法是:
[0150]
5.2.2.1第一特征学习模块中第一模块的第一卷积层对(中每个图像的输入通道是3)进行二维卷积,得到通道数是64的二维卷积结果将发送给第一归一化层;
[0151]
5.2.2.2第一特征学习模块中第一模块的第一归一化层对进行归一化操作,得到归一化结果将发送给第一模块的激活函数层;
[0152]
5.2.2.3第一特征学习模块中第一模块的激活函数层对进行非线性激活,得到非线性激活结果将发送给第一下采样层;
[0153]
5.2.2.4第一特征学习模块中第一模块的第一下采样层对进行最大池化操作,得到通道数是64的特征学习模块中第一模块的结果将发送给第一特征学习模块中第二模块;
[0154]
5.2.3第一特征学习模块中第二模块从第一特征学习模块中第一模块接收采用残差单元操作方法(见文献“he k,zhang x,ren s,et al.deep residual learning for image recognition[c]//proceedings of the ieee conference on computer vision and pattern recognition.2016:770-778.”,he k等人的论文:基于深度残差学习的图像识别)对进行2次卷积操作,得到通道数是64的特征学习模块中第二模块的结果将发送给第一特征学习模块中第三模块,并将放到第二高维语义特征集合f2中。
[0155]
5.2.4第一特征学习模块中第三模块从第一特征学习模块中第二模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是128的特征学习模块中第三模块的结果将发送给第一特征学习模块中第四模块,并将放到第三高维语义特征集合f3中。
[0156]
5.2.5第一特征学习模块中第四模块从第一特征学习模块中第三模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是256的特征学习模块中第四模块的结果将送给第一特征学习模块中第五模块,并将放到第四高维语义特征集合f4中。
[0157]
5.2.6第一特征学习模块中第五模块从第一特征学习模块中第四模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是512的特征学习模块中第五模块的结果将发送给特征学习模块中第六模块,并将放到第五高维语义特征集合f5中。
[0158]
5.2.7第一特征学习模块中第六模块从第一特征学习模块中第五模块接收第六模块中的第二下采样层对进行下采样操作,得到通道数为512的特征学习模块中第六模块的结果将发送给第一分类预测模块,并将放到第六高维语义特征集合f6中。
[0159]
5.2.8若n<n,令n=n+1,转5.2.2;若n=n,得到五个高维语义特征集合f2,f3,f4,f5,f6,,将f2,f3,f4,f5,f6,放到x1′
的高维语义特征集合f1′
中,此时f1′
={f2,f3,f4,f5,f6}。
[0160]
5.2.9第一特征学习模块中第六模块将f1′
和y1′
发送给第一分类预测模块。
[0161]
5.3第一分类预测模块从特征学习模块中第六模块接收f1′
和y1′
,采用公式(1)计
算f1′
中的f6与y1′
的交叉熵损失l1,公式(1)中的f表示第一分类预测模块中的全连接层分类器,f(f6)表示f6经分类器f处理后的预测类别,l
ce
(f(f6),y1′
)表示预测类别f(f6)与真实标签y1′
间的交叉熵损失。
[0162]
l1=l
ce
(f(f6),y1′
)
ꢀꢀ
公式(1)
[0163]
5.4令当前训练轮数epoch_cur=epoch_cur+1;若epoch_cur≤训练迭代总轮数epoch_max,转5.2;若epoch_cur>训练迭代总轮数epoch_max,结束训练,转5.5。
[0164]
5.5采用公式(2)计算旧类原型集合p
old
,p
old
中包含n个元素
[0165][0166]
5.6将训练好的旧类图像识别系统中的第一特征学习模块和第一分类预测模块得到的权重参数以pth格式保存,得到训练后的面向类增量学习场景的旧类图像分类系统。
[0167]
第六步,采用所有类图像识别系统构建方法构建识别所有类的面向类增量学习场景的所有类图像识别系统。面向类增量学习场景的所有类图像识别系统如图1所示,由新类训练图像数据集x
new
、第二输入预处理模块、第二自监督增强模块、第二特征学习模块和第二分类预测模块构成。其中,x
new
为cifar100数据集中的第51到第60类,x
new
的标签表示为y
new
,第二输入预处理模块结构和功能与第一输入预处理模块结构和功能相同,第二自监督增强模块的结构和功能与第一自监督增强模块结构和功能相同,第二特征学习模块的结构和功能与第一特征学习模块的结构和功能的相同,第二分类预测模块与第一分类预测模板结构和功能有不同。第二特征学习模块的权重参数采用第一特征学习模块参数进行初始化,第二分类预测模块的权重参数采用第一分类预测模块参数进行初始化。第二输入预处理模块、第二自监督增强模块、第二特征学习模块和第二分类预测模块也均由多层卷积神经网络cnn在深度学习框架pytorch中实现。
[0168]
第二输入预处理模块与新类图像数据集x
new
、第二自监督增强及第二特征学习模块相连,第二输入预处理模块从新类图像数据集x
new
读取新类图像集合xx,xx={xx1,xx2,...,xxn…
,xxn},对xx中的xxn进行图像随机裁剪、水平翻转、亮度变化、规范化等预处理,得到预处理后的新类图像集合x2,将预处理后的新类图像集合x2和相应的标签y2(y2={yy1,yy2,...,yyn...,yyn})发送给第二自监督增强模块,yyn是xxn的标签。
[0169]
第二自监督增强模块与第二输入预处理模块和第二特征学习模块相连,第二自监督增强模块从第二输入预处理模块接收x2和y2,对x2采用第四步所述的自监督标签增强方法进行增强,生成增强后的新类图像集合x2′
和标签集合y2′
,将x2′
和y2′
发送给第二特征学习模块。
[0170]
第二特征学习模块与第二自监督增强模块和第二分类预测模块相连,第二特征学习模块从第二自监督增强模块接收x2′
和y2′
,从x2′
中提取新类图像的高维语义特征表示,将新类图像的高维的语义特征表示发送给第二分类预测模块。第二特征学习模块是resnet18网络,该网络的六个模块的结构和功能与第一特征学习模块的六个模块的结构和功能相同。
[0171]
第二分类预测模块与第二特征学习模块相连,由1个全连接层组成。该全连接层的输出是在第一分类预测模块的输出基础上进行扩展,将输出扩展为所有类的图像的类别个数(旧类别和新类别个数之和)。第二分类预测模块从第二特征学习模块接收新类图像的高维语义特征表示,将新类图像的高维语义特征表示的维度降低到所有图像(新类+旧类)的
类别个数,然后利用交叉熵损失函数计算预测类别与真实标签之间的差值作为损失值,利用损失值的反向传播优化第二特征学习模块。利用一致性正则化损失函数计算p
old
与p
aug
间的差值,利用知识蒸馏损失函数计算旧类图像和新类图像特征表示间的差值,将三个差值之和作为损失值,利用损失值的反向传播优化第二特征学习模块。
[0172]
第七步,构建用于训练所有类图像识别系统的新类图像数据集x
new
。方法是:从cifar100数据集选择第51到第60类的图像作为新类图像数据集x
new
。
[0173]
第八步,第二输入预处理模块从x
new
中读取大小为n的图像集合xx,xx={xx1,xx2,...,xxn...,xxn},其中n=64,1≤n≤64;第二输入预处理模块采用第三步所述预处理方法对xx中的xxn进行预处理,得到预处理后的新类图像集合x2,将预处理后的新类图像集合x2和相应的标签y2(y2={yy1,yy2,...,yyn...,yyn})发送给第二自监督增强模块,yyn是xxn的标签。
[0174]
第九步,第二自监督增强模块从第二输入预处理模块接收x2和y2,对x2采用第四步所述的自监督标签增强方法进行增强,生成增强后的新类图像集合x2′
和标签y2′
,将x2′
和标签y2′
发送给第二特征学习模块。令增强次数t=1;
[0175]
第十步,采用第五步训练好的面向类增量学习场景的旧类图像分类系统中的第一特征学习模块的权重参数初始化面向类增量学习场景的所有类图像分类系统的第二特征学习模块的权重参数。
[0176]
第十一步,令第二分类预测模块中的全连接层参数的维度为[512,old_classes+10],其中,类别总数num_classes=100,旧类数old_classes=旧类别的数量k
old
=50,第二分类预测模块中的全连接层参数的维度为[512,old_classes]的部分采用第一分类预测模块的全连接层权重参数进行初始化,而另外[512,10]的维度采用随机赋值的方式进行初始化。新类别的数量k
new
=10;
[0177]
第十二步,采用训练方法运用第九步得到的增强后的新类数据集合x2′
对面向类增量学习场景的所有类图像识别系统的第二特征学习模块和第二分类预测模块进行训练,得到第二特征学习模块和第二分类预测模块的最佳网络权重参数,得到第一次训练后的所有类图像分类系统。方法是:
[0178]
12.1令初始学习率learningrate为0.01,训练迭代总轮数epoch_max为100,当前训练轮数epoch_cur为1。
[0179]
12.2将x2′
中的每个图像输入至所有类图像分类系统的第二特征学习模块,然后利用知识蒸馏损失、交叉熵损失和一致性正则化损失对第二特征学习模块和第二分类预测模块进行训练,得到第二特征学习模块和第二分类预测模块中的最佳网络权重参数。方法是:
[0180]
12.2.1第二特征学习模块从第二自监督增强模块接收x2′
和y2′
,采用5.2步所述的特征提取方法对x2′
进行特征提取,得到x2′
的新类高维语义特征集合f2′
,将f2′
和y2′
发送给第二分类预测模块,f2′
={ff2,ff3,ff4,ff5,ff6},ff2是x2′
的新类的第二高维语义特征集合,ff3是x2′
的新类的第三高维语义特征集合,ff4是新类的第四高维语义特征集合,ff5是x2′
的新类的第五高维语义特征集合,ff6是x2′
的新类的第六高维语义特征集合。
[0181]
12.2.2第一特征学习模块从第二自监督增强模块接收x2′
和y2′
,采用5.2步所述的特征提取方法对x2′
进行特征提取,得到x2′
的旧类高维语义特征集合f1″
,将f1″
发送给第二
的自注意特征表示fff3的通道数c=128,fff4的自注意特征表示的自注意特征表示fff4的通道数c=256,fff5的自注意特征表示fff5的通道数c=512。
[0194]
12.2.4.4.1.3计算多尺度自注意蒸馏损失l
msfd
,,||q||2表示对q求范数。
[0195]
12.2.4.4.2计算特征相似性概率蒸馏损失l
fspd
,方法是:
[0196]
12.2.4.4.2.1从f2′
中取出ff6,从f1″
中取出fff6,通过相似性概率分布技术(见文献“n.passalis and a.tefas,“learning deep representations with probabilistic knowledge transfer.”arxiv,mar.20,2019.accessed:jul.03,2022.[online].available:http://arxiv.org/abs/1803.10837.”,n.passalis等人的论文:利用概率知识转移学习深度表示)采用公式(5)计算第一特征相似性概率分布p
′
,采用公式(6)计算第二特征相似性概率分布p
″
。
[0197][0198][0199]
12.2.4.4.2.2采用kullback-leibler(kl)散度公式(见文献“joyce j m.kullback-leibler divergence[m]//international encyclopedia of statistical science.springer,berlin,heidelberg,2011:720-722.”,joyce j m等人的论文:k-l散度)计算特征相似性概率蒸馏损失l
fspd
=kl(p
″
,p
′
)(即对p
″
和p
′
计算kl散度)。
[0200]
12.2.4.4.3从f2′
中取出ff6,从f1″
中取出fff6,采用公式(7)计算全局特征蒸馏损失l
gfd
。
[0201]
l
gfd
=||ff
6-fff6||2ꢀꢀ
公式(7)
[0202]
12.2.4.4.4结合以上三种蒸馏损失,计算总的知识蒸馏损失l
kd
,l
kd
=l
msfd
+l
fspd
+l
gfd
;
[0203]
12.2.4.4.5利用总的优化目标l
total
更新所有类图像分类系统中第二特征学习模块和第二分类预测模块的参数,l
total
=l
clf
+λ1l
p
+λ2l
kd
。其中,l
clf
表示所有类图像分类系统对新类特征表示和旧类原型、增强原型进行分类的损失,l
clf
=l
ce
(f(p
old
;p
aug
),y1′
)+l2,l
ce
(f(p
old
;p
aug
),y1′
)表示旧类原型、增强原型与旧类标签y1′
的分类损失,l2=l
ce
(f(ff6),y2′
)表示新类特征表示ff6与新类标签y2′
的交叉熵分类损失。λ1表示为损失的第一权重因子,λ2表示为损失的第二权重因子,本发明中设置λ1=λ2=10。
[0204]
12.2.5令当前训练轮数epoch_cur=epoch_cur+1;若epoch_cur≤训练迭代总轮数epoch_max,转12.2.4.4;若epoch_cur>训练迭代总轮数epoch_max,得到第一次训练后的所有类图像分类系统,转第十三步。
[0205]
第十三步,采用第六步所述所有类图像识别系统构建方法构建新的面向类增量学习场景的所有类图像识别系统,不断构建新类数据集,不断采用新类数据集对重新构建的新的面向类增量学习场景的所有类图像识别系统进行训练,直到cifar100数据集中的100
个类别全部参与训练,得到最终训练后的所有类图像分类系统,方法是:
[0206]
13.1令所有类图像识别系统再次训练轮数x=1;
[0207]
13.2采用第六步所述所有类图像识别系统构建方法构建第x+1个面向类增量学习场景的所有类图像识别系统,该系统由第x+2输入预处理模块、第x+2自监督增强模块、第x+2特征学习模块和第x+2分类预测模块组成。其中,第x+2输入预处理模块、第x+2自监督增强模块、第x+2特征学习模块的结构和功能与第二输入预处理模块、第二自监督增强模块、第二特征学习模块的结构和功能相同。第x+2分类预测模块的全连接层参数的维度初始化为[512,old classes+(x+1)10];
[0208]
13.3将cifar100数据集第10(x+5)+1到第10(x+6)类别的所有训练图像作为新类图像数据集x
new
;
[0209]
13.4第x+2输入预处理模块从x
new
中读取大小为n的图像集合xxx,xxx={xxx1,xxx2,...,xxxn...,xxxn},其中n=64,1≤n≤64;第x+2输入预处理模块采用第三步所述预处理方法对xxx中的xxxn进行预处理,得到预处理后的新类图像集合x3,将预处理后的新类图像集合x3和相应的标签y3(y3={yyy1,yyy2,...,yyyn...,yyyn})发送给第x+2自监督增强模块,yyyn是xxxn的标签。
[0210]
13.5第x+2自监督增强模块从第x+2输入预处理模块接收x3和y3,对x3采用第四步所述的自监督标签增强方法进行增强,生成增强后的新类图像集合x3′
和标签y3′
,将x3′
和y3′
发送给第x+2特征学习模块。
[0211]
13.6采用第x次训练后的所有类图像分类系统中的第x+2特征学习模块的权重参数初始化面向类增量学习场景的所有类图像分类系统的第x+2特征学习模块的权重参数;
[0212]
13.7令第x+2分类预测模块中的全连接层参数的维度为[512,old_classes+10(x+1)],其中,第二分类预测模块中的全连接层参数的维度为[512,old_classes+10x]的部分采用第x+1分类预测模块的全连接层权重参数进行初始化,而另外[512,10]的维度采用随机赋值的方式进行初始化。
[0213]
13.8令t=x+1,k
old
=50+10x,k
new
=10,采用第十二步所述训练方法运用13.5步得到的增强后的新类数据集合x3′
对第x+1个面向类增量学习场景的所有类图像识别系统的第x+2特征学习模块和第x+2分类预测模块进行训练,得到第x+2特征学习模块和第x+2分类预测模块的最佳网络权重参数,得到第x+1次训练后的所有类图像分类系统。
[0214]
13.9若x<5,令x=x+1,转13.2;若x=5,得到最终(第五次)训练后的所有类图像识别系统,由第六输入预处理模块、第六自监督增强模块、第六特征学习模块和第六分类预测模块组成,转第十四步。
[0215]
第十四步,采用最终训练后的所有类图像分类系统对用户输入的测试图像x
user
进行图像分类,得到预测的图像分类结果。方法是:
[0216]
14.1训练后的所有类图像分类系统接收用户输入的属于cifar100中类别的测试图像集合x
user
和标签集合y
user
;
[0217]
14.2第六输入预处理模块采用第三步所述预处理方法对x
user
进行预处理,得到预处理后的图像集合将和相应的标签集合发送给第六自监督增强模块,发送给第六自监督增强模块,yyn是xxn的标签。
[0218]
14.3第六自监督增强模块从第六输入预处理模块接收预处理后的测试图像集合和对采用第四步所述的自监督标签增强方法进行增强,生成增强后的用户图像集合和标签将和标签发送给第六特征学习模块;
[0219]
14.4第六特征学习模块从自监督增强模块接收和采用5.2步所述的特征提取方法对进行特征提取,得到的高维语义特征集合f
′
user
,,将f
′
user
和发送给第六分类预测模块。是第二高维语义特征集合,是第三高维语义特征集合,是第四高维语义特征集合,是第五高维语义特征集合,是第六高维语义特征集合;
[0220]
14.5第六分类预测模块从第六特征学习模块接收高维语义特征表示f
′
user
,将f
′
user
的维度降低到包含的类别数(即将全连接层的权重参数从[256,512]的维度降低到[256,100]维度),选择[256,100]维度中概率最大向量对应的类别数作为对测试图像的分类结果。第十五步,结束。
[0221]
为了验证本发明在面向类增量学习场景下的的图像分类精度,选取来自由亚历克斯
·
克里热夫斯基、维诺德
·
奈尔和杰弗里
·
辛顿收集的开源数据集cifar100(https://www.cs.toronto.edu/~kriz/cifar.html,2009年)作为测试数据集,将该数据集中的所有类别的测试图像作为最终的测试集数据,实验过程是采用本发明对测试集图像进行图像分类,本发明识别旧类的面向类增量学习场景的旧类图像分类系统和识别所有类面向类增量学习场景的所有类图像识别系统均基于pytorch编写,第三步和第五步的批处理大小为64,特征提取网络采用resnet18,使用adam优化器,初始学习率为0.001。每一次训练时初始学习率learningrate为0.01,批处理尺寸为n,n=64,1≤n≤64,训练迭代总轮数epoch_max设置100轮,并在45和90轮后学习率除以10。初始的旧类别数量为50个类别,其余的50个类别被分割为5个增量阶段,且每个增量阶段的类别数相等,均设置为10。采用最终训练后的所有类图像分类系统对测试数据集中图像进行分类,评估指标为对测试数据集图像中所有类别的平均分类精度。所有的实验都在linux系统的服务器上运行,整个实验采用1个gpu。实验结果如表1所示,
[0222]
采用本发明所提的图像分类方法能够提高类增量学习场景下的图像分类精度,可达到66.97%的识别性能,而其他的类增量图像分类方法的识别性能均低于本发明。如表1所示,当使用同样的特征提取网络时,使用参数隔离的图像分类方法ewc方法取得25.33%的分类精度。使用正则化策略的图像分类方法lwf和pass方法分别取得33.97%、65.46%的分类精度。使用基于范例的图像分类方法ucir方法取得63.62%的分类精度。
[0223]
表1
[0224][0225][0226]
且本发明在最终训练后的所有类图像分类系统对图像进行图像分类时无需存储任何旧类图像,有效克服了旧类的灾难性遗忘问题,且在无需存储旧类图像的前提下达到了与存储旧类图像方法(基于范例的图像分类方法)同水平识别精度,因此本发明在保证精度的条件下能够避免数据隐私问题。
[0227]
以上对本发明所提供的一种基于知识蒸馏和一致性正则化的类增量图像分类方法进行了详细介绍。本文对本发明的原理及实施方式进行了阐述,以上说明用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通研究人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
技术特征:
1.一种基于知识蒸馏和一致性正则化的类增量图像分类方法,其特征在于包括以下步骤:第一步,构建识别旧类的面向类增量学习场景的旧类图像分类系统;面向类增量学习场景的旧类图像识别系统由旧类图像数据集x
old
、第一输入预处理模块、第一自监督增强模块、第一特征学习模块和第一分类预测模块构成;第一输入预处理模块与旧类图像数据集、第一自监督增强及第一特征学习模块相连,从旧类图像数据集x
old
读取旧类图像,第一输入预处理模块对从x
old
中读取的旧类图像集合x中的旧类图像进行预处理,得到预处理后的旧类图像集合x1,将x1的标签集合用y1表示,将预处理后的旧类图像集合x1和标签集合y1发送给第一自监督增强模块;第一自监督增强模块与第一输入预处理模块和第一特征学习模块相连,第一自监督增强模块从第一输入预处理模块接收x1和y1,对x1和y1采用自监督标签增强方法进行增强,生成增强后的旧类图像集合x1′
,在x1′
基础上生成增强后的标签集合y1′
,将x1′
和y1′
发送给第一特征学习模块;第一特征学习模块与第一自监督增强模块和第一分类预测模块相连,第一特征学习模块从第一自监督增强模块接收增强后的x1′
和y1′
,从x1′
中提取高维的语义特征表示集合f1′
,将f1′
和y1′
发送给第一分类预测模块;第一特征学习模块分为六个模块,其中,第一模块由第一卷积层、第一归一化层、激活函数层、第一下采样层组成;第二至第五模块均由两个残差单元组成,每个残差单元均由1个卷积层、1个归一化层和激活函数层组成;第六模块由第二下采样层组成;第一分类预测模块与第一特征学习模块相连,由1个全连接层组成;第一分类预测模块从第一特征学习模块接收高维的语义特征表示集合f1′
,将f1′
的维度降低到旧类图像的类别个数,然后利用交叉熵损失函数计算预测类别与真实标签之间的差值作为损失值,利用损失值的反向传播优化第一特征学习模块;第二步,构建用于训练面向类增量学习场景的旧类图像识别系统的旧类图像数据集x
old
;采用开源数据集cifar100作为训练集;cifar100数据集中有100个类,每个类包含600个大小为32
×
32的彩色图像,每类各有500个训练图像和100个测试图像;选择前50个类别的所有训练图像作为旧类图像数据集x
old
,为x
old
分配标签y
old
;第三步,第一输入预处理模块从x
old
中读取大小为n的旧类图像集合x,x={x1,x2,
…
,x
n
…
,x
n
},其中n=64,1≤n≤n,x
n
表示x中的第n个图像,第一输入预处理模块采用预处理方法对x中的x
n
进行预处理,包括图像随机裁剪、水平翻转、亮度变化、规范化,得到预处理后的旧类图像集合x1,将x1的标签集合用y1表示y1={y1,y2,
…
,y
n
…
,y
n
},将预处理后的旧类图像集合x1和相应的标签集合y1发送给第一自监督增强模块,y
n
是x
n
的标签;第四步,第一自监督增强模块从第一输入预处理模块接收x1和y1,对x1采用自监督标签增强方法进行增强,生成增强后的旧类图像集合x1′
和标签y1′
,将x1′
和y1′
发送给第一特征学习模块,方法是:4.1令变量n=1;4.2对x1中的分别旋转90度、180度和270度,得到旋转后的图像将和
放到增强后的旧类图像集合x1′
中;4.3为计算相应的标签,将y
n
+1作为的标签,将y
n
+2作为的标签,将y
n
+3作为的标签,并将这3个标签放到增强后的标签集合y1′
中;4.4若n<n,令n=n+1,转4.2;若n=n,得到增强后的旧类图像集合4.4若n<n,令n=n+1,转4.2;若n=n,得到增强后的旧类图像集合和标签集合y1′
,y1′
={{y1,y1+1,y1+2,y1+3},{y2,y2+1,y2+2,y2+3},
…
,{y
n
,y
n
+1,y
n
+2,y
n
+3},
…
,{y
n
,y
n
+1,y
n
+2,y
n
+3}},转4.5;4.5将x1′
和y1′
发送给第一特征学习模块;第五步,采用x1′
对面向类增量学习场景的旧类图像识别系统的第一特征学习模块及第一分类预测模块进行训练,得到第一特征学习模块和第一分类预测模块的最佳网络权重参数;方法是:5.1初始化第一特征学习模块和第一分类预测模块模块中的权重参数,令初始学习率learningrate为0.01,批处理尺寸为n,训练迭代总轮数epoch_max为100,当前训练轮数epoch_cur为1;5.2第一特征学习模块从第一自监督增强模块接收x1′
和y1′
,采用特征提取方法对x1′
进行特征提取,得到x1′
的高维语义特征集合f1′
,f1′
={f2,f3,f4,f5,f6},f2表示第二高维语义特征集合,f3表示第三高维语义特征集合,f4表示第四高维语义特征集合,f5表示第五高维语义特征集合,f6表示第六高维语义特征集合,并将f1′
和y1′
发送给第一分类预测模块;具体方法是:5.2.1初始化n=1;5.2.2第一特征学习模块中第一模块采用卷积方法对x1′
中的第n个图像集合执行1次卷积操作,得到第一模块第一卷积模块的结果将发送给第二模块;5.2.3第一特征学习模块中第二模块从第一特征学习模块中第一模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是64的特征学习模块中第二模块的结果将发送给第一特征学习模块中第三模块,并将放到第二高维语义特征集合f2中;5.2.4第一特征学习模块中第三模块从第一特征学习模块中第二模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是128的特征学习模块中第三模块的结果将发送给第一特征学习模块中第四模块,并将放到第三高维语义特征集合f3中;5.2.5第一特征学习模块中第四模块从第一特征学习模块中第三模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是256的特征学习模块中第四模块的结果将送给第一特征学习模块中第五模块,并将放到第四高维语义特征集合f4中;5.2.6第一特征学习模块中第五模块从第一特征学习模块中第四模块接收采用残差单元操作方法对进行2次卷积操作,得到通道数是512的特征学习模块中第五模块的结
果将发送给特征学习模块中第六模块,并将放到第五高维语义特征集合f5中;5.2.7第一特征学习模块中第六模块从第一特征学习模块中第五模块接收第六模块中的第二下采样层对进行下采样操作,得到通道数为512的特征学习模块中第六模块的结果将发送给第一分类预测模块,并将放到第六高维语义特征集合f6中;5.2.8若n<n,令n=n+1,转5.2.2;若n=n,得到五个高维语义特征集合5.2.8若n<n,令n=n+1,转5.2.2;若n=n,得到五个高维语义特征集合5.2.8若n<n,令n=n+1,转5.2.2;若n=n,得到五个高维语义特征集合将f2,f3,f4,f5,f6,放到x1′
的高维语义特征集合f1′
中,此时f1′
={f2,f3,f4,f5,f6};5.2.9第一特征学习模块中第六模块将f1′
和y1′
发送给第一分类预测模块;5.3第一分类预测模块从特征学习模块中第六模块接收f1′
和y1′
,采用公式(1)计算f1′
中的f6与y1′
的交叉熵损失l1,公式(1)中的f表示第一分类预测模块中的全连接层分类器,f(f6)表示f6经分类器f处理后的预测类别,l
ce
(f(f6),y1′
)表示预测类别f(f6)与真实标签y1′
间的交叉熵损失;l1=l
ce
(f(f6),y1')
ꢀꢀ
公式(u5.4令当前训练轮数epoch_cur=epoch_cur+1;若epoch_cur≤训练迭代总轮数epoch_max,转5.2;若epoch_cur>训练迭代总轮数epoch_max,结束训练,转5.5;5.5采用公式(2)计算旧类原型集合p
old
,p
old
中包含n个元素5.6将训练好的旧类图像识别系统中的第一特征学习模块和第一分类预测模块得到的权重参数以pth格式保存,得到训练后的面向类增量学习场景的旧类图像分类系统;第六步,采用所有类图像识别系统构建方法构建识别所有类的面向类增量学习场景的所有类图像识别系统;面向类增量学习场景的所有类图像识别系统由新类训练图像数据集x
new
、第二输入预处理模块、第二自监督增强模块、第二特征学习模块和第二分类预测模块构成;x
new
为cifar100数据集中的第51到第60类,x
new
的标签表示为y
new
,第二输入预处理模块结构和功能与第一输入预处理模块结构和功能相同,第二自监督增强模块的结构和功能与第一自监督增强模块结构和功能相同,第二特征学习模块的结构和功能与第一特征学习模块的结构和功能的相同,第二分类预测模块与第一分类预测模板结构和功能有不同;第二特征学习模块的权重参数采用第一特征学习模块参数进行初始化,第二分类预测模块的权重参数采用第一分类预测模块参数进行初始化;第二输入预处理模块与新类图像数据集x
new
、第二自监督增强及第二特征学习模块相连,第二输入预处理模块从x
new
读取新类图像集合xx,xx={xx1,xx2,
…
,xx
n
…
,xx
n
},对xx中的xx
n
进行预处理,得到预处理后的新类图像集合x2,将预处理后的新类图像集合x2和相应的标签y2(y2={yy1,yy2,
…
,yy
n
…
,yy
n
})发送给第二自监督增强模块,yy
n
是xx
n
的标签;第二自监督增强模块与第二输入预处理模块和第二特征学习模块相连,第二自监督增强模块从第二输入预处理模块接收x2和y2,对x2采用自监督标签增强方法进行增强,生成增强后的新类图像集合x2′
和标签集合y2′
,将x2′
和y2′
发送给第二特征学习模块;
第二特征学习模块与第二自监督增强模块和第二分类预测模块相连,第二特征学习模块从第二自监督增强模块接收x2′
和y2′
,从x2′
中提取新类图像的高维语义特征表示,将新类图像的高维的语义特征表示发送给第二分类预测模块;第二特征学习模块的六个模块的结构和功能与第一特征学习模块的六个模块的结构和功能相同;第二分类预测模块与第二特征学习模块相连,由1个全连接层组成;该全连接层的输出是在第一分类预测模块的输出基础上进行扩展,将输出扩展为所有类的图像的类别个数即旧类别和新类别个数之和;第二分类预测模块从第二特征学习模块接收新类图像的高维语义特征表示,将新类图像的高维语义特征表示的维度降低到所有图像的类别个数,然后利用交叉熵损失函数计算预测类别与真实标签之间的差值作为损失值,利用损失值的反向传播优化第二特征学习模块;利用一致性正则化损失函数计算p
old
与p
aug
间的差值,利用知识蒸馏损失函数计算旧类图像和新类图像特征表示间的差值,将三个差值之和作为损失值,利用损失值的反向传播优化第二特征学习模块;第七步,构建用于训练所有类图像识别系统的新类图像数据集x
new
;方法是:从cifar100数据集选择第51到第60类的图像作为新类图像数据集x
new
;第八步,第二输入预处理模块从x
new
中读取大小为n的图像集合xx,xx={xx1,xx2,
…
,xx
n
…
,xx
n
},其中n=64,1≤n≤64;第二输入预处理模块采用第三步所述预处理方法对xx中的xx
n
进行预处理,得到预处理后的新类图像集合x2,将预处理后的新类图像集合x2和相应的标签y2发送给第二自监督增强模块,y2={yy1,yy2,
…
,yy
n
…
,yy
n
},yy
n
是xx
n
的标签;第九步,第二自监督增强模块从第二输入预处理模块接收x2和y2,对x2采用第四步所述的自监督标签增强方法进行增强,生成增强后的新类图像集合x2′
和标签y2′
,将x2′
和标签y2′
发送给第二特征学习模块;令增强次数t=1;第十步,采用第五步训练好的面向类增量学习场景的旧类图像分类系统中的第一特征学习模块的权重参数初始化面向类增量学习场景的所有类图像分类系统的第二特征学习模块的权重参数;第十一步,令第二分类预测模块中的全连接层参数的维度为[512,old_classes+10],其中,类别总数num_classes=100,旧类数old_classes=旧类别的数量k
old
=50,第二分类预测模块中的全连接层参数的维度为[512,old_classes]的部分采用第一分类预测模块的全连接层权重参数进行初始化,而另外[512,10]的维度采用随机赋值的方式进行初始化;新类别的数量k
new
=10;第十二步,采用训练方法运用第九步得到的增强后的新类数据集合x2′
对面向类增量学习场景的所有类图像识别系统的第二特征学习模块和第二分类预测模块进行训练,得到第二特征学习模块和第二分类预测模块的最佳网络权重参数,得到第一次训练后的所有类图像分类系统,方法是:12.1令初始学习率learningrate为0.01,训练迭代总轮数epoch_max为100,当前训练轮数epoch_cur为1;12.2将x2′
中的每个图像输入至所有类图像分类系统的第二特征学习模块,然后利用知识蒸馏损失、交叉熵损失和一致性正则化损失对第二特征学习模块和第二分类预测模块进行训练,得到第二特征学习模块和第二分类预测模块中的最佳网络权重参数,方法是:12.2.1第二特征学习模块从第二自监督增强模块接收x2′
和y2′
,采用5.2步所述的特征
提取方法对x2′
进行特征提取,得到x2′
的新类高维语义特征集合f2′
,将f2′
和y2′
发送给第二分类预测模块,f2′
={ff2,ff3,ff4,ff5,ff6},ff2是x2′
的新类的第二高维语义特征集合,ff3是x2′
的新类的第三高维语义特征集合,ff4是新类的第四高维语义特征集合,ff5是x2′
的新类的第五高维语义特征集合,ff6是x2′
的新类的第六高维语义特征集合;12.2.2第一特征学习模块从第二自监督增强模块接收x2′
和y2′
,采用5.2步所述的特征提取方法对x2′
进行特征提取,得到x2′
的旧类高维语义特征集合f1″
,将f1″
发送给第二分类预测模块,f1″
={fff2,fff3,fff4,fff5,fff6},fff2是x2′
的旧类第二高维语义特征集合,fff3是x2′
的旧类第三高维语义特征集合,fff4是x2′
的旧类第四高维语义特征集合,fff5是x2′
的旧类第五高维语义特征集合,fff6是x2′
的旧类第六高维语义特征集合;12.2.3所有类图像分类系统的第二分类预测模块从第二特征学习模块接收f2′
和y2′
,从第一特征学习模块接收f1″
;12.2.4采用交叉熵损失、知识蒸馏损失和一致性正则化损失之和对第二特征学习模块和第二分类预测模块进行训练,方法是:12.2.4.1计算第六高维语义特征集合ff6和y2′
之间的差值,作为新类的交叉熵分类损失l2,l2=l
ce
(f(ff6,y2′
));12.2.4.2对5.5步计算的旧类原型集合p
old
采用高斯噪声进行增强,采用公式(3)计算增强原型p
aug
p
aug
=p
old
+e
×
r
t
ꢀꢀꢀ
公式(3)公式(3)中的e表示高斯噪声,e服从正态分布,r
t
表示控制增强原型的不确定性尺度指标,r
t
通过公式计算出再对计算平方根得到;d表示特征空间的维度512维,∑
t,k
表示k类特征的协方差矩阵,t
r
表示计算矩阵的迹;12.2.4.3通过公式(4)采用对称kl技术计算旧类原型集合p
old
与增强原型p
aug
之间的一致性损失作为一致性损失l
p
,其中,f(
·
)表示所有类图像分类系统中分类预测模块的全连接层分类器,kl
s
是对称kl散度;l
p
=kl
s
(f(p
old
),f(p
aug
))
ꢀꢀꢀꢀꢀꢀꢀ
公式(4)12.2.4.4采用知识蒸馏方法计算知识蒸馏损失,知识蒸馏损失包含多尺度自注意蒸馏损失l
msfd
、特征相似性概率蒸馏损失l
fspd
和全局特征蒸馏损失l
gfd
三部分,方法是:12.2.4.4.1计算多尺度自注意蒸馏损失l
msfd
,方法是:12.2.4.4.1.1从f2′
中取出{ff2,ff3,ff4,ff5},对f2′
中的每个特征表示计算自注意特征表示,ff2的自注意特征表示ff2的通道数c=64,ff3的自注意特征表示ff3的通道数c=128,ff4的自注意特征表示ff4的通道数c=256,ff5的自注意特征表示ff5的通道数c=512,c表示为自注意特征表示的通道数;12.2.4.4.1.2从f1″
中取出{fff2,fff3,fff4,fff5},对f1″
中的每个特征表示计算自注意
特征表示,fff2的自注意特征表示fff2的的通道数c=64,fff3的自注意特征表示fff3的通道数c=128,fff4的自注意特征表示的自注意特征表示fff4的通道数c=256,fff5的自注意特征表示fff5的通道数c=512;12.2.4.4.1.3计算多尺度自注意蒸馏损失l
msfd
,,‖q‖2表示对q求范数;12.2.4.4.2计算特征相似性概率蒸馏损失l
fspd
,方法是:12.2.4.4.2.1从f2′
中取出ff6,从f1″
中取出fff6,通过相似性概率分布技术采用公式(5)计算第一特征相似性概率分布p
′
,采用公式(6)计算第二特征相似性概率分布p
″
;;12.2.4.4.2.2采用kl散度公式计算特征相似性概率蒸馏损失l
fspd
=kl(p
″
,p
′
);12.2.4.4.3从f2′
中取出ff6,从f1″
中取出fff6,采用公式(7)计算全局特征蒸馏损失l
gfd
;l
gfd
=||ff
6-fff6||2ꢀꢀꢀꢀ
公式(7)12.2.4.4.4计算总的知识蒸馏损失l
kd
,l
kd
=l
msfd
+l
fspd
+l
gfd
;12.2.4.4.5利用总的优化目标l
total
更新所有类图像分类系统中第二特征学习模块和第二分类预测模块的参数,l
total
=l
clf
+λ1l
p
+λ2l
kd
;其中,l
clf
表示所有类图像分类系统对新类特征表示和旧类原型、增强原型进行分类的损失,l
clf
=l
ce
(f(p
old
;p
aug
,y1′
)+l2,l
ce
(f(p
old
;p
aug
),y1′
)表示旧类原型、增强原型与旧类标签y1′
的分类损失,l2=l
ce
(f(ff6),y2′
)表示新类特征表示ff6与新类标签y2′
的交叉熵分类损失;λ1表示为损失的第一权重因子,λ2表示为损失的第二权重因子;12.2.5令当前训练轮数epoch_cur=epoch_cur+1;若epoch_cur≤训练迭代总轮数epoch_max,转12.2.4.3;若epoch_cur>训练迭代总轮数epoch_max,得到第一次训练后的所有类图像分类系统,转第十三步;第十三步,采用第六步所述所有类图像识别系统构建方法构建新的面向类增量学习场景的所有类图像识别系统,不断构建新类数据集,不断采用新类数据集对重新构建的新的面向类增量学习场景的所有类图像识别系统进行训练,直到cifar100数据集中的100个类别全部参与训练,得到最终训练后的所有类图像分类系统,方法是:13.1令所有类图像识别系统再次训练轮数x=1;13.2采用第六步所述所有类图像识别系统构建方法构建第x+1个面向类增量学习场景的所有类图像识别系统,该系统由第x+2输入预处理模块、第x+2自监督增强模块、第x+2特征学习模块和第x+2分类预测模块组成;其中,第x+2输入预处理模块、第x+2自监督增强模
块、第x+2特征学习模块的结构和功能与第二输入预处理模块、第二自监督增强模块、第二特征学习模块的结构和功能相同;第x+2分类预测模块的全连接层参数的维度初始化为[512,old_classes+(x+1)10];13.3将cifar100数据集第10(x+5)+1到第10(x+6)类别的所有训练图像作为新类图像数据集x
new
;13.4第x+2输入预处理模块从x
new
中读取大小为n的图像集合xxx,xxx={xxx1,xxx2,
…
,xxx
n
…
,xxx
n
},第x+2输入预处理模块采用第三步所述预处理方法对xxx中的xxx
n
进行预处理,得到预处理后的新类图像集合x3,将预处理后的新类图像集合x3和相应的标签y3发送给第x+2自监督增强模块,y3={yyy1,yyy2,
…
,yyy
n
…
,yyy
n
},yyy
n
是xxx
n
的标签;13.5第x+2自监督增强模块从第x+2输入预处理模块接收x3和y3,对x3采用第四步所述的自监督标签增强方法进行增强,生成增强后的新类图像集合x3′
和标签y3′
,将x3′
和y3′
发送给第x+2特征学习模块;13.6采用第x次训练后的所有类图像分类系统中的第x+2特征学习模块的权重参数初始化面向类增量学习场景的所有类图像分类系统的第x+2特征学习模块的权重参数;13.7令第x+2分类预测模块中的全连接层参数的维度为[512,old_classes+10(x+1)],其中,第二分类预测模块中的全连接层参数的维度为[512,old_classes+10x]的部分采用第x+1分类预测模块的全连接层权重参数进行初始化,而另外[512,10]的维度采用随机赋值的方式进行初始化;13.8令t=x+1,k
old
=50+10x,k
new
=10,采用第十二步所述训练方法运用x3′
对第x+1个面向类增量学习场景的所有类图像识别系统的第x+2特征学习模块和第x+2分类预测模块进行训练,得到第x+2特征学习模块和第x+2分类预测模块的最佳网络权重参数,得到第x+1次训练后的所有类图像分类系统;13.9若x<5,令x=x+1,转13.2;若x=5,得到最终训练后的所有类图像识别系统,由第六输入预处理模块、第六自监督增强模块、第六特征学习模块和第六分类预测模块组成,转第十四步;第十四步,采用最终训练后的所有类图像分类系统对用户输入的测试图像x
user
进行图像分类,得到预测的图像分类结果;方法是:14.1训练后的所有类图像分类系统接收用户输入的属于cifar100中类别的测试图像集合x
user
和标签集合y
user
;14.2第六输入预处理模块采用第三步所述预处理方法对x
user
进行预处理,得到预处理后的图像集合将和相应的标签集合发送给第六自监督增强模块,发送给第六自监督增强模块,yy
n
是xx
n
的标签;14.3第六自监督增强模块从第六输入预处理模块接收预处理后的测试图像集合和对采用第四步所述的自监督标签增强方法进行增强,生成增强后的用户图像集合和标签将和标签发送给第六特征学习模块;14.4第六特征学习模块从自监督增强模块接收和采用5.2步所述的特征提取方法对进行特征提取,得到的高维语义特征集合f
′
user
,
将f
′
user
和发送给第六分类预测模块;是第二高维语义特征集合,是第三高维语义特征集合,是第四高维语义特征集合,是第五高维语义特征集合,是第六高维语义特征集合;14.5第六分类预测模块从第六特征学习模块接收高维语义特征表示f
′
user
,将f
′
user
的维度降低到包含的类别数(即将全连接层的权重参数从[256,512]的维度降低到[256,100]维度),选择[256,100]维度中概率最大向量对应的类别数作为对测试图像的分类结果;第十五步,结束。2.如权利要求1所述的基于知识蒸馏和一致性正则化的类增量图像分类方法,其特征在于第一步所述第一输入预处理模块、第一自监督增强模块、第一特征学习模块和第一分类预测模块均由多层卷积神经网络cnn在深度学习框架pytorch中实现;所述第一特征学习模块是resnet18网络,第一特征学习模块的第一模块的第一卷积层的卷积核大小为3
×
3,步长是1,填充大小是1;第一特征学习模块的第二至第五模块的每个残差单元均由1个卷积层、1个归一化层和激活函数层组成,且第二模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是1,填充大小是1;第一特征学习模块的第三模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是2,填充大小是1;第一特征学习模块的第四模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是2,填充大小是1;第一特征学习模块的第五模块中的残差单元的卷积层的卷积核大小为3
×
3,步长是2,填充大小是1;第一特征学习模块的第六模块的第二下采样层的步长是1,无填充;第一特征学习模块采用的激活函数层均采用relu函数。3.如权利要求1所述的基于知识蒸馏和一致性正则化的类增量图像分类方法,其特征在于第六步所述所述第二输入预处理模块、第二自监督增强模块、第二特征学习模块和第二分类预测模块均由多层卷积神经网络cnn在深度学习框架pytorch中实现;所述第二特征学习模块是resnet18网络。4.如权利要求1所述的基于知识蒸馏和一致性正则化的类增量图像分类方法,其特征在于第三步所述第一输入预处理模块采用预处理方法对x中的x
n
进行预处理,得到预处理后的旧类图像集合x1,将x1的标签集合用y1表示,并将x1和y1发送给第一自监督增强模块的方法是:3.1令变量n=1;3.2将x
n
转化到rgb色彩空间,得到3通道的x
n
;3.3对3通道的x
n
的尺寸规格化为32
×
32,得到规格化后的x
n
;3.4将规格化后的x
n
从向量形式转化为张量形式,得到张量形式的x
n
,将张量形式的x
n
用表示,将放入预处理后的图像集合x1;3.5将x
n
的标签y
n
放入标签集合y1,y
n
∈y
old
;3.6若n<n,令n=n+1,转3.2;若n=n,得到预处理后的图像集合x1和标签集合y1,其中,y1={y1,y2,
…
,y
n
…
,y
n
},转3.7;3.7将x1和y1发送给自监督增强模块。5.如权利要求1所述的基于知识蒸馏和一致性正则化的类增量图像分类方法,其特征在于5.2.2步所述第一特征学习模块中第一模块采用卷积方法对x1′
中的第n个图像集合
执行第一次卷积操作,得到第一模块第一卷积模块的结果将发送给第二模块的方法是:5.2.2.1第一特征学习模块中第一模块的第一卷积层对进行二维卷积,得到通道数是64的二维卷积结果将发送给第一归一化层,中每个图像的输入通道是3;5.2.2.2第一特征学习模块中第一模块的第一归一化层对进行归一化操作,得到归一化结果将发送给第一模块的激活函数层;5.2.2.3第一特征学习模块中第一模块的激活函数层对进行非线性激活,得到非线性激活结果将发送给第一下采样层;5.2.2.4第一特征学习模块中第一模块的第一下采样层对进行最大池化操作,得到通道数是64的特征学习模块中第一模块的结果将发送给第一特征学习模块中第二模块。6.如权利要求1所述的基于知识蒸馏和一致性正则化的类增量图像分类方法,其特征在于12.2.4.3.5步所述λ1=λ2=10。
技术总结
本发明公开了一种基于知识蒸馏和一致性正则化的类增量图像分类方法,目的是提高分类精度。先构建面向类增量学习场景的旧类图像识别系统,采用旧类图像数据集对面向类增量学习场景的旧类图像分类系统进行训练,得到训练后的旧类图像分类系统;然后构建面向类增量学习场景的所有类别图像识别系统,所有类别图像识别系统中的分类预测模块由训练后的旧类图像识别系统的分类预测模块扩展得到。采用新类图像数据集对所有类图像分类系统进行增量训练,得到训练后的面向类增量学习场景的所有类图像分类系统。采用训练后的所有类别图像识别系统对图像进行识别,得到识别结果。本发明能最大限度地保留旧知识,有效克服灾难性遗忘问题,提高识别精度。提高识别精度。提高识别精度。
技术研发人员:史殿习 史燕燕 杨绍武 杨焕焕 李林 刘哲
受保护的技术使用者:中国人民解放军国防科技大学
技术研发日:2023.07.17
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:用于保护车辆通信系统与车外服务器之间通信的方法与流程 下一篇:中空微球的制作方法