本发明涉及计算机视觉技术领域,特别地涉及一种深度学习的细粒度图像分类方法及装置。
背景技术:
在计算机视觉领域中,细粒度图像分类一直是一个研究的热点和难点,因为细粒度图像分类的主要目的是区分一个大类下的多个子类别,而这些子类别图像中的对象往往具有较小的类间特征差异,并且在类内的对象姿势、背景和拍摄角度等方面存在很大的区别。早期的细粒度图像识别方法往往需要针对训练数据做大量的人工标注,如人工标记的关键区域框,人工标注的对象边界框等。获得这些额外的人工信息需要大量的人力物力,花费大量的时间和金钱,且网络的复杂度较大,训练时间较长。随着相关技术的发展,如resnet等能力强大的骨干网络模型和imagenet等包含大量数据的预训练数据集的出现使图像分类技术更上一层楼,细粒度图像分类的研究重点也逐渐转向只使用图片标签信息的弱监督情况。并且由于收集细粒度标签通常需要专家级的领域知识,人工标注需要大量的时间和费用,只使用图像标签的弱监督细粒度图像分类逐渐成为当前研究的主要方向。研究人员提出了许多如双线性cnn等的骨干网络模型,只需图片和相应的标签输入便可进行训练得到很好的分类性能。
目前细粒度图像识别的研究主要集中在针对网络结构做优化,没有关注训练方式的方向。当前的细粒度图像分类方法基本不在训练方式上做创新,训练网络时只是在数据集中随机选取一张图像输入网络进行训练,这种训练方式没有突出图像的类别,对于一般的机器学习问题这种训练方式不会对性能有较大的影响,但是细粒度图像分类问题存在类内差异大类间差异小的特点,会导致相近的类别混淆在一起,难以区分,这种简单的训练方式就会影响最终的分类性能,且只输入一张图像使得网络无法通过对比突出共有特征和区分特征。
技术实现要素:
为了解决上述所提及的细粒度图像分类中类内差异大类间差异小以及随机抽取图像进行简单的混合叠加不能够很好的解决相近类别混淆的问题,本发明提出了一种混合增强的细粒度图像分类方法以及装置。
该方法包括:
重复如下步骤:
类间图像训练:通过类间采样器从数据集中随机采样不同类的两张图像,生成图像对,将其输入到骨干网络进行训练,获得第一预测结果;
类内图像训练:通过类内采样器从数据集中随机采样同类的两张图像,生成图像对,将其输入到骨干网络进行训练,获得第二预测结果;
单一图像训练:从数据集中随机采样一张图像,将其生成骨干网络进行训练和分类预测,获得第三预测结果;
分析和指导:分析第三预测结果,根据分析结果指导类间采样器和类内采样器生成图像对。
如上所述的深度学习的细粒度图像分类方法,其中,优选的是,在将类间图像训练和类内图像训练中的图像对输入到骨干网络进行训练之前,还包括将图像对输入到混合模块,同时混合两张图像及其标签,得到混合增强样本,进而将该混合增强样本输入骨干网络。
如上所述的深度学习的细粒度图像分类方法,其中,优选的是,类间图像对的混合增强样本通过如下公式获得:
其中mix(·)函数能够将两个输入加权并归一化,
如上所述的深度学习的细粒度图像分类方法,其中,优选的是,对步骤类间图像训练计算损失函数,得到的误差反向传播以训练骨干网络,步骤类间图像训练处的损失函数为:
其中ypred1为步骤类间图像训练的骨干网络输出预测,其中,kl表示散度。
如上所述的深度学习的细粒度图像分类方法,其中,优选的是,类内图像对的混合增强样本通过如下公式获得:
其中,mix(·)函数能够将两个输入加权并归一化,
如上所述的深度学习的细粒度图像分类方法,其中,优选的是,对步骤类内图像训练计算损失函数,得到的误差反向传播以训练骨干网络,步骤类内图像训练处的损失函数为:
如上所述的深度学习的细粒度图像分类方法,其中,优选的是,对步骤单一图像训练计算损失函数,得到的误差反向传播以训练骨干网络,步骤单一图像训练处的损失函数为:l3=lcross-entropy(yi||ypred),其中,ypred为步骤单一图像训练的骨干网络输出预测,yi表示第i个样本的标签,lcross-entropy为交叉熵。
如上所述的深度学习的细粒度图像分类方法,其中,优选的是,在步骤类间图像训练之前,还包括:根据构建的骨干网络,加载预训练参数初始化模型,其中,mix(·)函数使用混类技术增强技术来实现。
如上所述的深度学习的细粒度图像分类方法,其中,优选的是,混类技术增强技术具体表现为:给定两个标记的数据点(xi,yi)和(xj,yj),其中xi,xj为样本的原始输入图像,yi,yj为对应图像的标签,通过线性插值创建虚拟训练样本,表示如下:
其中λ为参数,λ∈[0,1]。
一种使用如上所述的深度学习的细粒度图像分类方法的细粒度图像分类装置,包括:类间采样器,从数据集中随机采样不同类的两张图像,生成图像对;类内采样器,其从数据集中随机采样同类的两张图像,生成图像对;混合模块,用于将上述生成的图像对进行混合增强得到混合图像;随机采样器,从数据集中随机选取一张图像;骨干网络,将上述混合图像进行训练,以及对选取的一张图片进行训练和分类;采样增强模块,用于根据骨干网络的预测输出指导类间采样器和类内进行采样。
本发明提出的方法同时将两张图像输入网络,并将两张图像进行混合叠加以突出共有特征和区分特征;同时本发明考虑不同类别之间的混淆程度来增强混合叠加的过程,通过多阶段的混合增强训练来缓解类别混淆的程度。
本发明所提出由类内和类间采样器、混合模块和采样增强模块等组成的混合增强模块,在采用阶段考虑了类别因素,混合图像以突出类间区分特征和类内共有特征,并根据分类预测结果生成更具训练价值的图像对来训练骨干网络。通过各个子模块,混合增强模块得以更好的解决细粒度图像分类任务中类内差异大类间差异小的问题。
在训练骨干网络时,采用本发明提出的特殊三阶段训练方法,在不同阶段根据混合增强模块输出的增强样本,骨干网络使用不同的学习率和特殊的损失函数进行训练,使得网络模型可以更好的学习到不同类间的差异和同类内的共有特征,从而更好的解决细粒度图像分类问题中类内差异大类间差异小的难点。同时,在第三个阶段将一张图像输入网络,模拟了测试时的情况,在训练时就使模型适应最终的测试情况。该特殊三阶段训练方法可使模型针对细粒度图像分类问题得到更好的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例的深度学习的细粒度图像分类方法中所采用的三阶段训练算法的流程图;
图2为本发明实施例的深度学习的细粒度图像分类装置的结构图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸地连接,或者一体地连接;可以是机械连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。若本说明书中出现“工序”的用语,其不仅是指独立的工序,在与其它工序无法明确区别时,只要能实现所述工序所预期的作用则也包括在本用语中。另外,本说明书中用“-”表示的数值范围是指将“-”前后记载的数值分别作为最小值及最大值包括在内的范围。在附图中,结构相似或相同的单元用相同的标号表示。
实施例一
本发明提出一种深度学习的细粒度图像分类方法。该方法将两张图像混合叠加后输入骨干网络进行训练,并针对细粒度图像分类问题的特点设计了一种特殊的三阶段训练流程,使网络更快的收敛并提升分类准确率。
下面,将结合图1给出的本发明实施例的基于三阶段深度学习的细粒度图像分类方法中所采用的三阶段训练算法的流程图,详细说明本发明的三阶段深度学习的细粒度图像分类方法和其采用的三阶段训练算法。
s110:网络初始化
首先,骨干网络预测模型需要事先确定好网络输入输出以及隐含层节点数。本发明给出的实施例所使用的作为骨干网络的卷积骨干网络为resnet-50,(共50层骨干网络层的resnet模型),加载在imagenet(imagenet是一个用于视觉对象识别软件研究的大型可视化数据库)上训练的预训练参数来初始化模型。
在该方法中,设样本数据集为x={x1,x2,…,xn},xj表示第j个图像样本,共有n个;对应的标签集为y={y1,y2,…,yn},yj表示第j个样本的标签,数据集中共有m个类别,所以yj∈{1,2,…,m}。
在本发明中,混合模块中的mix(·)使用混类技术增强(mixup)技术来实现。其中,可以使用以下公式简单的说明mixup技术:给定两个标记的数据点(xi,yi)和(xj,yj),其中xi,xj为原始输入图像,yi,yj为对应图像的标签,通过线性插值创建虚拟训练样本,表示如下:
其中(xi,yi)和(xj,yj)是从所使用的训练数据中随机抽取的两个示例,其中λ为参数,λ∈[0,1];
λ~beta(α,α)
λ=max(λ,1-λ)(2)
在本实施例中,根据上述公式(2)得到参数化mixup模块,使用随机参数初始化骨干网络。分类网络由池化层,线性分类层和softmax层组成,用于输出最终预测结果。
在本实施例中,训练使用的数据集为cub-200-2011数据集,该数据集是加州理工学院在2010年提出的细粒度数据集,也是目前细粒度分类识别研究的基准图像数据集,其中该数据集共有11788张鸟类图像,包含200类鸟类子类,其中训练数据集有5994张图像,测试集有5794张图像。
其次,在建立初始化模型后,采用本发明提出的特殊的三阶段训练算法,该算法主要可以分为三个阶段,各阶段的具体处理流程可以为:
s120:类间图像训练:通过类间采样器随机采样数据集中来自不同类别的图像及它们的标签,生成图像对,
随后将图像对其输入混合模块,生成混合增强样本
其中,kl(kullback-leibler)散度,又被称为相对熵或信息散度,是两个概率分布间差异的非对称性度量。
s130:类内图像训练:通过类内采样器随机采样数据集中来自不同类别的图像及它们的标签,生成图像对,其表示为
s140:单一图像训练:通过随机采样器随机选取数据集中的一张图像(xi,yi)作为输入样本输入骨干网络中进行训练和预测,然后将下式(5)得到的误差进行反向传播训练整个网络,采用与s130中相同的学习率。在s140中,骨干网络输出预测设为ypred,此处的损失函数采用式(5)得到:l3=lcross-entropy(yi||ypred)(5),其中lcross-entropy为交叉熵。
这里需要注意的是,在三个阶段的训练中,骨干网络的参数是互相传递的,简单而言可以视为同一个骨干网络。s140可以看作s130中的特殊情况,即在同类中取到了同一个图像样本,也可以视为机器学习中常用的训练方式。测试过程与s140类似,即输入一张测试图像,将其输入训练好的骨干网络处理得到预测结果。所以s140相当于在训练阶段模拟了测试时的情况,使网络模型在测试时表现出更好的性能。在实际应用中,以上三阶段训练流程为顺序执行,将阶段1→2→3视为一个整体循环,在训练时执行n轮该循环训练网络。
s150:分析和指导:分析第三预测结果,指导类间采样器和类内采样器生成更具训练价值的图像对。
最后,重复上述训练流程,直至模型收敛(请见s160-s170),达到要求的准确率。本发明同时还提出一种混合增强模块,其可以执行基于三阶段深度学习的细粒度图像分类方法,该混合增强模块包括以下子模块:从数据集中采样不同训练阶段中所需的图像对的类间采样器和类内采样器,将图像对进行混合增强得到混合图像的混合模块,从数据集中随机选取一张图像的随机采样器,对输入的混合图像和选取的一张图像进行训练的骨干网络,以及根据骨干网络的预测输出指导采样器进行采样的采样增强模块。
实施例二
下面结合图2,详细说明本发明实施例的深度学习的细粒度图像分类模型结构。
包括:数据集、类间采样器、混合模块、骨干网络、随机采样器和采样增强模块,数据集用于随机采样不同类的两张图像,生成图像对;类内采样器用于从数据集中随机采样同类的两张图像,生成图像对;混合模块用于将上述生成的图像对进行混合增强得到混合图像;随机采样器用于从数据集中随机选取一张图像;骨干网络用于将上述混合图像进行训练,以及对选取的一张图片进行训练和分类;采样增强模块用于根据骨干网络的预测输出指导类间采样器和类内进行采样。
在每次训练中,类间采样器采样随机采样不同类中的图像,组成图像对,表示为
然后,将从类间采样器和类内采样器输出的图像对输入混合模块,该混合模块将图像对进行混合增强,同时混合两张图像及它们的标签,得到混合增强样本。对于类间采样器的输出
其中mix(·)函数能够将两个输入加权并归一化,该mix(·)使用mixup技术来实现,mixup技术的介绍参见对于本发明方法实施例中的描述。
同理,对于类内采样器输出
上述混合增强样本随后输入骨干网络进行训练和分类预测。
随机采样器从数据集中随机选取一张图像作为输入样本,输入到骨干网络进行训练和预测。
最后,根据骨干网络在最终阶段的分类预测结果,采样增强模块将分别针对类内采样器和类间采样器提供指导,具体而言,对于易混淆的两个类别(即a类易判错为b类),采样增强模块将指导类内采样器更多的采样这两个类的图像,输出更多由这两个类的图像组成的图像对,使骨干网络更多的针对易混淆类进行训练;同理,对于分类准确率较低的类,采样增强模块将指导类内采样器更多的在这个类内进行采样,输出更多由这个类的图像组成的图像对,使骨干网络更多的针对分类准确率较低的类进行训练。
类间采样器和类内采样器在训练过程中的采样阶段考虑到了类别因素以优化采样流程,混合模块将两张图像混合以突出类间区分特征和类内共有特征,采样增强模块根据分类预测结果指导采样器更好的生成更具训练价值的图像对进而训练骨干网络,通过以上各子模块,混合增强模块得以更好的解决细粒度图像分类任务中类内差异大类间差异小的问题,从而优化训练流程,提高分类准确率。
综上所述,根据本发明所提出的混合增强模块,通过其所包括的各个子模块,混合增强模块在训练流程中的采样阶段针对细粒度图像分类任务中类内差异大类间差异小的问题进行了优化,在采样阶段考虑类别因素,生成更具训练价值的图像对并将其混合增强后输入骨干网络,更好的训练骨干网络,提升分类性能。
另外,根据本发明提出的特殊的三阶段训练方式,结合上述混合增强模块,分别在不同阶段将来自不同类别的图像对,来自同一类别的图像对,随机一张图像输入骨干网络中,并且为每一阶段设计了特殊的学习率和损失函数,在实际应用中可将这三个阶段视为整体进行多次循环训练网络,能够提升分类性能。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
1.一种深度学习的细粒度图像分类方法,该方法包括:
重复如下步骤:
类间图像训练:通过类间采样器从数据集中随机采样不同类的两张图像,生成图像对,将其输入到骨干网络进行训练,获得第一预测结果;
类内图像训练:通过类内采样器从数据集中随机采样同类的两张图像,生成图像对,将其输入到骨干网络进行训练,获得第二预测结果;
单一图像训练:从数据集中随机采样一张图像,将其生成骨干网络进行训练和分类预测,获得第三预测结果;
分析指和指导:分析第三预测结果,根据分析结果指导类间采样器和类内采样器生成图像对。
2.如权利要求1所述的深度学习的细粒度图像分类方法,在将类间图像训练和类内图像训练中的图像对输入到骨干网络进行训练之前,还包括将图像对输入到混合模块,同时混合两张图像及其标签,得到混合增强样本,进而将该混合增强样本输入骨干网络。
3.如权利要求2所述的深度学习的细粒度图像分类方法,其中,类间图像对的混合增强样本通过如下公式获得:
其中mix(·)函数能够将两个输入加权并归一化,
4.如权利要求3所述的深度学习的细粒度图像分类方法,其中,对步骤类间图像训练计算损失函数,得到的误差反向传播以训练骨干网络,步骤类间图像训练处的损失函数为:
其中ypred1为步骤类间图像训练的骨干网络输出预测,其中,kl表示散度。
5.如权利要求2所述的深度学习的细粒度图像分类方法,其中,类内图像对的混合增强样本通过如下公式获得:
其中,mix(·)函数能够将两个输入加权并归一化,
6.如权利要求5所述的深度学习的细粒度图像分类方法,对步骤类内图像训练计算损失函数,得到的误差反向传播以训练骨干网络,步骤类内图像训练处的损失函数为:
7.如权利要求1所述的深度学习的细粒度图像分类方法,对步骤单一图像训练计算损失函数,得到的误差反向传播以训练骨干网络,步骤单一图像训练处的损失函数为:l3=lcross-entropy(yi||ypred),其中,ypred为步骤单一图像训练的骨干网络输出预测,yi表示第i个样本的标签,lcross-entropy为交叉熵。
8.如权利要求3或5所述的深度学习的细粒度图像分类方法,在步骤类间图像训练之前,还包括:根据构建的骨干网络,加载预训练参数初始化模型,其中,mix(·)函数使用混类技术增强技术来实现。
9.如权利要求8所述的深度学习的细粒度图像分类方法,所述混类技术增强技术具体表现为:给定两个标记的数据点(xi,yi)和(xj,yj),其中xi,xj为样本的原始输入图像,yi,yj为对应图像的标签,通过线性插值创建虚拟训练样本,表示如下:
其中λ为参数,λ∈[0,1]。
10.一种使用如权利要求1-9任一所述的深度学习的细粒度图像分类方法的细粒度图像分类装置,包括:类间采样器,从数据集中随机采样不同类的两张图像,生成图像对;类内采样器,其从数据集中随机采样同类的两张图像,生成图像对;混合模块,用于将上述生成的图像对进行混合增强得到混合图像;随机采样器,从数据集中随机选取一张图像;骨干网络,将上述混合图像进行训练,以及对选取的一张图片进行训练和分类;采样增强模块,用于根据骨干网络的预测输出指导类间采样器和类内采样器进行采样。
技术总结