图像压缩方法及相关装置与流程

文档序号:17941155发布日期:2019-06-18 23:06阅读:118来源:国知局
图像压缩方法及相关装置与流程

本申请涉及图像压缩技术领域,具体涉及一种图像压缩方法及相关装置。



背景技术:

随着大数据时代的到来,数据以爆炸性的速度增长着,巨量的数据携带着信息在人们之间传递着,而图像作为人类感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。

现有技术中,通过图像压缩有效地减少了数据量,提高图像的传输速率。然而,对图像进行压缩之后,难以保留原始图像的全部信息,因此,如何进行图像压缩仍然为本领域技术人员待解决的技术问题。



技术实现要素:

本申请实施例提出了一种图像压缩方法及相关装置,可用于图像训练的压缩神经网络,提高了图像压缩的有效性和识别的准确率。

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

获取第一分辨率的原始图像,所述原始图像为压缩神经网络的压缩训练图集中的任一训练图像,所述原始图像的标签信息作为目标标签信息;

基于目标模型对所述原始图像进行压缩,得到第二分辨率的压缩图像,所述第二分辨率小于所述第一分辨率,所述目标模型为所述压缩神经网络当前的神经网络模型;

基于识别神经网络模型对所述压缩图像进行识别,得到参考标签信息,所述识别神经网络模型为识别神经网络训练完成时对应的神经网络模型;

根据所述目标标签信息与所述参考标签信息获取损失函数;

在所述损失函数收敛于第一阈值,或所述压缩神经网络当前的训练次数大于或等于第二阈值时,获取所述第一分辨率的目标原始图像,将所述目标模型作为所述压缩神经网络训练完成时对应的压缩神经网络模型;

基于所述压缩神经网络模型对所述目标原始图像进行压缩,得到所述第二分辨率的目标压缩图像。

结合第一方面,第一方面的第一种可能的实施方式中,所述方法还包括:

在所述损失函数未收敛于所述第一阈值,或所述压缩神经网络当前的训练次数小于所述第二阈值时,根据所述损失函数对所述目标模型进行更新,得到更新模型,将所述更新模型作为所述目标模型,将下一个训练图像作为所述原始图像,执行所述获取第一分辨率的原始图像的步骤。

结合第一方面或第一方面的第一种可能的实施方式,第一方面的第二种可能的实施方式中,所述基于识别神经网络模型对所述压缩图像进行识别,得到参考标签信息,包括:

对所述压缩图像进行预处理,得到待识别图像;

基于所述识别神经网络模型对所述待识别图像进行识别,得到所述参考标签信息。

结合第一方面的第二种可能的实施方式,第一方面的第三种可能的实施方式中,所述预处理包括尺寸处理,所述对所述压缩图像进行预处理,得到待识别图像,包括:

在所述压缩图像的图像大小小于所述识别神经网络的基本图像大小时,按照所述基本图像大小对所述压缩图像进行填充像素点,得到所述待识别图像。

结合第一方面或第一方面的第一种可能的实施方式,第一方面的第四种可能的实施方式中,所述压缩训练图集至少包括识别训练图集,所述方法还包括:

采用所述识别训练图集对所述识别神经网络进行训练,得到所述识别神经网络模型,所述识别训练图集中每一训练图像至少包括与所述目标标签信息的类型一致的标签信息。

结合第一方面或第一方面的第一种可能的实施方式,第一方面的第五种可能的实施方式中,在所述基于所述压缩神经网络模型对所述目标原始图像进行压缩,得到所述第二分辨率的目标压缩图像之后,所述方法还包括:

基于所述识别神经网络模型对所述目标压缩图像进行压缩,得到所述目标原始图像的标签信息,并存储所述目标原始图像的标签信息。

结合第一方面或第一方面的第一种可能的实施方式,第一方面的第六种可能的实施方式中,所述压缩训练图集包括多个维度,所述基于目标模型对所述原始图像进行压缩,得到第二分辨率的压缩图像包括:

基于所述目标模型对所述原始图像进行识别,得到多个图像信息,每一维度对应一个图像信息;

基于所述目标模型和所述多个图像信息对所述原始图像进行压缩,得到所述压缩图像。

第二方面,本申请实施例提供了一种图像压缩装置,包括处理器、与所述处理器连接的存储器,其中:

所述存储器,用于存储第一阈值、第二阈值、压缩神经网络当前的神经网络模型和训练次数、所述压缩神经网络的压缩训练图集和所述压缩训练图集中每一训练图像的标签信息、识别神经网络模型、压缩神经网络模型,将所述压缩神经网络当前的神经网络模型作为目标模型,所述压缩神经网络模型为所述压缩神经网络训练完成时对应的目标模型,所述识别神经网络模型为识别神经网络训练完成时对应的神经网络模型;

所述处理器,用于获取第一分辨率的原始图像,所述原始图像为所述压缩训练图集中的任一训练图像,将所述原始图像的标签信息作为目标标签信息;基于所述目标模型对所述原始图像进行压缩,得到第二分辨率的压缩图像,所述第二分辨率小于所述第一分辨率;基于所述识别神经网络模型对所述压缩图像进行识别,得到参考标签信息;根据所述目标标签信息与所述参考标签信息获取损失函数;在所述损失函数收敛于所述第一阈值,或所述训练次数大于或等于所述第二阈值时,获取所述第一分辨率的目标原始图像,确认所述目标模型为所述压缩神经网络模型;基于所述压缩神经网络模型对所述目标原始图像进行压缩,得到所述第二分辨率的目标压缩图像。

结合第二方面,第二方面的第一种可能的实施方式中,所述处理器,还用于在所述损失函数未收敛于所述第一阈值,或所述训练次数小于所述第二阈值时,根据所述损失函数对所述目标模型进行更新,得到更新模型,将所述更新模型作为所述目标模型,将下一个训练图像作为所述原始图像,执行所述获取第一分辨率的原始图像的步骤。

结合第二方面或第二方面的第一种可能的实施方式,第二方面的第二种可能的实施方式中,所述处理器具体用于对所述压缩图像进行预处理,得到待识别图像;基于所述识别神经网络模型对所述待识别图像进行识别,得到所述参考标签信息。

结合第二方面的第二种可能的实施方式,第二方面的第三种可能的实施方式中,所述预处理包括尺寸处理,所述存储器,还用于存储所述识别神经网络的基本图像大小;所述处理器具体用于在所述压缩图像的图像大小小于所述基本图像大小时,按照所述基本图像大小对所述压缩图像进行填充像素点,得到所述待识别图像。

结合第二方面或第二方面的第一种可能的实施方式,第二方面的第四种可能的实施方式中,所述压缩训练图集至少包括识别训练图集,所述处理器还用于采用所述识别训练图集对所述识别神经网络进行训练,得到所述识别神经网络模型,所述识别训练图集中每一训练图像至少包括与所述目标标签信息的类型一致的标签信息。

结合第二方面或第二方面的第一种可能的实施方式,第二方面的第五种可能的实施方式中,所述处理器,还用于基于所述识别神经网络模型对所述目标压缩图像进行识别,得到所述目标原始图像的标签信息;所述存储器,还用于存储所述目标原始图像的标签信息。

结合第二方面或第二方面的第一种可能的实施方式,第二方面的第六种可能的实施方式中,所述压缩训练图集包括多个维度,所述处理器具体用于基于所述目标模型对所述原始图像进行识别,得到多个图像信息,每一维度对应一个图像信息;基于所述目标模型和所述多个图像信息对所述原始图像进行压缩,得到所述压缩图像。

第三方面,本申请实施例提供另一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,所述程序包括用于如第一方面中所描述的部分或全部步骤的指令。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。

采用了上述的图像压缩方法及相关装置之后,基于目标模型获取原始图像的压缩图像,基于识别神经网络模型获取压缩图像的参考标签信息,根据原始图像包括的目标标签信息与参考标签信息获取损失函数,在损失函数收敛于第一阈值或压缩神经网络当前的训练次数大于或等于第二阈值时,即完成用于图像压缩的压缩神经网络的训练,将目标模型作为压缩神经网络模型,可基于压缩神经网络模型获取目标原始图像的目标压缩图像。也就是说,通过已经训练完成得到的识别神经网络模型得到的参考标签值和原始图像包括的目标标签值获取损失函数,在损失函数满足预设条件或压缩神经网络当前的训练次数超过预设阈值时完成训练,否则通过训练压缩神经网络反复调整其权值,即对同一个图像中每一像素所表示的图像内容进行调整,减少压缩神经网络的损失,提高了图像压缩的有效性,从而便于提高识别的准确率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

其中:

图1是本申请实施例提供的一种神经网络的运算示意图;

图2是本申请实施例提供的一种图像压缩方法的流程示意图;

图2a是本申请实施例提供的一种尺寸处理方法的场景示意图;

图2b是本申请实施例提供的一种单层神经网络运算方法的流程示意图;

图2c是本申请实施例提供的一种用于执行压缩神经网络反向训练装置的结构示意图;

图2d是本申请实施例提供的一种h树模块的结构示意图;

图2e是本申请实施例提供的一种主运算模块的结构示意图;

图2f是本申请实施例提供的一种运算模块的结构示意图;

图2g是本申请实施例提供的一种压缩神经网络反向训练的示例框图;

图3是本申请实施例提供的一种图像压缩方法的流程示意图;

图4是本申请实施例提供的一种电子装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

本申请实施例提出了一种图像压缩方法及相关装置,可训练用于图像压缩的压缩神经网络,提高了图像压缩的有效性和识别的准确率。以下结合具体实施例,并参照附图,对本申请进一步详细说明。

本发明中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有l层,k=1,2,...,l-1,对于第k层和第k+1层来说,将第k层称为输入层,其中的神经元为所述输入神经元,第k+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。

上文中提到的运算都是神经网络中一层的运算,对于多层神经网络,其实现过程如图1所示,图中虚线的箭头表示反向运算,实线的箭头表示正向运算。在正向运算中,当上一层人工神经网络执行完成之后,将上一层得到的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值。在反向运算中,当上一层人工神经网络的反向运算执行完成后,将上一层得到的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。

神经网络的正向传播阶段对应于正向运算,是输入数据输入至输出数据输出的过程,反向传播阶段对应于反向运算,是最终结果数据与期望输出数据之间的误差反向通过正向传播阶段的过程,通过周而复始的正向传播和反向传播,按照误差梯度下降的方式修正各层权值,对各层权值进行调整,也是神经网络学习训练的过程,可减少网络输出的误差。

在本申请中,对于压缩神经网络的压缩训练图集的类型和每类训练图集包括的训练图像的数量不作限制,类型越多,数量越多,训练次数越多,图像压缩的损耗率越低,便于提高图像识别的准确率。

压缩训练图集可包括多个角度的图像、多种光线强度下的图像或多种不同类型的图像采集设备采集的图像等多个维度。当针对上述不同维度对应的压缩训练图集对压缩神经网络进行训练,提高不同情况下的图像压缩的有效性,扩大了图像压缩方法的适用范围。

压缩训练图集中训练图像包括的标签信息,本申请对于标签信息的具体内容不作限定,对待训练的图像部分进行标记,可用于检测压缩神经网络是否训练完成。例如:道路视频监控拍摄的行车图像中,标签信息为目标车牌信息,将行车图像输入至压缩神经网络得到压缩图像,基于识别神经网络模型对压缩图像进行识别得到参考车牌信息,若参考车牌信息与目标车牌信息匹配,则可确定完成压缩神经网络的训练,否则,在压缩神经网络当前的训练次数小于预设阈值时,还需对压缩神经网络进行训练。

本申请对于标签信息的类型不作限定,可以是车牌信息,也可以是人脸信息、交通标志信息、物体分类信息等等。

本申请所涉及的识别神经网络模型为用于图像识别的识别神经网络训练完成时得到的数据,对于识别神经网络的训练方法不作限定,可采用批量梯度下降算法(batchgradientdescent,bgd)、随机梯度下降算法(stochasticgradientdescent,sgd)或小批量梯度下降算法(mini-batchsgd)等进行训练,一个训练周期由单次正向运算和反向梯度传播完成。

可选的,采用所述识别训练图集对所述识别神经网络进行训练得到所述识别神经网络模型。

其中,识别训练图集中每一训练图像至少包括与所述压缩训练图像中每一训练图像的目标标签信息的类型一致的标签信息。也就是说,识别神经网络模型可对压缩神经网络(待训练或完成训练)输出的压缩图像进行识别。

举例来说,若压缩训练图像的标签信息的类型为车牌,则识别训练图像的标签信息的类型至少包括车牌,从而保证识别神经网络模型对压缩神经网络输出的压缩图像进行识别,得到车牌信息。

可选的,压缩训练图集至少包括识别训练图集。

由于训练图集中的图像受限于角度、光线或图像采集设备等因素的影响,当采用识别训练图集进行训练时,可提高识别神经网络模型的准确率,从而提高压缩神经网络的训练效率,即便于提高图像压缩的有效性。

请参见图2,图2是本申请实施例提供的一种图像压缩方法的流程示意图。如图2所示,上述方法包括:

201:获取第一分辨率的原始图像。

其中,第一分辨率为压缩神经网络的输入分辨率,第二分辨率小于第一分辨率,为压缩神经网络的输出分辨率,即输入压缩神经网络的图像的压缩比(第二分辨率与第一分辨率之比)是固定的,也就是说,基于同一个压缩神经网络模型对不同图像进行压缩,可得到同一个压缩比的图像。

原始图像为压缩神经网络的压缩训练图集中的任一训练图像,将原始图像的标签信息作为目标标签信息。本申请对于标签信息不做限定,可以是人为识别进行标记所得,也可以将原始图像输入至识别神经网络,基于识别神经网络模型进行识别所得等。

202:基于目标模型对所述原始图像进行压缩得到第二分辨率的压缩图像。

其中,目标模型为所述压缩神经网络当前的神经网络模型,即目标模型为压缩神经网络的当前参数。基于目标模型对分辨率等于压缩神经网络的输入分辨率的原始图像进行压缩,可得到分辨率等于压缩神经网络的输出分辨率的压缩图像。

可选的,所述基于目标模型对所述原始图像进行压缩得到第二分辨率的压缩图像包括:基于所述目标模型对所述原始图像进行识别,得到多个图像信息,每一维度对应一个图像信息;基于所述目标模型和所述多个图像信息对所述原始图像进行压缩,得到所述压缩图像。

如上述的训练图像包括多个维度,先基于目标模型对原始图像进行识别,可确定每一维度对应的图像信息,再针对每个图像信息对原始图像进行压缩,从而提高了不同维度下图像压缩的准确率。

203:基于识别神经网络模型对所述压缩图像进行识别得到参考标签信息。

本申请对于识别方法不作限定,可包括特征提取和特征识别两部分,将特征识别得到的结果作为参考标签信息,例如:行车图像压缩之后得到行车压缩图像对应的参考标签信息为车牌号码;人脸图像压缩之后得到人脸压缩图像对应的参考标签信息为人脸识别结果。

可选的,所述基于识别神经网络模型对所述压缩图像进行识别得到参考标签信息包括:对所述压缩图像进行预处理得到待识别图像;基于所述识别神经网络模型对所述待识别图像进行识别得到所述参考标签信息。

预处理包括但不限于以下中的任一项或多项:数据格式转换处理(如归一化处理、整型数据转换等)、数据去重处理、数据异常处理、数据缺失填补处理等等。通过对压缩图像进行预处理,可提高图像识别的识别效率和准确率。

同样的,所述获取第一分辨率的原始图像包括:接收输入图像;对所述输入图像进行预处理得到所述原始图像。通过对输入图像的预处理,可提高图像压缩的压缩效率。

上述的预处理还包括尺寸处理,由于神经网络具有固定的尺寸要求,即只能对与该神经网络的基本图像大小相等的图像进行处理。将压缩神经网络的基本图像大小作为第一基本图像大小,将识别神经网络的基本图像大小作为第二基本图像大小,即压缩神经网络对输入图像的尺寸要求为图像大小等于第一基本图像大小,识别神经网络对输入图像的尺寸要求为图像大小等于第二基本图像大小。压缩神经网络可对满足第一基本图像大小的待压缩图像进行压缩得到压缩图像;识别神经网络可对满足第二基本图像大小的待识别图像进行识别得到参考标签信息。

本申请对于尺寸处理的具体方式不作限定,可包括裁剪或填充像素点的方式,也可以按照基本图像大小进行缩放的方式,还可以对输入图像进行降采样方法等等。

其中,外围像素点裁剪为裁剪图像外围的非关键信息区域;降采样处理是降低特定信号的采样率的过程,例如:4个相邻像素点取平均值,作为处理后图像的对应位置上的一个像素点的值,从而减小图像的大小。

可选的,所述对所述压缩图像进行预处理得到待识别图像包括:在所述压缩图像的图像大小小于识别神经网络的基本图像大小时,按照所述基本图像大小对所述压缩图像进行填充像素点得到所述待识别图像。

本申请对于像素点不作限定,可以是任一色彩模式对应的,例如:rgb(0,0,0)。对于像素点填充的具体位置也不作限定,可以是除了压缩图像之外的任一位置,即对压缩图像不进行处理,而是采用填充像素点的方式进行图像扩展,不会对压缩图像产生形变,便于提高图像识别的识别效率和准确率。

举例来说,如图2a所示,将压缩图像置于待识别图像的左上方,待识别图像除了压缩图像之外的位置填充像素点。

同样的,所述对所述输入图像进行预处理得到所述原始图像包括:在所述输入图像的图像大小小于所述压缩神经网络的第一基本图像大小时,按照所述第一基本图像大小对所述输入图像进行填充像素点,得到所述原始图像。通过像素点填充使待压缩的原始图像被识别神经网络进行识别得到参考标签信息,且像素点填充未改变输入图像的压缩率,便于提高训练压缩神经网络的效率和准确率。

204:根据所述目标标签信息与所述参考标签信息获取损失函数。

在本申请中,损失函数用于描述目标标签信息与参考标签信息之间的误差大小,标签信息包括多个维度,一般使用平方差公式进行计算:

其中:c为标签信息的维度,tk为参考标签信息的第k维,yk为目标标签信息的第k维。

205:判断所述损失函数是否收敛于第一阈值或所述压缩神经网络当前的训练次数是否大于或等于第二阈值,若是,执行步骤206;若否,执行步骤207。

本申请所涉及的压缩神经网络的训练方法中每一训练图像对应的训练周期由单次正向运算和反向梯度传播完成,将损失函数的阈值设置为第一阈值,将压缩神经网络的训练次数的阈值设置为第二阈值。也就是说,若损失函数收敛于第一阈值或训练次数大于或等于第二阈值,则完成压缩神经网络的训练,将所述目标模型作为所述压缩神经网络训练完成时对应的压缩神经网络模型;否则,根据损失函数进入压缩神经网络的反向传播阶段,即根据损失函数更新目标模型,并针对下一个训练图像进行训练,即执行步骤202-205,直到满足上述条件时,结束训练,等待执行步骤206。

本申请对于压缩神经网络的反向训练方法不作限定,可选的,请参照图2b所提供的单层神经网络运算方法的流程示意图,图2b可应用于图2c所示的用于执行压缩神经网络反向训练装置的结构示意图。

如图2c所示,该装置包括指令缓存单元21、控制器单元22、直接内存访问单元23、h树模块24、主运算模块25和多个从运算模块26,上述装置可通过硬件电路(例如专用集成电路asic)实现。

其中,指令缓存单元21通过直接内存访问单元23读入指令并缓存读入的指令;控制器单元22从指令缓存单元21中读取指令,将指令译成控制其他模块行为的微指令,所述其他模块例如直接内存访问单元23、主运算模块25和从运算模块26等;直接内存访问单元23能够访存外部地址空间,直接向装置内部的各个缓存单元读写数据,完成数据的加载和存储。

图2d示意性示出了h树模块24的结构,如图2d所示,h树模块24构成主运算模块25和多个从运算模块26之间的数据通路,并具有h树型的结构。h树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在神经网络反向运算过程中,下游两个节点返回的向量会在当前节点相加成一个向量并返回给上游节点。在每层人工神经网络开始计算的阶段,主运算模块25内的输入梯度通过h树模块24发送给各个从运算模块26;当从运算模块26的计算过程完成后,每个从运算模块26输出的输出梯度向量部分和会在h树模块24中逐级两两相加,即对所有输出梯度向量部分和求和,作为最终的输出梯度向量。

图2e示意性示出了主运算模块25的结构,如图2e所示,主运算模块25包括运算单元251、数据依赖关系判断单元252和神经元缓存单元253。

其中,神经元缓存单元253用于缓存主运算模块25在计算过程中用到的输入数据和输出数据。运算单元251完成主运算模块的各种运算功能。数据依赖关系判断单元252是运算单元251读写神经元缓存单元253的端口,同时能够保证对神经元缓存单元253中数据的读写不存在一致性冲突。具体地,数据依赖关系判断单元252判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。例如,所有发往数据依赖关系单元252的微指令都会被存入数据依赖关系单元252内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。同时,数据依赖关系判断单元252也负责从神经元缓存单元253读取输入梯度向量通过h树模块24发送给从运算模块26,而从运算模块26的输出数据通过h树模块24直接发送给运算单元251。控制器单元22输出的指令发送给运算单元251和依赖关系判断单元252,来控制其行为。

图2f示意性示出运算模块26的结构,如图2f所示,每个从运算模块26包括运算单元261、数据依赖关系判定单元262、神经元缓存单元263、权值缓存单元264和权值梯度缓存单元265。

其中,运算单元261接收控制器单元22发出的微指令并进行算数逻辑运算。

数据依赖关系判断单元262负责计算过程中对缓存单元的读写操作。数据依赖关系判断单元262保证对缓存单元的读写不存在一致性冲突。具体地,数据依赖关系判断单元262判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。例如,所有发往数据依赖关系单元262的微指令都会被存入数据依赖关系单元262内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。

神经元缓存单元263缓存输入梯度向量数据以及该从运算模块26计算得到的输出梯度向量部分和。

权值缓存单元264缓存该从运算模块26在计算过程中需要的权值向量。对于每一个从运算模块,都只会存储权值矩阵中与该从运算模块26相对应的列。

权值梯度缓存单元265缓存相应从运算模块在更新权值过程中需要的权值梯度数据。每一个从运算模块26存储的权值梯度数据与其存储的权值向量相对应。

从运算模块26实现每层人工神经网络反向训练计算输出梯度向量的过程中可以并行的前半部分以及权值的更新。以人工神经网络全连接层(mlp)为例,过程为out_gradient=w*in_gradient,其中权值矩阵w和输入梯度向量in_gradient的乘法可以划分为不相关的并行计算子任务,out_gradient与in_gradient是列向量,每个从运算模块只计算in_gradient中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在h树中逐级两两相加得到最后的结果。所以计算过程变成了并行的计算部分和的过程和后面的累加的过程。每个从运算模块26计算出输出梯度向量的部分和,所有的部分和在h树模块24中完成求和运算得到最后的输出梯度向量。每个从运算模块26同时将输入梯度向量和正向运算时每层的输出值相乘,计算出权值的梯度,以更新本从运算模块26存储的权值。正向运算和反向训练是神经网络算法的两个主要过程,神经网络要训练(更新)网络中的权值,首先需要计算输入向量在当前权值构成的网络中的正向输出,这是正向过程,然后根据输出值与输入向量本身的标注值之间的差值,反向逐层训练(更新)每层的权值。在正向计算过程中会保存每一层的输出向量以及激活函数的导数值,这些数据是反向训练过程所需要的,所以在反向训练开始时,这些数据已经保证存在。正向运算中每层的输出值是反向运算开始时已有的数据,可以通过直接内存访存单元缓存在主运算模块中并通过h树发送给从运算模块。主运算模块25基于输出梯度向量进行后续计算,例如将输出梯度向量乘以正向运算时的激活函数的导数得到下一层的输入梯度值。正向运算时的激活函数的导数是在反向运算开始时已有的数据,可以通过直接内存访存单元缓存在主运算模块中。

根据本发明实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括config指令、compute指令、io指令、nop指令、jump指令和move指令,其中:

config指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;

compute指令完成每层人工神经网络的算术逻辑计算;

io指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;

nop指令负责清空当前装至内部所有微指令缓存队列中的微指令,保证nop指令之前的所有指令全部指令完毕。nop指令本身不包含任何操作;

jump指令负责控制器将要从指令缓存单元读取的下一条指令地址的跳转,用来实现控制流的跳转;

move指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。

图2g为本申请实施例所提供的压缩神经网络反向训练的示例框图。计算输出梯度向量的过程为out_gradient=w*in_gradient,其中权值矩阵w和输入梯度向量in_gradient的矩阵向量乘法可以划分为不相关的并行计算子任务,每个从运算模块26计算出输出梯度向量的部分和,所有的部分和在h树模块24中完成求和运算得到最后的输出梯度向量。图2g中上一层的输出梯度向量inputgradient乘以对应的激活函数导数得到本层的输入数据,再与权值矩阵相乘得到输出梯度向量。计算权值更新梯度的过程为dw=x*in_gradient,其中每个从运算模块26计算本模块对应部分的权值的更新梯度。从运算模块26将输入梯度和正向运算时的输入神经元相乘计算出权值更新梯度dw,然后使用w、dw和上一次更新权值时使用的权值更新梯度dw’根据指令设置的学习率更新权值w。

参考图2g所示,inputgradient(图2g中的[inputgradient0,…,inputgradient3])是第n+1层的输出梯度向量,该向量首先要与正向运算过程中第n层的导数值(图2g中的[f’(out0),…,f’(out3)])相乘,得到第n层的输入梯度向量,该过程在主运算模块5中完成,由h树模块24发往从运算模块26,暂存在从运算模块26的神经元缓存单元263中。然后,输入梯度向量与权值矩阵相乘得到第n层的输出梯度向量。在这个过程中,第i个从运算模块计算输入梯度向量中第i个标量和权值矩阵中列向量[w_i0,…,w_in]的乘积,得到的输出向量在h树模块24中逐级两两相加得到最后的输出梯度向量outputgradient(图2g中的[outputgradient0,…,outputgradient3])。

同时,从运算模块26还需要更新本模块中存储的权值,计算权值更新梯度的过程为dw_ij=x_j*in_gradient_i,其中x_j是正向运算时第n层的输入(即第n-1层的输出)向量的第j个元素,in_gradient_i是反向运算第n层的输入梯度向量(即图2g中inputgradient与导数f’的乘积)的第i个元素。正向运算时第n层的输入是在反向训练开始时就存在的数据,通过h树模块24送往从运算模块26并暂存在神经元缓存单元263中。则,在从运算模块26中,在完成输出梯度向量部分和的计算后,将输入梯度向量第i个标量和正向运算第n层的输入向量相乘,得到更新权值的梯度向量dw并据此更新权值。

如图2b所示,在指令缓存单元的首地址处预先存入一条io指令;控制器单元从指令缓存单元的首地址读取该条io指令,根据译出的微指令,直接内存访问单元从外部地址空间读取与该单层人工神经网络反向训练有关的所有指令,并将其缓存在指令缓存单元中;控制器单元接着从指令缓存单元读入下一条io指令,根据译出的微指令,直接内存访问单元从外部地址空间读取主运算模块需要的所有数据至主运算模块的神经元缓存单元,所述数据包括之前正向运算时的输入神经元和激活函数导数值以及输入梯度向量;控制器单元接着从指令缓存单元读入下一条io指令,根据译出的微指令,直接内存访问单元从外部地址空间读取从运算模块需要的所有权值数据和权值梯度数据,并分别存储到相应的从运算模块的权值缓存单元和权值梯度缓存单元;控制器单元接着从指令缓存单元读入下一条config指令,运算单元根据译出的微指令里的参数配置运算单元内部寄存器的值,包括该层神经网络计算需要的各种常数,本层计算的精度设置、更新权值时的学习率等;控制器单元接着从指令缓存单元读入下一条compute指令,根据译出的微指令,主运算模块通过h树模块将输入梯度向量和正向运算时的输入神经元发给各从运算模块,所述输入梯度向量和正向运算时的输入神经元存至从运算模块的神经元缓存单元;根据compute指令译出的微指令,从运算模块的运算单元从权值缓存单元读取权值向量(即该从运算模块存储的权值矩阵的部分列),完成权值向量和输入梯度向量的向量乘标量运算,将输出向量部分和通过h树返回;同时从运算模块将输入梯度向量与输入神经元相乘,得到权值梯度存至权值梯度缓存单元;在h树模块中,各从运算模块返回的输出梯度部分和被逐级两两相加得到完整的输出梯度向量;主运算模块得到h树模块的返回值,根据compute指令译出的微指令,从神经元缓存单元读取正向运算时的激活函数导数值,将导数值乘以返回的输出向量,得到下一层反向训练的输入梯度向量,将其写回至神经元缓存单元;控制器单元接着从指令缓存单元读入下一条compute指令,根据译出的微指令,从运算模块从权值缓存单元读取权值w,从权值梯度缓存单元读取本次的权值梯度dw和上一次更新权值使用的权值梯度dw’,更新权值w;控制器单元接着从指令缓存单元读入下一条io指令,根据译出的微指令,直接内存访问单元将神经元缓存单元中的输出梯度向量存至外部地址空间指定地址,运算结束。

对于多层人工神经网络,其实现过程与单层神经网络类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将主运算模块中计算出的输出梯度向量作为下一层训练的输入梯度向量进行如上的计算过程,指令中的权值地址和权值梯度地址也会变更至本层对应的地址。

通过采用用于执行神经网络反向训练装置,有效提高了对多层人工神经网络正向运算的支持。且采用针对多层神经网络反向训练的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。

206:获取所述第一分辨率的目标原始图像,基于压缩神经网络模型对所述目标原始图像进行压缩得到所述第二分辨率的目标压缩图像。

其中,目标原始图像是与训练图像的标签信息的类型一致的图像(属于相同数据集的图像)。若损失函数收敛于第一阈值或训练次数大于或等于第二阈值,压缩神经网络完成训练,可直接输入压缩神经网络进行图像压缩得到目标压缩图像,且该目标压缩图像可被识别神经网络识别。

可选的,在所述基于压缩神经网络模型对所述目标原始图像进行压缩得到所述第二分辨率的目标压缩图像之后,所述方法还包括:基于所述识别神经网络模型对所述目标压缩图像进行识别得到所述目标原始图像的标签信息,并存储所述目标原始图像的标签信息。

也就是说,在压缩神经网络训练完成之后,可对基于识别神经网络模型对压缩图像进行识别,提高了人工识别标签信息的效率和准确率。

207:根据所述损失函数对所述目标模型进行更新得到更新模型,将所述更新模型作为所述目标模型,将下一个训练图像作为所述原始图像,执行步骤202。

可以理解,通过已经训练完成得到的识别神经网络模型得到的参考标签值和原始图像包括的目标标签值获取损失函数,在损失函数满足预设条件或压缩神经网络当前的训练次数超过预设阈值时完成训练,否则通过训练压缩神经网络反复调整其权值,即对同一个图像中每一像素所表示的图像内容进行调整,减少压缩神经网络的损失。并通过训练完成得到的压缩神经网络模型进行图像压缩,提高了图像压缩的有效性,从而便于提高识别的准确率。

请参见图3,图3是本申请实施例提供的一种图像压缩装置的结构示意图,如图3所示,上述装置300包括:处理器301、与处理器301连接的存储器302。

在本申请实施例中,存储器302用于存储第一阈值、第二阈值、压缩神经网络当前的神经网络模型和训练次数、所述压缩神经网络的压缩训练图集和所述压缩训练图集中每一训练图像的标签信息、识别神经网络模型、压缩神经网络模型,将所述压缩神经网络当前的神经网络模型作为目标模型,所述压缩神经网络模型为所述压缩神经网络训练完成时对应的目标模型,所述识别神经网络模型为识别神经网络训练完成时对应的神经网络模型。

处理器301用于获取第一分辨率的原始图像,所述原始图像为所述压缩训练图集中的任一训练图像,将所述原始图像的标签信息作为目标标签信息;基于所述目标模型对所述原始图像进行压缩,得到第二分辨率的压缩图像,所述第二分辨率小于所述第一分辨率;基于所述识别神经网络模型对所述压缩图像进行识别,得到参考标签信息;根据所述目标标签信息与所述参考标签信息获取损失函数;在所述损失函数收敛于所述第一阈值,或所述训练次数大于或等于所述第二阈值时,获取所述第一分辨率的目标原始图像,确认所述目标模型为所述压缩神经网络模型;基于所述压缩神经网络模型对所述目标原始图像进行压缩,得到所述第二分辨率的目标压缩图像。

可选的,所述处理器301还用于在所述损失函数未收敛于所述第一阈值,或所述训练次数小于所述第二阈值时,根据所述损失函数对所述目标模型进行更新,得到更新模型,将所述更新模型作为所述目标模型,将下一个训练图像作为所述原始图像,执行所述获取第一分辨率的原始图像的步骤。

可选的,所述处理器301具体用于对所述压缩图像进行预处理,得到待识别图像;基于所述识别神经网络模型对所述待识别图像进行识别,得到所述参考标签信息。

可选的,所述预处理包括尺寸处理,所述存储器302还用于存储所述识别神经网络的基本图像大小;所述处理器301具体用于在所述压缩图像的图像大小小于所述基本图像大小时,按照所述基本图像大小对所述压缩图像进行填充像素点,得到所述待识别图像。

可选的,所述压缩训练图集至少包括识别训练图集,所述处理器301还用于采用所述识别训练图集对所述识别神经网络进行训练,得到所述识别神经网络模型,所述识别训练图集中每一训练图像至少包括与所述目标标签信息的类型一致的标签信息。

可选的,所述处理器301还用于基于所述识别神经网络模型对所述目标压缩图像进行识别,得到所述目标原始图像的标签信息;

所述存储器302还用于存储所述目标原始图像的标签信息。

可选的,所述压缩训练图集包括多个维度,所述处理器301具体用于基于所述目标模型对所述原始图像进行识别,得到多个图像信息,每一维度对应一个图像信息;基于所述目标模型和所述多个图像信息对所述原始图像进行压缩,得到所述压缩图像。

可以理解,基于目标模型获取原始图像的压缩图像,基于识别神经网络模型获取压缩图像的参考标签信息,根据原始图像包括的目标标签信息与参考标签信息获取损失函数,在损失函数收敛于第一阈值或压缩神经网络当前的训练次数大于或等于第二阈值时,即完成用于图像压缩的压缩神经网络的训练,将目标模型作为压缩神经网络模型,可基于压缩神经网络模型获取目标原始图像的目标压缩图像。也就是说,通过已经训练完成得到的识别神经网络模型得到的参考标签值和原始图像包括的目标标签值获取损失函数,在损失函数满足预设条件或压缩神经网络当前的训练次数超过预设阈值时完成训练,否则通过训练压缩神经网络反复调整其权值,即对同一个图像中每一像素所表示的图像内容进行调整,减少压缩神经网络的损失,提高了图像压缩的有效性,从而便于提高识别的准确率。

在一个实施例里,本申请公开了一个电子装置,包括上述图像压缩装置。

在一个实施例里,本申请公开了一个电子装置,如图4所示,上述电子装置400包括处理器401、存储器402、通信接口403以及一个或多个程序404,其中,一个或多个程序404被存储在存储器中402,并且被配置由处理器401执行,程序404包括用于执行上述图像压缩方法中所描述的部分或全部步骤的指令。

上述电子装置包括但不限于机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶合、可编程的消费电子设备、网络个人计算机(personalcomputer,pc)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

在本发明的另一实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时使上述处理器执行图像压缩方法中所描述的实现方式。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。

以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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