神经网络训练方法、图像处理方法及装置与流程

专利2022-06-29  51


本发明一般地涉及图像识别技术领域,特别是涉及一种神经网络训练方法、图像处理方法及装置,以及电子设备和计算机可读存储介质。



背景技术:

目前神经网络训练过程中使用的训练集,包括多个类别的训练数据,为了保证训练质量以及分类效果,往往会加大训练集的规模,以包含更多的类别,而在规模增加的同时,训练集的存在长尾问题,即:训练集中一部分类别包括很多训练数据(头部数据),同时有很多类别中仅包含很少的训练数据(尾部数据)。

如果采用分类损失函数对神经网络训练,在这种数据集上,由于类数过多,分类损失函数的实现会对计算资源造成很大负担,同时,通过随机采样,训练数据多的类别通过更容易被采样,使得训练后的神经网络倾向于将样本预测为头部数据;尾部数据会因为数据量少且噪声影响大的缘故反而对分类器的训练无法造成影响或造成负面影响。

如果采用三元组损失函数(tripletloss)对神经网络训练,虽然三元组损失函数的部署不会受训练集规模影响,然而其精度不足。



技术实现要素:

为了解决现有技术中存在的上述问题,本发明提供一种神经网络训练方法、图像处理方法及装置,以及电子设备和计算机可读存储介质。

根据本公开实施例的第一方面,提供一种神经网络训练方法,包括:获取总训练集,总训练集包括多个类别的训练数据,其中每个类别包括一个或多个训练数据;基于每个类别包括的训练数据的数量,得到头部训练集,其中,头部训练集中的任一类别包括的训练数据的数量多于非头部训练集中的任一类别包括的训练数据的数量;基于头部训练集的训练数据和第一损失函数调整神经网络的参数,以及基于总训练集的训练数据和第二损失函数调整神经网络的参数,以完成对神经网络的训练。

在一例中,基于头部训练集的训练数据和第一损失函数调整神经网络的参数,包括:对头部训练集中的训练数据进行随机采样或pk采样得到第一子训练集;通过神经网络对第一子训练集中的训练数据进行特征提取,得到所第一述输出结果;基于第一输出结果和第一损失函数,调整神经网络的参数,其中第一损失函数为分类损失函数。

在一例中,基于总训练集的训练数据和第二损失函数调整所述神经网络的参数,包括:对总训练集中的训练数据进行pk采样得到第二子训练集;通过神经网络对第二子训练集中的训练数据进行特征提取,得到第二输出结果;基于第二输出结果和第二损失函数,调整神经网络的参数,其中第二损失函数为三元组损失函数。

在一例中,基于每个类别包括的训练数据的数量,得到头部训练集,包括:将训练数据的数量大于预设阈值的类别,划分到头部训练集。

在一例中,基于每个类别包括的训练数据的数量,得到头部训练集,包括:根据预设比例或预设数量,将训练数据的数量最多的若干个类别,划分到头部训练集。

根据本公开实施例的第二方面,提供一种图像处理方法,包括:获取图像;通过神经网络进行图像识别,得到图像的分类结果,其中神经网络通过第一方面的神经网络训练方法训练得到。

根据本公开实施例的第三方面,提供一种神经网络训练装置,包括:获取模块,用于获取总训练集,总训练集包括多个类别的训练数据,其中每个类别包括一个或多个训练数据;划分模块,用于基于每个类别包括的训练数据的数量,得到头部训练集,其中,头部训练集中的任一类别包括的训练数据的数量多于非头部训练集中的任一类别包括的训练数据的数量;训练模块,用于基于头部训练集的训练数据和第一损失函数调整神经网络的参数,以及基于总训练集的训练数据和第二损失函数调整神经网络的参数,以完成对神经网络的训练。

根据本公开实施例的第四方面,提供一种图像处理装置,包括:接收模块,用于获取图像;处理模块,用于通过神经网络进行图像识别,得到图像的分类结果,其中神经网络通过第一方面的神经网络训练方法训练得到。

根据本公开实施例的第五方面,提供一种电子设备,其中,电子设备包括:存储器,用于存储指令;以及处理器,用于调用存储器存储的指令执行第一方面的神经网络训练方法或第二方面图像处理方法。

根据本公开实施例的第六方面,提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在由处理器执行时,执行第一方面的神经网络训练方法或第二方面图像处理方法。

本公开提供的神经网络训练方法、图像处理方法及装置,以及电子设备和计算机可读存储介质,通过根据训练集中的类别的训练数据数量,采用多种训练方法,即采用多种采样方法和多种损失函数,使提高训练质量,保证训练后的神经网络的分类准确性。

附图说明

通过参考附图阅读下文的详细描述,本发明实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1示出了本发明实施例提供的一种神经网络训练方法示意图;

图2示出了本发明实施例提供的一种图像处理方法示意图;

图3示出了本发明实施例提供的一种神经网络训练装置示意图;

图4示出了本发明实施例提供的一种图像处理装置示意图;

图5示出了本发明实施例提供的一种电子设备示意图;

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。

需要注意,虽然本文中使用“第一”、“第二”等表述来描述本发明的实施方式的不同模块、步骤和数据等,但是“第一”、“第二”等表述仅是为了在不同的模块、步骤和数据等之间进行区分,而并不表示特定的顺序或者重要程度。实际上,“第一”、“第二”等表述完全可以互换使用。

目前,神经网络应用于各个领域,尤其是分类领域中,通过神经网络能够对目标进行快速的分类识别。而随着情况的复杂,以及用户需求的提高,对神经网络的分类类别种类以及准确性都提出了跟高的要求,使得训练集规模也随之扩大。在训练集规模扩大的同时,很容易导致前文提到的长尾问题,使得不论采用分类损失函数还是三元组损失函数,均不能达到很好的训练效果。

本公开提供的一种神经网络训练方法10,其中神经网络可以是用于分类的神经网络,在一些实施例中,神经网络可以是用于图像识别的神经网络,如卷积神经网络。图1为本公开实施例示出的一种神经网络训练方法10的示意图,如图1所示,该方法包括步骤s11至步骤s13:

步骤s11,获取总训练集,总训练集包括多个类别的训练数据,其中每个类别包括一个或多个训练数据。

获取用于训练的总训练集,包括全部用于训练的训练数据,训练数据具有不同的类别,每个类别可以包括一个或多个训练数据。每个类别所包括的训练数据的数量可能不同,在一些情况下,数量相差可能会较大,一些常见类别的训练数据,由于获取容易,因此常见类别的训练数据的数量相对较高,同时一些冷门类别,难于获取,导致训练数据的数量相对较低;并且,在实际情况中,常见的类别占全部类别的比例一般不高。

步骤s12,基于每个类别包括的训练数据的数量,得到头部训练集,其中,头部训练集中的任一类别包括的训练数据的数量多于非头部训练集中的任一类别包括的训练数据的数量。

在获取训练集之后,根据每个类别训练数据的数量,对训练数据进行划分,将相对包括训练数据的数量相对较高的类别,划分为头部训练集;其余可以划分为尾部训练集,或不进行划分,划分后的训练集可以用于之后采用不同的训练方式。

在一实施例中,步骤s12可以包括:将训练数据的数量大于预设阈值的类别,划分到头部训练集。可以预先设定一预设阈值,将包括有超过该预设阈值数量训练数据的类别,划分到头部训练集中,即通过预设阈值,确定头部数据。本实施例的方式能够保证头部训练集中的类别中,包含足够多的训练数据。

在另一实施例中,步骤s12可以包括:根据预设比例或预设数量,将训练数据的数量最多的若干个类别,划分到头部训练集。本实施例中,可以统计每个类别的训练数据的数量,对具有最多数量的若干个类别,划分到头部数据。如根据总类别数量,确定一预设数量,n个,根据预设数量进行划分,将具有训练数据数量最多的n个类别划分到头部训练集。或,预先确定一个预设比例,如20%,即将具有训练数据数量最多的前20%的类比,划分到头部训练集。该种方式可以避免分入头部训练集中的类别过多或过少。

步骤s13,基于头部训练集的训练数据和第一损失函数调整神经网络的参数,以及基于总训练集的训练数据和第二损失函数调整神经网络的参数,以完成对神经网络的训练。

头部训练集中的类别均包括相对较多的训练数据,神经网络基于头部训练集进行训练时可以通过第一损失函数计算损失值进而调整神经网络的参数,同时,由于头部训练集与总训练集中的训练数据分布不同,神经网络基于总训练集进行训练时可以通过第二损失函数计算损失值进而调整神经网络的参数。通过训练集中类别的训练数据情况,采用不同的方式进行训练,使得训练更有针对性,保证训练后的神经网络的分类准确性。

在一实施例中,步骤s13中基于头部训练集的训练数据和第一损失函数调整神经网络的参数可以包括:对头部训练集中的训练数据进行随机采样或pk采样得到第一子训练集;通过神经网络对第一子训练集中的训练数据进行特征提取,得到第一输出结果;基于第一输出结果和第一损失函数,调整神经网络的参数,其中第一损失函数为分类损失函数。

由于头部训练集中的类别均包括相对较多的训练数据,因此在每轮迭代中,可以通过随机采样或pk采样的方式进行采用,得到该轮迭代的子训练集,其中,pk采样是指从训练集(本实施例为头部训练集)中,选出p个类别,然后每个类别随机选择k个训练数据,因此每轮迭代批次就是p*k个训练数据。采样出的训练数据通过神经网络得到第一输出结果,将第一输出结果与训练数据对应的真实分类结果进行比对,并通过分类损失函数可以得到损失值,并基于损失值调整神经网络的参数。

在另一实施例中,步骤s13中基于总训练集的训练数据和第二损失函数调整神经网络的参数可以包括:对总训练集中的训练数据进行pk采样得到第二子训练集;通过神经网络对第二子训练集中的训练数据进行特征提取,得到第二输出结果;基于第二输出结果和第二损失函数,调整神经网络的参数,其中第二损失函数为三元组损失函数。

由于总训练集中的类别所包含训练数据的数量不同,有些数量少的类别(尾部数据),如通过随机采样再通过分类损失函数进行训练,神经网络很难学习到尾部数据的特征。而本实施例中,对总训练集中的全部类别均采用pk采样的方式得到第二子训练集,采样出的训练数据通过神经网络得到第二输出结果,将第二输出结果与训练数据对应的真实分类结果进行比对,通过三元组损失函数得到损失值,并基于损失值调整神经网络的参数,从而能够保证尾部数据也能对神经网络进行足够的训练。

其中,三元组损失函数是通过标准数据(anchor)、同类数据(positive)、异类数据(negative)三元,将anchor和positive进行比对,也将anchor和negative进行比对,基于函数计算损失调整参数后使得anchor和positive之间的距离最小,并且使anchor和negative之间距离最大,其中,positive为和anchor属于同一类别的训练数据,而negative则为和anchor不同类别的训练数据。且,在negative与anchor两个类别之间的距离(相似度)更接近时,训练效率会更高。

两个训练方式,即对于头部训练集通过分类损失函数进行训练和对于总训练集采用三元组损失函数进行训练之间互不冲突,可以同时进行。分类损失函数适用于随机采样和pk采样;但如果分类类别过多,且有很多类拥有实例数过少的话,训练精度不会明显上升,甚至会下降,且部署困难;而三元组损失函数只适用于pk采样,部署不会受到训练集规模影响且对神经网络模型精度的影响与训练集规模呈正相关。因此,本公开上述实施例中,将总训练集中划分出头部训练集,对于头部训练集通过随机采样或pk采样,并通过分类损失函数进行训练;对于总训练集,则采取pk采样,并通过三元组损失函数进行训练。从而避免了单一使用分类损失函数进行训练或单一使用三原则损失函数进行训练的弊端,最大化地利用了随机采样下分类损失函数带来的神经网络模型精度,规避了大数据集带来的负面效果,又充分利用了大数据集训练了三元组损失函数,同时还避免了随机采样导致三元组无法训练的问题,最大化地利用了大数据集的优势来强化特征学习,最大限度的保证训练质量和训练效率,从而提高了训练完成后神经网络的分类准确性。

基于同样的发明构思,本公开还提供一种图像处理方法20,如图2所示,图像处理方法20包括:

步骤s21,获取图像。用于获取待测图像。

步骤s22,通过神经网络进行图像识别,得到图像的分类结果,其中神经网络通过前述任一实施例的神经网络训练方法10训练得到。

通过神经网络训练方法10得到的神经网络,能够更加准确的进行图像识别。

基于相同的发明构思,本公开实施例提供一种神经网络训练装置100,如图3所示,神经网络训练装置100包括:获取模块110,用于获取总训练集,述总训练集包括多个类别的训练数据,其中每个类别包括一个或多个训练数据;划分模块120,用于基于每个类别包括的训练数据的数量,得到头部训练集,其中,头部训练集中的任一类别包括的训练数据的数量多于非头部训练集中的任一类别包括的训练数据的数量;训练模块130,用于基于头部训练集的训练数据和第一损失函数调整神经网络的参数,以及基于总训练集的训练数据和第二损失函数调整神经网络的参数,以完成对神经网络的训练。

在一例中,训练模块130还用于:对头部训练集中的训练数据进行随机采样或pk采样得到第一子训练集;通过神经网络对第一子训练集中的训练数据进行特征提取,得到所第一述输出结果;基于第一输出结果和第一损失函数,调整神经网络的参数,其中第一损失函数为分类损失函数。

在一例中,训练模块130还用于:对总训练集中的训练数据进行pk采样得到第二子训练集;通过神经网络对第二子训练集中的训练数据进行特征提取,得到第二输出结果;基于第二输出结果和第二损失函数,调整神经网络的参数,其中第二损失函数为三元组损失函数。

在一例中,划分模块120还用于:将训练数据的数量大于预设阈值的类别,划分到头部训练集。

在一例中,划分模块120还用于:根据预设比例或预设数量,将训练数据的数量最多的若干个类别,划分到头部训练集。

关于上述实施例中的神经网络训练装置100,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

基于相同的发明构思,本公开实施例提供一种图像处理装置200,如图4所示,图像处理装置200包括:接收模块210,用于获取图像;处理模块220,用于通过神经网络进行图像识别,得到图像的分类结果,其中神经网络通过前述任一实施例的神经网络训练方法10训练得到。

关于上述实施例中的图像处理装置200,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

如图5所示,本发明的一个实施方式提供了一种电子设备40。其中,该电子设备40包括存储器410、处理器420、输入/输出(input/output,i/o)接口430。其中,存储器410,用于存储指令。处理器420,用于调用存储器410存储的指令执行本发明实施例的用于神经网络训练方法或图像处理方法。其中,处理器420分别与存储器410、i/o接口430连接,例如可通过总线系统和/或其他形式的连接机构(未示出)进行连接。存储器410可用于存储程序和数据,包括本发明实施例中涉及的用于神经网络训练方法或图像处理方法的程序,处理器420通过运行存储在存储器410的程序从而执行电子设备40的各种功能应用以及数据处理。

本发明实施例中处理器420可以采用数字信号处理器(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现,所述处理器420可以是中央处理单元(centralprocessingunit,cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元中的一种或几种的组合。

本发明实施例中的存储器410可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(randomaccessmemory,ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)等。

本发明实施例中,i/o接口430可用于接收输入的指令(例如数字或字符信息,以及产生与电子设备40的用户设置以及功能控制有关的键信号输入等),也可向外部输出各种信息(例如,图像或声音等)。本发明实施例中i/o接口430可包括物理键盘、功能按键(比如音量控制按键、开关按键等)、鼠标、操作杆、轨迹球、麦克风、扬声器、和触控面板等中的一个或多个。

在一些实施方式中,本发明提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在由处理器执行时,执行上文所述的任何方法。

尽管在附图中以特定的顺序描述操作,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或是要求执行全部所示的操作以得到期望的结果。在特定环境中,多任务和并行处理可能是有利的。

本发明的方法和装置能够利用标准编程技术来完成,利用基于规则的逻辑或者其他逻辑来实现各种方法步骤。还应当注意的是,此处以及权利要求书中使用的词语“装置”和“模块”意在包括使用一行或者多行软件代码的实现和/或硬件实现和/或用于接收输入的设备。

此处描述的任何步骤、操作或程序可以使用单独的或与其他设备组合的一个或多个硬件或软件模块来执行或实现。在一个实施方式中,软件模块使用包括包含计算机程序代码的计算机可读介质的计算机程序产品实现,其能够由计算机处理器执行用于执行任何或全部的所描述的步骤、操作或程序。

出于示例和描述的目的,已经给出了本发明实施的前述说明。前述说明并非是穷举性的也并非要将本发明限制到所公开的确切形式,根据上述教导还可能存在各种变形和修改,或者是可能从本发明的实践中得到各种变形和修改。选择和描述这些实施例是为了说明本发明的原理及其实际应用,以使得本领域的技术人员能够以适合于构思的特定用途来以各种实施方式和各种修改而利用本发明。


技术特征:

1.一种神经网络训练方法,其中,所述方法包括:

获取总训练集,所述总训练集包括多个类别的训练数据,其中每个所述类别包括一个或多个所述训练数据;

基于每个所述类别包括的训练数据的数量,得到头部训练集,其中,所述头部训练集中的任一所述类别包括的训练数据的数量多于非所述头部训练集中的任一所述类别包括的训练数据的数量;

基于所述头部训练集的所述训练数据和第一损失函数调整神经网络的参数,以及基于所述总训练集的所述训练数据和第二损失函数调整所述神经网络的参数,以完成对所述神经网络的训练。

2.根据权利要求1所述的神经网络训练方法,其中,所述基于所述头部训练集的所述训练数据和第一损失函数调整神经网络的参数,包括:

对所述头部训练集中的所述训练数据进行随机采样或pk采样得到第一子训练集;

通过所述神经网络对所述第一子训练集中的所述训练数据进行特征提取,得到第一输出结果;

基于所述第一输出结果和所述第一损失函数,调整所述神经网络的参数,其中所述第一损失函数为分类损失函数。

3.根据权利要求1或2所述的神经网络训练方法,其中,所述基于所述总训练集的所述训练数据和第二损失函数调整所述神经网络的参数,包括:

对所述总训练集中的所述训练数据进行pk采样得到第二子训练集;

通过所述神经网络对所述第二子训练集中的所述训练数据进行特征提取,得到第二输出结果;

基于所述第二输出结果和所述第二损失函数,调整所述神经网络的参数,其中所述第二损失函数为三元组损失函数。

4.根据权利要求1所述的神经网络训练方法,其中,所述基于每个所述类别包括的训练数据的数量,得到头部训练集,包括:

将所述训练数据的数量大于预设阈值的所述类别,划分到所述头部训练集。

5.根据权利要求1所述的神经网络训练方法,其中,所述基于每个所述类别包括的训练数据的数量,得到头部训练集,包括:

根据预设比例或预设数量,将所述训练数据的数量最多的若干个所述类别,划分到所述头部训练集。

6.一种图像处理方法,其中,所述方法包括:

获取图像;

通过神经网络进行图像识别,得到所述图像的分类结果,其中所述神经网络通过权利要求1-5任一项所述的神经网络训练方法训练得到。

7.一种神经网络训练装置,其中,所述装置包括:

获取模块,用于获取总训练集,所述总训练集包括多个类别的训练数据,其中每个所述类别包括一个或多个所述训练数据;

划分模块,用于基于每个所述类别包括的训练数据的数量,得到头部训练集,其中,所述头部训练集中的任一所述类别包括的训练数据的数量多于非所述头部训练集中的任一所述类别包括的训练数据的数量;

训练模块,用于基于所述头部训练集的所述训练数据和第一损失函数调整神经网络的参数,以及基于所述总训练集的所述训练数据和第二损失函数调整所述神经网络的参数,以完成对所述神经网络的训练。

8.一种图像处理装置,其中,所述装置包括:

接收模块,用于获取图像;

处理模块,用于通过神经网络进行图像识别,得到所述图像的分类结果,其中所述神经网络通过权利要求1-5任一项所述的神经网络训练方法训练得到。

9.一种电子设备,其中,所述电子设备包括:

存储器,用于存储指令;以及

处理器,用于调用所述存储器存储的指令执行权利要求1-5中任一项所述的神经网络训练方法或权利要求6所述的图像处理方法。

10.一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,执行权利要求1-5中任一项所述的神经网络训练方法或权利要求6所述的图像处理方法。

技术总结
本公开提供了神经网络训练方法、图像处理方法及装置。其中神经网络训练方法包括:获取总训练集,总训练集包括多个类别的训练数据,其中每个类别包括一个或多个训练数据;基于每个类别包括的训练数据的数量,得到头部训练集,其中,头部训练集中的任一类别包括的训练数据的数量多于非头部训练集中的任一类别包括的训练数据的数量;基于头部训练集的训练数据和第一损失函数调整神经网络的参数,以及基于总训练集的训练数据和第二损失函数调整神经网络的参数,以完成对神经网络的训练。通过训练集中类别的训练数据数量,采用多种训练方法,使提高训练质量,保证训练后神经网络的分类准确性。

技术研发人员:胡瀚涛
受保护的技术使用者:北京迈格威科技有限公司
技术研发日:2019.12.05
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-53252.html

最新回复(0)