神经网络的训练方法和装置转让专利

申请号 : CN202110838318.7

文献号 : CN115700598A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张健钟钊陈方剑

申请人 : 华为技术有限公司

摘要 :

本申请提供一种神经网络的训练方法和装置。本申请神经网络的训练方法,包括:云端服务器接收来自终端设备的训练数据和第一神经网络,第一神经网络为像素级任务的神经网络;根据提取自第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对第二神经网络进行训练以得到经训练的第二神经网络,第二神经网络是基于第一神经网络得到的,第二神经网络的运算精度低于第一神经网络的运算精度,第一神经网络和第二神经网络执行相同的像素级任务;向终端设备发送经训练的第二神经网络。本申请可以降低终端设备的功耗,并有效解决因运算精度低带来的伪纹理现象,提升像素级任务的神经网络的成像质量。

权利要求 :

1.一种神经网络的训练方法,其特征在于,包括:

云端服务器接收来自终端设备的训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;

所述云端服务器根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度;

所述云端服务器向所述终端设备发送所述经训练的第二神经网络。

2.根据权利要求1所述的方法,其特征在于,所述云端服务器根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络之前,还包括:所述云端服务器对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;

所述云端服务器对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。

3.根据权利要求2所述的方法,其特征在于,所述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。

4.根据权利要求1‑3中任一项所述的方法,其特征在于,所述云端服务器根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,包括:所述云端服务器根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;

所述云端服务器根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。

5.根据权利要求4所述的方法,其特征在于,所述云端服务器根据所述第一一阶信息和所述第二一阶信息获取损失值,包括:所述云端服务器对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;

所述云端服务器对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;

所述云端服务器根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。

6.根据权利要求5所述的方法,其特征在于,所述云端服务器对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息,包括:所述云端服务器将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;

所述云端服务器对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息,包括:所述云端服务器将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。

7.一种云端服务器,其特征在于,包括:处理器、收发器和存储器;其中,所述收发器,用于接收来自终端设备的训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;

所述存储器,用于存储一个或多个程序,以及所述训练数据和所述第一神经网络;

当所述一个或多个程序被所述处理器执行,使得所述处理器实现:

根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度;

所述收发器,还用于向所述终端设备发送所述经训练的第二神经网络。

8.根据权利要求7所述的云端服务器,其特征在于,所述处理器,还用于对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。

9.根据权利要求8所述的云端服务器,其特征在于,所述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。

10.根据权利要求7‑9中任一项所述的云端服务器,其特征在于,所述处理器,具体用于根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。

11.根据权利要求10所述的云端服务器,其特征在于,所述处理器,具体用于对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。

12.根据权利要求11所述的云端服务器,其特征在于,所述处理器,具体用于将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。

13.一种神经网络的训练方法,其特征在于,包括:

终端设备获取训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;

所述终端设备根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度。

14.根据权利要求13所述的方法,其特征在于,所述终端设备根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络之前,还包括:所述终端设备对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;

所述终端设备对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。

15.根据权利要求14所述的方法,其特征在于,所述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。

16.根据权利要求13‑15中任一项所述的方法,其特征在于,所述终端设备根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,包括:所述终端设备根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;

所述终端设备根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。

17.根据权利要求16所述的方法,其特征在于,所述终端设备根据所述第一一阶信息和所述第二一阶信息获取损失值,包括:所述终端设备对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;

所述终端设备对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;

所述终端设备根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。

18.根据权利要求17所述的方法,其特征在于,所述终端设备对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息,包括:所述终端设备将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;

所述终端设备对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息,包括:所述终端设备将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。

19.一种终端设备,其特征在于,包括:处理器和存储器;其中,

所述处理器,用于获取训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;

所述存储器,用于存储一个或多个程序,以及所述训练数据和所述第一神经网络;

当所述一个或多个程序被所述处理器执行,使得所述处理器实现:

根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度。

20.根据权利要求19所述的终端设备,其特征在于,所述处理器,还用于对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。

21.根据权利要求20所述的终端设备,其特征在于,所述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。

22.根据权利要求19‑21中任一项所述的终端设备,其特征在于,所述处理器,具体用于根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。

23.根据权利要求22所述的终端设备,其特征在于,所述处理器,具体用于对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。

24.根据权利要求23所述的终端设备,其特征在于,所述处理器,具体用于将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。

25.一种神经网络的推理方法,其特征在于,包括:

获取待推理的第三数据;

利用经训练的第二神经网络对所述第三数据进行推理,得到推理结果;

其中,所述经训练的第二神经网络是根据提取自第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度。

26.一种终端设备,其特征在于,包括:处理器和存储器;其中,

所述处理器,用于获取待推理的第三数据;

所述存储器,用于存储一个或多个程序,以及所述第三数据和经训练的第二神经网络;

当所述一个或多个程序被所述处理器执行,使得所述处理器实现:

利用所述经训练的第二神经网络对所述第三数据进行推理,得到推理结果;

其中,所述经训练的第二神经网络是根据提取自第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度。

27.一种计算机可读存储介质,其特征在于,包括计算机程序指令,所述计算机程序指令在计算机上被执行时,使得所述计算机执行权利要求1‑6、13‑18、25中任一项所述的方法。

28.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序指令,当所述计算机程序指令被计算机执行时,用于执行权利要求1‑6、13‑18、25中任一项所述的方法。

说明书 :

神经网络的训练方法和装置

技术领域

[0001] 本申请涉及基于人工智能(artificial intelligence,AI)的图像处理技术领域,特别涉及一种神经网络的训练方法和装置。

背景技术

[0002] 随着深度神经网络(deep neural network,DNN)技术的进步,DNN可以应用于像素级任务的处理当中,由此催生了一系列像素级DNN。例如,利用像素级DNN增强、超分辨率、融合、去噪、去马赛克、去摩尔纹、纹理增强等。
[0003] 像素级DNN有一个特点是计算量大,当像素级DNN应用于端侧设备(例如,手机、监控摄像头等)时,面临着计算量大、时延长、功耗高的问题。为了解决上述问题,量化是一个常用的技术手段。量化的目标是把像素级DNN的计算表示从高精度(例如浮点型的32bit)降低到低精度(例如整型的8bit),而低精度的计算相较于高精度的计算,通常具有计算量小、速度快、功耗低的特点,所以能够实现减小计算量、降低时延和功耗的特点。
[0004] 但是,低精度的DNN的训练会增加终端设备的功耗,而且随着计算表示精度的降低,量化后的低精度的DNN的输出图像会出现伪纹理的现象,如大量的格子、毛刺等伪纹理,影响成像效果和在端侧的应用效果。

发明内容

[0005] 本申请提供一种神经网络的训练方法和装置,以降低终端设备的功耗,并有效解决因运算精度低带来的伪纹理现象,提升像素级任务的神经网络的成像质量。
[0006] 第一方面,本申请提供一种神经网络的训练方法,包括:云端服务器接收来自终端设备的训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度;向所述终端设备发送所述经训练的第二神经网络。
[0007] 本申请实施例,云端服务器向终端设备提供神经网络的训练服务,云端服务器可以应终端设备的请求、基于一阶信息训练得到经训练的第二神经网络,该经训练的第二神经网络与运算精度较高的第一神经网络相比,既可以完成相同的像素级任务,又可以实现低精度运算,且可以消除一般低精度神经网络因运算精度低而容易出现的伪纹理现象。而由云端服务器实现神经网络的训练过程,一方面云端服务器强大的算力可以满足大数据量的神经网络的训练需求,另一方面终端设备不需要还行训练过程可以降低功耗。
[0008] 第一神经网络为像素级任务的神经网络,可以是基于浮点表示的运算的网络,例如浮点型的32bit。第一神经网络可以包括多层结构,例如,UNet网络结构。
[0009] 第二神经网络可以完成与第一神经网络相同的像素级任务。第二神经网络可以是基于第一神经网络量化得到的神经网络,例如,在第一神经网络中插入量化器,从而将第一神经网络的计算表示从浮点型(例如32bit)转为整型(例如8bit)以得到第二神经网络。相较于第一神经网络,第二神经网络的运算精度低于第一神经网络的运算精度,其计算表示占用的比特数明显变少,可以减少运算量。
[0010] 经训练的第二神经网络是基于对第二神经网络训练得到的,因此经训练的第二神经网络和第二神经网络可以完成相同的像素级任务,进而与第一神经网络完成相同的像素级任务。而第二神经网络(在第一神经网络中插入量化器得到)的运算精度低于第一神经网络的运算精度,因此经训练的第二神经网络的运算精度也低于第一神经网络的运算精度。在训练第二神经网络的过程中,因为希望经训练的第二神经网络的输出尽可能的接近真正想要预测的值(即第一神经网络的预测值),因此相较于第二神经网络,经训练的第二神经网络执行像素级任务的效果更接近于第一神经网络,可以有效解决因运算精度低带来的伪纹理现象。由此可见,经训练的第二神经网络,既可以完成与第一神经网络相同的像素级任务,又可以实现低精度运算,且可以消除第二神经网络因为在第一神经网络中插入量化器实现运算精度低但又容易出现的伪纹理现象。
[0011] 应当理解的是,云端服务器接收来自终端设备的第一神经网络,在一种实现方式下,可以是接收第一神经网络的网络结构信息(例如层数,通道(channel)数等);在另一种实现方式下,可以是接收第一神经网络的网络结构信息(例如层数,channel数等)和第一神经网络的模型系数。
[0012] 应当理解的是,云端服务器向终端设备发送经训练的第二神经网络,在一种实现方式下,可以是发送经训练的第二神经网络的网络结构信息(例如层数,通道(channel)数等);在另一种实现方式下,可以是发送经训练的第二神经网络的网络结构信息(例如层数, channel数等)和经训练的第二神经网络的模型系数。
[0013] 第一一阶信息用于表示经由第一神经网络的至少一层处理得到的第一数据的变化程度。第一数据可以是第一神经网络的输出数据,例如,经第一神经网络处理的输出图像的数据;第一数据也可以是第一神经网络的中间层输出的数据,例如,第一神经网络的隐含层包括三层结构,将其中的第二层输出的数据作为第一数据,该第一数据不是第一神经网络的输出数据,而是经隐含层中的第二层处理得到的特征图的数据。应当理解的是,第一数据既可以是第一神经网络最终输出的数据,例如输出图像的数据,也可以是第一神经网络的中间层输出的数据,例如特征图的数据,本申请实施例对第一数据具体是第一神经网络的哪一层输出的数据不做具体限定。
[0014] 第二一阶信息用于表示经由第二神经网络的至少一层处理得到的第二数据的变化程度。第二数据可以是第二神经网络的输出数据,例如,经第二神经网络处理的输出图像的数据;第二数据也可以是第二神经网络的中间层输出的数据,例如,第二神经网络的隐含层包括五层结构,将其中的第四层输出的数据作为第二数据,该第二数据不是第二神经网络的输出数据,而是经隐含层中的第四层处理得到的特征图的数据。应当理解的是,第二数据既可以是第二神经网络最终输出的数据,例如输出图像的数据,也可以是第二神经网络的中间层输出的数据,例如特征图的数据,本申请实施例对第二数据具体是第二神经网络的哪一层输出的数据不做具体限定。
[0015] 在训练第二神经网络的过程中,因为希望经训练的第二神经网络的输出尽可能的接近真正想要预测的值(即第一神经网络的预测值),所以可以通过比较训练中的第二神经网络的预测值和第一神经网络的预测值(即目标值),再根据两者之间的差异情况来更新训练中的第二神经网络中的每一层的权重向量,例如,如果训练中的第二神经网络的预测值高了,就调整权重向量让其预测低一些,不断的调整,直到训练中的第二神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值,此时得到即为经训练的第二神经网络。该过程的调整依据是第一一阶信息和第二一阶信息获取损失值。
[0016] 示例性的,再计算得到上述损失值后,先利用损失值对训练中的第二神经网络的输出进行求导,得到损失值的导数;然后基于求导的链式法则,根据损失值的导数对训练中的第二神经网络的最后一层权重进行求导,这样可以将损失值的导数传递到训练中的第二神经网络的最后一层;再根据最后一层权重的导数,对训练中的第二神经网络的倒数第二层权重进行求导,可以将损失值的导数传递到训练中的第二神经网络的倒数第二层;以此类推,直到训练中的第二神经网络的每一层参数更新完成。多次执行上述训练过程,当损失值不再降低或者训练迭代次数到达预设次数时,训练结束,得到经训练的第二神经网络。
[0017] 在一种可能的实现方式中,所述根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络之前,还包括:对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。
[0018] 上述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。
[0019] 空间滤波器可以包括拉普拉斯算子、拉普拉斯高斯算子或者索贝尔算子中的一个或多个算子。即终端设备在基于第一数据提取第一一阶信息时,可以只采用前述算子的其中之一进行提取,也可以采用前述多个算子的组合进行提取,而多个算子的组合方式不做具体限定。
[0020] 例如,可以采用以下公式计算:
[0021]
[0022] 其中, 表示卷积运算,Gt表示第一一阶信息,Ot表示第一数据,X表示空间滤波器。 X可以是拉普拉斯算子、拉普拉斯高斯算子或者索贝尔算子;X也可以是先拉普拉斯算子,再索贝尔算子;X还可以是先拉普拉斯算子、再拉普拉斯高斯算子,然后索贝尔算子。本申请实施例对X的具体实现形式不做限定。
[0023] 例如,可以采用以下公式计算:
[0024]
[0025] 其中, 表示卷积运算,Gs表示第二一阶信息,Os表示第二数据,X表示空间滤波器。X可以是拉普拉斯算子、拉普拉斯高斯算子或者索贝尔算子;X也可以是先拉普拉斯算子,再索贝尔算子;X还可以是先拉普拉斯算子、再拉普拉斯高斯算子,然后索贝尔算子。本申请实施例对X的具体实现形式不做限定。应当理解的,为了第一一阶信息和第二一阶信息具有可比性,二者采用的空间滤波器优选采用相同的空间滤波器,例如对第一数据采用拉普拉斯算子提取第一一阶信息,那么对第二数据也采用拉普拉斯算子提取第二一阶信息。
[0026] 在一种可能的实现方式中,所述根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,包括:根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。
[0027] 损失值用于表示第一一阶信息和第二一阶信息的相似度(或者差异)。可以采用损失函数获取损失值,该损失函数用于度量第一一阶信息和第二一阶信息的相似度,损失函数例如可以是基于蒸馏的损失函数(本申请中称其为蒸馏损失函数),蒸馏是指神经网络中的暗知识提取。在训练神经网络(neural network,NN)的过程中,因为希望NN的输出尽可能的接近真正想要预测的值,所以可以通过比较当前NN的预测值和真正想要的目标值,再根据两者之间的差异情况来更新NN中的每一层的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为NN中的各层预先配置参数),例如,如果NN的预测值高了,就调整权重向量让其预测低一些,不断的调整,直到NN能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么NN的训练就变成了尽可能缩小这个loss的过程。
[0028] 可选的,蒸馏损失函数可以包括L1损失函数、L2损失函数或者余弦损失函数。应当理解的,为了得到第一一阶信息和第二一阶信息之间的差异,可以采用任意一种损失函数计算第一一阶信息和第二一阶信息之间的损失值,对此不做具体限定。
[0029] 在一种可能的实现方式中,所述根据所述第一一阶信息和所述第二一阶信息获取损失值,包括:对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。
[0030] 上述对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息,包括:将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;上述对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息,包括:将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。
[0031] 由于一阶信息(包括第一一阶信息和第二一阶信息)中较大的元素值通常是物体的边缘,因此为了避免边缘部分对网络训练的影响,在得到一阶信息后,可以通过一个预设阈值对一阶信息进行过滤以得到过滤一阶信息。例如,预设阈值t=0.118,对一阶信息的每个元素值进行过滤,小于或等于该预设阈值的元素值保留,而大于预设阈值的元素值置0。
[0032] 第二方面,本申请提供云端服务器,包括:处理器、收发器和存储器;其中,所述收发器,用于接收来自终端设备的训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;所述存储器,用于存储一个或多个程序,以及所述训练数据和所述第一神经网络;当所述一个或多个程序被所述处理器执行,使得所述处理器实现:根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度;所述收发器,还用于向所述终端设备发送所述经训练的第二神经网络。
[0033] 在一种可能的实现方式中,所述处理器,还用于对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。
[0034] 在一种可能的实现方式中,所述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。
[0035] 在一种可能的实现方式中,所述处理器,具体用于根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。
[0036] 在一种可能的实现方式中,所述处理器,具体用于对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。
[0037] 在一种可能的实现方式中,所述处理器,具体用于将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。
[0038] 第三方面,本申请提供一种神经网络的训练方法,包括:终端设备获取训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度。
[0039] 本申请实施例,终端设备基于一阶信息训练得到经训练的第二神经网络,该经训练的第二神经网络与运算精度较高的第一神经网络相比,既可以完成相同的像素级任务,又可以实现低精度运算,且可以消除一般低精度神经网络因运算精度低而容易出现的伪纹理现象。
[0040] 在一种可能的实现方式中,所述根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络之前,还包括:对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。
[0041] 在一种可能的实现方式中,所述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。
[0042] 在一种可能的实现方式中,所述根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,包括:根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。
[0043] 在一种可能的实现方式中,所述根据所述第一一阶信息和所述第二一阶信息获取损失值,包括:对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。
[0044] 在一种可能的实现方式中,所述对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息,包括:将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;所述对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息,包括:将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。
[0045] 第四方面,本申请提供一种终端设备,包括:处理器和存储器;其中,所述处理器,用于获取训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;所述存储器,用于存储一个或多个程序,以及所述训练数据和所述第一神经网络;当所述一个或多个程序被所述处理器执行,使得所述处理器实现:根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度。
[0046] 在一种可能的实现方式中,所述处理器,还用于对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。
[0047] 在一种可能的实现方式中,所述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。
[0048] 在一种可能的实现方式中,所述处理器,具体用于根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。
[0049] 在一种可能的实现方式中,所述处理器,具体用于对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。
[0050] 在一种可能的实现方式中,所述处理器,具体用于将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。
[0051] 第五方面,本申请提供一种神经网络的推理方法,包括:获取待推理的第三数据;利用经训练的第二神经网络对所述第三数据进行推理,得到推理结果;其中,所述经训练的第二神经网络是根据提取自第一神经网络的第一一阶信息和提取自第二神经网络的第二
一阶信息对所述第二神经网络进行训练以得到,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度。
[0052] 第六方面,本申请提供一种终端设备,包括:处理器和存储器;其中,所述处理器,用于获取待推理的第三数据;所述存储器,用于存储一个或多个程序,以及所述第三数据和经训练的第二神经网络;当所述一个或多个程序被所述处理器执行,使得所述处理器实现:利用所述经训练的第二神经网络对所述第三数据进行推理,得到推理结果;其中,所述经训练的第二神经网络是根据提取自第一神经网络的第一一阶信息和提取自第二神经网络的
第二一阶信息对所述第二神经网络进行训练以得到,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度。
[0053] 第七方面,本申请提供一种计算机可读存储介质,包括计算机程序指令,所述计算机程序指令在计算机上被执行时,使得所述计算机执行上述第一或三方面中任一项所述的方法。
[0054] 第八方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机程序指令,当所述计算机程序指令被计算机执行时,用于执行上述第一或三方面中任一项所述的方法。

附图说明

[0055] 图1是本申请实施例的神经网络的训练系统100的一个示例性的框图;
[0056] 图2为本申请实施例的云端服务器200的一个示例性的框图;
[0057] 图3为本申请实施例的终端设备300的一个示例性的框图;
[0058] 图4为本申请实施例的神经网络的训练方法的过程400的流程图;
[0059] 图5a‑图5e为本申请实施例的DNN的几个示例性的结构图;
[0060] 图6为本申请实施例的计算损失值的一个示例性的流程图;
[0061] 图7a‑图7d为本申请实施例的云端服务器提供的训练服务的示意图;
[0062] 图8a和图8b为本申请实施例的一阶信息的一个示例性的示意图;
[0063] 图9a和图9b为本申请实施例的图像处理效果的一个示例性的示意图;
[0064] 图10a和图10b为本申请实施例的图像处理效果的另一个示例性的示意图;
[0065] 图11a和图11b为本申请实施例的图像处理效果的一个示例性的示意图;
[0066] 图12a和图12b为本申请实施例的图像处理效果的另一个示例性的示意图;
[0067] 图13为本申请实施例的神经网络的训练方法的过程1300的流程图。

具体实施方式

[0068] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0069] 本申请的说明书实施例和权利要求书及附图中的术语“第一”、“第二”等仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0070] 应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/ 或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0071] 本申请实施例涉及到的术语说明:
[0072] 图像
[0073] 图像为或可以视为具有强度值的像素点组成的二维阵列或矩阵。阵列中的像素点也可以称为像素(pixel或pel)(图像元素的简称)。阵列或图像在水平方向和垂直方向(或轴线)上的像素点数量决定了图像的大小和/或分辨率。为了表示颜色,通常采用三个颜色分量,即图像可以表示为或包括三个像素点阵列。在RBG格式或颜色空间中,图像包括对应的红色、绿色和蓝色像素点阵列。但是,在视频编码中,每个像素通常以亮度/色度格式或颜色空间表示,例如YCbCr,包括Y指示的亮度分量(有时也用L表示)以及Cb、 Cr表示的两个色度分量。亮度(luma)分量Y表示亮度或灰度水平强度(例如,在灰度等级图像中两者相同),而两个色度(chrominance,简写为chroma)分量Cb和Cr表示色度或颜色信息分量。相应地,YCbCr格式的图像包括亮度像素点值(Y)的亮度像素点阵列和色度值(Cb和Cr)的两个色度像素点阵列。RGB格式的图像可以转换或变换为 YCbCr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是黑白的,则该图像可以只包括亮度像素点阵列。相应地,图像可以为例如单色格式的亮度像素点阵列或4:2:0、 4:2:2和4:4:4彩色格式的亮度像素点阵列和两个相应的色度像素点阵列。
[0074] 本申请实施例中,图像可以是指终端设备的摄像头采集到的视频图像,也可以是指监控摄像头拍摄到的监控视频图像,还可以是通过其他方式得到的图像,对此不做具体限定。
[0075] 深度神经网络
[0076] 深度神经网络(deep neural network,DNN),也称多层神经网络,可以理解为具有很多层隐含层的神经网络,这里的“很多”并没有特别的度量标准。从DNN按不同层的位置划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式: 其中,是输入向量,是输出向量,是偏移向量,W是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量 经过如此简单的操作得到输出向量 由于 DNN层数多,则系数W
和偏移向量 的数量也就很多了。这些参数在DNN中的定义如下所述:以系数W为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第 2个神经元的线性系数定义为
上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
总结就是:第L‑1层的第k个神经元到第L层的第j个神经元的系数定义为 需要注意的
是,输入层是没有W参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
[0077] 本申请实施例中,神经网络可以为DNN。DNN可以是用于实现某一种或多种图像处理功能的神经网络,该图像处理功能可以包括图像美化,例如,图像色彩增强、图像边缘优化、图像中内容增强等;也可以包括图像超分,例如,图像的像素提升,从800万像素 (3264×2488)超分处理为1400万像素(4536×3024);还可以包括图像融合,例如,将红外监控图像和彩色监控图像融合得到更高清的监控视频图像。除前述功能外,还可以包括其它图像处理功能,该一种或多种图像处理功能的共同特征是均为像素级任务,但对具体的功能不做具体限定。将图像输入DNN可以实现对图像的上述任意一种或多种处理(取决于DNN被训练出的功能),DNN输出处理后的图像,而DNN的中间层的输出可以被称作特征图。
[0078] 神经网络模型
[0079] 由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,是一个高度复杂的非线性动力学习系统。神经网络模型具有大规模并行、分布式存储和处理、自组织、自适应和自学能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。
[0080] 神经网络模型包括卷积神经网络模型,卷积神经网络模型是一类包含卷积计算且具有深度结构的前馈神经网络模型,是深度学习的代表算法之一。本申请实施例中的神经网络模型可以为卷积神经网络模型。
[0081] 其中,卷积神经网络模型包括卷积层、池化层、全连接层和非线性激活层。卷积层是卷积神经网络模型的核心,其参数由一组可学习的内核(kernels)组成。在前馈期间,每个卷积核对输入进行卷积,来提取更高层次的特征。池化层又称下采样,它的作用是减小数据处理量同时保留有用信息。通常池化层是每四个邻域像素选择最大值变为一个像素。全连接层的输入和输出均为一维向量。本质上全连接操作就是矩阵的乘法操作。输入为一个向量,矩阵为神经网络模型中存储的参数,输出便为上述向量与矩阵的乘积,同样为一个向量。非线性激活层包括ReLU(修正线性单元)、Sigmoid、Tanh(双曲正切函数)等,都是业界公认的常用非线性激活函数,均为元素级操作,并不会改变特征的大小。
[0082] 神经网络模型的参数
[0083] 任何神经网络模型中都包含大量的可学习参数,这些参数称为神经网络模型的参数。
[0084] 神经网络模型的结构
[0085] 结构是神经网络模型的重要属性之一,影响着网络模型的精度、效率。比较有代表性的结构有VGG、ResNets、MobileNet等。
[0086] 神经网络的训练
[0087] 神经网络模型中包含大量的可学习参数,神经网络模型的训练是指基于数据集与训练算法确定可学习参数值的过程。
[0088] 神经网络的推理
[0089] 在神经网络模型的训练结束后,我们会将其应用于新数据,以得到新数据的预测结果 (比如新数据的类别等)。这个过程称为神经网络模型的推理。在本申请实施例中,神经网络模型的推理包括像素级任务,例如,增强、超分辨率、融合等,又例如,去噪、去马赛克、去摩尔纹、纹理增强等。
[0090] 对于任何一种推理场景,可以通过当前神经网络模型对待推理的数据进行推理处理,以得到当前神经网络模型输出的当前推理结果;其中,当前推理结果因推理场景不同而不同。
[0091] 量化
[0092] 量化过程可减少与部分或全部数据有关的位深度。例如,可在量化期间将n位数据向下舍入到m位数据,其中n大于m。可通过调整量化参数(quantization parameter,QP) 修改量化程度。例如,对于标量量化,可以应用不同程度的比例来实现较细或较粗的量化。较小量化步长对应较细量化,而较大量化步长对应较粗量化。可通过QP指示合适的量化步长。例如,量化参数可以为合适的量化步长的预定义集合的索引。例如,较小的量化参数可对应精细量化(较小量化步长),较大的量化参数可对应粗糙量化(较大量化步长),反之亦然。量化可以包括除以量化步长,而反量化执行的对应或逆解量化可以包括乘以量化步长。量化是有损操作,其中量化步长越大,损耗越大。
[0093] 本申请实施例中,神经网络(neural network,NN)的量化可以包括把NN的计算表示从高比特(例如浮点型的32bit)降低到低比特(例如整型的8bit)。计算表示可以包括NN 内部的部分或全部数据的表示方式,数据的大小和类型决定了该数据占用的比特数,通常经量化处理的量化数据相较于原数据,占用的比特数会减少。因此量化后的NN的计算量小、速度快且功耗低。
[0094] 损失函数
[0095] 在训练NN的过程中,因为希望NN的输出尽可能的接近真正想要预测的值,所以可以通过比较当前NN的预测值和真正想要的目标值,再根据两者之间的差异情况来更新 NN中的每一层的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为NN 中的各层预先配置参数),例如,如果DNN的预测值高了,就调整权重向量让其预测低一些,不断的调整,直到NN能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数 (loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么DNN的训练就变成了尽可能缩小这个loss的过程。
[0096] 反向传播算法
[0097] NN可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的模型中参数的大小,使得模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出信号会产生误差损失,通过反向传播误差损失信息来更新初始的模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的模型的参数,例如权重矩阵。
[0098] 图1是本申请实施例的神经网络的训练系统100的一个示例性的框图,如图1所示,神经网络的训练系统100包括多个终端设备300和服务器(例如云端服务器)200。该多个终端设备300中的每个终端设备300与服务器200通过无线或有线的方式连接,以进行通信。
[0099] 其中,关于图1所示的系统,本申请实施例可以采用下文的多种实现方式:
[0100] 第一种实现方式,服务器200对m个待训练神经网络模型进行训练,以得到已训练的m个神经网络模型。之后,服务器200将已训练的m个神经网络模型部署在该多个终端设备300中的每个终端设备300上。对于该多个终端设备300中的每个终端设备300,该终端设备
300获取目标图像,并基于已训练的m个神经网络模型,对目标图像实现像素级任务的处理。
[0101] 其中,该终端设备300获取的目标图像可以为终端设备300上存储的图像,也可以为终端设备300对外界环境进行拍摄以得到的图像,当然,还可以通过其他途径来获取,本申请实施例对此不做限定。例如,终端设备可以通过自带的摄像头对外界环境进行拍摄,以得到目标图像。例如得到三张图像。之后,对于三张图像中的每张图像,可以基于该m 个神经网络模型,对每张图像实现像素级任务的处理。
[0102] 第二种实现方式,服务器200对m个待训练神经网络模型进行训练,以得到已训练的m个神经网络模型。对于该多个终端设备300中的每个终端设备300,该终端设备300 获取目标图像,并将目标图像发送给服务器200。服务器200接收终端设备300发送的目标图像,并基于该m个神经网络模型,对目标图像实现像素级任务的处理。
[0103] 当然,除了上述两种实现方式之外,还可以按照其他的实现方式来实现像素级任务的处理。例如,终端设备300对待训练神经网络模型进行训练,以得到已训练的神经网络模型。之后,该终端设备300获取目标图像,并基于该已训练的神经网络模型,对目标图像实现像素级任务的处理。
[0104] 需要说明的是,上述的终端设备300可以是任何一种可与用户通过触摸板、触摸屏、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如,手机、个人数字助手(personal digital assistant,PDA)、可穿戴设备、平板电脑、智能车机、智能电视等。上述的服务器200可以为单台服务器,也可以为由多台服务器组成的服务器集群。
[0105] 上述像素级任务,例如包括增强、超分辨率、融合等,又例如包括去噪、去马赛克、去摩尔纹、纹理增强等。
[0106] 应当理解,图1所示的神经网络的训练系统100仅为本申请实施例提供的一个示例,神经网络的训练系统100中还可以包括比图示更多的服务器200和/或终端设备300,本申请实施例对此不做具体限定。
[0107] 图2为本申请实施例的云端服务器200的一个示例性的框图,如图2所示,云端服务器200可以是图1所示实施例中的云端服务器200。云端服务器200包括处理器201、存储器202(一个或多个计算机可读存储介质)和收发器203。这些部件之间可以通过一个或多个总线204通信。
[0108] 处理器201可以是一个或多个CPU,在处理器201是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
[0109] 存储器202可以和处理器201通过总线204连接,也可以和处理器201耦合在一起,用于存储各种程序代码和/或多组指令、以及训练数据和全精度的深度神经网络。具体实现中,存储器202包括但不限于是随机存储记忆体(Random Access Memory,RAM)、只读存储器(Read‑Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、或便携式只读存储器(Compact Disc Read‑Only Memory, CD‑ROM)等。
[0110] 收发器203主要集成了接收器和发射器,其中接收器用于接收终端设备300发送的训练数据和第一神经网络,该第一神经网络为像素级任务的深度神经网络,发射器用于向终端设备300发送经训练的第二神经网络。
[0111] 应当理解,图2所示的云端服务器200仅为本申请实施例提供的一个示例,云端服务器200还可以具有比图示更多的部件,本申请实施例对此不做具体限定。
[0112] 本申请实施例中,处理器201通过运行存储在存储器202中的程序代码,从而执行云端服务器200的各种功能应用和数据处理,该处理过程将在下文中描述。
[0113] 本申请实施例中使用的术语“耦合”意指直接连接或者通过一个或多个居间组件或电路连接。
[0114] 图3为本申请实施例的终端设备300的一个示例性的框图,如图3所示,终端设备 300可以包括处理器310,外部存储器接口320,内部存储器321,通用串行总线(universal serial bus,USB)接口330,充电管理模块340,电源管理模块341,电池342,天线1,天线2,移动通信模块350,无线通信模块360,音频模块370,扬声器370A,受话器370B,麦克风370C,耳机接口370D,传感器模块380,按键390,马达391,指示器392,摄像头393,显示屏394,以及用户标识模块(subscriber identification module,SIM)卡接口395 等。其中传感器模块
380可以包括压力传感器380A,陀螺仪传感器380B,气压传感器 380C,磁传感器380D,加速度传感器380E,距离传感器380F,接近光传感器380G,指纹传感器380H,温度传感器380J,触摸传感器380K,环境光传感器380L,骨传导传感器380M等。
[0115] 可以理解的是,本发明实施例示意的结构并不构成对终端设备300的具体限定。在本申请另一些实施例中,终端设备300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0116] 处理器310可以包括一个或多个处理单元,例如:处理器310可以包括应用处理器 (application processor,AP),调制解调处理器,图形处理器(graphics processing unit, GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器
(neural‑ network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0117] 控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0118] 处理器310中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器310 中的存储器为高速缓冲存储器。该存储器可以保存处理器310刚用过或循环使用的指令或数据。如果处理器310需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器310的等待时间,因而提高了系统的效率。
[0119] 在一些实施例中,处理器310可以包括一个或多个接口。接口可以包括集成电路(inter‑ integrated circuit,I2C)接口,集成电路内置音频(inter‑integrated circuit sound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口
(mobile industry processor interface,MIPI),通用输入输出(general‑purpose 
input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
[0120] I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器310可以包含多组 I2C总线。处理器310可以通过不同的I2C总线接口分别耦合触摸传感器380K,充电器,闪光灯,摄像头393等。例如:处理器310可以通过I2C接口耦合触摸传感器380K,使处理器
310与触摸传感器380K通过I2C总线接口通信,实现终端设备300的触摸功能。
[0121] I2S接口可以用于音频通信。在一些实施例中,处理器310可以包含多组I2S总线。处理器310可以通过I2S总线与音频模块370耦合,实现处理器310与音频模块370之间的通信。在一些实施例中,音频模块370可以通过I2S接口向无线通信模块360传递音频信号,实现通过蓝牙耳机接听电话的功能。
[0122] PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块370与无线通信模块360可以通过PCM总线接口耦合。在一些实施例中,音频模块370也可以通过PCM接口向无线通信模块360传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
[0123] UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器310与无线通信模块360。例如:处理器310通过UART接口与无线通信模块360中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块370可以通过 UART接口向无线通信模块360传递音频信号,实现通过蓝牙耳机播放音乐的功能。
[0124] MIPI接口可以被用于连接处理器310与显示屏394,摄像头393等外围器件。MIPI 接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(display serial interface,DSI)等。在一些实施例中,处理器310和摄像头393通过CSI接口通信,实现终端设备300的拍摄功能。处理器310和显示屏394通过DSI接口通信,实现终端设备 300的显示功能。
[0125] GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器310与摄像头393,显示屏394,无线通信模块360,音频模块370,传感器模块380等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
[0126] USB接口330是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB 接口,USB Type C接口等。USB接口330可以用于连接充电器为终端设备300充电,也可以用于终端设备300与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端设备,例如AR设备等。
[0127] 可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备300的结构限定。在本申请另一些实施例中,终端设备300也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0128] 充电管理模块340用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块340可以通过USB接口 330接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块340可以通过终端设备300的无线充电线圈接收无线充电输入。充电管理模块340为电池342充电的同时,还可以通过电源管理模块341为终端设备供电。
[0129] 电源管理模块341用于连接电池342,充电管理模块340与处理器310。电源管理模块341接收电池342和/或充电管理模块340的输入,为处理器310,内部存储器321,显示屏394,摄像头393,和无线通信模块360等供电。电源管理模块341还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块341也可以设置于处理器310中。在另一些实施例中,电源管理模块341和充电管理模块340也可以设置于同一个器件中。
[0130] 终端设备300的无线通信功能可以通过天线1,天线2,移动通信模块350,无线通信模块360,调制解调处理器以及基带处理器等实现。
[0131] 天线1和天线2用于发射和接收电磁波信号。终端设备300中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线 
1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
[0132] 移动通信模块350可以提供应用在终端设备300上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块350可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块350可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块350 还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块350的至少部分功能模块可以被设置于处理器310中。在一些实施例中,移动通信模块350的至少部分功能模块可以与处理器310的至少部分模块被设置在同一个器件中。
[0133] 调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器370A,受话器370B等) 输出声音信号,或通过显示屏394显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器310,与移动通信模块350或其他功能模块设置在同一个器件中。
[0134] 无线通信模块360可以提供应用在终端设备300上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi‑Fi)网络),蓝牙
(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术 (infrared,IR)等无线通信的解决方案。无线通信模块360可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块360经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器310。无线通信模块360还可以从处理器310 接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0135] 在一些实施例中,终端设备300的天线1和移动通信模块350耦合,天线2和无线通信模块360耦合,使得终端设备300可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications, GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multiple access,CDMA),宽带码分多址(wideband code division multiple access, WCDMA),时分码分多址(time‑division code division multiple access,TD‑SCDMA),长期演进(long termevolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidou navigation satellite system,BDS),准天顶卫星系统(quasi‑zenith satellite 
system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
[0136] 终端设备300通过GPU,显示屏394,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏394和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器310可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
[0137] 显示屏394用于显示图像,视频等。显示屏394包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light‑emitting diode, OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active‑matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light‑emitting diode,FLED),Miniled, MicroLed,Micro‑oLed,量子点发光二极管(quantumdot light emitting diodes,QLED)等。在一些实施例中,终端设备300可以包括1个或N个显示屏394,N为大于1的正整数。
[0138] 终端设备300可以通过ISP,摄像头393,视频编解码器,GPU,显示屏394以及应用处理器等实现拍摄功能。
[0139] ISP用于处理摄像头393反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP 处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP 还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头393 中。
[0140] 摄像头393用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体 (complementary metal‑oxide‑semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP 加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,终端设备300可以包括1个或N个摄像头393,N为大于1的正整数。
[0141] 数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端设备300在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
[0142] 视频编解码器用于对数字视频压缩或解压缩。终端设备300可以支持一种或多种视频编解码器。这样,终端设备300可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
[0143] NPU为神经网络(neural‑network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU 可以实现终端设备300的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
[0144] 外部存储器接口320可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备300的存储能力。外部存储卡通过外部存储器接口320与处理器310通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
[0145] 内部存储器321可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器321可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备300使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器321可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器310 通过运行存储在内部存储器321的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备300的各种功能应用以及数据处理。
[0146] 终端设备300可以通过音频模块370,扬声器370A,受话器370B,麦克风370C,耳机接口370D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
[0147] 音频模块370用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块370还可以用于对音频信号编码和解码。在一些实施例中,音频模块370可以设置于处理器310中,或将音频模块370的部分功能模块设置于处理器 
310中。
[0148] 扬声器370A,也称“喇叭”,用于将音频电信号转换为声音信号。终端设备300可以通过扬声器370A收听音乐,或收听免提通话。
[0149] 受话器370B,也称“听筒”,用于将音频电信号转换成声音信号。当终端设备300接听电话或语音信息时,可以通过将受话器370B靠近人耳接听语音。
[0150] 麦克风370C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风370C发声,将声音信号输入到麦克风370C。终端设备300可以设置至少一个麦克风370C。在另一些实施例中,终端设备300可以设置两个麦克风370C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,终端设备300还可以设置三个,四个或更多麦克风370C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
[0151] 耳机接口370D用于连接有线耳机。耳机接口370D可以是USB接口330,也可以是 3.5mm的开放移动终端设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
[0152] 压力传感器380A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器380A可以设置于显示屏394。压力传感器380A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。。
[0153] 陀螺仪传感器380B可以用于确定终端设备300的运动姿态。
[0154] 气压传感器380C用于测量气压。
[0155] 磁传感器380D包括霍尔传感器。
[0156] 加速度传感器380E可检测终端设备300在各个方向上(一般为三轴)加速度的大小。
[0157] 距离传感器380F,用于测量距离。
[0158] 接近光传感器380G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。
[0159] 环境光传感器380L用于感知环境光亮度。
[0160] 指纹传感器380H用于采集指纹。
[0161] 温度传感器380J用于检测温度。
[0162] 触摸传感器380K,也称“触控器件”。触摸传感器380K可以设置于显示屏394,由触摸传感器380K与显示屏394组成触摸屏,也称“触控屏”。触摸传感器380K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏394提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器380K也可以设置于终端设备300的表面,与显示屏394所处的位置不同。
[0163] 骨传导传感器380M可以获取振动信号。
[0164] 按键390包括开机键,音量键等。按键390可以是机械按键。也可以是触摸式按键。终端设备300可以接收按键输入,产生与终端设备300的用户设置以及功能控制有关的键信号输入。
[0165] 马达391可以产生振动提示。马达391可以用于来电振动提示,也可以用于触摸振动反馈。
[0166] 指示器392可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
[0167] SIM卡接口395用于连接SIM卡。SIM卡可以通过插入SIM卡接口395,或从SIM 卡接口395拔出,实现和终端设备300的接触和分离。终端设备300可以支持1个或N个 SIM卡接口,N为大于1的正整数。SIM卡接口395可以支持Nano SIM卡,Micro SIM 卡,SIM卡等。终端设备300通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,终端设备300采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在终端设备 300中,不能和终端设备300分离。
[0168] 可以理解的是,本发明实施例示意的结构并不构成对终端设备的具体限定。在本申请另一些实施例中,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0169] 本申请实施例可以采用上述神经网络的训练系统100实现神经网络的训练方法,一方面云端服务器强大的算力可以支持大数据量的神经网络的训练需求,另一方面终端设备不需要训练神经网络,可以直接用训练好的神经网络完成像素级任务,降低了终端设备的功耗。
[0170] 图4为本申请实施例的神经网络的训练方法的过程400的流程图。过程400可由云端服务器200和终端设备300共同执行。过程400描述为一系列的步骤或操作,应当理解的是,过程400可以以各种顺序执行和/或同时发生,不限于图4所示的执行顺序。过程400 可以包括:
[0171] 步骤401、云端服务器接收来自终端设备的训练数据和第一神经网络。
[0172] 终端设备可以在需要完成像素级任务的场景下,例如,实现增强、超分辨率、融合、去噪、去马赛克、去摩尔纹、纹理增强等,获取训练数据以及可以实现前述像素级任务的第一神经网络。
[0173] 训练数据为对应任务的一系列图像数据对,即训练图像数据‑标注图像数据对,其中标注图像数据用于指导神经网络进行训练,使得训练数据的网络输出和对应的标注图像数据更加接近。例如在超分辨率任务中,训练数据为低分辨率图像‑高分辨率图像数据对;去噪任务中,训练数据为带噪图像数据‑干净图像数据对。
[0174] 第一神经网络为像素级任务的深度神经网络,可以是基于浮点表示的运算的网络,例如浮点型的32bit。第一神经网络可以包括多层结构,例如,UNet网络结构。应当理解的是,云端服务器接收来自终端设备的第一神经网络,在一种实现方式下,可以是接收第一神经网络的网络结构信息(例如层数,通道(channel)数等);在另一种实现方式下,可以是接收第一神经网络的网络结构信息(例如层数,channel数等)和第一神经网络的模型系数。
[0175] 图5a‑图5e为本申请实施例的DNN的几个示例性的结构图。图像可以采用矩阵的方式表示,原始矩阵与待处理的图像对应,输出矩阵与输出图像对应,中间矩阵与中间层输出的特征图对应。
[0176] 如图5a所示,该DNN按照处理的先后顺序,依次包括:3×3卷积层(3×3Conv)、激活层(Relu)、块处理层(Res‑Block)、…、块处理层、3×3卷积层、激活层和3×3卷积层。输入DNN的原始矩阵经过上述层处理后得到的矩阵,再与原始矩阵相加得到最终的输出矩阵。
[0177] 如图5b所示,该DNN按照处理的先后顺序,依次包括:两路3×3卷积层和激活层,一路块处理层、…、块处理层、3×3卷积层、激活层和3×3卷积层。第一矩阵经过一路3×3 卷积层和激活层,第二矩阵经过另一路3×3卷积层和激活层,处理后的两个矩阵合并 (contact)后再经过块处理层、…、块处理层、3×3卷积层、激活层和3×3卷积层处理后得到的矩阵,再与第一矩阵相加得到最终的输出矩阵。
[0178] 如图5c所示,该DNN按照处理的先后顺序,依次包括:两路3×3卷积层和激活层,一路块处理层、…、块处理层、3×3卷积层、激活层和3×3卷积层。第一矩阵和第二矩阵在输入DNN之前,先做相乘,然后将第一矩阵经过一路3×3卷积层和激活层,将相乘后的矩阵经过另一路3×3卷积层和激活层,处理后的两个矩阵相加后再经过块处理层、…、块处理层、3×3卷积层、激活层和3×3卷积层处理后得到的矩阵,再与第一矩阵相加得到最终的输出矩
阵。
[0179] 如图5d所示,上述块处理层按照处理的先后顺序,依次包括:3×3卷积层、激活层和 3×3卷积层,将输入矩阵经这三层处理后,再将处理后得到的矩阵和初始输入矩阵相加得到输出矩阵。如图5c所示,上述块处理层按照处理的先后顺序,依次包括:3×3卷积层、激活层、3×3卷积层和激活层,将输入矩阵经3×3卷积层、激活层和3×3卷积层处理后,再将处理后得到的矩阵和初始输入矩阵相加后再经过一个激活层得到输出矩阵。
[0180] 需要说明的是,如图5a‑图5e仅示出了本申请实施例的DNN的几种示例性的架构,其并不构成对DNN架构的限定,该DNN中包括的层数、层结构、相加、相乘或合并等处理,以及输入和/或输出的矩阵的数量、尺寸等均可以根据实际情况而定,本申请对此不做具体限定。
[0181] 第一神经网络可以采用图5a‑图5e所示结构。
[0182] 步骤402、云端服务器根据提取自第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对第二神经网络进行训练以得到经训练的第二神经网络。
[0183] 第二神经网络可以完成与第一神经网络相同的像素级任务。第二神经网络可以是基于第一神经网络量化得到的神经网络,例如,在第一神经网络中插入量化器,从而将第一神经网络的计算表示从浮点型(例如32bit)转为整型(例如8bit)以得到第二神经网络。相较于第一神经网络,第二神经网络的运算精度低于第一神经网络的运算精度,其计算表示占用的比特数明显变少,可以减少运算量。
[0184] 第二神经网络也可以采用多层结构,例如,UNet网络结构。应当理解的是,虽然第二神经网络的训练目的是尽可能达到与第一神经网络同等或者近似的图像处理效果,但是第二神经网络的结构可以与第一神经网络结构一致,也可以与第一神经网络的结构不一致,二者可以完成相同的像素级任务即可。
[0185] 云端服务器可以对第一神经网络量化以得到第二神经网络。例如,云端服务器可以采用相关技术中的量化训练方法,在上述第一神经网络的各个卷积层中插入量化器,分别对卷积的权重和激活进行量化。量化器采用的算法包括但不限于量化感知训练(quantization aware training,QAT)、可训练缩放系数量化器(learned step‑size 
quantization,LSQ)等。应当理解的,对第一神经网络的量化处理还可以采用其他的量化器插入方法,例如只对第一神经网络中的预先设定的层插入量化器,本申请实施例对此不做具体限定。又例如,云端服务器可以对上述第一神经网络进行缩小以得到相较于第一神经网络更小的网络结构,缩小的方法包括减小通道数、减小层数等;也可以重新设计参数量、计算量等以得到相较于第一神经网络更小的网络结构,然后在前述网络结构中插入量化器得到第二神经网络。
[0186] 第二神经网络也可以采用图5a‑图5e所示结构。
[0187] 第一一阶信息用于表示经由第一神经网络的至少一层处理得到的第一数据的变化程度。第一数据可以是第一神经网络的输出数据,例如,经第一神经网络处理的输出图像的数据;第一数据也可以是第一神经网络的中间层输出的数据,例如,第一神经网络的隐含层包括三层结构,将其中的第二层输出的数据作为第一数据,该第一数据不是第一神经网络的输出数据,而是经隐含层中的第二层处理得到的特征图的数据。应当理解的是,第一数据既可以是第一神经网络最终输出的数据,例如输出图像的数据,也可以是第一神经网络的中间层输出的数据,例如特征图的数据,本申请实施例对第一数据具体是第一神经网络的哪一层输出的数据不做具体限定。
[0188] 在一种可能的实现方式中,云端服务器可以对第一数据进行至少一次基于空间滤波器的提取以得到第一一阶信息。空间滤波器可以包括拉普拉斯算子、拉普拉斯高斯算子或者索贝尔算子中的一个或多个算子。即云端服务器在基于第一数据提取第一一阶信息时,可以只采用前述算子的其中之一进行提取,也可以采用前述多个算子的组合进行提取,而多个算子的组合方式不做具体限定。
[0189] 例如,可以采用以下公式计算:
[0190]
[0191] 其中, 表示卷积运算,Gt表示第一一阶信息,Ot表示第一数据,X表示空间滤波器。 X可以是拉普拉斯算子、拉普拉斯高斯算子或者索贝尔算子;X也可以是先拉普拉斯算子,再索贝尔算子;X还可以是先拉普拉斯算子、再拉普拉斯高斯算子,然后索贝尔算子。本申请实施例对X的具体实现形式不做限定。第二一阶信息用于表示经由第二神经网络的至少一层处理得到的第二数据的变化程度。第二数据可以是第二神经网络的输出数据,例如,经第二神经网络处理的输出图像的数据;第二数据也可以是第二神经网络的中间层输出的数据,例如,第二神经网络的隐含层包括五层结构,将其中的第四层输出的数据作为第二数据,该第二数据不是第二神经网络的输出数据,而是经隐含层中的第四层处理得到的特征图的数据。应当理解的是,第二数据既可以是第二神经网络最终输出的数据,例如输出图像的数据,也可以是第二神经网络的中间层输出的数据,例如特征图的数据,本申请实施例对第二数据具体是第二神经网络的哪一层输出的数据不做具体限定。
[0192] 需要说明的是,如果第二数据是第二神经网络的中间层输出的数据,那么优选该中间层与第一神经网络输出第一数据的中间层相对应,例如,第二神经网络的该中间层与第一神经网络的该中间层实现同样的功能,或者,第二神经网络的该中间层是对第一神经网络的中间层插入量化器得到的。
[0193] 在一种可能的实现方式中,云端服务器可以对第二数据进行至少一次基于空间滤波器的提取以得到第二一阶信息。空间滤波器可以包括拉普拉斯算子、拉普拉斯高斯算子或者索贝尔算子中的一个或多个算子。即云端服务器在基于第二数据提取第二一阶信息时,可以只采用前述算子的其中之一进行提取,也可以采用前述多个算子的组合进行提取,而多个算子的组合方式不做具体限定。
[0194] 例如,可以采用以下公式计算:
[0195]
[0196] 其中, 表示卷积运算,Gs表示第二一阶信息,Os表示第二数据,X表示空间滤波器。X可以是拉普拉斯算子、拉普拉斯高斯算子或者索贝尔算子;X也可以是先拉普拉斯算子,再索贝尔算子;X还可以是先拉普拉斯算子、再拉普拉斯高斯算子,然后索贝尔算子。本申请实施例对X的具体实现形式不做限定。应当理解的,为了第一一阶信息和第二一阶信息具有可比性,二者采用的空间滤波器优选采用相同的空间滤波器,例如对第一数据采用拉普拉斯算子提取第一一阶信息,那么对第二数据也采用拉普拉斯算子提取第二一阶信息。
[0197] 本申请实施例中,云端服务器可以根据第一一阶信息和第二一阶信息获取损失值,然后根据该损失值对第二神经网络进行训练得到经训练的第二神经网络。
[0198] 损失值用于表示第一一阶信息和第二一阶信息的相似度(或者差异)。关于损失值(loss) 的描述可以参照上述损失函数的相关说明,此处不再赘述。
[0199] 云端服务器可以采用损失函数获取损失值,损失函数用于度量第一一阶信息和第二一阶信息的相似度。损失函数例如可以是基于蒸馏的损失函数(本申请中称其为蒸馏损失函数),蒸馏是指神经网络中的暗知识提取。可选的,蒸馏损失函数可以包括L1损失函数、L2损失函数或者余弦损失函数。应当理解的,为了得到第一一阶信息和第二一阶信息之间的差异,可以采用任意一种损失函数计算第一一阶信息和第二一阶信息之间的损失值,对此不做具体限定。
[0200] 在训练第二神经网络的过程中,因为希望第二神经网络的输出尽可能的接近真正想要预测的值(即第一神经网络的预测值),所以可以通过比较第二神经网络的预测值和第一神经网络的预测值(即目标值),再根据两者之间的差异情况来更新第二神经网络中的每一层的权重向量,例如,如果第二神经网络的预测值高了,就调整权重向量让其预测低一些,不断的调整,直到第二神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值,此时的第二神经网络即为经训练的第二神经网络。该过程的调整依据是第一一阶信息和第二一阶信息获取损失值。
[0201] 示例性的,再计算得到上述损失值后,先利用损失值对第二神经网络的输出进行求导,得到损失值的导数;然后基于求导的链式法则,根据损失值的导数对第二神经网络的最后一层权重进行求导,这样可以将损失值的导数传递到第二神经网络的最后一层;再根据最后一层权重的导数,对第二神经网络的倒数第二层权重进行求导,可以将损失值的导数传递到第二神经网络的倒数第二层;以此类推,直到第二神经网络的每一层参数更新完成。多次执行上述训练过程,当损失值不再降低或者训练迭代次数到达预设次数时,训练结束,得到经训练的第二神经网络。
[0202] 在一种可能的实现方式中,云端服务器可以对第一一阶信息进行基于预设阈值的过滤以得到过滤第一一阶信息,对第二一阶信息进行基于预设阈值的过滤以得到过滤第二一阶信息,然后根据过滤第一一阶信息和过滤第二一阶信息获取损失值。
[0203] 由于一阶信息(包括第一一阶信息和第二一阶信息)中较大的元素值通常是物体的边缘,因此为了避免边缘部分对网络训练的影响,在得到第一一阶信息和第二一阶信息后,可以通过一个预设阈值对第一一阶信息和第二一阶信息分别进行过滤以得到过滤第一一阶信息和过滤第二一阶信息。例如,预设阈值t=0.118,对第一一阶信息的每个元素值进行过滤,小于或等于该预设阈值的元素值保留,而大于预设阈值的元素值置0,从而得到过滤第一一阶信息;对第二一阶信息的每个元素值进行过滤,小于或等于该预设阈值的元素值保留,而大于预设阈值的元素值置0,从而得到过滤第二一阶信息。相应的,可以采用蒸馏损失函数计算过滤第一一阶信息和过滤第二一阶信息以得到损失值。损失值的获取过程可以参照上述描述,此处不再赘述。
[0204] 步骤403、云端服务器向终端设备发送经训练的第二神经网络。
[0205] 经训练的第二神经网络是基于对第二神经网络训练得到的,因此经训练的第二神经网络和第二神经网络可以完成相同的像素级任务,进而与第一神经网络完成相同的像素级任务。而第二神经网络(在第一神经网络中插入量化器得到)的运算精度低于第一神经网络的运算精度,因此经训练的第二神经网络的运算精度也低于第一神经网络的运算精度。在训练第二神经网络的过程中,因为希望经训练的第二神经网络的输出尽可能的接近真正想要预测的值(即第一神经网络的预测值),因此相较于第二神经网络,经训练的第二神经网络执行像素级任务的效果更接近于第一神经网络,可以有效解决因运算精度低带来的伪纹理现象。由此可见,经训练的第二神经网络,既可以完成与第一神经网络相同的像素级任务,又可以实现低精度运算,且可以消除第二神经网络因为在第一神经网络中插入量化器实现运算精度低但又容易出现的伪纹理现象。
[0206] 应当理解的是,云端服务器向终端设备发送经训练的第二神经网络,在一种实现方式下,可以是发送经训练的第二神经网络的网络结构信息(例如层数,通道(channel)数等);在另一种实现方式下,可以是发送经训练的第二神经网络的网络结构信息(例如层数, channel数等)和经训练的第二神经网络的模型系数。
[0207] 终端设备部署经训练的第二神经网络,针对待推理的第三数据,可以利用经训练的第二神经网络对第三数据进行推理,得到推理结果;其中,经训练的第二神经网络是云端服务器采用上述步骤训练得到的。推理结果因推理场景(即像素级任务)不同而不同。
[0208] 示例性的,图6为本申请实施例的计算损失值的一个示例性的流程图,如图6所示,训练得到完成像素级任务的第一神经网络,第一神经网络是基于浮点表示的运算的网络。
[0209] 在第一神经网络中插入量化器得到的第二神经网络,第二神经网络和第一神经网络完成相同的像素级任务,但第二神经网络的运算精度低于第一神经网络。其中量化器可以用任意现有的量化方法,例如,QAT、LSQ等。
[0210] 第一神经网络的中间层或者最后一层输出第一数据,第二神经网络的中间层或者最后一层输出第二数据,可以看到基于第二数据呈现出的特征图比基于第一数据呈现出的特征图,在平坦区域出现了毛刺、格子等伪纹理。
[0211] 对第一数据提取第一一阶信息,对第二数据提取第二一阶信息,其中第一一阶信息和第二一阶信息提取可以使用任意的空间滤波器及其变种,包括但不限于拉普拉斯算子、拉普拉斯高斯算子、索贝尔算子等,并且可以用任意的阈值策略对提取结果进行过滤,得到过滤后的第一一阶信息和过滤后的第二一阶信息。元素值越高,其呈现出的效果为亮度越高,可以看到第二神经网络对应的第二一阶信息中充满了毛刺,即除边缘呈现高亮边框外,边框内部也有很多高亮点,而第一神经网络对应的第一一阶信息无毛刺,只有边缘呈现高亮边框,边框内部无高亮点。可见第二一阶信息中对应于边框内部的元素值比第一神经网络中对应于边框内部的元素值更大,这正是产生伪纹理现象的原因。
[0212] 使用蒸馏损失函数计算第一一阶信息和第二一阶信息之间的损失值,可以参照上述步骤402,此处不再赘述。其中蒸馏损坏函数可以使用任意的相似度度量函数,包括但不限于L1距离函数、L2距离函数和cosine函数等。
[0213] 本申请实施例,云端服务器向终端设备提供神经网络的训练服务,云端服务器可以应终端设备的请求、基于一阶信息训练得到经训练的第二神经网络,该经训练的第二神经网络与运算精度较高的第一神经网络相比,既可以完成相同的像素级任务,又可以实现低精度运算,且可以消除一般低精度神经网络因运算精度低而容易出现的伪纹理现象。而由云端服务器实现神经网络的训练过程,一方面云端服务器强大的算力可以满足大数据量的神经网络的训练需求,另一方面终端设备不需要还行训练过程可以降低功耗。
[0214] 以下通过三个具体的实施例对上述方法实施例的方案进行描述。
[0215] 实施例一
[0216] 1、用户使用终端设备在云端服务器提供的显示于客户端上的对象存储服务页面中上传训练数据,以及对应的第一神经网络(像素级DNN),第一神经网络包括网络结构和浮点精度表示的模型权重文件。如附图7a所示,用户点击对象存储服务页面中的上传按键,将终端设备中存储的训练数据、第一神经网络的网络结构和第一神经网络的模型文件上传至云端服务器的存储桶中。
[0217] 2、用户使用终端设备在云端服务器提供的像素级量化训练服务页面中填入对应的参数。如附图7b所示,参数列表包括:
[0218] 算法选择:选择本申请实施例提供的神经网络的训练方法。
[0219] 训练数据输入:填入上述步骤401描述的训练数据。
[0220] 网络模型定义:填入上述步骤401描述的第一神经网络的结构。
[0221] 全精度模型:填入上述步骤401描述的第一神经网络。
[0222] 模型输出:填入某个对象的存储路径,最终经训练的第二神经网络的参数文件将保存在该路径下,以供终端设备下载。
[0223] 训练输出:填入某个对象的存储路径,训练过程中,训练中的第二神经网络的输出图像将保存在该路径下,用户可在训练过程中通过终端设备下载查看,以观察网络训练效果。
[0224] 日志路径:填入某个对象的存储路径,训练日志将会保存在该路径下。
[0225] 填入上述参数后,点击创建按键,触发云端服务器创建相应的训练任务。
[0226] 3、云端服务器创建任务后,使用上述方法实施例提供的神经网络的训练方法训练第二神经网络以得到经训练的第二神经网络,其中,云端服务器在第一神经网络中插入量化器形成第二神经网络,并使用蒸馏损失函数进行训练。
[0227] 训练过程中,云端服务器会把第一神经网络和训练中的第二神经网络的输出内容保存在上述“训练输出”指定的存储路径中,输出内容包括第一神经网络和训练中的第二神经网络分别在当前训练阶段的输出图像和提取的一阶信息图像,也会把训练得到的训练中的第二神经网络的模型文件保存在上述“模型输出”指定的存储路径中。
[0228] 4、训练过程中,用户可以通过终端设备从“训练输出”指定的存储路径下下载输出文件,观察训练的输出结果,根据输出结果可以观察训练效果。如图7c所示,“训练输出”指定的存储路径下存储了若干图像,例如,student_iter_0_out.jpg和student_iter_0_grad.jpg分别是第0次迭代时,训练中的第二神经网络的输出图像和第二一阶信息图像, teacher_iter_0_out.jpg和teacher_iter_0_grad.jpg分别是第0次迭代时,第一神经网络的输出图像和第一一阶信息图像。用户可观察不同迭代次数下的输出内容,若某次迭代时,训练中的第二神经网络的输出图像和第一神经网络的输出图像一致或接近,和/或,训练中的第二神经网络的第二一阶信息图像和第一神经网络的第一一阶信息图像一致或接近,则表明该次迭代时的训练中的第二神经网络的效果和全精度的第一神经网络的效果接近,那么该次迭代时的训练中的第二神经网络可以作为经训练的第二神经网络。
[0229] 5、终端设备下载训练好的经训练的第二神经网络。如图7d所示,用户可以根据上一步骤的输出结果选择对应迭代次数的模型文件并下载。例如,根据多次迭代时的输出内容,可以观察到第800次迭代时训练中的第二神经网络的效果和全精度的第一神经网络的效果最接近,用户可以在“模型输出”指定的存储路径中选择第800次迭代输出的 ckpt_iter_800.pth模型文件进行下载。
[0230] 终端设备得到经训练的第二神经网络的模型参数文件后,可以进行业务部署,完成相应的像素级任务。
[0231] 实施例二
[0232] 1、获取第一神经网络
[0233] 第一神经网络的计算表示为浮点型,其结构可以采用UNet网络结构。
[0234] 2、获取第二神经网络
[0235] 在第一神经网络的UNet网络结构中的各个卷积层中插入量化器,分别对卷积的权重、参数等进行量化。量化器可以使用LSQ算法。
[0236] 3、获取第一一阶信息
[0237] 假设第一神经网络的输出的第一数据为Ot,其大小为3×H×W,H和W分别是待处理的图像的宽和高。
[0238] 空间滤波器使用拉普拉斯算子,该拉普拉斯算子的核大小为5,可以定义如下:
[0239]
[0240] 对Ot的三个通道分别做卷积运算得到对应的第一一阶信息:
[0241]
[0242] 其中, 表示卷积运算,Gt表示第一一阶信息。
[0243] 4、获取第二一阶信息
[0244] 假设第二神经网络的输出的第一数据为Os,其大小为3×H×W,H和W分别是待处理的图像的宽和高。
[0245] 空间滤波器也使用拉普拉斯算子,该拉普拉斯算子的核大小为5,可以定义如下:
[0246]
[0247] 对Os的三个通道分别做卷积运算得到对应的第二一阶信息:
[0248]
[0249] 其中, 表示卷积运算,Gs表示第二一阶信息。
[0250] 图8a和图8b为本申请实施例的一阶信息的一个示例性的示意图,图8a是第二一阶信息,图8b是第一一阶信息。元素值越高,其呈现出的效果为亮度越高,可以看到第二神经网络输出的第二一阶信息中充满了毛刺,即除边缘呈现高亮边框外,边框内部也有很多高亮点,而第一神经网络输出的第一一阶信息无毛刺,只有边缘呈现高亮边框,边框内部无高亮点。可见第二一阶信息中对应于边框内部的元素值比第一神经网络中对应于边框内部的元素值更大,这正是产生伪纹理现象的原因。
[0251] 基于此,为了避免边缘部分对网络训练的影响,在得到一阶信息后,可以通过一个预设阈值对一阶信息进行过滤以得到过滤一阶信息。例如,预设阈值t=0.118,对一阶信息的每个元素值进行过滤,小于或等于该预设阈值的元素值保留,而大于预设阈值的元素值置 0:
[0252]
[0253]
[0254] 5、根据第一一阶信息和第二一阶信息获取损失值
[0255] 可以使用L1损失函数度量第一一阶信息和第二一阶信息的差距,L1损失函数定义如下:
[0256] Loss=|Gt‑Gs|
[0257] 其中,Loss表示损失值。
[0258] 6、根据损失值训练第二神经网络以得到经训练的第二神经网络
[0259] 训练过程可以参照步骤204的描述,此处不再赘述。
[0260] 图9a和图9b为本申请实施例的图像处理效果的一个示例性的示意图,图10a和图 10b为本申请实施例的图像处理效果的另一个示例性的示意图,图9a和图10a均是没有使用本申请实施例提供的训练方法,而是使用LSQ量化方法训练得到的神经网络的输出效果,图
9b和图10b均是使用本申请实施例提供的训练方法得到的经训练的第二神经网络的输出效果。可以看到,图9a和图10a中在平坦区域出现了毛刺、格子等伪纹理,影响视觉效果,而图
9b和图10b的效果更加平滑。
[0261] 实施例三
[0262] 1、获取第一神经网络
[0263] 第一神经网络的计算表示为浮点型,其结构可以采用UNet网络结构。
[0264] 2、获取第二神经网络
[0265] 在第一神经网络的UNet网络结构中的各个卷积层中插入量化器,分别对卷积的权重和激活进行量化。量化器可以使用QAT算法。
[0266] 3、获取第一一阶信息
[0267] 假设第一神经网络的输出的第一数据为Ot,其大小为3×H×W,H和W分别是待处理的图像的宽和高。
[0268] 空间滤波器使用拉普拉斯算子,该拉普拉斯算子的核大小为3,可以定义如下:
[0269]
[0270] 对Ot的三个通道分别做卷积运算得到对应的第一一阶信息:
[0271]
[0272] 其中, 表示卷积运算,Gt表示第一一阶信息。
[0273] 4、获取第二一阶信息
[0274] 假设第二神经网络的输出的第一数据为Os,其大小为3×H×W,H和W分别是待处理的图像的宽和高。
[0275] 空间滤波器也使用拉普拉斯算子,该拉普拉斯算子的核大小为5,可以定义如下:
[0276]
[0277] 对Os的三个通道分别做卷积运算得到对应的第二一阶信息:
[0278]
[0279] 其中, 表示卷积运算,Gs表示第二一阶信息。
[0280] 为了避免边缘部分对网络训练的影响,在得到一阶信息后,可以通过一个预设阈值对一阶信息进行过滤以得到过滤一阶信息。例如,预设阈值t=0.118,对一阶信息的每个元素值进行过滤,小于或等于该预设阈值的元素值保留,而大于预设阈值的元素值置0:
[0281]
[0282]
[0283] 5、根据第一一阶信息和第二一阶信息获取损失值
[0284] 可以使用L1损失函数度量第一一阶信息和第二一阶信息的差距,L1损失函数定义如下:
[0285] Loss=‖Gt‑Gs‖2
[0286] 其中,Loss表示损失值。
[0287] 6、根据损失值训练第二神经网络以得到经训练的第二神经网络
[0288] 训练过程可以参照步骤204的描述,此处不再赘述。
[0289] 图11a和图11b为本申请实施例的图像处理效果的一个示例性的示意图,图12a和图 12b为本申请实施例的图像处理效果的另一个示例性的示意图,图11a和图12a均是没有使用本申请实施例提供的训练方法,而是使用QAT量化方法训练得到的神经网络的输出效果,图11b和图12b均是使用本申请实施例提供的训练方法得到的经训练的第二神经网络的输出效果。可以看到,图11a和图12a中在平坦区域出现了毛刺、轮廓线等伪纹理,影响视觉效果,而图11b和图12b的效果更加平滑。
[0290] 通过上述两个实施例可以看到,本申请实施例提供的神经网络的训练方法,针对采用不同的量化方法得到的第二神经网络、不同算子提取的一阶信息、以及不同蒸馏损失函数计算得到的损失值,都具有一定鲁棒性,有通用的提升效果,极大地改善了伪纹理现象。
[0291] 图13为本申请实施例的神经网络的训练方法的过程1300的流程图。过程1300可由终端设备300执行。过程1300描述为一系列的步骤或操作,应当理解的是,过程1300可以以各种顺序执行和/或同时发生,不限于图13所示的执行顺序。过程1300可以包括:
[0292] 步骤1301、终端设备获取训练数据和第一神经网络。
[0293] 本实施例与图4所示实施例的区别在于,图4所示实施例应用于端云结合的场景,终端设备向云端服务器请求经训练的神经网络,云端服务器根据终端设备发送的训练数据和第一神经网络训练得到经训练的第二神经网络,之后终端设备在本地部署该经训练的第二神经网络。而本实施例中,终端设备不需要向云端服务器请求训练服务,而是在本地训练得到经训练的第二神经网络。
[0294] 步骤1302、终端设备根据提取自第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对第二神经网络进行训练以得到经训练的第二神经网络。
[0295] 步骤1302可以参照上述步骤402,此处不再赘述。
[0296] 终端设备部署经训练的第二神经网络,针对待推理的第三数据,可以利用经训练的第二神经网络对第三数据进行推理,得到推理结果;其中,经训练的第二神经网络是终端设备采用上述步骤训练得到的。推理结果因推理场景(即像素级任务)不同而不同。
[0297] 本申请实施例,终端设备可以基于一阶信息训练得到经训练的第二神经网络,该经训练的第二神经网络与运算精度较高的第一神经网络相比,既可以完成相同的像素级任务,又可以实现低精度运算,且可以消除一般低精度神经网络因运算精度低而容易出现的伪纹理现象。
[0298] 基于上述实施例所示的云端服务器,包括:处理器、存储器和收发器。其中,
[0299] 所述收发器,用于接收来自终端设备的训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;所述存储器,用于存储一个或多个程序,以及所述训练数据和所述第一神经网络;当所述一个或多个程序被所述处理器执行,使得所述处理器实现:根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度;所述收发器,还用于向所述终端设备发送所述经训练的第二神经网络。
[0300] 在一种可能的实现方式中,所述处理器,还用于对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。
[0301] 在一种可能的实现方式中,所述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。
[0302] 在一种可能的实现方式中,所述处理器,具体用于根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。
[0303] 在一种可能的实现方式中,所述处理器,具体用于对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。
[0304] 在一种可能的实现方式中,所述处理器,具体用于将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。
[0305] 基于上述实施例中的终端设备,包括:处理器、存储器和收发器。其中,
[0306] 所述处理器,用于获取训练数据和第一神经网络,所述第一神经网络为像素级任务的深度神经网络;所述存储器,用于存储一个或多个程序,以及所述训练数据和所述第一神经网络;当所述一个或多个程序被所述处理器执行,使得所述处理器实现:根据提取自所述第一神经网络的第一一阶信息和提取自第二神经网络的第二一阶信息对所述第二神经网络进行训练以得到经训练的第二神经网络,所述第二神经网络是基于所述第一神经网络得到,所述第二神经网络的运算精度低于所述第一神经网络的运算精度,所述第一神经网络和所述第二神经网络执行相同的像素级任务,所述第一一阶信息表示经由所述第一神经网络的至少一层处理得到的第一数据的变化程度,所述第二一阶信息表示经由所述第二神经网络的至少一层处理得到的第二数据的变化程度。
[0307] 在一种可能的实现方式中,所述处理器,还用于对所述第一数据进行至少一次基于空间滤波器的提取以得到所述第一一阶信息;对所述第二数据进行所述至少一次基于空间滤波器的提取以得到所述第二一阶信息。
[0308] 在一种可能的实现方式中,所述空间滤波器包括拉普拉斯算子、拉普拉斯高斯算子和索贝尔算子中的至少一种算子。
[0309] 在一种可能的实现方式中,所述处理器,具体用于根据所述第一一阶信息和所述第二一阶信息获取损失值,所述损失值用于表示所述第一一阶信息和所述第二一阶信息的相似度;根据所述损失值对所述第二神经网络进行训练得到所述经训练的第二神经网络。
[0310] 在一种可能的实现方式中,所述处理器,具体用于对所述第一一阶信息进行基于预设阈值的过滤以得到经过滤的第一一阶信息;对所述第二一阶信息进行基于所述预设阈值的过滤以得到经过滤的第二一阶信息;根据所述经过滤的第一一阶信息和所述经过滤的第二一阶信息获取所述损失值。
[0311] 在一种可能的实现方式中,所述处理器,具体用于将所述第一一阶信息中大于所述预设阈值的元素值置0,将所述第一一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第一一阶信息;将所述第二一阶信息中大于所述预设阈值的元素值置0,将所述第二一阶信息中小于或等于所述预设阈值的元素值保留,以得到所述经过滤的第二一阶信息。
[0312] 在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。处理器可以是通用处理器、数字信号处理器(digital signal processor, DSP)、特定应用集成电路(application‑specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。本申请实施例公开的方法的步骤可以直接体现为硬件编码处理器执行完成,或者用编码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0313] 上述各实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read‑only memory, ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器 (erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM) 或闪存。易失性存储器可以是随机存取存储器(randomaccess memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器
(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器 (enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM, SLDRAM)和直接内存总线随机存取存储器
(direct rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0314] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0315] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0316] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0317] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0318] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0319] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read‑only memory,ROM)、随机存取存储器(randomaccess memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0320] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。