掌桥专利:专业的专利平台
掌桥专利
首页

一种图像分类方法、装置、存储介质及终端

文献发布时间:2023-06-19 16:11:11



技术领域

本发明涉及计算机视觉技术领域,特别涉及一种图像分类方法、装置、存储介质及终端。

背景技术

图像分类是计算机视觉和数字图像处理的重要研究方向,广泛应用于机器人导航、智能视频监控、工业检测、航空航天等诸多领域。图像分类是一种根据图像信息中的不同特征,把图像归为不同类别的算法。图像分类算法的输入为一张图像,输出为类别集合中的某个类别。目前,基于深度神经网络的图像分类算法得到了广泛的关注和研究。

在现有技术中,基于深度神经网络的图像分类算法一般利用交叉熵损失函数对训练阶段的模型进行指导训练。然而,由于交叉熵损失函数中未考虑到训练时分类正确或者错误情况下的处理,使得交叉熵损失函数没有显式地拉大正确的类别置信值和错误的类别置信值之间的差距,从而降低了模型的准确率和泛化性能。

发明内容

本申请实施例提供了一种图像分类方法、装置、存储介质及终端。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。

第一方面,本申请实施例提供了一种图像分类方法,方法包括:

获取待分类目标图像;

将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数;其中,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失;

将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。

可选的,获取待分类目标图像之前,还包括:

构建图像分类训练数据集;

创建并初始化图像分类网络,得到初始图像分类模型;

构建针对特征向量长度的模长约束损失,并基于模长约束损失构建图像分类模型的目标损失函数;

根据图像分类训练数据集、初始图像分类模型以及目标损失函数生成预先训练的图像分类模型;其中,

目标损失函数表达式为:

其中,i表示输入图像为数据集中的第i张图像,

可选的,构建图像分类训练数据集,包括:

采集样本图像;

对采集的每个样本图像标记真实类别标签,生成图像分类训练数据集。

可选的,创建并初始化图像分类网络,得到初始图像分类模型,包括:

采用神经网络构建图像分类网络;

采用随机初始化函数或利用预训练模型对图像分类网络进行初始化,得到初始图像分类模型。

可选的,根据图像分类训练数据集、初始图像分类模型以及目标损失函数生成预先训练的图像分类模型,包括:

在图像分类训练数据集中获取第n个训练图像输入到图像分类模型中,得到训练图像对应的目标特征和每种类别的置信度;n为遍历次数;

将每种类别置信度中最大置信度对应的类别确定为训练图像的输出类别;

根据训练图像的输出类别确定训练图像的类别指示值;

根据训练图像对应的目标特征以及训练图像的类别指示值,结合目标损失函数计算模型损失值;

根据模型损失值生成预先训练的图像分类模型。

可选的,根据训练图像的输出类别确定训练图像的类别指示值,包括:

判断训练图像的输出类别与训练图像的真实类别是否一致;

若一致,将0确定为训练图像的类别指示值;

或者,

若不一致,将1确定为训练图像的类别指示值。

可选的,根据模型损失值生成预先训练的图像分类模型,包括:

当模型损失值低于预设阈值或者训练次数高于预设上限值时,生成训练后的图像分类模型;

或者,

当模型损失值高于预设阈值或训练次数未到达预设上限值时,采用随机梯度下降算法对图像分类模型进行迭代优化,并继续执行在图像分类训练数据集中获取第n+1个训练图像输入到图像分类模型中的步骤,以及当n+1大于图像分类训练数据集中的样本数量时,对图像分类训练数据集中图像的顺序进行随机排列后,并重置n=1;其中,n为遍历次数。

第二方面,本申请实施例提供了一种图像分类装置,装置包括:

图像获取模块,用于获取待分类目标图像;

类别分数输出模块,用于将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数;其中,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失;

最终类别确定模块,用于将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。

第三方面,本申请实施例提供一种计算机存储介质,计算机存储介质存储有多条指令,指令适于由处理器加载并执行上述的方法步骤。

第四方面,本申请实施例提供一种终端,可包括:处理器和存储器;其中,存储器存储有计算机程序,计算机程序适于由处理器加载并执行上述的方法步骤。

本申请实施例提供的技术方案可以包括以下有益效果:

在本申请实施例中,图像分类装置首先获取待分类目标图像,然后将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失,最后将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。由于本申请在模型的损失函数中加入相应的模长约束损失,该损失可以使得模型在训练阶段快速从错误的分类类别纠正到正确的分类类别,并在分类到正确类别之后,进一步拉大正确类别和错误类别之间的分类置信值差距,从而提高模型的准确率和泛化性能。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是本申请实施例提供的一种图像分类方法的流程示意图;

图2是本申请实施例提供的一种图像分类模型训练方法的流程示意图;

图3是本申请实施例提供的一种图像分类装置的结构示意图;

图4是本申请实施例提供的一种终端的结构示意图。

具体实施方式

以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

本申请提供了一种图像分类方法、装置、存储介质及终端,以解决上述相关技术问题中存在的问题。本申请提供的技术方案中,由于本申请在模型的损失函数中加入相应的模长约束损失,该损失可以使得模型在训练阶段快速从错误的分类类别纠正到正确的分类类别,并在分类到正确类别之后,进一步拉大正确类别和错误类别之间的分类置信值差距,从而提高模型的准确率和泛化性能,下面采用示例性的实施例进行详细说明。

下面将结合附图1-附图2,对本申请实施例提供的图像分类方法进行详细介绍。该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的图像分类装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。

请参见图1,为本申请实施例提供了一种图像分类方法的流程示意图。如图1所示,本申请实施例的方法可以包括以下步骤:

S101,获取待分类目标图像;

其中,待分类图像是用来测试预先训练的图像分类模型性能的图像,或者预先训练的图像分类模型应用在分类场景时接收到的图像。

通常,当待分类目标图像是用来测试预先训练的图像分类模型性能的图像时,待分类目标图像可以是从测试样本中获取的,也可以是从用户终端里获取到的图像,还可以是从云端下载到的图像。当待分类目标图像是预先训练的图像分类模型应用在分类应用场景时获取到的图像时,待分类的图像可以是通过图像采集设备实时采集的图像。

在一种可能的实现方式中,当图像分类模型训练完成后,并将训练完成的图像分类模型部署在实际应用场景时,物体传感器或者物体监测算法当检测到有物体进入摄像头监视区域后,触发图像采集摄像的拍照功能采集进入监视区域的目标图像,最后将目标图像确定为待分类目标图像。

在另一种可能的实现方式中,当图像分类模型训练后,需要检测训练完成的图像分类模型的分类性能时,用户通过用户终端从样本测试集或者本地图库或者云端下载任何一个携带物体的图像,将该图像确定为待分类目标图像。

S102,将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数;

其中,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失;

在本申请实施例中,在生成预先训练的图像分类模型时,首先构建图像分类训练数据集,然后创建并初始化图像分类网络,得到初始图像分类模型,再构建针对特征向量长度的模长约束损失,并基于模长约束损失构建图像分类模型的目标损失函数,最后根据图像分类训练数据集、初始图像分类模型以及目标损失函数生成预先训练的图像分类模型。其中,目标损失函数表达式为:

其中,i表示输入图像为数据集中的第i张图像,

在一种可能的实现方式中,在根据步骤S101获取到待分类目标图像后,此时将该目标图像输入预先训练的图像分类模型中,该模型根据训练后的模型参数进行处理,处理完成后,会得到目标图像归属于预设多个类别中每个类别的类别分数,最后预先训练的图像分类模型将每个类别的类别分数进行输出,输出后得到目标图像的多个类别分数。

S103,将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。

在一种可能的实现方式中,在基于步骤S102得到多个类别分数后,可将多个类别分数进行降序排列,并将排列在第一位的最大分数对应的类别确定为待分类目标图像的最终类别。

例如,将待分类目标图像输入给训练好的模型,并得到该图像属于每一类的类别分数,在属于每一类的类别分数中取类别分数的最大值

在本申请实施例中,图像分类装置首先获取待分类目标图像,然后将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失,最后将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。由于本申请在模型的损失函数中加入相应的模长约束损失,该损失可以使得模型在训练阶段快速从错误的分类类别纠正到正确的分类类别,并在分类到正确类别之后,进一步拉大正确类别和错误类别之间的分类置信值差距,从而提高模型的准确率和泛化性能。

请参见图2,为本申请实施例提供了一种图像分类模型训练方法的流程示意图。如图2所示,本申请实施例的方法可以包括以下步骤:

S201,构建图像分类训练数据集;

在本申请实施例中,在构建图像分类训练数据集时,首先在图像库中采集样本图像,然后对采集的每个样本图像标记真实类别标签,生成图像分类训练数据集。

S202,创建并初始化图像分类网络,得到初始图像分类模型;

在本申请实施例中,在创建并初始化图像分类网络,得到初始图像分类模型时,首先采用神经网络构建图像分类网络,然后采用随机初始化函数或利用预训练模型对图像分类网络进行初始化,得到初始图像分类模型。

S203,构建针对特征向量长度的模长约束损失,并基于模长约束损失构建图像分类模型的目标损失函数;

假设图像分类训练数据集中的图像一共有K类。在训练过程中,将第i张训练图像输入给神经网络进行特征提取,得到提取的特征

假设输入的图像的真实标签为第

当图像分类错误的时候,假设图像被错误地分类成第r类,则图像属于类别r和正确类别

在本申请实施例中,当图像分类错误时,正确类别

因此,本申请提出在损失函数中根据训练样本的分类正确情况加入对模长的约束,使得在样本分类错误的时候,特征的模长朝着变小的方向更新,从而缩小正确类别和错误类别之间的分数差距,而在样本分类正确的时候,特征的模长朝着变大的方向更新,进一步拉大正确类别和错误类别之间的分数差距。基于此,我们提出基于特征模长约束的分类损失函数L,其由分类的softmax交叉熵损失函数和特征的模长约束构成:

目标损失函数表达式为:

其中,i表示输入图像为数据集中的第i张图像,

S204,根据图像分类训练数据集、初始图像分类模型以及目标损失函数生成预先训练的图像分类模型。

在本申请实施例中,在根据图像分类训练数据集、初始图像分类模型以及目标损失函数生成预先训练的图像分类模型时,首先在图像分类训练数据集中获取第n个训练图像输入到图像分类模型中,得到训练图像对应的目标特征和每种类别的置信度,然后将每种类别置信度中最大置信度对应的类别确定为训练图像的输出类别,其次根据训练图像的输出类别确定训练图像的类别指示值,再根据训练图像对应的目标特征以及训练图像的类别指示值,结合目标损失函数计算模型损失值,最后根据模型损失值生成预先训练的图像分类模型;n为遍历次数。

具体的,在根据训练图像的输出类别确定训练图像的类别指示值时,首先判断训练图像的输出类别与训练图像的真实类别是否一致;若一致,将0确定为训练图像的类别指示值;或者,若不一致,将1确定为训练图像的类别指示值。

具体的,在根据模型损失值生成预先训练的图像分类模型时,首先当模型损失值低于预设阈值或者训练次数高于预设上限值时,生成训练后的图像分类模型;或者,当模型损失值高于预设阈值或训练次数未到达预设上限值时,采用随机梯度下降算法对图像分类模型进行迭代优化,并继续执行在图像分类训练数据集中获取第n+1个训练图像输入到图像分类模型中的步骤,以及当n+1大于图像分类训练数据集中的样本数量时,对图像分类训练数据集中图像的顺序进行随机排列后,并重置n=1;其中,n为遍历次数。

在本申请实施例中,图像分类装置首先获取待分类目标图像,然后将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失,最后将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。由于本申请在模型的损失函数中加入相应的模长约束损失,该损失可以使得模型在训练阶段快速从错误的分类类别纠正到正确的分类类别,并在分类到正确类别之后,进一步拉大正确类别和错误类别之间的分类置信值差距,从而提高模型的准确率和泛化性能。

下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

请参见图3,其示出了本发明一个示例性实施例提供的图像分类装置的结构示意图。该图像分类装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置1包括图像获取模块10、类别分数输出模块20、最终类别确定模块30。

图像获取模块10,用于获取待分类目标图像;

类别分数输出模块20,用于将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数;其中,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失;

最终类别确定模块30,用于将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。

需要说明的是,上述实施例提供的图像分类装置在执行图像分类方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的图像分类装置与图像分类方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

在本申请实施例中,图像分类装置首先获取待分类目标图像,然后将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失,最后将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。由于本申请在模型的损失函数中加入相应的模长约束损失,该损失可以使得模型在训练阶段快速从错误的分类类别纠正到正确的分类类别,并在分类到正确类别之后,进一步拉大正确类别和错误类别之间的分类置信值差距,从而提高模型的准确率和泛化性能。

本发明还提供一种计算机可读介质,其上存储有程序指令,该程序指令被处理器执行时实现上述各个方法实施例提供的图像分类方法。

本发明还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例的图像分类方法。

请参见图4,为本申请实施例提供了一种终端的结构示意图。如图4所示,终端1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。

其中,通信总线1002用于实现这些组件之间的连接通信。

其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。

其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。

其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种接口和线路连接整个电子设备1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行电子设备1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(Central Processing Unit,CPU)、初始图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。

其中,存储器1005可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、初始图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图4所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及图像分类应用程序。

在图4所示的终端1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的图像分类应用程序,并具体执行以下操作:

获取待分类目标图像;

将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数;其中,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失;

将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。

在一个实施例中,处理器1001在执行获取待分类目标图像之前时,还执行以下操作:

构建图像分类训练数据集;

创建并初始化图像分类网络,得到初始图像分类模型;

构建针对特征向量长度的模长约束损失,并基于模长约束损失构建图像分类模型的目标损失函数;

根据图像分类训练数据集、初始图像分类模型以及目标损失函数生成预先训练的图像分类模型;其中,

目标损失函数表达式为:

其中,i表示输入图像为数据集中的第i张图像,

在一个实施例中,处理器1001在执行构建图像分类训练数据集时,具体执行以下操作:

采集样本图像;

对采集的每个样本图像标记真实类别标签,生成图像分类训练数据集。

在一个实施例中,处理器1001在执行创建并初始化图像分类网络,得到初始图像分类模型时,具体执行以下操作:

采用神经网络构建图像分类网络;

采用随机初始化函数或利用预训练模型对图像分类网络进行初始化,得到初始图像分类模型。

在一个实施例中,处理器1001在执行根据图像分类训练数据集、初始图像分类模型以及目标损失函数生成预先训练的图像分类模型时,具体执行以下操作:

在图像分类训练数据集中获取第n个训练图像输入到图像分类模型中,得到训练图像对应的目标特征和每种类别的置信度;n为遍历次数;

将每种类别置信度中最大置信度对应的类别确定为训练图像的输出类别;

根据训练图像的输出类别确定训练图像的类别指示值;

根据训练图像对应的目标特征以及训练图像的类别指示值,结合目标损失函数计算模型损失值;

根据模型损失值生成预先训练的图像分类模型。

在一个实施例中,处理器1001在执行根据训练图像的输出类别确定训练图像的类别指示值时,具体执行以下操作:

判断训练图像的输出类别与训练图像的真实类别是否一致;

若一致,将0确定为训练图像的类别指示值;

或者,

若不一致,将1确定为训练图像的类别指示值。

在一个实施例中,处理器1001在执行根据模型损失值生成预先训练的图像分类模型时,具体执行以下操作:

当模型损失值低于预设阈值或者训练次数高于预设上限值时,生成训练后的图像分类模型;

或者,

当模型损失值高于预设阈值或训练次数未到达预设上限值时,采用随机梯度下降算法对图像分类模型进行迭代优化,并继续执行在图像分类训练数据集中获取第n+1个训练图像输入到图像分类模型中的步骤,以及当n+1大于图像分类训练数据集中的样本数量时,对图像分类训练数据集中图像的顺序进行随机排列后,并重置n=1;其中,n为遍历次数。

在本申请实施例中,图像分类装置首先获取待分类目标图像,然后将待分类目标图像输入预先训练的图像分类模型中,输出待分类目标图像对应的多个类别分数,预先训练的图像分类模型的损失函数包括图像分类的交叉熵损失函数与模长约束损失,最后将多个类别分数中最大分数对应的类别确定为待分类目标图像的最终类别。由于本申请在模型的损失函数中加入相应的模长约束损失,该损失可以使得模型在训练阶段快速从错误的分类类别纠正到正确的分类类别,并在分类到正确类别之后,进一步拉大正确类别和错误类别之间的分类置信值差距,从而提高模型的准确率和泛化性能。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,图像分类的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。

以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

相关技术
  • 一种图像分类方法、装置及服务器、用户终端、存储介质
  • 一种高光谱图像分类方法、装置、存储介质及终端
技术分类

06120114731397