一种神经网络训练方法、计算设备及存储介质与流程

文档序号:18269179发布日期:2019-07-27 09:29阅读:143来源:国知局
一种神经网络训练方法、计算设备及存储介质与流程

本发明涉及深度学习技术领域,尤其涉及一种神经网络训练方法、关键点检测方法、计算设备及存储介质。



背景技术:

关键点/特征点检测的应用非常广泛,尤其人脸或者猫狗脸关键点的检测,是各种应用如人脸美化、猫狗脸可爱表情的重要基础。互联网短视频的实时要求,对脸关键点的检测是一个挑战,传统的一帧帧检测的方法会产生严重的点抖动问题,点的晃动对用户的体验也产生巨大的不良影响。如何调校神经网络以达到最优的应用效果仍是一个经验性的工作。

因此,需要一种神经网络训练方法,来提高神经网络输出预测点的稳定度。



技术实现要素:

为此,本发明提供了一种神经网络训练方法以及关键点检测方法,以力图解决或者至少缓解上面存在的至少一个问题。

根据本发明的一个方面,提供了一种神经网络训练方法,适于在计算设备中执行,神经网络可以对图像进行处理以输出表征图像特征的关键点。在该方法中,可以首先从视频数据中提取预定数量的连续帧图像;将连续帧图像输入神经网络,得到连续帧图像的第一图像预测点。然后针对各第一图像预测点,对连续帧图像进行光流计算,以得到对应的光流预测点。从而可以基于连续帧图像的图像预测点和光流预测点,计算第一损失值。最后基于第一损失值,调整神经网络的参数,以得到训练后的神经网络。

可选地,在上述方法中,可以首先基于光流法,计算连续帧图像中相邻帧之间各第一图像预测点的位移信息。然后基于位移信息,确定前一帧图像的各第一图像预测点在当前帧图像中的位置,以得到连续帧图像的光流预测点。

可选地,在上述方法中,可以通过下述公式计算第一损失值:

其中,registrationloss为第一损失值,lt,i指连续帧图像中第t帧第i个网络预测点的坐标,为对应的第t帧第i个光流预测点的坐标,k为点坐标数,t为视频帧数。

可选地,为了进一步优化神经网络,在上述方法中,还可以获取已标注关键点的图像,该组图像与连续帧图像具有一致的数量和格式。同样地,将该组图像输入神经网络,获得图像的第二图像预测点。然后就可以基于标注的关键点和第二图像预测点,计算第二损失值。最后基于第二损失值,调整神经网络的参数以优化神经网络。

可选地,在上述方法中,可以通过下述公式计算第二损失值:

其中,detectionloss为第二损失值,li指图像的第i个网络预测点的坐标,为对应的第i个关键点的坐标,k为点坐标数。

根据本发明的又一个方面,提供一种神经网络训练方法,可以首先从视频数据中提取预定数量的连续帧图像,并获取具有标注了关键点的图像,该组图像与连续帧图像具有一致的数量和格式。然后,将连续帧图像和该组图像输入神经网络,得到连续帧图像的第一图像预测点和该组图像的第二图像预测点。针对连续帧图像的各第一图像预测点,对连续帧图像进行光流计算,以得到连续帧图像的光流预测点。就可以基于第一图像预测点和光流预测点,计算第一损失值,并基于标注的关键点和第二图像预测点,计算第二损失值。最后,基于第一损失值和第二损失值,调整神经网络的参数以得到训练后的神经网络。

以上方案通过两个损失值对神经网络进行优化,缩小图像预测点与实际目标点的差值,从而提高神经网络预测的稳定度。

根据本发明的另一个方面,提供一种关键点检测方法,可以使用上述神经网络训练方法训练后的神经网络对视频进行关键点检测以输出表征图像特征的关键点。

根据本发明另一个方面,提供了一种计算设备,包括一个或多个处理器;存储器;一个或多个程序,这一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序用于执行神经网络训练方法和/或关键点检测方法的指令。

根据本发明另一个方面,提供一种存储一个或多个程序的计算机可读存储介质,这一个或多个程序包括指令,当指令被计算设备执行时,使得计算设备执行神经网络训练方法和/或关键点检测方法。

本方案提出一种基于光流对已初步训练好的神经网络进行优化训练的方法。其中复杂的光流计算只存在于网络训练阶段,在神经网络预测阶段,相比原网络不会有额外的计算成本,从而保证网络的运行速度不变,同时,神经网络因为利用光流技术大大提高了输出点的稳定度。

附图说明

为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。

图1示出了根据本发明的一个实施例的计算设备100的构造示意图;

图2示出了根据本发明的一个实施例的神经网络训练方法200的示意性流程图;

图3示出了根据本发明的一个实施例的神经网络训练方法300的示意性流程图;

图4示出了根据本发明的一个实施例的神经网络训练过程的示意图;

图5示出了根据本发明的一个实施例的神经网络训练结果的示意性图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

神经网络优化算法是通过改善训练方法来最小化损失函数。模型的参数可以用来计算预测值和目标值之间的偏差程度,基于这些参数就可以构成损失函数。在训练神经网络时,可以通过寻找最小值控制方差,更新模型参数,最终使模型收敛。本方案主要通过定义并优化损失函数,调整学习率对预训练的神经网络进行优化。

图1示出了根据本发明的一个实施例的计算设备100的构造示意图。在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。

取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μp)、微控制器(μc)、数字信息处理器(dsp)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。

取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个程序122以及程序数据124。在一些实施方式中,程序122可以布置为在操作系统上利用程序数据124进行操作。

计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个a/v端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个i/o端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。

网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。

计算设备100可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和web服务器等,也可以是小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(pda)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备100可被配置为执行本发明的神经网络训练方法200。其中,计算设备100的一个或多个程序122包括用于执行根据本发明的神经网络训练方法200的指令。

关键点检测也称为脸点定位或者对齐,是指给定脸部图像或视频,定位出面部的关键区域位置,包括眉毛、眼睛、鼻子、嘴巴、脸部轮廓等。如何获取高精度的关键点,一直以来都是计算机视觉、模式识别、图像处理等领域的热点研究问题。关键点检测方法应用最广泛,效果精度最高的是基于深度学习的方法,即利用神经网络进行关键点检测。

为了提高神经网络输出预测点的稳定性,可以对已初步训练好的神经网络进行优化,考虑到输入图像的抖动对神经网络输出稳定度的影响,本方案提供一种神经网络训练方法,能够利用光流估计的预测结果优化神经网络,提高神经网络预测的稳定度。

图2示出了根据本发明的一个实施例的神经网络训练方法200的示意性流程图。如图2所示,在步骤s210中,可以从视频数据中提取预定数量的连续帧图像。

由于光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息,因此,可以通过opencv、matlab等图像处理方法从视频中随机提取一定数量的连续帧图像。例如可以将avi格式的视频转换成一帧帧jpg格式的图像。

随后在步骤s220中,可以将步骤s210提取的连续帧图像输入神经网络,得到连续帧图像的第一图像预测点。

其中,神经网络可以对输入图像进行处理以输出表征图像特征的图像预测点。例如可以是任何一种预训练的卷积神经网络、递归编解码网络等,用于检测脸部关键点,如猫狗脸点检测、人脸对齐等。比如在人脸关键点检测当中,每个点在不同的人脸当中,可以代表一类的特征,具有一定的通用性。

随后在步骤s230中,可以针对步骤s220中得到的各第一图像预测点,对步骤s210中提取的连续帧图像进行光流计算,以得到对应的光流预测点。

根据本发明的一个实施例,可以首先基于光流法,计算连续帧图像中相邻帧之间各第一图像预测点的位移信息。然后基于位移信息,确定前一帧图像的各第一图像预测点在当前帧图像中的位置,以得到连续帧图像的光流预测点。

其中,光流是图像亮度的运动信息描述,在画面移动过程中,图像上每个像素的x,y位移量。比如第t帧的时候a点的位置是(x1,y1),那么在第t+1帧的时候再找到a点,假如它的位置是(x2,y2),就可以确定a点的运动:(u,v)=(x2,y2)-(x1,y1)。常用的算法有梯度约束-相关的对齐、lucas-kanade方法等。可以采用任意一种光流计算方法进行光流计算,在此不做限定。由于连续视频帧之间像素的位移较小,利用光流法可以较准确地获取光流预测点。

例如使用lucas-kanade方法进行光流计算,可以使用开源库opencv提供的lucas-kanade算法进行计算。假设光流在像素点的邻域是一个常数,然后使用最小二乘法对邻域中的所有像素点求解基本的光流方程。其中,最小二乘法可以使得这些求得的数据与实际数据之间误差的平方和为最小。本方案中可以针对连续帧图像中各图像预测点进行光流计算,而不必针对每一个像素点都进行光流计算。

随后在步骤s240中,可以基于步骤s220中得到的第一图像预测点和步骤s230中得到的光流预测点,计算第一损失值。

在深度学习算法中,经常使用损失值对神经网络进行调优。损失函数可以用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。通过对损失函数的定义、优化,可以使神经网络具有较好的预测效果。

根据本发明的一个实施例,可以通过下述公式计算第一损失值:

其中,registrationloss为第一损失值,lt,i指连续帧图像中第t帧第i个网络预测点的坐标,为对应的第t帧第i个光流预测点的坐标,k为点坐标数,t为视频帧数。可以利用上述计算得到的光流(位移量)将lt-1,i位移到t时刻,记为即光流预测点,通过第一损失值可以强化图像预测点和光流预测点的相似性,减小帧之间的抖动,使图像预测点落在正确的位置。

最后在步骤s250中,可以基于步骤s240中得到的第一损失值,调整神经网络的参数以得到训练后的神经网络。

神经网络训练得以实现一般经过前向传播计算损失值,根据损失值进行反向推到,进行相关参数的调整。可以基于第一损失值,调整神经网络的权重参数。可见,损失函数是参数调整的方向性指导。可以通过改变损失函数和调整学习率提高神经网络的收敛性。可以设置多阶段学习率,开始设置较高且尽量让其迭代到损失值足够的小。

为了进一步优化神经网络,使图像预测点接近真实标注点,在上述方法200中,还可以获取已标注关键点的图像,该组图像与连续帧图像具有一致的数量和格式。

其中,关键点是人工标注的真实特征点,是能够标识图像中目标特征的点。标注了关键点的图像与上述提取的连续帧图像一般具有相同的数量和格式,例如连续帧图像为16帧,jpg压缩格式,对应的输入图像也是jpg压缩格式,这样可以减少数据计算量。

可以将该组图像输入神经网络,获得图像的第二图像预测点。随后可以基于图像的关键点和第二图像预测点,计算第二损失值。

根据本发明的一个实施例,可以通过下述公式计算第二损失值:

其中,detectionloss为第二损失值,li指所述图像的第i个网络预测点的坐标,为对应的第i个关键点的坐标,k为点坐标数。第二损失函数为平方和损失函数,即最小二乘法,目的是最小化这个目标函数值。

最后可以基于第二损失值,调整神经网络的参数以优化神经网络。

例如,可以基于第二损失值,进一步调整神经网络的参数值。在训练过程中,学习率是一个重要的超参数,它可以控制基于损失梯度调整神经网络权值的速度。学习率越小,沿着损失梯度下降的速度越慢。一般来说,学习率越大,神经网络学习速度越快。如果学习率太小,网络很可能会陷入局部最优;但是如果太大,超过了极值,损失就会停止下降,在某一位置反复震荡。如果先设置一个较低的学习率,然后随着训练迭代逐渐增大这个值,最终可以获得一个较好的学习率。在实践中,最理想的学习率应该是使损失函数曲线到达最低点的那个值。定期提高学习率将有助于模型更好地收敛。

可以利用以上两个损失函数对神经网络进行优化,一方面可以使图像预测点接近真实标注点,另一方面由于标注也存在误差。这种误差表现在视频连续帧中可见的小范围抖动,通过第一损失函数可以借助光流,让图像预测点落在正确的位置。光流的预测受光照变化和运动幅度影响,这种光流估计误差可以由第二损失函数加以矫正。图3示出了根据本发明的一个实施例的神经网络训练方法200的示意性流程图。如图3所示,在步骤s310中,可以从视频数据中提取预定数量的连续帧图像,并获取具有标注了关键点的图像,该组图像与连续帧图像具有一致的数量和格式。由于对于视频片段并没有真实的目标点标注值,可以将图像数据和视频数据共同作为神经网络的训练集。

在步骤s320中可以将连续帧图像和已标注关键点的图像输入神经网络,得到连续帧图像的第一图像预测点和所获取图像的第二图像预测点。

随后在步骤s330中,针对连续帧图像的各第一图像预测点,对连续帧图像进行光流计算,以得到连续帧图像的光流预测点。

光流法可以通过当前帧和下一帧灰度比较,估计当前帧特征点在下一帧的位置。可以在训练神经网络的初始阶段,对连续帧图像进行光流计算,通过光流计算可以对视频进行关键点检测和跟踪。针对图像预测点进行光流计算可以减少光流计算的计算量,且光流计算在神经网络的训练阶段,不会影响神经网络在实际应用的效率。

在步骤s340中,可以基于第一图像预测点和光流预测点,计算第一损失值,在步骤s350中,可以基于标注的关键点和第二图像预测点,计算第二损失值。

最后在步骤s360中,可以基于第一损失值和第二损失值,调整神经网络的参数以便优化神经网络。

在训练过程中,一般可以根据训练轮数设置动态变化的学习率。刚开始训练时学习率以0.01~0.001为宜。按照一定间隔,如[0.00001,0.001]选取100个值,观察训练集损失值(基于连续帧图像的第一损失值)和验证集损失值(基于标注点图像的第二损失值)选取最优学习率。

图4示出了根据本发明的一个实施例的神经网络训练过程的示意图。如图4所示,左边为训练数据,其中左上为标注了关键点的图像,左下为未标注目标点的视频连续帧图像。右边为神经网络训练过程,将两种数据输入神经网络进行面部特征点预测。对连续帧图像进行光流计算得到光流预测点,然后再通过由图像预测点和光流预测点构成的损失函数对神经网络进行训练优化。

根据本发明的一个实施例,可以使用上述神经网络训练方法200训练后的神经网络对视频进行关键点检测以输出表征图像特征的关键点。计算设备100还可被配置为执行本发明的关键点检测方法。其中,计算设备100的一个或多个程序122包括用于执行根据本发明的关键点检测方法的指令。

图5示出了根据本发明的一个实施例的神经网络训练结果的示意图。如图5所示,左图为未经过优化训练的训练结果,右图为经过了本方案训练优化的训练结果。结果表明预测点和真实标注点之间的误差缩小了,通过本方案的调优训练,神经网络预测点的稳定度和精度有所提高。

根据本发明的方案,通过优化已训练网络提高了神经网络输出预测点的稳定度,并能够学习视频中帧与帧之间的连贯性。本方法中光流计算只在网络优化训练阶段,在预测阶段没有额外的计算成本,不会影响原有网络的运行速度。同时大幅度提高输出点的稳定度,从源头解决点抖动的问题,在视频中进行实时美化的应用场景中可以精确的捕捉图像关键点,从而提升了用户体验。

应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、cd-rom、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。

在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明所述的方法。

以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。

此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。

如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。

尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1