神经网络模型的训练方法、图像识别方法以及装置
技术领域
本申请涉及图像处理技术领域,特别是涉及一种神经网络模型的训练方法、图像识别方法以及装置。
背景技术
随着深度学习的兴起,越来越多的技术采用深度学习来实现图片或视频流的图像识别。相比于传统方法,深度学习避免了手动参数调节与人工特征选择的复杂性,通过搭建深层神经网络模型,对数据进行多层分析和抽象化特征提取,其具有高准确性、高可靠性、高适应性的特点。常见的图像识别应用涵盖了动作识别、人脸识别、目标识别、场景识别等。其中,目标识别与场景识别作为图像检索、图像分类、场景理解、环境感知的基础,在模式识别、机器学习等领域发挥着重要作用。
在采用已训练的神经网络模型进行图像识别时,如果急需添加新的特征,目前有两种方法:1、单独新建一个神经网络模型;2、把具有新的特征的图像输入至原来的神经网络模型进行继续训练。前者将消耗翻倍的计算资源,后者训练耗时将较长,无法迅速反应,且无法控制加入新样本后,对原有类别的识别效果,很有可能会影响原有的识别效果。
发明内容
为解决上述问题,本申请提供了一种神经网络模型的训练方法、图像识别方法以及装置,能够提高神经网络模型训练的效率,而且不影响原有神经网络模型的识别效果。
本申请采用的一个技术方案是:提供一种神经网络模型的训练方法,该方法包括:获取神经网络模型;其中,神经网络模型是已进行训练得到的神经网络模型,且神经网络模型至少包括第一分支网络;在神经网络模型中添加第二分支网络;将待训练数据集输入至第二分支网络,以对第二分支网络进行单独训练;将第一分支网络和第二分支网络进行融合,以完成神经网络模型的训练。
其中,在神经网络模型中添加第二分支网络,包括:确定第一分支网络的多个卷积模块的输出尺度;基于输出尺度需求将第二分支网络添加至第一分支网络中的特定卷积模块。
其中,第一分支网络包括:输入层;第一卷积模块;第一池化层;第二卷积模块;第二池化层;第三卷积模块;第四卷积模块;第五卷积模块;第一全局平均池化层;第一全连接层;第一分类网络层;第一分支网络输出层。
其中,第二分支网络包括:特征选择层,连接第四卷积模块;第六卷积模块;第二全局平均池化层;第二全连接层;第二分类网络层;第二分支网络输出层。
其中,网络模式还包括:融合层,连接第一分支网络输出层和第二分支网络输出层;融合输出层。
其中,将待训练数据集输入至第二分支网络,以对第二分支网络进行单独训练,包括:获取待训练数据集;对待训练数据集进行数据增强处理;将数据增强处理后的待训练数据集输入至第二分支网络,对第二分支网络进行单独训练。
其中,将数据增强处理后的待训练数据集输入至第二分支网络,对第二分支网络进行单独训练,包括:设置第二分支网络的卷积初始化参数;固定第一分支网络的多个卷积模块的参数,将数据增强处理后的待训练数据集输入至第二分支网络,对第二分支网络进行单独训练。
本申请采用的另一个技术方案是:提供一种图像识别方法,该方法包括:获取待识别图像;将待识别图像输入至设定神经网络模型;其中,设定神经网络模型是采用如上述的方法训练得到的;输出识别结果。
本申请采用的另一个技术方案是:提供一种图像识别装置,该图像识别装置包括处理器以及与处理器连接的存储器,存储器用于存储程序数据,处理器用于执行程序数据以实现如上述的方法。
本申请采用的另一个技术方案是:提供一种计算机存储介质,该计算机存储介质中存储有程序数据,程序数据在被处理器执行时,用以实现如上述的方法。
本申请提供的神经网络模型的训练方法包括:获取神经网络模型;其中,神经网络模型是已进行训练得到的神经网络模型,且神经网络模型至少包括第一分支网络;在神经网络模型中添加第二分支网络;将待训练数据集输入至第二分支网络,以对第二分支网络进行单独训练;将第一分支网络和第二分支网络进行融合,以完成神经网络模型的训练。通过上述方式,在需要利用现有的神经网络模型识别新的特征时,无需新训练一个神经网络模型或者对原有的神经网络模型进行再次训练,提高了神经网络模型训练的效率,并且不会影响原有神经网络模型的识别效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请实施例提供的神经网络模型的训练方法的流程示意图;
图2是本申请实施例提供的神经网络模型示意图;
图3是本申请实施例提供的第二分支网络的训练的流程示意图;
图4是本申请实施例提供的第二分支网络的训练的另一流程示意图;
图5是本申请提供的图像识别方法的流程示意图;
图6是本申请实施例提供的图像识别装置的结构示意图;
图7是本申请实施例提供的计算机存储介质的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
参阅图1,图1是本申请实施例提供的神经网络模型的训练方法的流程示意图,该方法包括:
步骤11:获取神经网络模型;其中,神经网络模型是已进行训练得到的神经网络模型,且神经网络模型至少包括第一分支网络。
其中,神经网络模型是用于深度学习(Deep Learning,DL)的一个载体,深度学习是机器学习的技术和研究领域之一,通过建立具有阶层结构的人工神经网络(ArtifitialNeural Networks,ANNs),在计算***中实现人工智能。由于阶层ANN能够对输入信息进行逐层提取和筛选,因此深度学习具有表征学习(representation learning)能力,可以实现端到端的监督学习和非监督学习。此外,深度学习也可参与构建强化学习(reinforcementlearning)***,形成深度强化学习。
以卷积神经网络为例,卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。
其中,卷积神经网络包括输入层、隐含层和输出层。其中的隐含层包括卷积模块、池化层、全连接层。
1)卷积神经网络的输入层可以处理多维数据,一维卷积神经网络的输入层接收一维或二维数组,其中一维数组通常为时间或频谱采样;二维数组可能包含多个通道;二维卷积神经网络的输入层接收二维或三维数组;三维卷积神经网络的输入层接收四维数组。
在本实施例中,该卷积神经网络主要用于对图像进行处理,因此,可以采用三维卷积神经网络,其包括三维数据通道,即二维像素点和RGB(红绿蓝)数据通道。
2)卷积模块的功能是对输入数据进行特征提取,其内部包含多个卷积核,组成卷积核的每个元素都对应一个权重系数和一个偏差量(bias vector),类似于一个前馈神经网络的神经元(neuron)。卷积模块内每个神经元都与前一层中位置接近的区域的多个神经元相连,区域的大小取决于卷积核的大小。
在卷积模块进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤。池化层包含预设定的池化函数,其功能是将特征图中单个点的结果替换为其相邻区域的特征图统计量。池化层选取池化区域与卷积核扫描特征图步骤相同,由池化大小、步长和填充控制。
卷积神经网络中的全连接层等价于传统前馈神经网络中的隐含层。全连接层通常搭建在卷积神经网络隐含层的最后部分,并只向其它全连接层传递信号。特征图在全连接层中会失去三维结构,被展开为向量并通过激励函数传递至下一层。
3)卷积神经网络中输出层的上游通常是全连接层,因此其结构和工作原理与传统前馈神经网络中的输出层相同。对于图像分类问题,输出层使用逻辑函数或归一化指数函数(softmax function)输出分类标签。
例如,在本实施例中对图像进行识别输出层可设计为输出图像中物体的中心坐标、大小和分类。在图像语义分割中,输出层直接输出每个像素的分类结果。
步骤12:在神经网络模型中添加第二分支网络。
可选地,步骤12可以具体包括:确定第一分支网络的多个卷积模块的输出尺度;基于输出尺度需求将第二分支网络添加至第一分支网络中的特定卷积模块。
如图2所示,图2是本申请实施例提供的神经网络模型示意图。
其中,第一分支网络包括:输入层(INPUT);第一卷积模块(ConvBlock);第一池化层(Pooling);第二卷积模块;第二池化层;第三卷积模块;第四卷积模块;第五卷积模块;第一全局平均池化层(Global Average Pooling,GAP);第一全连接层(fully connectedlayers,FC);第一分类网络层(Softmax);第一分支网络输出层(Main_output)。
其中,第二分支网络包括:特征选择层(SelectBlock),连接第四卷积模块;第六卷积模块;第二全局平均池化层;第二全连接层;第二分类网络层;第二分支网络输出层(Branch_output)。
另外,还包括融合层(Fusing)和融合输出层(Fusing_output),融合层连接第一分支网络输出层和第二分支网络输出层。
在一实施例中,第一卷积模块的输出尺度可以根据需求来设置,例如,其输出尺度可以为N*N,其中100<N<300。例如,N的常用取值可以为227。进一步,第一池化层的输出尺度为N/2*N/2;第二卷积模块的输出尺度为N/2*N/2;第二池化层的输出尺度为N/4*N/4;第三卷积模块的输出尺度为N/8*N/8;第四卷积模块的输出尺度为N/16*N/16;第五卷积模块的输出尺度为N/16*N/16。特征选择层连接第四卷积模块,两者的输出尺度相同,均为N/16*N/16。
在一具体的实施例中,第一卷积模块的输出尺度为168*168;第一池化层的输出尺度为84*84;第二卷积模块的输出尺度为84*84;第二池化层的输出尺度为42*42;第三卷积模块的输出尺度为21*21;第四卷积模块的输出尺度为11*11;第五卷积模块的输出尺度为11*11。特征选择层的输出尺度为11*11。
在本实施例中,第二分支网络需在倒数第二个特征图尺度下降的时候进行分叉,即11*11的尺度,因为浅层主要用于提取特征,深层网络主要用于对特征进行变化,提取高级语义信息;如果只是使用最后一个全连接层做分叉,已经提取的信息对最终结果会受到第一分支网络的影响较大,最终效果不佳;如图2所示右侧为第二分支网络部分,首先经过一个特征选择层(SelectBlock),对特征进行加权重组,对新样本作用大的特征赋予权重更大,然后再进行原有网络的几次卷积变换,再接全连接层进行分类即可。
步骤13:将待训练数据集输入至第二分支网络,以对第二分支网络进行单独训练。
可选地,如图3所示,图3是本申请实施例提供的第二分支网络的训练的流程示意图,步骤12可以具体包括:
步骤131:获取待训练数据集。
其中,该待训练数据集为具有新特征的数据。以图像为例,在一应用场景中,需要对图像中具有A特征的图像进行识别,则第一分支网络是对具有A特征的图像进行训练得到的。进一步,若要新添加B特征,则添加第二分支网络,输入具有B特征的图像进行训练。
步骤132:对待训练数据集进行数据增强处理。
一般而言,神经网络需要大量的参数,许许多多的神经网路的参数都是数以百万计,而使得这些参数可以正确工作则需要大量的数据进行训练,而实际情况中数据并没有我们想象中的那么多。对数据进行增强,即利用已有的数据比如翻转、平移或旋转,创造出更多的数据,来使得神经网络具有更好的泛化效果。
步骤133:将数据增强处理后的待训练数据集输入至第二分支网络,对第二分支网络进行单独训练。
另外,如图4所示,图4是本申请实施例提供的第二分支网络的训练的另一流程示意图,步骤12可以具体包括:
步骤136:设置第二分支网络的卷积初始化参数。
卷积模块参数包括卷积核大小、步长和填充,三者共同决定了卷积模块输出特征图的尺寸,是卷积神经网络的超参数。其中卷积核大小可以指定为小于输入图像尺寸的任意值,卷积核越大,可提取的输入特征越复杂。
其中,卷积步长定义了卷积核相邻两次扫过特征图时位置的距离,卷积步长为1时,卷积核会逐个扫过特征图的元素,步长为n时会在下一次扫描跳过n-1个像素。
由卷积核的交叉相关计算可知,随着卷积模块的堆叠,特征图的尺寸会逐步减小,例如16×16的输入图像在经过单位步长、无填充的5×5的卷积核后,会输出12×12的特征图。为此,填充是在特征图通过卷积核之前人为增大其尺寸以抵消计算中尺寸收缩影响的方法。常见的填充方法为按0填充和重复边界值填充(replication padding)。
步骤137:固定第一分支网络的多个卷积模块的参数,将数据增强处理后的待训练数据集输入至第二分支网络,对第二分支网络进行单独训练。
步骤14:将第一分支网络和第二分支网络进行融合,以完成神经网络模型的训练。
本实施例提供的神经网络模型的训练方法包括:获取神经网络模型;其中,神经网络模型是已进行训练得到的神经网络模型,且神经网络模型至少包括第一分支网络;在神经网络模型中添加第二分支网络;将待训练数据集输入至第二分支网络,以对第二分支网络进行单独训练;将第一分支网络和第二分支网络进行融合,以完成神经网络模型的训练。通过上述方式,在需要利用现有的神经网络模型识别新的特征时,无需新训练一个神经网络模型或者对原有的神经网络模型进行再次训练,提高了神经网络模型训练的效率,并且不会影响原有神经网络模型的识别效果。
可以理解地,本实施例的方法可以应用于对网络的非法图片或视频进行训练和识别。例如,已用于对外鉴黄和短视频鉴黄的模型,对外鉴黄输出时,若应用场景不一样,会定制不同的输出,可以采用分支网络进行适配;短视频中出现一些突发的违规图片,现有模型无法识别,加入训练集会影响已有效果的话,采用分支网络可解决这样的问题,例如短视频应用泄露的违规视频,会不断地在平台上传播,又例如有一种***的水印;针对的这些问题是有一定特点,特定的一些图片,采用本发明的方法后,违规图片识别率高,误识别很少。
以SE-BN-Inception模型为例,如下表所示:
本实施例提供的在第一分支网络的基础上增加第二分支网络的模型,单张图片处理时,单张计算耗时平均增加4.8ms,显存消耗增加69MB,在batchs size为12时,单张计算耗时平均增加1ms,显存消耗增加129MB。可以从上述数据看出,采用具有分支网络的新的神经网络模型进行图片处理时,相比于原始的神经网络模型的耗时增加很少,显存消耗增加也较低,相比于通过两个不同的神经网络模型进行两次图片处理来说,大大的缩短了处理时间,减小了内存消耗。
参阅图5,图5是本申请提供的图像识别方法的流程示意图,该方法包括:
步骤51:获取待识别图像。
其中,该图像可以是单个图片,也可以视频流中的一个图像帧,这里不作限制。
步骤52:将待识别图像输入至设定神经网络模型。
其中,设定神经网络模型是采用如上述实施例的方法训练得到的,这里不再赘述。
步骤53:输出识别结果。
参阅图6,图6是本申请实施例提供的图像识别装置的结构示意图,该图像识别装置60包括处理器61以及与处理器61连接的存储器62,存储器62用于存储程序数据,处理器61用于执行程序数据以实现如下的方法:
获取神经网络模型;其中,神经网络模型是已进行训练得到的神经网络模型,且神经网络模型至少包括第一分支网络;在神经网络模型中添加第二分支网络;将待训练数据集输入至第二分支网络,以对第二分支网络进行单独训练;将第一分支网络和第二分支网络进行融合,以完成神经网络模型的训练。
可选地,在另一实施例中,处理器61用于执行程序数据以实现如下的方法:获取待识别图像;将待识别图像输入至设定神经网络模型;输出识别结果。
参阅图7,图7是本申请实施例提供的计算机存储介质的结构示意图,该计算机存储介质70中存储有程序数据71,程序数据71在被处理器执行时,用以实现如下的方法:
获取神经网络模型;其中,神经网络模型是已进行训练得到的神经网络模型,且神经网络模型至少包括第一分支网络;在神经网络模型中添加第二分支网络;将待训练数据集输入至第二分支网络,以对第二分支网络进行单独训练;将第一分支网络和第二分支网络进行融合,以完成神经网络模型的训练。
可选地,在另一实施例中,程序数据71在被处理器执行时,还用以实现如下的方法:确定第一分支网络的多个卷积模块的输出尺度;基于输出尺度需求将第二分支网络添加至第一分支网络中的特定卷积模块。
其中,第一分支网络包括:输入层;第一卷积模块,其输出尺度为168*168;第一池化层,其输出尺度为84*84;第二卷积模块,其输出尺度为84*84;第二池化层,其输出尺度为42*42;第三卷积模块,其输出尺度为21*21;第四卷积模块,其输出尺度为11*11;第五卷积模块,其输出尺度为11*11;第一全局平均池化层;第一全连接层;第一分类网络层;第一分支网络输出层。
其中,第二分支网络包括:特征选择层,连接第四卷积模块,其尺度为11*11;第六卷积模块;第二全局平均池化层;第二全连接层;第二分类网络层;第二分支网络输出层。
其中,网络模式还包括:融合层,连接第一分支网络输出层和第二分支网络输出层;融合输出层。
可选地,在另一实施例中,程序数据71在被处理器执行时,还用以实现如下的方法:获取待训练数据集;对待训练数据集进行数据增强处理;将数据增强处理后的待训练数据集输入至第二分支网络,对第二分支网络进行单独训练。
可选地,在另一实施例中,程序数据71在被处理器执行时,还用以实现如下的方法:设置第二分支网络的卷积初始化参数;固定第一分支网络的多个卷积模块的参数,将数据增强处理后的待训练数据集输入至第二分支网络,对第二分支网络进行单独训练。
在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述其他实施方式中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是根据本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。