CN115913245A - 数据编码方法、数据解码方法以及数据处理装置 - Google Patents
数据编码方法、数据解码方法以及数据处理装置 Download PDFInfo
- Publication number
- CN115913245A CN115913245A CN202111163722.5A CN202111163722A CN115913245A CN 115913245 A CN115913245 A CN 115913245A CN 202111163722 A CN202111163722 A CN 202111163722A CN 115913245 A CN115913245 A CN 115913245A
- Authority
- CN
- China
- Prior art keywords
- data
- auxiliary
- reversible flow
- parameter
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请涉及人工智能领域,公开了数据编码方法、数据解码方法以及数据处理装置,其中,数据编码方法和数据解码方法均涉及可逆流模型。其中,可逆流模型包括目标可逆流层,目标可逆流层中的模型参数用于约束在逆向变换处理过程中生成的辅助变量,目标可逆流层对应的运算包括基于模型参数确定的乘法运算和除法运算,该辅助变量为乘法运算的乘积的增量或除法运算产生的余数。由于,在数据编码和数据解码过程中,不仅能够使用乘法运算,还可以在进行除法运算时通过使用辅助变量实现可逆,因此,相比于传统技术中的整数流模型提高了模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
Description
技术领域
本申请实施例涉及人工智能(artificial intelligence,AI)领域,尤其涉及数据编码方法、数据解码方法以及数据处理装置。
背景技术
无损压缩(Lossless Compression)是一种对数据进行压缩的技术。原始数据经过无损压缩之后获得的压缩数据的长度小于原始数据的长度,并且,压缩数据通过解压能够完全恢复为原始数据。目前,无损压缩的核心是寻找原始数据内部的分布规律,根据原始数据内部的规律进行压缩。例如,若原始数据中字母e出现频率远高于字母z,则对e用更短的比特进行表示,就可以采用长度更短的压缩数据来表示前述原始数据。
随着人工智能AI技术的发展,研究人员希望利用AI技术寻找数据内部的更优的分布规律,利用数据内部的分布规律进行压缩,以期望获得更优的无损压缩率。目前,一种常用的利用AI技术寻找数据内部的分布规律的模型为流模型(flow-based models)。具体地,在压缩流程中,流模型将原始数据变换为隐变量,该隐变量具有一定的概率分布,可以根据该隐变量的概率分布进行压缩。在解压流程中,根据前述隐变量的概率分布进行解压,并通过前述流模型恢复成原始数据。
在传统方案中,为了实现无损压缩,一般采用整数流(integer discrete flow,IDF)模型。该整数流模型的输入和输出需要均为整数,并且,使用整数加减运算避免产生浮点数误差,以保证流模型的输入和输出是可逆的。然而,由于前述流模型仅限于加减运算,导致模型表征能力较差,模型概率分布估计较差,进而导致无损压缩的压缩效率较低。
发明内容
本申请实施例提供了一种数据编码方法、数据解码方法以及数据处理装置,用于提升无损压缩的压缩效率。
第一方面,本申请提供了一种数据编码方法,该数据编码方法用在作为压缩端的数据处理装置中。在该方法中,数据处理装置获取待编码数据;然后,采用可逆流模型对该待编码数据进行正向变换处理,得到隐变量;然后,对该隐变量进行编码处理,得到该待编码数据对应的编码数据。
其中,可逆流模型是本申请提出的新的流模型。该可逆流模型包括目标可逆流层,该目标可逆流层对应的运算为可逆运算。其中,该目标可逆流层包括模型参数,该模型参数用于约束在该正向变换处理过程中生成的辅助变量,该目标可逆流层对应的运算包括基于该模型参数确定的乘法运算和除法运算,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。
应理解,该目标可逆流层中的模型参数可以为预配置的参数,也可以是该目标可逆流层基于某种算法计算出的参数,具体此处不做限定。
应理解,该待编码数据可以是图像、视频或者文本的等原始数据。此时,该待编码数据一般为整数数据。该待编码数据也可以为基于图像、视频或者文本的等原始数据进行预处理后的数据。此时,该待编码数据可能是具有一定精度的定点数。
本实施例中,由于用于对待编码数据进行正向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述正向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请不仅能够使用乘法运算,还可以在进行除法运算时通过使用辅助变量实现可逆,因此,相比于传统技术中的整数流模型提高了模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
在一种可能的实施方式中,该可逆流模型包括N个可逆流层,该N个可逆流层包括该目标可逆流层,该N为大于或等于1的整数。该目标可逆流层用于对输入该目标可逆流层的第一数据进行正向变换处理,得到输出该目标可逆流层的第二数据,该第一数据为该乘法运算的乘数,该第二数据为该除法运算的整数商。
也就是说,在正向变换处理过程中,在基于该模型参数确定的乘法运算中,该第一数据作为该乘法运算的乘数,该乘法运算的另一个乘数由该模型参数确定;由于,辅助变量可以作为该乘法运算的乘积的增量,因此,基于前述第一数据与另一个乘数的乘积,再加上前述辅助变量可以获得中间数据。在基于该模型参数确定的除法运算中,该第二数据作为该除法运算的整数商,该除法运算的除数为中间数据,被除数由该模型参数确定。因此,第一数据在输入目标可逆流层之后,经过乘法运算和除法运算等运算处理后,将输出第二数据,该第二数据为目标可逆流层的输出。
其中,该第一数据为该待编码数据或者经过至少一个可逆流层处理后输出的数据,该第二数据为该隐变量或者该第二数据经过至少一个该可逆流层处理后输出的数据为该隐变量。应理解,前述至少一个可逆流层指n个可逆流层,其中,n为大于或等于1且小于N的整数,但是,此时N为大于1的整数。
也就是说,若目标可逆流层为可逆流模型中的第一个可逆流层,则输入该可逆流模型的待编码数据即为第一数据,经过正向变换处理之后,该目标可逆流层输出第二数据。若该可逆流模型仅有一个可逆流层,则前述目标可逆流层输出的第二数据即为隐变量。若该可逆流模型中有多个可逆流层,则前述目标可逆流层输出的第二数据将作为其他的可逆流层的输入,以使得其他的可逆流层对该第二数据进行处理,以使得经过至少一个该可逆流层处理后输出的数据为该隐变量。
类似的,若目标可逆流层为可逆流模型中的最后一个可逆流层,则输入该可逆流模型的待编码数据经过至少一个该可逆流层处理后的输出为前述第一数据,该第一数据作为目标可逆流层的输入,经过正向变换处理之后,该目标可逆流层输出第二数据。由于,该目标可逆流层为可逆流模型中的最后一个可逆流层,则前述目标可逆流层输出的第二数据即为隐变量。
本实施方式中,提出输入该目标可逆流层的第一数据会经过乘法运算,输出该目标可逆流层的第二数据是经过除法运算获得的,因此,相比于仅使用整数加减法的整数流模型来说,本申请的可逆流模型具备更强的模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
在一种可能的实施方式中,该模型参数包括第一参数和第二参数,该第一参数和该第二参数均为正整数,该第一参数与该第二参数不相等;该辅助变量包括第一辅助变量,该第一辅助变量为该乘法运算的乘积的增量。
具体地,该数据处理装置对输入该目标可逆流层的第一数据进行正向变换处理,得到输出该目标可逆流层的第二数据的过程具体可以为:
将该第一数据作为该第一参数的乘数进行乘法运算,得到第一乘积数据;
将该第一辅助变量作用该第一乘积数据的增量进行加法运算,得到中间数据;
将该中间数据作为除数且该第二参数作为被除数进行除法取整运算,得到该第二数据。
也就是说,数据处理装置将第一数据与第一参数进行乘法运算而获得的乘积(即第一乘积数据)与第一辅助变量进行加法运算,得到中间数据;然后,该数据处理装置将中间数据作为除数且该第二参数作为被除数进行除法运算,得到的整数商为第二数据。由此可见,在前述正向变换过程中,第一数据先基于乘法运算和加法运算变换为中间数据,再由该中间数据基于除法取整运算变换为第二数据。由于,第一辅助变量参与了确定中间数据的过程,即第一辅助变量作为该乘法运算的乘积的增量,基于该中间数据进行除法取整运算的整数商才为第二数据,因此,避免了仅用乘法运算而造成的运算不可逆的问题,也避免了仅用加法运算和减法运算而造成的模型表征能力差的问题。
在一种可能的实施方式中,该辅助变量还包括第二辅助变量,该第二辅助变量为该除法运算产生的余数。
具体地,该数据处理装置在输出第二数据的同时,还将以该中间数据为除数且该第二参数为被除数进行除法取余运算,得到该第二辅助变量。其中,该第二辅助变量用于作为该正向变换处理对应的逆向变换处理中的乘法运算的乘积的增量,该第一辅助变量用于作为该逆向变换处理中的除法运算产生的余数。
本实施方式中,提出该目标可逆流模型在正向变换处理中,还将生成第二辅助变量,该第二辅助变量用于作为该正向变换处理对应的逆向变换处理中的乘法运算的乘积的增量。也就是说,在逆向变换处理中,数据处理装置将基于第二辅助变量将第二数据恢复为中间数据,进而将中间数据恢复为第一数据。因此,在正向变换处理中,计算出第二辅助变量,有利于实现将第二数据恢复为第一数据。
在一种可能的实施方式中,该数据处理装置基于第一参数确定第一辅助变量的过程可以为:
数据处理装置先获取输入该目标可逆流层的第一辅助数据;然后,数据处理装置基于该第一辅助数据和该第一参数确定该第一辅助变量。
本实施方式中,提出数据处理装置在基于第一参数确定第一辅助变量的过程中会用到输入该目标可逆流层的第一辅助数据。其中,该第一辅助数据可以为二进制码流。
在一种可能的实施方式中,该数据处理装置可以基于熵编码的方式(例如,均匀分布熵编码)对输入目标可逆流层的辅助数据进行编解码,以使得生成或存储前述辅助变量。
具体地,该数据处理装置基于该第一辅助数据和该第一参数确定该第一辅助变量的过程可以为:
基于该第一参数确定第一均匀分布,该第一均匀分布的端点为0和该第一参数;
采用该第一均匀分布解码该第一辅助数据,得到该第一辅助变量和第二辅助数据,该第一辅助变量的取值位于0到该第一参数之间。
本实施方式中,提出采用第一参数确定的第一均匀分布作为熵编码的概率分布,然后,基于该第一均匀分布解码第一辅助数据,以得到第一辅助变量和第二辅助数据。
在一种可能的实施方式中,该数据处理装置在采用该第一均匀分布解码该第一辅助数据,得到该第一辅助变量和第二辅助数据的过程中,可以通过如下步骤实现:
以该第一辅助数据为除数且该第一参数为被除数,进行除法取余运算,得到该第一辅助变量;
以该第一辅助数据为除数且该第一参数为被除数,进行除法取整运算,得到该第二辅助数据,该第二辅助数据用于在正向变换过程中编码该第二辅助变量,在逆向变换过程中编码该第一辅助变量。
在一种可能的实施方式中,该数据处理装置在生成第二辅助变量后,还将采用熵编码的方式(例如,均匀分布熵编码)编码第二辅助变量,以使得该数据处理装置可以直接存储编码第二辅助变量后获得的辅助数据,而不用直接存储第二辅助变量。
本实施例中,该数据处理装置将采用解码第一辅助数据而获得的第二辅助数据作为编码第二辅助变量的辅助数据。具体地,该数据处理装置将通过如下步骤编码目标可逆流层生成的第二辅助变量:
基于该第二参数确定第二均匀分布,该第二均匀分布的端点为0和该第二参数;
采用该第二均匀分布和该第二辅助数据编码该第二辅助变量,得到第三辅助数据,该第二辅助变量的取值位于0到该第二参数之间;
存储该第三辅助数据,该第三辅助数据用于在该逆向变换处理中解码该第二辅助变量。
本实施方式中,由于数据处理装置采用第二辅助数据编码第二辅助变量,以获得编码了第二辅助变量的第三辅助数据,有利于数据处理装置存储第三辅助数据,以便于在逆向变换处理过程中,数据处理装置采用第三辅助数据解码第二辅助变量。由于,存储第三辅助数据占用的存储空间远小于存储第二辅助变量需要的存储空间,因此,相比于该数据处理装置直接存储第二辅助变量的方案,有利于节省存储空间,提高存储效率。另外,由于第三辅助数据是基于第二辅助数据编码第二辅助变量确定的,而第二辅助数据又是在采用第一辅助数据解码第一辅助变量的过程获得的,因此,存储了第三辅助数据,便间接存储了第二辅助变量和第一辅助变量的对应关系(相当于将第一辅助变量和第二辅助变量对应存储)。
在一种可能的实施方式中,该数据处理装置在采用该第二均匀分布和该第二辅助数据编码该第二辅助变量,得到第三辅助数据的过程中,可以通过如下步骤实现:
将该第二辅助数据与该第二参数进行乘法运算而获得的乘积,与该第二辅助变量进行加法运算,得到该第三辅助数据。
在一种可能的实施方式中,该目标可逆流层还用于:获取第一单调连续函数的定义域中的第一区间和该第一区间在该第一单调连续函数的值域上对应的第二区间,该第一单调连续函数为非线性函数;基于该第一区间和该第二区间采用插值法或二分查找法计算该模型参数。其中,模型参数包括第一参数和第二参数。
本实施方式中,提出目标可逆流层可以是基于非线性函数(例如,第一单调连续函数)构建的,则该数据处理装置可以将该非线性函数拆分为多段,将每一段近似为直线以计算前述第一参数和第二参数。可选的,该数据处理装置可以采用插值算法或二分查找法计算前述第一参数和第二参数。
在一种可能的实施方式中,当该N个可逆流层包括至少两个可逆流层时,该N个可逆流层采用串行的方式排布。其中,第i-1个可逆流层的输出用于作为第i个可逆流层的输入,该i为大于1且不大于N的正整数,第1个可逆流层的输入为该待编码数据,该第N个可逆流层的输出为该隐变量。
本实施方式中,提出可逆流模型中的多个可逆流层是串行排布的,有利于该可逆流模型中各个可逆流层依次对数据进行处理,进而保证在逆向变换处理过程的顺序。
在一种可能的实施方式中,该待编码数据为采用噪声数据对原始数据进行反编码处理而获得的数据,该待编码数据为具有第一预设精度的定点数数据。
该第i个可逆流层还用于在该正向变换处理之前,将基于该具有第一预设精度的定点数数据处理为整数数据,以及将该经该正向变换处理后的整数数据处理为具有该第一预设精度的定点数数据以作为该第i个可逆流层的输出。
应理解,前述噪声数据可以是数据处理装置中已压缩的数据的比特流,还可以是数据处理装置中预存的比特流,具体此处不做限定。本实施方式中,由于采用噪声数据对原始数据进行反编码处理,能够增大数据处理装置计算的数据的数值,有利于提升后续变换过程的处理精度,也有利于提升压缩率。
在一种可能的实施方式中,该N个可逆流层还包括可逆卷积层,该可逆卷积层包括卷积核和该目标可逆流层,该卷积核为以该待编码数据的通道数为阶数的方阵;
该可逆卷积层用于对该卷积核进行LU(LU Factorization)分解,得到目标矩阵,该目标矩阵为对角阵,该对角阵的对角线上的非零元素用于确定该可逆卷积层中该目标可逆流层的模型参数。
本实施方式中,提出在可逆流模型中设置可逆卷积层,采用1x1卷积层与目标可逆流层结合。具体地,将1x1卷积层转化成连续上三角阵、对角阵、下三角阵和置乱阵的矩阵乘法运算,对四种矩阵乘法分别使用迭代计算、基于目标可逆流层的数值可逆线性流变换处理、迭代计算、元素重排。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
在一种可能的实施方式中,该N个可逆流层还包括耦合层,该耦合层包括该目标可逆流层;
该耦合层用于将输入该耦合层的数据按预设维度划分为至少两部分数据,并将该至少两部分数据中的至少一部分数据作为该目标可逆流层的输入进行处理,得到该耦合层的输出。
应理解,耦合层可以包含神经网络,该神经网络用于分维度对输入该耦合层的数据进行处理。该神经网络可以包括多种类型。例如,卷积神经网络(convolutional neuralnetwork,CNN)、深度神经网络(deep neural network,DNN)、循环神经网络(recurrentneural networks,RNN)或其他神经网络等。具体此处不做限定。
本实施方式中,提出在可逆流模型中设置耦合层,该耦合层能够将输入该耦合层的数据按照维度划分,并仅对其中一部分维度的数据采用目标可逆流层的变换方式进行变换处理。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
第二方面,本申请提供了一种数据解码方法,该数据解码方法用在作为解压端的数据处理装置中。在该方法中,数据处理装置获取编码数据;然后,对该编码数据进行解码处理,得到隐变量;然后,采用可逆流模型对该隐变量进行逆向变换处理,得到解码输出。
其中,可逆流模型是本申请提出的新的流模型。应理解,数据编码方法和数据解码方法采用的是相同的可逆流模型。该可逆流模型包括目标可逆流层,该目标可逆流层包括模型参数,该模型参数用于约束在该逆向变换处理过程中生成的辅助变量,该目标可逆流层对应的运算包括基于该模型参数确定的乘法运算和除法运算,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。
应理解,该目标可逆流层中的模型参数可以为预配置的参数,也可以是该目标可逆流层基于某种算法计算出的参数,具体此处不做限定。
应理解,该待编码数据可以是图像、视频或者文本的等原始数据。此时,该待编码数据一般为整数数据。该待编码数据也可以为基于图像、视频或者文本的等原始数据进行预处理后的数据。此时,该待编码数据可能是具有一定精度的定点数。
本实施例中,数据处理装置将对解码后的隐变量进行逆向变换处理,该逆向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述逆向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请能够针对正向变换处理过程中的乘法运算,采用辅助变量进行除法运算,以将隐变量恢复为正向变换处理前的数据(即前述数据编码方法中的待编码数据)。因此,不仅能够保证变换处理的可逆运算,还能够提高模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
在一种可能的实施方式中,该可逆流模型包括N个可逆流层,该N个可逆流层包括该目标可逆流层,该N为大于或等于1的整数。该目标可逆流层用于对输入该目标可逆流层的第二数据进行逆向变换处理,得到输出该目标可逆流层的第一数据,该第二数据为该乘法运算的乘数,该第一数据为该除法运算的整数商。
也就是说,在逆向变换处理过程中,在基于该模型参数确定的乘法运算中,该第二数据作为该乘法运算的乘数,该乘法运算的另一个乘数由该模型参数确定;由于,辅助变量可以作为该乘法运算的乘积的增量,因此,基于前述第二数据与另一个乘数的乘积,再加上前述辅助变量可以获得中间数据。在基于该模型参数确定的除法运算中,该第一数据作为该除法运算的整数商,该除法运算的除数为中间数据,被除数由该模型参数确定。因此,第二数据在输入目标可逆流层之后,经过乘法运算和除法运算等运算处理后,将输出第一数据,该第一数据为目标可逆流层的输出。
应理解,在正向变换处理过程的乘法运算所使用的模型参数(例如,第一参数)和辅助变量(例如,第一辅助变量)将应用于逆向变换处理过程的除法运算中;在正向变换处理过程的除法运算所使用的模型参数(例如,第二参数)和辅助变量(例如,第二辅助变量)将应用于逆向变换处理过程的乘法运算中。
其中,该第二数据为该隐变量或者经过至少一个该可逆流层处理后输出的数据,该第一数据为该解码输出或者该第一数据经过至少一个该可逆流层处理后的输出为该解码输出。应理解,前述至少一个可逆流层指n个可逆流层,其中,n为大于或等于1且小于N的整数,但是,此时N为大于1的整数。
本实施方式中,提出输入该目标可逆流层的第二数据会经过乘法运算,输出该目标可逆流层的第一数据是经过除法运算获得的,因此,相比于仅使用整数加减法的整数流模型来说,本申请的可逆流模型具备更强的模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
在一种可能的实施方式中,该模型参数包括第一参数和第二参数,该第一参数和该第二参数均为正整数,该第一参数与该第二参数不相等;该辅助变量包括第二辅助变量,该第二辅助变量为该乘法运算的乘积的增量。
具体地,该数据处理装置对输入该目标可逆流层的第二数据进行逆向变换处理,得到输出该目标可逆流层的第一数据的过程具体可以为:
将该第二数据作为该第二参数的乘数进行乘法运算,得到第二乘积数据;
将该第二辅助变量作用该第二乘积数据的增量进行加法运算,得到中间数据;
将该中间数据作为除数且该第一参数作为被除数进行除法取整运算,得到该第一数据。
也就是说,数据处理装置将第二数据与第二参数进行乘法运算而获得的乘积(即第二乘积数据)与第二辅助变量进行加法运算,得到中间数据;然后,该数据处理装置将中间数据作为除数且该第一参数作为被除数进行除法运算,得到的整数商为第一数据。由此可见,在前述正向变换过程中,第二数据先基于乘法运算和加法运算变换为中间数据,再由该中间数据基于除法取整运算变换为第一数据。由于,第二辅助变量参与了确定中间数据的过程,即第二辅助变量作为该乘法运算的乘积的增量,基于该中间数据进行除法取整运算的整数商才为第一数据,因此,避免了仅用乘法运算而造成的运算不可逆的问题,也避免了仅用加法运算和减法运算而造成的模型表征能力差的问题。
应理解,目标可逆流层在逆向变换处理过程中使用的模型参数和辅助变量的顺序,与正向变换处理过程中使用的模型参数和辅助变量的顺序相反。
在一种可能的实施方式中,该辅助变量还包括第一辅助变量,该第一辅助变量为该除法运算产生的余数。
具体地,该数据处理装置在输出第二数据的同时,还将以该中间数据为除数且该第一参数为被除数进行除法取余运算,得到该第一辅助变量。
本实施方式中,提出该目标可逆流模型在逆向变换处理中,还将生成第一辅助变量,以使得数据处理装置基于第一辅助变量回复与该第一辅助变量相关的数据(例如,第一辅助数据)。
在一种可能的实施方式中,该数据处理装置基于第二参数确定第二辅助变量的过程可以为:
数据处理装置先获取输入该目标可逆流层的第三辅助数据,该第三辅助数据为在该逆向变换处理对应的正向变换处理中存储的辅助数据;然后,数据处理装置基于该第三辅助数据和该第二参数确定该第二辅助变量。
本实施例中,提出数据处理装置采用在该逆向变换处理对应的正向变换处理中存储的第三辅助数据确定第二辅助变量,有利于从第三辅助数据中恢复出第二辅助变量,以确保在逆向变换处理过程中使用的第二辅助变量的取值与在正向变换处理过程中使用的第二辅助变量的取值是一致的。
在一种可能的实施方式中,若在正向变换处理过程中,该数据处理装置是基于熵编码的方式(例如,均匀分布熵编码)对输入目标可逆流层的辅助数据进行编解码,以使得生成或存储前述辅助变量。此时,在正向变换处理过程中,该数据处理装置将采用相同的均匀分布编解码辅助数据。
具体地,该数据处理装置基于该第三辅助数据和该第二参数确定该第二辅助变量的过程可以为:
基于该第二参数确定第二均匀分布,该第二均匀分布的端点为0和该第二参数;
采用该第二均匀分布解码该第三辅助数据,得到该第二辅助变量和该第二辅助数据,该第二辅助变量的取值位于0到该第二参数之间。
本实施方式中,提出采用第二参数确定的第二均匀分布作为熵编码的概率分布,然后,基于该第二均匀分布解码第三辅助数据,以得到第二辅助变量和第二辅助数据。
在一种可能的实施方式中,该数据处理装置在采用该第二均匀分布解码该第三辅助数据,得到该第二辅助变量和该第二辅助数据的过程中,可以通过如下步骤实现:
以该第三辅助数据为除数且该第二参数为被除数,进行除法取余运算,得到该第二辅助变量;
以该第三辅助数据为除数且该第二参数为被除数,进行除法取整运算,得到该第二辅助数据,该第二辅助数据用于在正向变换过程中编码该第二辅助变量,在逆向变换过程中编码该第一辅助变量。
在一种可能的实施方式中,该数据处理装置在生成第二辅助变量后,还将采用熵编码的方式(例如,均匀分布熵编码)编码第二辅助变量,以使得该数据处理装置可以直接存储编码第二辅助变量后获得的辅助数据,而不用直接存储第二辅助变量。
本实施例中,该数据处理装置将采用解码第三辅助数据而获得的第二辅助数据作为编码第一辅助变量的辅助数据。具体地,该数据处理装置将通过如下步骤编码目标可逆流层生成的第一辅助变量:
基于该第一参数确定第一均匀分布,该第一均匀分布的端点为0和该第一参数;
采用该第一均匀分布和该第二辅助数据编码该第一辅助变量,得到第一辅助数据,该第一辅助变量的取值位于0到该第一参数之间;
存储该第一辅助数据,该第一辅助数据为该逆向变换处理对应的正向变换处理中输入该目标可逆流层的辅助数据。
本实施方式中,由于数据处理装置采用第二辅助数据编码第一辅助变量,以获得编码了第一辅助变量的第一辅助数据,有利于数据处理装置存储第一辅助数据。由于,存储第一辅助数据占用的存储空间远小于存储第一辅助变量需要的存储空间,因此,相比于该数据处理装置直接存储第一辅助变量的方案,有利于节省存储空间,提高存储效率。另外,生成并存储第一辅助数据,有利于恢复在正向变换处理过程中输入该目标可逆流层的第一辅助数据。
在一种可能的实施方式中,该数据处理装置在采用该第一均匀分布和该第二辅助数据编码该第一辅助变量,得到第一辅助数据的过程中,可以通过如下步骤实现:
将该第二辅助数据与该第一参数进行乘法运算而获得的乘积,与该第一辅助变量进行加法运算,得到该第一辅助数据。
在一种可能的实施方式中,该目标可逆流层还用于:
获取第一单调连续函数的定义域中的第一区间和该第一区间在该第一单调连续函数的值域上对应的第二区间,该第一单调连续函数为非线性函数;基于该第一区间和该第二区间采用插值法或二分查找法计算该模型参数。其中,前述模型参数包括第一参数和第二参数。
本实施方式中,提出目标可逆流层可以是基于非线性函数(例如,第一单调连续函数)构建的,则该数据处理装置可以将该非线性函数拆分为多段,将每一段近似为直线以计算前述第一参数和第二参数。可选的,该数据处理装置可以采用插值算法或二分查找法计算前述第一参数和第二参数。
在一种可能的实施方式中,当该N个可逆流层包括至少两个可逆流层时,该N个可逆流层采用串行的方式排布。其中,第i个可逆流层的输出用于作为第i-1个可逆流层的输入,该i为大于1且不大于N的正整数,第N个可逆流层的输入为该隐变量,该第1个可逆流层的输出为该解码输出。
本实施方式中,提出可逆流模型中的多个可逆流层是串行排布的,有利于该可逆流模型中各个可逆流层依次对数据进行处理。应理解,正向变换处理过程中数据经过各个可逆流层的顺序,与逆向变换处理过程中数据经过各个可逆流层的顺序相反。
在一种可能的实施方式中,该第i个可逆流层还用于在该逆向变换处理之前,将基于该具有第一预设精度的定点数数据处理为整数数据,以及将该经该逆向逆变换处理后的整数数据处理为具有第一预设精度的定点数数据以作为该第i个可逆流层的输出。
在一种可能的实施方式中,该方法还包括:数据处理装置对该第1个可逆流层的输出进行解反编码处理,得到原始数据和噪声数据。
本实施例中,提出若解码输出为采用噪声数据对原始数据进行反编码处理而获得的数据,则该数据处理装置可以通过解反编码处理从前述解码输出分离出噪声数据和原始数据。
在一种可能的实施方式中,该N个串行的可逆流层还包括可逆卷积层,该可逆卷积层包括卷积核和该目标可逆流层,该卷积核为以该待编码数据的通道数为阶数的方阵;
该可逆卷积层用于对该卷积核进行LU分解,得到目标矩阵,该目标矩阵为对角阵,该对角阵的对角线上的非零元素用于确定该可逆卷积层中该目标可逆流层的模型参数。
本实施方式中,提出在可逆流模型中设置可逆卷积层,采用1x1卷积层与目标可逆流层结合。具体地,将1x1卷积层转化成连续上三角阵、对角阵、下三角阵和置乱阵的矩阵乘法运算,对四种矩阵乘法分别使用迭代计算、基于目标可逆流层的数值可逆线性流变换处理、迭代计算、元素重排。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
在一种可能的实施方式中,该N个串行的可逆流层还包括耦合层,该耦合层包括该目标可逆流层;
该耦合层用于将输入该耦合层的数据按预设维度划分为至少两部分数据,并将该至少两部分数据中的至少一部分数据作为该目标可逆流层的输入进行处理,得到该耦合层的输出。
应理解,耦合层可以包含神经网络,该神经网络用于分维度对输入该耦合层的数据进行处理。该神经网络可以包括多种类型。例如,卷积神经网络CNN、深度神经网络DNN、循环神经网络RNN或其他神经网络等。具体此处不做限定。
本实施方式中,提出在可逆流模型中设置耦合层,该耦合层能够将输入该耦合层的数据按照维度划分,并仅对其中一部分维度的数据采用目标可逆流层的变换方式进行变换处理。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
第三方面,本申请提供了一种数据处理装置,该数据处理装置为编码端。具体地,该数据处理装置包括:获取模块、变换处理模块以及编码模块。其中,变换处理模块包括本申请提出的可逆流模型,在编码端该可逆流模型用于对输入该可逆流模型的数据进行正向变换处理。具体地,前述各个功能模块的具体功能如下:
获取模块,用于获取待编码数据;
变换处理模块,用于采用可逆流模型对该待编码数据进行正向变换处理,得到隐变量;其中,该可逆流模型包括目标可逆流层,该目标可逆流层包括模型参数,该模型参数用于约束在该正向变换处理过程中生成的辅助变量,该目标可逆流层对应的运算包括基于该模型参数确定的乘法运算和除法运算,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数;
编码模块,用于对该隐变量进行编码处理,得到该待编码数据对应的编码数据。
本实施例中,由于用于对待编码数据进行正向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述正向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请不仅能够使用乘法运算,还可以在进行除法运算时通过使用辅助变量实现可逆,因此,相比于传统技术中的整数流模型提高了模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
在一种可能的实施方式中,该可逆流模型包括N个可逆流层,该N个可逆流层包括该目标可逆流层,该N为大于或等于1的整数。
该目标可逆流层用于对输入该目标可逆流层的第一数据进行正向变换处理,得到输出该目标可逆流层的第二数据,该第一数据为该乘法运算的乘数,该第二数据为该除法运算的整数商。其中,该第一数据为该待编码数据或者经过至少一个该可逆流层处理后输出的数据,该第二数据为该隐变量或者该第二数据经过至少一个该可逆流层处理后输出的数据为该隐变量。
在一种可能的实施方式中,该模型参数包括第一参数和第二参数,该第一参数和该第二参数均为正整数,该第一参数与该第二参数不相等;该辅助变量包括第一辅助变量,该第一辅助变量为该乘法运算的乘积的增量。
该变换处理模块,具体用于:
将该第一数据作为该第一参数的乘数进行乘法运算,得到第一乘积数据;
将该第一辅助变量作用该第一乘积数据的增量进行加法运算,得到中间数据;
将该中间数据作为除数且该第二参数作为被除数进行除法取整运算,得到该第二数据。
在一种可能的实施方式中,该辅助变量还包括第二辅助变量,该第二辅助变量为该除法运算产生的余数。
该变换处理模块,还用于以该中间数据为除数且该第二参数为被除数进行除法取余运算,得到该第二辅助变量,该第二辅助变量用于作为该正向变换处理对应的逆向变换处理中的乘法运算的乘积的增量,该第一辅助变量用于作为该逆向变换处理中的除法运算产生的余数。
在一种可能的实施方式中,该变换处理模块,还用于:
获取输入该目标可逆流层的第一辅助数据;
基于该第一辅助数据和该第一参数确定该第一辅助变量。
在一种可能的实施方式中,该变换处理模块,具体用于:
基于该第一参数确定第一均匀分布,该第一均匀分布的端点为0和该第一参数;
采用该第一均匀分布解码该第一辅助数据,得到该第一辅助变量和第二辅助数据,该第一辅助变量的取值位于0到该第一参数之间。
在一种可能的实施方式中,该变换处理模块包括第一熵编解码模块,该第一熵编解码模块存储有第一均匀分布,该第一熵编解码模块用于:
以该第一辅助数据为除数且该第一参数为被除数,进行除法取余运算,得到该第一辅助变量;
以该第一辅助数据为除数且该第一参数为被除数,进行除法取整运算,得到该第二辅助数据,该第二辅助数据用于在正向变换过程中编码该第二辅助变量,在逆向变换过程中编码该第一辅助变量。
在一种可能的实施方式中,该变换处理模块,还用于:
基于该第二参数确定第二均匀分布,该第二均匀分布的端点为0和该第二参数;
采用该第二均匀分布和该第二辅助数据编码该第二辅助变量,得到第三辅助数据,该第二辅助变量的取值位于0到该第二参数之间;
存储该第三辅助数据,该第三辅助数据用于在该逆向变换处理中解码该第二辅助变量。
在一种可能的实施方式中,该变换处理模块,该变换处理模块包括第二熵编解码模块,该第二熵编解码模块存储有第二均匀分布,该第二熵编解码模块用于:
将该第二辅助数据与该第二参数进行乘法运算而获得的乘积,与该第二辅助变量进行加法运算,得到该第三辅助数据。
在一种可能的实施方式中,该目标可逆流层还用于:
获取第一单调连续函数的定义域中的第一区间和该第一区间在该第一单调连续函数的值域上对应的第二区间,该第一单调连续函数为非线性函数;
基于该第一区间和该第二区间采用插值法或二分查找法计算该模型参数。
在一种可能的实施方式中,当该N个可逆流层包括至少两个可逆流层时,该N个可逆流层采用串行的方式排布;
其中,第i-1个可逆流层的输出用于作为第i个可逆流层的输入,该i为大于1且不大于N的正整数,第1个可逆流层的输入为该待编码数据,该第N个可逆流层的输出为该隐变量。
在一种可能的实施方式中,该待编码数据为采用噪声数据对原始数据进行反编码处理而获得的数据,该待编码数据为具有第一预设精度的定点数数据;
该第i个可逆流层还用于在该正向变换处理之前,将基于该具有第一预设精度的定点数数据处理为整数数据,以及将该经该正向变换处理后的整数数据处理为具有该第一预设精度的定点数数据以作为该第i个可逆流层的输出。
在一种可能的实施方式中,该N个可逆流层还包括可逆卷积层,该可逆卷积层包括卷积核和该目标可逆流层,该卷积核为以该待编码数据的通道数为阶数的方阵;
该可逆卷积层用于对该卷积核进行LU分解,得到目标矩阵,该目标矩阵为对角阵,该对角阵的对角线上的非零元素用于确定该可逆卷积层中该目标可逆流层的模型参数。
在一种可能的实施方式中,该N个可逆流层还包括耦合层,该耦合层包括该目标可逆流层;
该耦合层用于将输入该耦合层的数据按预设维度划分为至少两部分数据,并将该至少两部分数据中的至少一部分数据作为该目标可逆流层的输入进行处理,得到该耦合层的输出。
需要说明的是,本申请实施例还有多种具体其他实施方式,具体可参见第一方面的具体实施方式和其有益效果,在此不再赘述。
第四方面,本申请提供了一种数据处理装置,该数据处理装置为解码端。具体地,该数据处理装置包括:获取模块、变换处理模块以及解码模块。其中,变换处理模块包括本申请提出的可逆流模型,在解码端该可逆流模型用于对输入该可逆流模型的数据进行逆向变换处理。具体地,前述各个功能模块的具体功能如下:
获取模块,用于获取编码数据;
解码模块,用于对该编码数据进行解码处理,得到隐变量;
变换处理模块,用于采用可逆流模型对该隐变量进行逆向变换处理,得到解码输出;其中,该可逆流模型包括目标可逆流层,该目标可逆流层包括模型参数,该模型参数用于约束在该逆向变换处理过程中生成的辅助变量,该目标可逆流层对应的运算包括基于该模型参数确定的乘法运算和除法运算,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。
本实施例中,数据处理装置将对解码后的隐变量进行逆向变换处理,该逆向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述逆向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请能够针对正向变换处理过程中的乘法运算,采用辅助变量进行除法运算,以将隐变量恢复为正向变换处理前的数据(即前述数据编码方法中的待编码数据)。因此,不仅能够保证变换处理的可逆运算,还能够提高模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
在一种可能的实施方式中,该可逆流模型包括N个可逆流层,该N个可逆流层包括该目标可逆流层,该N为大于或等于1的整数。
该目标可逆流层用于对输入该目标可逆流层的第二数据进行逆向变换处理,得到输出该目标可逆流层的第一数据,该第二数据为该乘法运算的乘数,该第一数据为该除法运算的整数商。其中,该第二数据为该隐变量或者经过至少一个该可逆流层处理后输出的数据,该第一数据为该解码输出或者该第一数据经过至少一个该可逆流层处理后的输出为该解码输出。
在一种可能的实施方式中,该模型参数包括第一参数和第二参数,该第一参数和该第二参数均为正整数,该第一参数与该第二参数不相等;该辅助变量包括第二辅助变量,该第二辅助变量为该乘法运算的乘积的增量。
该变换处理模块,具体用于:
将该第二数据作为该第二参数的乘数进行乘法运算,得到第二乘积数据;
将该第二辅助变量作用该第二乘积数据的增量进行加法运算,得到中间数据;
将该中间数据作为除数且该第一参数作为被除数进行除法取整运算,得到该第一数据。
在一种可能的实施方式中,该辅助变量还包括第一辅助变量,该第一辅助变量为该除法运算产生的余数;
该变换处理模块,还用于:
以该中间数据为除数且该第一参数为被除数进行除法取余运算,得到该第一辅助变量。
在一种可能的实施方式中,该变换处理模块,具体用于:
获取输入该目标可逆流层的第三辅助数据,该第三辅助数据为在该逆向变换处理对应的正向变换处理中存储的辅助数据;
基于该第三辅助数据和该第二参数确定该第二辅助变量。
在一种可能的实施方式中,该变换处理模块,具体用于:
基于该第二参数确定第二均匀分布,该第二均匀分布的端点为0和该第二参数;
采用该第二均匀分布解码该第三辅助数据,得到该第二辅助变量和该第二辅助数据,该第二辅助变量的取值位于0到该第二参数之间。
在一种可能的实施方式中,该变换处理模块包括第二熵编解码模块,该第二熵编解码模块存储有第二均匀分布,该第二熵编解码模块用于:
以该第三辅助数据为除数且该第二参数为被除数,进行除法取余运算,得到该第二辅助变量;
以该第三辅助数据为除数且该第二参数为被除数,进行除法取整运算,得到该第二辅助数据,该第二辅助数据用于在正向变换过程中编码该第二辅助变量,在逆向变换过程中编码该第一辅助变量。
在一种可能的实施方式中,该变换处理模块,还用于:
基于该第一参数确定第一均匀分布,该第一均匀分布的端点为0和该第一参数;
采用该第一均匀分布和该第二辅助数据编码该第一辅助变量,得到第一辅助数据,该第一辅助变量的取值位于0到该第一参数之间;
存储该第一辅助数据,该第一辅助数据为该逆向变换处理对应的正向变换处理中输入该目标可逆流层的辅助数据。
在一种可能的实施方式中,该变换处理模块,该变换处理模块包括第一熵编解码模块,该第一熵编解码模块存储有第一均匀分布,该第一熵编解码模块用于:
将该第二辅助数据与该第一参数进行乘法运算而获得的乘积,与该第一辅助变量进行加法运算,得到该第一辅助数据。
在一种可能的实施方式中,该目标可逆流层还用于:
获取第一单调连续函数的定义域中的第一区间和该第一区间在该第一单调连续函数的值域上对应的第二区间,该第一单调连续函数为非线性函数;
基于该第一区间和该第二区间采用插值法或二分查找法计算该模型参数。
在一种可能的实施方式中,当该N个可逆流层包括至少两个可逆流层时,该N个可逆流层采用串行的方式排布;
其中,第i个可逆流层的输出用于作为第i-1个可逆流层的输入,该i为大于1且不大于N的正整数,第N个可逆流层的输入为该隐变量,该第1个可逆流层的输出为该解码输出。
在一种可能的实施方式中,该第i个可逆流层还用于在该逆向变换处理之前,将基于该具有第一预设精度的定点数数据处理为整数数据,以及将该经该逆向逆变换处理后的整数数据处理为具有第一预设精度的定点数数据以作为该第i个可逆流层的输出。
在一种可能的实施方式中,该解码模块,还用于对该第1个可逆流层的输出进行解反编码处理,得到原始数据和噪声数据。
在一种可能的实施方式中,该N个串行的可逆流层还包括可逆卷积层,该可逆卷积层包括卷积核和该目标可逆流层,该卷积核为以该待编码数据的通道数为阶数的方阵;
该可逆卷积层用于对该卷积核进行LU分解,得到目标矩阵,该目标矩阵为对角阵,该对角阵的对角线上的非零元素用于确定该可逆卷积层中该目标可逆流层的模型参数。
在一种可能的实施方式中,该N个串行的可逆流层还包括耦合层,该耦合层包括该目标可逆流层;
该耦合层用于将输入该耦合层的数据按预设维度划分为至少两部分数据,并将该至少两部分数据中的至少一部分数据作为该目标可逆流层的输入进行处理,得到该耦合层的输出。
需要说明的是,本申请实施例还有多种具体其他实施方式,具体可参见第二方面的具体实施方式和其有益效果,在此不再赘述。
第五方面,本申请提供了一种数据处理装置,该数据处理装置为编码端。该数据处理装置包括存储介质、处理电路以及总线系统;其中,所述存储介质用于存储指令,所述处理电路用于执行存储器中的指令,以执行上述第一方面及第一方面任意一种实施方式所介绍的数据编码方法。
第六方面,本申请提供了一种数据处理装置,该数据处理装置为解码端。该数据处理装置包括存储介质、处理电路以及总线系统;其中,所述存储介质用于存储指令,所述处理电路用于执行存储器中的指令,以执行上述第二方面及第二方面任意一种实施方式所介绍的数据解码方法。
第七方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当该指令在计算机上运行时,以使得计算机执行如前述第一方面或第二方面,以及前述各个方面的各种实施方式中的任一种实施方式所介绍的方法。
第八方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得该计算机执行如前述第一方面或第二方面,以及前述各个方面的各种实施方式中的任一种实施方式所介绍的方法。
第九方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持执行设备或训练设备实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存执行设备或训练设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
从以上技术方案可以看出,本申请实施例具有以下优点:
对于数据编码方法,由于用于对待编码数据进行正向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述正向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请不仅能够使用乘法运算,还可以在进行除法运算时通过使用辅助变量实现可逆,因此,相比于传统技术中的整数流模型提高了模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
对于数据解码方法,数据处理装置将对解码后的隐变量进行逆向变换处理,该逆向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述逆向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请能够针对正向变换处理过程中的乘法运算,采用辅助变量进行除法运算,以将隐变量恢复为正向变换处理前的数据(即前述数据编码方法中的待编码数据)。因此,不仅能够保证变换处理的可逆运算,还能够提高模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请提供的人工智能主体框架的一种结构示意图;
图2为本申请提供的压缩流程和解压流程的一个原理示意图;
图3为本申请中数据编码方法的一个流程图;
图4A为本申请中可逆流模型的一个结构示意图;
图4B为本申请中可逆流模型的另一个结构示意图;
图5为本申请中数据解码方法的一个流程图;
图6A为本申请中可逆流模型的一个结构示意图;
图6B为本申请中可逆流模型的另一个结构示意图;
图7为本申请中目标可逆流层在进行正向变换时的一个流程图;
图8A为本申请中目标可逆流层在进行正向变换时的另一个流程图;
图8B为本申请中目标可逆流层在进行正向变换时的一个示例图;
图9为本申请中目标可逆流层在进行逆向变换时的一个流程图;
图10A为本申请中目标可逆流层在进行逆向变换时的另一个流程图;
图10B为本申请中目标可逆流层在进行逆向变换时的一个示例图;
图11为本申请中数据处理装置的一个实施例示意图;
图12为本申请中数据处理装置的另一个实施例示意图;
图13为本申请中数据处理装置的另一个实施例示意图;
图14为本申请中数据处理装置作为编码端时的一个实施例示意图;
图15为本申请中数据处理装置作为解码端时的一个实施例示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请提供的数据编码方法和数据解码方法可以应用于人工智能AI领域以及涉及人工智能AI的存储领域。如图1所示,为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行介绍。其中,“智能信息链”反映从数据的获取到处理的一列过程。示例性的,前述处理过程可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在前述过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。此外,“IT价值链”表示从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映了人工智能为信息技术产业带来的价值。
下面分别对前述主体框架中的各个部分进行介绍:
(1)基础设施
基础设施用于为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。具体地,前述基础设施可以是具备计算能力的处理电路或智能芯片。示例性的,前述智能芯片包括中央处理器(central processing unit,CPU)、神经网络处理器(neural-network processing unit,NPU)、图形处理器(graphics processing unit,GPU)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程逻辑门阵列(field programmable gate array,FPGA)等硬件加速芯片。此外,前述基础设施还可以是提供云计算或云存储功能的基础平台。具体地,基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。示例性的,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。其中,数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练、机器学习、深度学习、搜索、推理以及决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理以及训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序以及预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力。例如,前述通用的能力可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶、平安城市等。
本申请提供的数据编码方法和数据解码方法可以应用于对上述各种应用领域中需要实现无损压缩的场景中。具体地,可以应用于对图像、视频、文本等数据的无损压缩场景中。
为便于理解,以如图2为例对本申请的应用场景进行介绍。如图2所示,数据处理装置可以获取到待编码数据,该待编码数据可以图像、视频、文本等数据的原始文件或经过预处理后的文件。为便于理解,本示例以前述待编码数据为待压缩存储的图像(后文简称待压缩图像)为例进行介绍。其中,待压缩图像可以是相机拍摄的照片或是从视频中截取的一帧画面。数据处理装置可以通过可逆流模型对获取到的待压缩图像进行处理,将图像数据变换处理为隐变量,且产生隐变量中各点的概率估计。编码器可以通过隐变量中各点的概率估计对提取获得的隐变量进行编码,降低隐变量的编码冗余,进一步降低图像压缩过程中的数据传输量,并将编码得到的编码数据以数据文件的形式保存在对应的存储位置。当用户需要获取上述存储位置中保存的文件时,数据处理装置可以在相应的存储位置获取并加载上述保存的文件,并基于解码器获取到解码的隐变量,通过可逆流模型对隐变量进行逆变换处理,得到经过逆变换处理后重构的图像(即解码输出)。
应理解,本申请所涉及的数据处理装置可以为终端设备或者服务器。具体地,该终端设备可以为手机、平板、笔记本电脑以及智能穿戴设备等,该终端设备可以对获取到的数据(例如图像数据、视频数据或文本数据等)进行压缩处理。示例性的,终端设备可以为虚拟现实(virtual reality,VR)设备或者增强现实(augmented reality,AR)。应理解,本申请实施例还可以应用于其他需要进行数据压缩的场景中,此处不予赘述。本实施例以及后续实施例中,采用数据处理装置这一称谓进行介绍。
基于前述应用场景,下面将先分别对前述数据编码方法和数据解码方法的主要流程进行介绍,再分别对可逆流模型分别在数据编码方法和数据解码方法中对数据的变化处理过程进行介绍:
下面将结合图3对本申请提供的数据编码方法的流程进行介绍,此时,前述数据处理装置作为编码端将执行如下步骤:
步骤301,获取待编码数据。
其中,待编码数据指进行压缩编码前的数据。该待编码数据可以是整数数据,也可以是定点数数据(也被称为浮点数数据)。
在一种可能的实施方式中,该待编码数据可以是图像、视频或者文本的等原始数据。此时,该待编码数据一般为整数数据。示例性的,若待编码数据为图像数据,该待编码数据可以是终端设备通过摄像头拍摄到的图像,也可以是从终端设备内部获得的图像(例如,终端设备的相册中存储的图像,或者,终端设备从云端获取的图像)。应理解,上述图像可以是具有图像压缩需求的图像,本申请并不对待处理图像的来源进行限定。
在另一种可能的实施方式中,该待编码数据也可以为基于图像、视频或者文本的等原始数据进行预处理后的数据。此时,该待编码数据可能是具有一定精度的定点数。示例性的,数据处理装置可以在获取的原始数据之后,采用噪声数据对原始数据进行反编码处理以获得前述待编码数据。此时,该待编码数据为具有第一预设精度的定点数数据。
示例性的,若给定噪声数据的概率分布(例如,噪声数据u的概率分布为q(u|x)δ,且u∈[0,1),其中,δ=2-k,k表示定点数的精度),数据处理装置可以采用反编码技术基于该噪声数据的概率分布解码该噪声数据,得到解码后的噪声数据u,该解码后的噪声数据u为具有第一预设精度的定点数数据(例如,第一预设精度为前述精度k)。然后,该数据处理装置将前述原始数据与解码后的噪声数据求和(即计算其中,x为原始数据,u为解码后的噪声数据),得到待编码数据该待编码数据为具有第一预设精度的定点数数据。
应理解,前述噪声数据可以是数据处理装置中已压缩的数据的比特流,还可以是数据处理装置中预存的比特流,具体此处不做限定。本实施方式中,由于采用噪声数据对原始数据进行反编码处理,能够增大数据处理装置计算的数据的数值,有利于提升后续变换过程的处理精度,也有利于提升压缩率。
应注意,若待编码数据为视频数据,且视频的大小与模型输入大小不匹配,则需要将视频切割成若干视频块,每块输入大小与模型(可逆流模型)的输入大小相同;如果视频长度大于模型要求的长度,则切割成多段视频输入。如果输入大小或视频长度不足,可以用特定颜色的色块填充到输入大小或特定长度。
应注意,若待编码数据为文本数据,则需要对文本中的字符或者单词构造词向量表示,即压缩过程需要先将文本转换成向量。示例性的,设输入数据w(单词或字符),对应的词向量表示为d维向量x=μ(w)。构造概率分布p(x|w)=N(μ(w),σ2(w))δ(δ=2-dk),(p(w)为w的先验,一般为w的词频)。在数据预处理过程中,给定输入w,利用p(x|w)解码x,利用p(w|x)编码,得到待编码数据。
步骤302,采用可逆流模型对该待编码数据进行正向变换处理,得到隐变量;其中,该可逆流模型包括目标可逆流层,该目标可逆流层包括模型参数,该模型参数用于约束在该正向变换处理过程中生成的辅助变量,该目标可逆流层对应的运算包括基于该模型参数确定的乘法运算和除法运算,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。
其中,可逆流模型是本申请提出的新的流模型。目标可逆流层是本申请提出的可逆流模型特有的层。由于,目标可逆流层能够实现可逆运算,以使得该目标可逆流层和/或该目标可逆流层的变形层组成的可逆流模型便能够实现可逆运算。
本实施例中,该可逆流模型包括多个可逆流层,多个可逆流层多个可逆流层采用串行的排布方式依次对数据进行处理。而前述目标可逆流层可以是前述多个可逆流层中的一个可逆流层,也可以是前述多个可逆流层中的一个可逆流层的组成部分。下面将分别对两种情况进行介绍:
在一种可能的实施方式中,该目标可逆流层为可逆流模型中众多可逆流层中的一个可逆流层。具体地,该可逆流模型可以包括N个可逆流层,该N个可逆流层包括前述目标可逆流层,其中,N为大于或等于1的整数。可选的,当前N个可逆流层包括至少两个可逆流层时,前述N个可逆流层可以采用串行的排布方式。
示例性的,如图4A所示,该可逆流模型包括N个串行的可逆流层,该N为大于1的整数。其中,第i-1个可逆流层的输出用于作为第i个可逆流层的输入,第i个可逆流层的输出用于作为第i+1个可逆流层的输入,该i为大于等于1且不大于N的正整数。例如,第1个可逆流层(即可逆流层1)的输入为该待编码数据,第1个可逆流层(即可逆流层1)的输出用于作为第2个可逆流层(即可逆流层2)的输入,第2个可逆流层(即可逆流层2)的输出用于作为第3个可逆流层(即可逆流层3)的输入,以此类推,该第N个可逆流层(即可逆流层N)的输出为该隐变量。该N个串行的可逆流层包括该目标可逆流层。在图4A所示示例中,该目标可逆流层可以是图4A中N个可逆流层中的一个可逆流层,例如,可逆流层2为目标可逆流层。当然,前述N个可逆流层可以包括多个目标可逆流层,例如,可逆流层2、可逆流层4和可逆流层6均为目标可逆流层,即前述N个可逆流层中包含3个目标可逆流层。
在另一种可能的实施方式中,该目标可逆流层为可逆流模型中的众多可逆流层中的一个可逆流层的组成部分。示例性的,该目标可逆流层可以是图4A中某一个可逆流层中组成部分。此时,可逆流模型中的可逆流层除了包含前述目标可逆流层之外,还可以包括其他模型和/或算子,以构成该目标可逆流层的变形层。具体地,该目标可逆流层的变形层可以为可逆卷积层或耦合层。此时,可逆流模型除了包括目标可逆流层之外,还包括可逆卷积层和/或耦合层。关于可逆卷积层和耦合层的具体结构将会在后文图进行介绍,此处不予赘述。
应理解,前述不同种类的可逆流层(即目标可逆流层、可逆卷积层和耦合层)可以进行组合堆叠,以提高可逆流模型的变换处理能力。具体地,该可逆流模型可以包括至少一个目标可逆流层、至少一个可逆卷积层以及至少一个耦合层。示例性的,可以采取目标可逆流层分别与耦合层和可逆卷积层交错堆叠的方式构建可逆流模型。以图4B为例,该可逆流模型包括目标可逆流层、耦合层和可逆卷积层。其中,待编码数据作为目标可逆流层1的输入,该目标可逆流层1的输出作为耦合层的输入,该耦合层的输出作为目标可逆流层2的输入,目标可逆流层2的输出作为可逆卷积层的输入,以此类推,经过目标可逆流层n的处理,输出隐变量。
应理解,图4B仅仅为众多可逆流层堆叠的一种示例,在实际应用中,可以基于实际需求调整各个可逆流层的堆叠顺序,本申请不对前述各个可逆流层的堆叠顺序进行限定,也不再一一举例介绍。
本实施例中,该目标可逆流层用于实现输入该目标可逆流层的数据(为便于介绍,后文称为第一数据)与该目标可逆流层输出的数据(为便于介绍,后文称为第二数据)之间的可逆运算。其中,该第一数据为该待编码数据或者经过至少一个该可逆流层(例如,N个可逆流层中的n个可逆流层,其中,n为大于1且小于N的整数)处理后输出的数据,该第二数据为该隐变量或者该第二数据经过至少一个该可逆流层处理后输出的数据为该隐变量。
其中,可逆指经正向变换处理后的数据,能够在逆向变换处理作用下恢复为前述正向变换处理之前的数据;也可以理解为,经正向变换处理后的数据再经逆向变换处理后的输出,与前述正向变换处理之前的数据一致。示例性的,前述第一数据经过目标可逆流层的正向变换处理后将获得第二数据,该第二数据再经过前述目标可逆流层的逆向变换处理后将恢复为前述第一数据。此外,可逆运算指前述变换过程中涉及的运算,该运算既可以通过输入数据得到输出数据,也可以通过输出数据反推出输入数据。例如,设输入数据为x,输出数据为z,正向运算为z=f(x),则可以通过逆向运算(例如,x=f-1(z))从输出数据z中恢复x。该目标可逆流层在变换处理过程中至少涉及乘法运算和除法运算。
进一步地,该目标可逆流层包括模型参数,该模型参数用于约束在该正向变换处理过程中生成的辅助变量。也就是说,该目标可逆流层能够基于前述模型参数生成辅助变量,该辅助变量用于辅助经过乘法运算的数据通过除法运算实现可逆运算。由于计算机的乘除运算过程与数学理论的乘除运算过程的计算原理不同,因此,经过乘法运算的数据不一定能够通过除法运算恢复。例如,若数据与某个系数(或参数)在经过乘法运算之后能够获得某个乘积,该乘积再与前述系数进行除法运算而获得的商不一定是前述数据。而本申请中,该目标可逆流层生成的辅助变量能够辅助经过乘法运算的数据通过除法运算实现可逆。具体地,后文将进行详细介绍。
应理解,该辅助变量受目标可逆流层中的模型参数的约束,指该辅助变量的取值范围受模型参数的取值范围的约束。该模型参数可以是预设的参数,也可以是基于神经网络生成的参数,还可以是该可逆流模型基于其他的算法(例如,插值法或二分查找法)确定的参数,具体此处不做限定。
具体地,该目标可逆流层用于对输入该目标可逆流层的第一数据进行正向变换处理,得到输出该目标可逆流层的第二数据,该第一数据为该乘法运算的乘数,该第二数据为该除法运算的整数商。也就是说,在正向变换处理过程中,在基于该模型参数确定的乘法运算中,该第一数据作为该乘法运算的乘数,该乘法运算的另一个乘数由该模型参数确定;由于,辅助变量可以作为该乘法运算的乘积的增量,因此,基于前述第一数据与另一个乘数的乘积,再加上前述辅助变量可以获得中间数据。在基于该模型参数确定的除法运算中,该第二数据作为该除法运算的整数商,该除法运算的除数为中间数据,被除数由该模型参数确定。因此,第一数据在输入目标可逆流层之后,经过乘法运算和除法运算等运算处理后,将输出第二数据,该第二数据为目标可逆流层的输出。具体地,请参阅后文图7和图8A对应的实施例。
本实施例中,当数据处理装置采用可逆流模型将待编码数据变换处理为隐变量之后,该数据处理装置将执行步骤303。
步骤303,对该隐变量进行编码处理,得到该待编码数据对应的编码数据。
本实施例中,隐变量z可以由概率分布pZ(z)表示,可以根据概率分布pZ(z)对隐变量z编码,以得到编码数据。可选的,对隐变量进行编码处理的过程可以是熵编码过程,该熵编码过程可采用现有的熵编码技术,本申请对此不再赘述。
本实施例中,在得到编码数据之后,可以将编码数据发送给用于解压缩的设备。此时,用于解压缩的设备可以对该数据进行解压缩(或者称之为解码)。或者,用于压缩的终端设备可以将编码数据存储在存储设备中,在需要时,该终端设备可以从存储设备中获取编码数据,并可以对该编码数据进行解压缩。
本实施例中,由于用于对待编码数据进行正向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述正向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请不仅能够使用乘法运算,还可以在进行除法运算时通过使用辅助变量实现可逆,因此,相比于传统技术中的整数流模型提高了模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
下面将结合图5对本申请提供的数据解码方法的流程进行介绍,此时,前述数据处理装置作为解码端将执行如下步骤:
步骤501,获取编码数据。
其中,编码数据指采用前述图3对应实施例所介绍的数据编码方法而获得的数据。该编码数据可以是整数数据。
本实施例中,若数据处理装置需要获取压缩前的数据(即前述实施例所介绍的待编码数据),则该数据处理装置可以先获取编码数据,再基于前述编码数据进行相应的解码处理。
在一种可能的实施方式中,图3对应的实施例中的数据处理装置与图5对应的实施例中的数据处理装置位于同一设备中,或者,图3对应的实施例中的数据处理装置与图5对应的实施例中的数据处理装置为同一设备。例如,数据处理装置为具有存储功能的终端设备,该终端设备在按照前述图3对应实施例的方法将待编码数据进行压缩编码,并将获得的编码数据存储至存储器。当需要使用前述待编码数据时,该终端设备从存储器中读取前述编码数据,并按照图5对应实施例的方法对该编码数据进行解压缩。
在另一种可能的实施方式中,图3对应的实施例中的数据处理装置与图5对应的实施例中的数据处理装置位于不同设备中,或者,图3对应的实施例中的数据处理装置与图5对应的实施例中的数据处理装置为不同的设备。例如,在需要传输压缩数据的场景,发送端将按照图3对应实施例的方法将编码数据发送给接收端,接收端按照图5对应实施例的方法将编码数据进行解码,以获得压缩前的数据。
应注意,本申请不限定编码端和解码端是否位于同一设备中。
步骤502,对该编码数据进行解码处理,得到隐变量。
本实施例中,数据处理装置可以对编码数据进行解码,以得到隐变量。具体的,可以利用现有技术中的熵解码技术对编码数据进行解码,得到重建的隐变量。
步骤503,采用可逆流模型对隐变量进行逆向变换处理,得到解码输出;其中,前述可逆流模型包括目标可逆流层,该目标可逆流层包括模型参数,该模型参数用于约束在该逆向变换处理过程中生成的辅助变量,该目标可逆流层对应的运算包括基于该模型参数确定的乘法运算和除法运算,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。
其中,可逆流模型是本申请提出的新的流模型。目标可逆流层是本申请提出的可逆流模型特有的层。该可逆流模型包括多个可逆流层,多个可逆流层多个可逆流层采用串行的排布方式依次对数据进行处理。而前述目标可逆流层可以是前述多个可逆流层中的一个可逆流层,也可以是前述多个可逆流层中的一个可逆流层的组成部分。具体地,该可逆流模型的结构可以参阅前文图4A和图4B对应的相关描述,具体此处不予赘述。应注意,数据处理装置在图3对应的数据编码方法中使用的可逆流模型和图5对应的数据解码方法中使用的可逆流模型是相同的,但是,在数据编码方法中数据流经可逆流模型中各个可逆流层的顺序与在数据解码方法中数据流经可逆流模型中各个可逆流层的顺序相反,也可以理解为,在逆向变换处理过程中数据流经可逆流层的顺序与前述正向变换过程中数据流经可逆流层的顺序相反。
示例性的,若在正向变换过程中,可逆流模型中各个可逆流层对数据的处理顺序如图4A所示,则在逆向变换过程中,可逆流模型中各个可逆流层对数据处理的顺序可以如图6A所示。其中,该可逆流模型包括N个串行的可逆流层,该N为大于1的整数。若在正向变换处理过程中,如图6A左侧的处理顺序,数据依次流经第i-1个可逆流层、第i个可逆流层以及第i+1个可逆流层,则在逆变换处理过程中,如图6A右侧的处理顺序,数据依次流经第i+1个可逆流层、第i个可逆流层以及第i-1个可逆流层。其中,该i为大于等于1且不大于N的正整数。
此外,在正向变换过程中构成可逆流模型的可逆流层的种类,与在正向变换过程中构成可逆流模型的可逆流层的种类,应当相同。示例性的,可逆流模型中不同种类的可逆流层(即目标可逆流层、可逆卷积层和耦合层)按照图4B所示示例进行组合堆叠。例如,在正向变换过程中,如图6B左侧的数据处理顺序,待编码数据作为目标可逆流层1的输入,该目标可逆流层1的输出作为耦合层的输入,该耦合层的输出作为目标可逆流层2的输入,目标可逆流层2的输出作为可逆卷积层的输入,以此类推,经过目标可逆流层n的处理,输出隐变量。那么,在逆向变换过程中,如图6B右侧的数据处理顺序,隐变量作为目标可逆流层n的输入,该目标可逆流层n的输出下一个可逆流层,随后,进入可逆卷积层,可逆卷积层的输出作为目标可逆流层2的输入,目标可逆流2的输出作为耦合层的输入,耦合层的输出作为目标可逆流层1的输入,最后,目标可逆流层1的解码输出即为前述实施例所介绍的待编码数据。
应理解,图6B仅仅为众多可逆流层堆叠的一种示例,在实际应用中,可以基于实际需求调整各个可逆流层的堆叠顺序,本申请不对前述各个可逆流层的堆叠顺序进行限定,也不再一一举例介绍。
该目标可逆流层在逆变换处理过程中,用于将输入该目标可逆流层的第二数据变换处理为前文所介绍的第一数据。其中,该第二数据为该隐变量或者经过至少一个该可逆流层处理后输出的数据,该第一数据为该解码输出或者该第一数据经过至少一个该可逆流层处理后的输出为该解码输出。
具体地,该目标可逆流层用于对输入该目标可逆流层的第二数据进行逆向变换处理,得到输出该目标可逆流层的第一数据,该第二数据为该乘法运算的乘数,该第一数据为该除法运算的整数商。也就是说,在逆向变换处理过程中,在基于该模型参数确定的乘法运算中,该第二数据作为该乘法运算的乘数,该乘法运算的另一个乘数由该模型参数确定;由于,辅助变量可以作为该乘法运算的乘积的增量,因此,基于前述第二数据与另一个乘数的乘积,再加上前述辅助变量可以获得中间数据。在基于该模型参数确定的除法运算中,该第一数据作为该除法运算的整数商,该除法运算的除数为中间数据,被除数由该模型参数确定。因此,第二数据在输入目标可逆流层之后,经过乘法运算和除法运算等运算处理后,将输出第一数据,该第一数据为目标可逆流层的输出。具体地,请参阅后文图9和图10A对应的实施例。
应理解,在逆变换处理过程所使用的模型参数和辅助变量等为前述变换处理过程中生成或存储的。例如,在正向变换处理过程的乘法运算所使用的模型参数(例如,第一参数)和辅助变量(例如,第一辅助变量)将应用于逆向变换处理过程的除法运算中;在正向变换处理过程的除法运算所使用的模型参数(例如,第二参数)和辅助变量(例如,第二辅助变量)将应用于逆向变换处理过程的乘法运算中。具体地,关于模型参数和辅助变量的介绍可以参阅前文图3对应的实施例,此处不予赘述。
本实施例中,当数据处理装置采用可逆流模型对隐变量进行变换处理之后,该数据处理装置可以直接输出编码前述的数据。应理解,若编码前的数据为图像、视频或者文本的等原始数据,则经前述逆向变换处理之后的解码输出为图像、视频或者文本的等原始数据。若编码前的数据为基于图像、视频或者文本的等原始数据进行预处理后的数据。数据处理装置还可以将前述解码输出恢复为图像、视频或者文本的等原始数据。
示例性的,若解码输出为采用噪声数据对原始数据进行反编码处理而获得的数据,则该数据处理装置可以通过解反编码处理从前述解码输出分离出噪声数据和原始数据。若给定噪声数据的概率分布(例如,噪声数据u的概率分布为q(u|x)δ,且u∈[0,1),其中,δ=2-k,k表示定点数的精度),该可逆流模型的输出为则基于该可逆流模型的输出进行下取整运算(即计算),得到原始数据。可选的,将可逆流模型的输出与原始数据x作差(即计算),得到噪声数据u。可选的,采用噪声数据u的概率分布q(u|x)δ编码u,以恢复进行反编码处理之前所使用的码流。
本实施例中,数据处理装置将对解码后的隐变量进行逆向变换处理,该逆向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述逆向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请能够针对正向变换处理过程中的乘法运算,采用辅助变量进行除法运算,以将隐变量恢复为正向变换处理前的数据(即前述数据编码方法中的待编码数据)。因此,不仅能够保证变换处理的可逆运算,还能够提高模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
下面将结合前述模型参数对该目标可逆流层的正向变换处理过程的原理进行介绍:
具体地,该目标可逆流层将基于该模型参数获取辅助变量,然后,基于由该辅助变量和该模型参数确定的单调连续函数对输入该目标可逆流层的第一数据进行变换处理,得到输出该目标可逆流层的第二数据。其中,第一单调连续函数为由前述辅助变量和模型参数确定的函数,该目标可逆流层在变换处理过程中将使用前述单调连续函数对输入该目标可逆流层的第一数据进行处理,以使得经过一系列处理后能够输出前述第二数据。
其中,该模型参数包括第一参数和第二参数,该第一参数和该第二参数均为正整数,该第一参数与该第二参数不相等。该辅助变量包括第一辅助变量和第二辅助变量。其中,第一辅助变量与第一参数对应,第二辅助变量与第二参数对应。可以理解为,第一辅助变量是基于第一参数确定的,第二辅助变量是基于第二参数确定的。该第一单调连续函数可以是一元线性函数,也被称为一元一次函数(linear function of one variable),即形如y=kx+b(k≠0)的函数。
进一步地,如图7所示,该数据处理装置将通过目标可逆流层在正向变换处理过程中执行如下步骤:
步骤701,基于第一参数获取第一辅助变量,该第一参数用于确定第一一元线性函数的斜率,该第一辅助变量用于确定第一一元线性函数的截距。
在一种可选的实施方式中,数据处理装置采用辅助数据编解码辅助变量,则该数据处理装置可以基于第一参数确定的概率分布和第一辅助数据获取前述第一辅助变量。该辅助数据可以是数据处理装置中预存的码流(例如,二进制码流),也可以是该数据处理装置中的可逆流模型随机生成的码流,还可以是数据处理装置从外部存储装置中获取的码流,还可以是已压缩的数据形成的码流,具体此处不做限定。
为便于理解,下面先对辅助数据编解码辅助变量的原理进行介绍:
以均匀分布U(0,A)为例进行介绍。由均匀分布的定义可知,对于任意符号s∈{0,1,…,A-1},满足p(s)=1/A。在编码过程中,编码前的码流为整数c(其中,c采用k位的二进制码流表示),则对前述任意符号s编码后获得的码流为c′=c·A+s(其中,c’采用k位的二进制码流表示)。在解码过程中,根据编码后的码流(即解码前的码流)c′采用除法取余运算恢复前述任意符号s,即采用公式s=c′mod A计算前述任意符号s,与此同时,采用除法取整运算获得编码前的码流c,即采用公式计算前述编码前的码流c。
可选的,为避免码流过长而影响算法实现效率,在实际应用中,可以设置状态向量bs存储二进制码流。
具体地,辅助数据编码辅助变量的过程如下所示:
(1)c2←c1·A+s;
(3)存储辅助数据(即c3和bs)。
相应的,当给定辅助数据(即c3和bs)时,基于辅助数据解码辅助变量的过程如下所示:
(1)如果c3<2M·A,则从bs的尾部读取并弹出K位数r(即(c2 mod 2K)),c2←2K·c3+r;否则c2←c3;
(2)s←c2 modA;
(4)输出解压的符号s。
其中,K和M均为大于0的整数。示例性的,K的取值可以为32,M的取值可以为4。应理解,在实际应用中,可以基于计算需要调整前述K和/或M的取值,具体此处不做限定。
由前述计算原理可知,当数据处理装置基于第一参数确定的概率分布和第一辅助数据获取前述第一辅助变量时,该数据处理装置将基于该第一参数确定第一均匀分布,该第一均匀分布的端点为0和该第一参数。然后,该数据处理装置采用该第一均匀分布解码该第一辅助数据,得到该第一辅助变量和第二辅助数据,该第一辅助变量的取值位于0到该第一参数之间。其中,第二辅助数据是第一辅助数据经解码而获得的数据,该第二辅助数据用于在逆向变换过程中编码该第一辅助变量。
其中,该采用该第一均匀分布解码该第一辅助数据,得到该第一辅助变量和第二辅助数据的过程具体可以为:数据处理装置以该第一辅助数据为除数且该第一参数为被除数,进行除法取余运算,得到该第一辅助变量,并且,以该第一辅助数据为除数且该第一参数为被除数,进行除法取整运算,得到该第二辅助数据。此外,该数据处理装置将存储该第二辅助数据,比便于在逆向变换过程中使用前述第二辅助数据。
本实施方式中,提出采用基于第一参数确定的均匀分布的熵编码算法编解码辅助变量,有利于提高存储辅助变量的效率。相比于传统技术中的动态熵编码技术rANS(range-based Asymmetric Numerical System)而言,有利于提升目标可逆流层的吞吐率。
在另一种可选的实施方式中,该数据处理装置基于第一参数确定第一取值范围,该第一取值范围为0到第一参数。然后,该数据处理装置从前述第一取值范围中随机选择一个整数作为第一辅助变量。可选的,该数据处理装置还将存储第一辅助变量,以便于在后续逆向变换处理过程中,该数据处理装置能够基于第一辅助变量进行逆向变换处理。
步骤702,将该第一数据带入该第一一元线性函数进行计算,得到中间数据。
具体地,数据处理装置将采用该第一参数与第一数据进行乘法运算而得的乘积,与该第一辅助变量进行加法运算,得到中间数据。
在本步骤中,即在正向变换处理中,该第一辅助变量为该乘法运算的乘积的增量。具体地,数据处理装置将该第一数据作为该第一参数的乘数进行乘法运算,得到第一乘积数据;然后,将该第一辅助变量作用该第一乘积数据的增量进行加法运算,得到中间数据。
应理解,该第一辅助变量还用于作为该逆向变换处理中的除法运算产生的余数。
本实施例中,由于,第一辅助变量参与了确定中间数据的过程,即第一辅助变量作为该乘法运算的乘积的增量,基于该中间数据进行除法取整运算的整数商才为第二数据,因此,避免了仅用乘法运算而造成的运算不可逆的问题,也避免了仅用加法运算和减法运算而造成的模型表征能力差的问题。
步骤703,基于该中间数据和该第二参数确定该第二数据,并输出该第二数据。
具体地,数据处理装置将以该中间数据为除数且该第二参数为被除数,进行除法取整运算,得到该第二数据,并输出该第二数据。
步骤704,基于该中间数据和第二参数确定第二辅助变量。
具体地,数据处理装置将以该中间数据为除数且该第二参数为被除数进行除法取余运算,得到该第二辅助变量。其中,该第二参数和该第二辅助变量用于确定第二一元线性函数,该第二一元线性函数为前述正向变换处理对应的逆向变换处理所使用的函数。该第二参数用于确定第二一元线性函数的斜率,该第二辅助变量用于确定该第二一元线性函数的截距。
在本步骤中,即在正向变换处理中,该第二辅助变量为该除法运算产生的余数。
应理解,该第二辅助变量还用于作为该正向变换处理对应的逆向变换处理中的乘法运算的乘积的增量。
本实施例中,由于该目标可逆流模型在正向变换处理中,还将生成第二辅助变量,该第二辅助变量用于作为该正向变换处理对应的逆向变换处理中的乘法运算的乘积的增量。也就是说,在逆向变换处理中,数据处理装置将基于第二辅助变量将第二数据恢复为中间数据,进而将中间数据恢复为第一数据。因此,在正向变换处理中,计算出第二辅助变量,有利于实现将第二数据恢复为第一数据。
应注意,步骤703和步骤704之间没有明确的时间先后顺序的限定,该数据处理装置可以先执行步骤703再执行步骤704,该数据处理装置也可以先执行步骤704再执行步骤703,该数据处理装置还可以分别同时执行步骤703和步骤704,具体此处不做限定。
步骤705,存储第一辅助变量和第二辅助变量。
应理解,步骤705应当在步骤704之后执行。
本实施例中,数据处理装置可以直接存储第一辅助变量和第二辅助变量,该数据处理装置也可以采用编码的方式间接存储第一辅助变量和第二辅助变量。
在一种可选的实施方式中,该数据处理装置可以直接存储第一辅助变量和第二辅助变量。具体地,该数据处理装置可以在步骤701中生成第一辅助变量后便存储第一辅助变量,随后,该数据处理装置可以在步骤704中生成第二辅助变量后便存储第二辅助变量。可选的,该数据处理装置可以将第一辅助变量和第二辅助变量对应存储,以便于在逆向变换处理过程中,该数据处理装置可以获取到与第二辅助变量对应的第一辅助变量,进而有利于提高逆向变换处理过程的效率。示例性的,该数据处理装置可以采用数组或表格等方式对应存储前述第一辅助变量和第二辅助变量,具体此处不做限定。
在另一种可选的实施方式中,若数据处理装置采用辅助数据编解码辅助变量,此时,数据处理装置可以存储编码了辅助变量的辅助数据,而不用直接存储辅助变量。也就是说,该数据处理装置可以在前述步骤701过程将解码第一辅助变量而获得的第二辅助数据进行暂存,在步骤704之后,该数据处理装置可以基于同样的原理参照如下方式编码第二辅助变量,并将编码了第二辅助变量的辅助数据(后文将介绍的第三辅助数据)进行存储,以实现间接存储第一辅助变量和第二辅助变量。
具体地,该数据处理装置可以基于前述步骤701所介绍的均匀分布熵编码原理编码第二辅助变量。首先,数据处理装置可以获取暂存的第二辅助数据(即解码第一辅助变量而获得的第二辅助数据),与此同时,基于该第二参数确定第二均匀分布,该第二均匀分布的端点为0和该第二参数。然后,该数据处理装置采用该第二均匀分布和该第二辅助数据编码该第二辅助变量,得到第三辅助数据,该第二辅助变量的取值位于0到该第二参数之间。然后,该数据处理装置存储该第三辅助数据,该第三辅助数据用于在逆向变换过程中解码该第二辅助变量。
其中,该采用该第二均匀分布和该第二辅助数据编码该第二辅助变量,得到第三辅助数据的过程具体可以为:数据处理装置将该第二辅助数据与该第二参数进行乘法运算而获得的乘积,与该第二辅助变量进行加法运算,得到该第三辅助数据。
本实施例中,提出输入该目标可逆流层的第二数据会经过乘法运算,输出该目标可逆流层的第一数据是经过除法运算获得的,因此,相比于仅使用整数加减法的整数流模型来说,本申请的可逆流模型具备更强的模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
如图8A所示,为目标可逆流层在正向变换处理过程的具体计算流程:
步骤801,获取第一辅助数据,该第一辅助数据用于解码第一辅助变量。
步骤802,采用第一均匀分布解码第一辅助数据,得到第一辅助变量和第二辅助数据。
其中,第一均匀分布是基于第一参数确定,具体请参阅前述图7对应实施例中的相关介绍。
步骤803,将第一数据与第一参数进行乘法运算而获得的第一乘积数据,加上第一辅助变量,得到中间数据。
步骤804,将中间数据作为除数且该第二参数作为被除数进行除法取整运算,得到该第二数据。
步骤805,以中间数据为除数且该第二参数为被除数进行除法取余运算,得到第二辅助变量。
应注意,步骤804和步骤805之间没有明确的时间先后顺序的限定,该数据处理装置可以先执行步骤804再执行步骤805,该数据处理装置也可以先执行步骤805再执行步骤804,该数据处理装置还可以分别同时执行步骤804和步骤805,具体此处不做限定。
步骤806,采用第二辅助数据编码第二辅助变量,得到第三辅助数据。
应理解,步骤806应当在步骤805之后执行。
步骤807,存储第三辅助数据。
为便于理解,下面将结合具体示例对目标可逆流层的变换过程(步骤701到步骤705)进行介绍。如图8B所示,为可逆流模型中的某一个目标可逆流层(例如,可逆流层i)。其中,x表示输入目标可逆流层的数据(即第一数据),是上一个可逆流层(例如,可逆流层i-1)的输出;z表示输出目标可逆流层的数据(即第二数据),是下一个可逆流层(例如,可逆流层i+1)的输入;b1表示第一辅助数据,b2表示第二辅助数据,b3表示第三辅助数据。假设第一参数为R,第二参数为S,则基于第一参数R确定的第一均匀分布为U(0,R),基于第二参数S确定的第二均匀分布为U(0,S)。当第一数据x输入目标可逆流层之后,该数据处理装置将获取第一辅助数据b1,并基于第一均匀分布U(0,R)解码第一辅助数据b1,得到第一辅助变量rd和第二辅助数据b2。然后,该数据处理装置采用基于第一参数R和第一辅助变量rd确定第一一元线性函数(即y=R·x+rd)计算中间数据y。然后,采用中间数据y和第二参数S进行除法取整运算(即计算),得到第二数据z。此外,该数据处理装置还将基于中间数据y和第二参数S进行除法取余运算(即计算re=ymodS(即re=mod(y,S))),得到第二辅助变量re。然后,该数据处理装置将获取在解码第一辅助变量rd的过程中获得的第二辅助数据b2,并基于第二均匀分布U(0,S)编码第二辅助变量re,得到编码后的第三辅助数据b3。该数据处理装置将存储前述第三辅助数据b3,以便于在逆变换处理过程中基于第三辅助数据b3解码出第二辅助变量re和第二辅助数据b2,以及,基于第二辅助数据b2编码第一辅助变量rd。
应注意,若输入该可逆流模型的待编码数据为具有第一预设精度的定点数数据时,在进行前述图8B所示的变换处理过程之前,该第i个可逆流层(即可逆流层i)还用于在将基于该具有第一预设精度的定点数数据处理为整数数据;以及,在进行前述图8B所示的变换处理过程之后,将该经该变换处理后的整数数据处理为具有该第一预设精度的定点数数据以作为该第i个可逆流层(即可逆流层i)的输出。
本实施方式中,由于目标可逆流层可以基于模型参数(例如,第一参数和第二参数)和辅助数据(例如,第一辅助数据、第二辅助数据以及第三辅助数据)编解码辅助变量(例如,第一辅助变量和第二辅助变量),该辅助变量可以实现进行乘法运算的数据通过除法运算实现可逆。由于,该目标可逆流层不仅涉及加法运算,还涉及乘法运算、除法运算、取整运算和取余运算,因此,可以提升变换处理的多样性,提升模型的表征能力。
应注意,前述目标可逆流层中的第一参数和第二参数可以是预设的参数,也可以是基于神经网络生成的参数,也可以是该数据处理装置基于插值法或二分查找法算法确定的参数。
在一种可能的实施方式中,若目标可逆流层是基于一元线性函数(例如,函数z=f(x)=a·x(a>0))构建的,可以基于该一元线性函数的系数a确定第一参数和第二参数。具体地,可以将前述系数a变形为分数形式,即a=R/S,此时,可以定义R为第一参数,S为第二参数。可选的,可以设置S为较大值,则R=round(a·S)。其中,round(x)表示返回x的四舍五入的整数值。
在另一种可能的实施方式中,若目标可逆流层是基于非线性函数(例如,第一单调连续函数)构建的,则该数据处理装置可以将该非线性函数拆分为多段,将每一段近似为直线,采用插值算法或二分查找法计算前述第一参数和第二参数。具体地,该数据处理装置可以获取第一单调连续函数的定义域中的第一区间和该第一区间在该第一单调连续函数的值域上对应的第二区间。然后,该数据处理装置将基于该第一区间和该第二区间采用插值法或二分查找法计算该第一参数和第二参数。
示例性的,下面将以插值算法为例对确定第一参数和第二参数的过程进行介绍:
假设,第一单调连续函数为单调递增函数z=f(x),并且,该第一单调连续函数中的定义域中的第一区间为[x1,xh),该第一区间在值域上对应的第二区间为[zl,zh),其中,xl,xh,zl,zh均为精度为k的定点数(即浮点数)。
应注意,该数据处理装置可以采用如下任意一种实施方式确定前述第一区间和第二区间。
在一种可能的实施方式中,该数据处理装置可以基于定义域做均匀插值,这种实施方式适用于值域比定义域大的情形。
考虑插值区间大小2-h(h<<k),正向插值区间确定过程如下:
(3)输出xl,xh,zl,zh;
反向插值区间需要通过搜索确定,确定过程如下:
(1)x′←f-1(z);
″″″
(4)如果z<zm则xl=xl,xh=xm,zl=zl,zh=zm′;否则xl=xm,xh=xh,z1=″
zm,zh=zh;
(5)输出xl,xh,zl,zh。
在另一种可能的实施方式中,该数据处理装置可以基于值域做线性插值,这种实施方式适用于定义域比值域大的情形。
考虑插值区间大小2-h(h<<k),正向插值区间通过搜索确定,确定过程如下:
(1)z′←f(x);
(4)如果x<x′m则x1=x′l,xh=x′m,zl=z′l,zh=zm′;否则xl=x′m,xh=x′h,zl=z′m,zh=z′h;
(5)输出xl,xh,zl,zh。
反向插值区间直接计算得到:
(3)输出xl,xh,zl,zh。
应注意,若前述目标可逆流层是基于线性函数构建的流层,则该目标可逆流层可以被称为线性可逆流层(或线性流层);若前述目标可逆流层是基于非线性函数构建的流层,则该目标可逆流层可以被称为非线性可逆流层(或非线性流层)。当该目标可逆流层为非线性可逆流层时,由于采用插值算法或二分查找算法将非线性函数划分为多段线性函数,即将非线性流层的数值可逆运算转换成线性流层的数值可逆运算问题。有利于实现目标可逆流层的多样性,进而使得可逆流模型中的各个可逆流层多样化,有利于提升可逆流模型的表征能力。
此外,本申请中的可逆流层除了可以是前述目标可逆流层之外,还可以是目标可逆流层的变形层,该目标可逆流层的变形层可以为可逆卷积层或耦合层。此时,可逆流模型除了包括目标可逆流层之外,还包括可逆卷积层和/或耦合层。
在一种可能的实施方式中,该N个可逆流层中的某一个或多个可逆流层为可逆卷积层,该可逆卷积层包括卷积核和该目标可逆流层,该卷积核为以该待编码数据的通道数为阶数的方阵。该可逆卷积层用于对该卷积核进行LU分解(LU Factorization),得到目标矩阵,该目标矩阵为对角阵,该对角阵的对角线上的非零元素用于确定该可逆卷积层中该目标可逆流层的模型参数。
示例性的,以可逆卷积层为1x1卷积层为例进行介绍。该可逆卷积层的参数为卷积核W,该卷积核W满足W∈Rc×c,其中,c表示输入该可逆卷积层的数据x的维度。此时,输出该可逆卷积层的数据z可以表示为z=Wx。对矩阵W进行LU分解,可得W=PLΛU,其中,矩阵P为置乱阵(displace matrix),矩阵L为下三角阵(lower triangular matrix,LTM),矩阵U为上三角阵(upper triangular matrix,UTM),矩阵Λ为对角阵(diagonal matrix)。此时,输出该可逆卷积层的数据z可以表示为z=PLΛUx,因此,可以分别计算数据x与矩阵U、矩阵Λ、矩阵L以及矩阵P的乘积。
首先,计算数据x与上三角阵U的乘积h。此时,设h=Ux,uij为U的第i行第j列的元素,xi为x的第i个元素,hi为h的第i个元素,则采用如下公式可以算得h:
然后,计算数据h与上对角阵Λ的乘积m。此时,设m=Λh,λij为Λ的第i行第j列的元素,hi为h的第i个元素,mi为m的第i个元素,则mi=λi·hi,其中。此时,λi用于确定模型参数(例如,前述第一参数和第二参数)。具体地,可以将对角阵Λ中主对角线中每个元素λi用分数表示,(即将λi表示为两个整数相除),将该分数的分子作为第一参数R,该分数的分母作为第二参数S,构建目标可逆流层。然后,将hi作为输入该可逆卷积层中的目标可逆流层的第一数据,计算输出该可逆卷积层中的目标可逆流层的第二数据mi。
然后,计算数据m与下三角阵L的乘积n。此时,设n=Lm,lij为L的第i行第j列的元素,mi为m的第i个元素,ni为n的第i个元素,则采用如下公式可以算得n:
然后,计算数据n与置换阵P的乘积,得到输出该可逆卷积层的数据z。此时,设z=Pn,z根据矩阵P对x的元素重排得到。
本实施方式中,提出在可逆流模型中设置可逆卷积层,采用1x1卷积层与目标可逆流层结合。具体地,将1x1卷积层转化成连续上三角阵、对角阵、下三角阵和置乱阵的矩阵乘法运算,对四种矩阵乘法分别使用迭代计算、基于目标可逆流层的数值可逆线性流变换处理、迭代计算、元素重排。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
在另一种可能的实施方式中,该N个可逆流层中的某一个或多个可逆流层为耦合层,该耦合层包括该目标可逆流层。该耦合层用于将输入该耦合层的数据按预设维度划分为至少两部分数据,并将该至少两部分数据中的至少一部分数据作为该目标可逆流层的输入进行处理,得到该耦合层的输出。
示例性的,以数据处理装置将输入该耦合层的数据按照预设维度划分为两部分数据进行介绍。假设,输入该耦合层的数据为x,将数据x按维度分解成两部分x=[xa,xb],则耦合层为其中,为以xa为参数的一元单调函数(例如,一元线性函数),将数据xb带入由一元单调函数确定的模型参数构建的目标可逆流层中进行计算,得到将作为耦合层的其中一个维度的输出,即zb。此外,将xa直接作为耦合层的另一个维度的输出,即za。
应理解,耦合层可以包含神经网络,该神经网络用于分维度对输入该耦合层的数据进行处理。该神经网络可以包括多种类型。例如,卷积神经网络(convolutional neuralnetwork,CNN)、深度神经网络(deep neural network,DNN)、循环神经网络(recurrentneural networks,RNN)或其他神经网络等。具体此处不做限定。
本实施方式中,提出在可逆流模型中设置耦合层,该耦合层能够将输入该耦合层的数据按照维度划分,并仅对其中一部分维度的数据采用目标可逆流层的变换方式进行变换处理。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
应理解,前述不同种类的可逆流层(即目标可逆流层、可逆卷积层和耦合层)可以进行组合堆叠,以提高可逆流模型的变换处理能力。具体地,请参阅前文图4A和图4B对应的相关介绍,此处不予赘述。
下面将结合前述模型参数对该目标可逆流层的逆向变换处理过程的原理进行介绍:
具体地,该目标可逆流层将基于该模型参数获取辅助变量,然后,基于由该辅助变量和该模型参数确定的单调连续函数对输入该目标可逆流层的第二数据进行变换处理,得到输出该目标可逆流层的第一数据。其中,单调连续函数为由前述辅助变量和模型参数确定的函数,该目标可逆流层在变换处理过程中将使用前述第一单调连续函数对输入该目标可逆流层的第二数据进行处理,以使得经过一系列处理后能够输出前述第一数据,即能够将前述第二数据恢复为前述第一数据。
其中,该模型参数包括第一参数和第二参数,该第一参数和该第二参数均为正整数,该第一参数与该第二参数不相等。该辅助变量包括第一辅助变量和第二辅助变量。其中,第一辅助变量与第一参数对应,第二辅助变量与第二参数对应。可以理解为,第一辅助变量是基于第一参数确定的,第二辅助变量是基于第二参数确定的。该第一单调连续函数可以是一元线性函数,也被称为一元一次函数(linear function of one variable),即形如y=kx+b(k≠0)的函数。
进一步地,如图9所示,该数据处理装置将通过目标可逆流层在逆向变换处理过程中执行如下步骤:
步骤901,获取第二辅助变量,该第二辅助变量是基于第二参数确定的,该第二辅助变量和第二参数用于确定第二一元线性函数。
其中,该第二辅助变量是在正向变换过程中生成的辅助变量。该第二辅助变量是基于第二参数确定的,该第二辅助变量和第二参数用于确定第二一元线性函数。其中,该第二参数用于确定该第二一元线性函数的斜率,该第二辅助变量用于确定该第二一元线性函数的截距。
在一种可选的实施方式中,若在正向变换过程中,数据处理装置采用辅助数据编解码辅助变量,并存储了编解码辅助变量所使用的辅助数据(例如,第三辅助数据),则在逆向变换过程中,该数据处理装置将先获取第三辅助数据,再基于该第三辅助数据解码第二辅助变量。
具体地,辅助数据解码辅助变量的计算原理可以参阅前文步骤701中的相关介绍,具体此处不予赘述。
具体地,当数据处理装置基于第二参数确定的概率分布和第三辅助数据获取前述第二辅助变量时,该数据处理装置将基于该第二参数确定第二均匀分布,该第二均匀分布的端点为0和该第二参数。然后,采用该第二均匀分布解码该第三辅助数据,得到该第二辅助变量和该第二辅助数据,该第二辅助变量的取值位于0到该第二参数之间。其中,第二辅助数据是第三辅助数据经解码而获得的数据。
其中,该采用该第二均匀分布解码该第三辅助数据,得到该第二辅助变量和该第二辅助数据的过程具体可以为:数据处理装置以该第三辅助数据为除数且该第二参数为被除数,进行除法取余运算,得到该第二辅助变量,并且,以该第三辅助数据为除数且该第二参数为被除数,进行除法取整运算,得到该第二辅助数据。可选的,该数据处理装置可以暂存前述第二辅助数据,比便于在后续变换处理过程中使用前述第二辅助数据。例如,使用该第二辅助数据在后续处理过程中编码该第一辅助变量。
本实施方式中,提出采用基于第二参数确定的均匀分布的熵编码算法编解码辅助变量,有利于提高存储辅助变量的效率。相比于传统技术中的动态熵编码技术rANS而言,有利于提升目标可逆流层的吞吐率。
在另一种可选的实施方式中,若在正向变换过程中,数据处理装置直接存储的第二辅助变量,没有使用辅助数据,则该数据处理装置将直接从存储第二辅助变量的存储位置获取前述第二辅助变量。
步骤902,将该第二数据带入该第二一元线性函数进行计算,得到中间数据。
具体地,数据处理装置将采用该第二参数与第二数据进行乘法运算而得的乘积,与该第二辅助变量进行加法运算,得到中间数据。
在本步骤中,即在逆向变换处理中,该第二辅助变量为该乘法运算的乘积的增量。具体地,数据处理装置将该第二数据作为该第二参数的乘数进行乘法运算,得到第二乘积数据;然后,将该第二辅助变量作用该第二乘积数据的增量进行加法运算,得到中间数据。
本实施例中,由于,第二辅助变量参与了确定中间数据的过程,即第二辅助变量作为该乘法运算的乘积的增量,基于该中间数据进行除法取整运算的整数商才为第一数据,因此,避免了仅用乘法运算而造成的运算不可逆的问题,也避免了仅用加法运算和减法运算而造成的模型表征能力差的问题。
步骤903,基于该中间数据和该第一参数确定该第一数据,并输出该第一数据。
具体地,数据处理装置将以该中间数据为除数且该第一参数为被除数,进行除法取整运算,得到该第一数据,并输出该第一数据。该第一数据为经目标可逆流层的逆向变换处理后,输出该目标可逆流层的数据。
步骤904,基于该中间数据和第一参数确定第一辅助变量。
具体地,数据处理装置将以该中间数据为除数且该第一参数为被除数进行除法取余运算,得到该第一辅助变量。其中,该第一参数和该第一辅助变量用于确定第一一元线性函数,该第一一元线性函数为下一次正向变换处理(即本次逆向变换处理对应的下一次变换处理)所使用的函数,该第一参数用于确定第一一元线性函数的斜率,该第一辅助变量用于确定该第一一元线性函数的截距。
在本步骤中,即在逆向变换处理中,该第一辅助变量为该除法运算产生的余数。
应注意,步骤903和步骤904之间没有明确的时间先后顺序的限定,该数据处理装置可以先执行步骤903再执行步骤904,该数据处理装置也可以先执行步骤904再执行步骤903,该数据处理装置还可以分别同时执行步骤903和步骤904,具体此处不做限定。
步骤905,存储第一辅助变量。
在一种可选的实施方式中,该数据处理装置可以直接存储第一辅助变量。具体地,该数据处理装置可以在步骤904中生成第一辅助变量后便存储第一辅助变量。可选的,该数据处理装置可以将第一辅助变量和原本存储的第二辅助变量对应存储,以便于在后续变换处理过程中,该数据处理装置可以获取到与第二辅助变量对应的第一辅助变量,进而有利于提高后续变换处理过程的效率。
在另一种可选的实施方式中,若数据处理装置采用辅助数据编解码辅助变量,此时,数据处理装置可以存储编码了辅助变量的辅助数据,而不用直接存储辅助变量。具体地,该数据处理装置可以采用步骤901中产生的第二辅助数据编码第一辅助变量而获得第一辅助数据,并存储该第一辅助数据。
具体地,该数据处理装置可以基于前文图7对应实施例中步骤701所介绍的均匀分布熵编码原理编码第一辅助变量。首先,数据处理装置可以获取在步骤901中产生的第二辅助数据,与此同时,基于该第一参数确定第一均匀分布,该第一均匀分布的端点为0和该第一参数。然后,该数据处理装置采用该第一均匀分布和该第二辅助数据编码该第一辅助变量,得到第一辅助数据,该第一辅助变量的取值位于0到该第一参数之间。然后,该数据处理装置存储该第一辅助数据。其中,该采用该第一均匀分布和该第二辅助数据编码该第一辅助变量,得到第一辅助数据的过程具体可以为:数据处理装置将该第二辅助数据与该第一参数进行乘法运算而获得的乘积,与该第一辅助变量进行加法运算,得到该第一辅助数据。
本实施例中,由于,该第一辅助数据也是在正向变换过程中输入该目标可逆流层的数据,在逆向变换过程中该目标可逆流层能够再次输出该第一辅助数据,即该目标可逆流层能够恢复在压缩编码过程(即正向变换过程)中使用的码流,以使得使用的码流实现可逆。
如图10A所示,为目标可逆流层在逆向变换处理过程的具体计算流程:
步骤1001,获取第三辅助数据,该第三辅助数据用于解码第二辅助变量。
应理解,该第三辅助数据为正向变换处理过程中,该数据处理装置存储的辅助数据。
步骤1002,采用第二均匀分布解码第三辅助数据,得到第二辅助变量和第二辅助数据。
其中,第二均匀分布是基于第二参数确定,具体请参阅前述图9对应实施例中的相关介绍。
步骤1003,将第二数据与第二参数进行乘法运算而获得的第二乘积数据,加上第二辅助变量,得到中间数据。
步骤1004,将中间数据作为除数且该第一参数作为被除数进行除法取整运算,得到该第一数据。
步骤1005,以中间数据为除数且该第一参数为被除数进行除法取余运算,得到第一辅助变量。
应注意,步骤1004和步骤1005之间没有明确的时间先后顺序的限定,该数据处理装置可以先执行步骤1004再执行步骤1005,该数据处理装置也可以先执行步骤1005再执行步骤1004,该数据处理装置还可以分别同时执行步骤1004和步骤1005,具体此处不做限定。
步骤1006,采用第二辅助数据编码第一辅助变量,得到第一辅助数据。
步骤1007,存储第一辅助数据。
为便于理解,下面将结合具体示例对目标可逆流层的变换过程(步骤901到步骤905)进行介绍。如图10B所示,为可逆流模型中的某一个目标可逆流层(例如,可逆流层i)。其中,z表示输入目标可逆流层的数据(即第二数据),是上一个可逆流层(例如,可逆流层i+1)的输出;x表示输出目标可逆流层的数据(即第一数据),是下一个可逆流层(例如,可逆流层i-1)的输入;b1表示第一辅助数据,b2表示第二辅助数据以及b3表示第三辅助数据。假设第一参数为R,第二参数为S,则基于第一参数R确定的第一均匀分布为U(0,R),基于第二参数S确定的第二均匀分布为U(0,S)。当第二数据z输入目标可逆流层之后,该数据处理装置将获取存储的第三辅助数据b3,并基于第二均匀分布U(0,S)解码第三辅助数据b3,得到第二辅助变量re和第二辅助数据b2。然后,该数据处理装置采用基于第二参数S和第二辅助变量re确定第一一元线性函数(即y=S·z+re)计算中间数据y。然后,采用中间数据y和第一参数R进行除法取整运算(即计算),得到第一数据x。此外,该数据处理装置还将基于中间数据y和第一参数R进行除法取余运算(即计算rd=ymodR(即rd=mod(y,R))),得到第一辅助变量rd。然后,该数据处理装置基于第一均匀分布U(0,R)和第二辅助数据b2编码第一辅助变量rd,得到编码后的第一辅助数据b1。该数据处理装置可以存储前述第一辅助数据b1,已恢复存储装置(例如,数据处理装置中的存储器)中的码流。
在一种可能的实施方式中,若输入该可逆流模型的待编码数据为具有第一预设精度的定点数数据时,在进行前述图10B所示的变换处理过程之前,该第i个可逆流层(即可逆流层i)还用于在将基于该具有第一预设精度的定点数数据处理为整数数据;以及,在进行前述图10B所示的变换处理过程之后,将该经该变换处理后的整数数据处理为具有该第一预设精度的定点数数据以作为该第i个可逆流层(即可逆流层i)的输出。
本实施方式中,由于目标可逆流层可以基于模型参数(例如,第一参数和第二参数)和辅助数据(例如,第一辅助数据、第二辅助数据以及第三辅助数据)编解码辅助变量(例如,第一辅助变量和第二辅助变量),该辅助变量可以实现进行乘法运算的数据通过除法运算实现可逆。由于,该目标可逆流层不仅涉及加法运算,还涉及乘法运算、除法运算、取整运算和取余运算,因此,可以提升变换处理的多样性,提升模型的表征能力。
应理解,采用本申请提供的数据编码方法和数据解码方法进行无损压缩,相比于传统技术中的无损压缩方法,能够在保证更快的压缩吞吐率前提下,取得最优的压缩率。
如下表1所示,与目前最优的基于流模型无损压缩方法局部反编码模型(localbits-back cocding,LBB)相比,采用本申请提供的数据编码方法和数据解码方法进行压缩和解压缩能够有效提升压缩效率,具体地,压缩效率可以提升5倍。
表1
以待编码数据为图像数据为例,如表2所示,本申请实施例在各类图像数据集上取得了良好的压缩率,本申请实施例能够有效应用在图像无损压缩任务。在CIFAR10、ImageNet32、ImageNet等数据集均取得了最优的无损压缩率。取得良好压缩率的重要原因是使用的可逆流模型的拟合数据分布能力强。
表2
此外,如下表3所示,本申请实施例中的可逆流模型具有良好的泛化性能,能够使用单一模型,完成各类、各种大小图像的压缩。用ImageNet64数据集训练可逆流模型(输入大小64x64),自然图像做无损压缩测试(自然图像切块成64x64大小,对于小于64x64的图像用合适像素值的色块填充图像到64x64大小),取得了超过3.1倍的压缩率,该压缩率远远超过现有的无损压缩方法。
表3
由此可见,本申请提出全新的数值可逆的流模型计算方法(即可逆流模型),对一元线性/非线性流、1x1卷积层、耦合层等流层都提出了相应的数值可逆计算方法,消除流模型的数值误差。该方法简单高效,相对于传统技术中的局部反编码模型(local bits-backcocding,LBB),不需要复杂的局部编解码过程,能够大幅度提升无损压缩的效率。
如图11所示,为本申请实施例提供的一种数据处理装置110的结构示意图。该数据处理装置110可以是服务器、终端设备或其他有压缩存储需求的设备,具体此处不做限定。前述图3、图5、图7、图8A、图9以及图10A对应的实施例中的步骤可以由该数据处理装置110执行。当该数据处理装置110作为编码端时,该数据处理装置110将执行图3、图7以及图8A对应的实施例中的步骤。当该数据处理装置110作为解码端时,该数据处理装置110将执行图5、图9以及图10A对应的实施例中的步骤。
该数据处理装置110包括至少一个处理器1101和至少一个存储器1102。前述处理器1101和前述存储器1102通过线路互联。应当理解的是,图11仅示出了一个处理器1101和一个存储器1102。
其中,该处理器1101可以是通用中央处理单元(central processing unit,CPU)、微处理器、网络处理器(network processor,NP)或特定应用集成电路(application-specific integrated circuit),或一个或多个用于控制本申请方案的程序执行的集成电路。前述处理器1101可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。处理器1101可以指一个或多个装置、电路和/或用于处理数据(例如计算机程序指令)的处理核。此外,该处理器1101可以是个单独的半导体芯片,也可以跟其他电路一起集成为一个半导体芯片,例如,可以跟其他电路(如编解码电路、硬件加速电路或各种总线和接口电路)构成一个片上系统(system-on-a-chip,SoC),或者也可以作为一个特殊应用集成电路(application specific integrated circuit,ASIC)的内置处理器集成在所述ASIC当中,该集成了处理器的ASIC可以单独封装或者也可以跟其他电路封装在一起。
此外,前述存储器1102可以是只读存储器(read-only memory,ROM),也可以是可存储静态信息和指令的其他类型的静态存储设备,也可以是随机存取存储器(randomaccess memory,RAM),也可以是可存储信息和指令的其他类型的动态存储设备,还可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM),具体此处不做限定。该存储器1102可以是独立存在,但与前述处理器1101相连。可选的,该存储器1102也可以和前述处理器1101集成于一体。例如,集成于一个或多个芯片之内。
此外,该存储器1102还用于存储执行本申请实施例的技术方案的程序代码。前述程序代码可以由处理器1101来控制执行,被执行的各类计算机程序代码也可被视为是处理器1101的驱动程序。于是,前述处理器1101可以获取例如第一参数和第二参数等模型参数,并基于模型参数确定辅助变量(例如,第一辅助变量和第二辅助变量),基于模型参数和辅助变量对输入可逆流模型的数据进行变换处理。
以图12为例,该数据处理装置110中的处理器1101调用存储在存储器1102中的程序代码以运行可逆流模型。可选的,该数据处理装置110中的处理器1101调用存储在存储器1102中的程序代码以运行均匀熵编码器(该均匀熵编码器可以采用基于第一参数确定第一均匀分布以及基于第二参数确定的第二均匀分布)。在压缩编码过程中,该处理器1101从存储器1102中读取待编码数据(例如图12中的各类原始数据),采用可逆流模型对待编码数据进行正向变换处理以得到隐变量,然后,编码器对该隐变量进行压缩编码,以得到编码数据(即压缩数据)。该处理器1101将生成的编码数据存储于存储器1102中。在解码解压缩过程中,该处理器1101从存储器1102中读取编码数据(即压缩数据)先进行解码处理以获得隐变量,然后,采用可逆流模型对隐变量进行逆向变换处理以得到解码输出(即编码前的数据,即待编码数据)。该处理器1101将生成的待编码数据存储于存储器1102中,或直接将编码前的数据(即待编码数据)输出。
可选的,该数据处理装置110还包括通信接口1103,该通信接口1103用于与其他服务器或网络设备进行通信。数据处理装置110可以通过该通信接口1103接收来自其他设备的指令或数据。示例性的,该通信接口1103为收发器,例如,无线收发器或光收发器等。
例如,数据处理装置110可以通过该通信接口1103接收来自用户设置的第一参数和第二参数。又例如,该数据处理装置110可以通过该通信接口1103接收辅助数据,例如,第一辅助数据或第三辅助数据等。具体地,该数据处理装置110可以通过通信接口1103获取第一辅助数据,然后,该数据处理装置110中的处理器1101采用基于第一参数确定的第一均匀分布解码第一辅助数据得到第一辅助变量和第二辅助数据。此外,当该处理器1101计算出第二辅助变量之后,该处理器1101采用基于第二参数确定的第二均匀分布和前述第二辅助数据编码第二辅助变量,得到第三辅助数据。该数据处理装置110可以通过通信接口1103将第三辅助数据输出存储至外部存储介质,也可以直接将第三辅助数据存储至该数据处理装置110中的存储器1102中。若该数据处理装置110通过通信接口1103将第三辅助数据输出存储至外部存储介质,则在逆向变换处理过程中,该数据处理装置110还将通过通信接口1103从外部存储介质读取第三辅助数据。
此外,数据处理装置110还可以通过该通信接口1103向其他设备发送指令或数据。例如,当编码端和解码端不是同一设备时,该作为编码端的数据处理装置110可以通过该通信接口1103向作为解码端的其他设备发送编码数据和模型参数(例如,第一参数和第二参数),以使得解码端可以基于编码数据和模型参数进行解码处理和逆向变换处理,以获得解码输出。
本申请实施例中还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有用于构建可逆流模型的程序,当前述计算机程序在计算机上运行时,可以使得计算机执行如前述图3、图5、图7、图8A、图9以及图10A所示实施例介绍的方法。
在一种可能的实现方式中,前述图11所示的数据处理装置110为芯片,该芯片也被称为数字处理芯片。该芯片包括处理单元和通信单元。其中,处理单元通过通信单元获取程序指令,该程序指令被处理单元执行,以使得该处理单元执行前述图3、图5、图7、图8A、图9以及图10A对应实施例介绍的方法步骤。具体地,该处理单元为集成了上述处理器1101或者用于实现上述处理器1101的功能的电路,该通信单元为集成了上述通信接口1103或者用于实现上述通信接口1103的功能的电路或接口。
可选的,当该芯片中集成了存储单元时,该存储单元可以是存储器等存储装置。此时,该芯片中的处理单元可以从该存储单元中调用程序代码以实现前述图3、图5、图7、图8A、图9以及图10A对应实施例所介绍的方法步骤。当该芯片未集成存储单元时,该芯片可以通过前述通信单元与外置的存储器等存储装置连接,以使得从前述外置的存储器中获取程序代码以实现前述图3、图5、图7、图8A、图9以及图10A对应实施例所介绍的方法步骤。
示例性地,前述图11所示的数据处理装置110为芯片时,该芯片的具体接口可以如图13所示。该图13为本申请实施例提供的芯片的一种结构示意图,该芯片可以表现为神经网络处理器(neural-network processing units,NPU)130,该神经网络处理器130作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。神经网络处理器130的核心部分为运算电路1301。该神经网络处理器130通过控制器1302控制运算电路1301获取存储器(例如,后文介绍的权重存储器和输入存储器等)中的矩阵数据并进行乘法运算。
其中,前述运算电路1301有多种可能的实现方式。在一种可能的实现方式中,该运算电路1301内部包括多个处理单元(process engine,PE)。在另一种可能的实现方式中,运算电路1301是二维脉动阵列。在另一种可能的实现方式中,运算电路1301还可以是一维脉动阵列或者能够执行例如乘法和加法等数学运算的其它电子线路。在另一种可能的实现方式中,该运算电路1301是通用的矩阵处理器。具体本申请实施例不对前述运算电路1301的具体形态进行限定。
示例性的,假设输入存储器1304中存储有输入矩阵A,权重存储器1303中存储有权重矩阵B。运算电路1301将从权重存储器1303中取矩阵B相应的数据,并缓存在运算电路1301中每一个PE上。此外,该运算电路1301还将从输入存储器1304中获取矩阵A,然后,采用前述矩阵A和矩阵B进行矩阵运算,得到输出矩阵C。该输出矩阵C可以是部分结果或最终结果,该输出矩阵C将被保存在累加器(accumulator)1305中。
此外,该神经网络处理器130还包括统一存储器1306,用于存放输入数据以及输出数据。一般地,输入数据可以通过存储单元访问控制器(direct memory accesscontroller,DMAC)1307搬运到统一存储器1306中。部分输入数据或输出数据可以通过存储单元访问控制器1307搬运到权重存储器1303中。例如,外部输入的权重数据(例如,权重矩阵)可以通过存储单元访问控制器1307搬运到前述权重存储器1303中。
此外,该神经网络处理器130总线接口单元(bus interface unit,BIU)1308,用于通过总线协议(advanced extensible interface,AXI)与存储单元访问控制器1307和取指存储器(instruction fetch buffer,IFB)1309交互。此外,该总线接口单元1308,还用于通过取指存储器1309从外部存储器获取指令,还用于通过存储单元访问控制器1307从外部存储器获取输入数据,例如,前述示例中的输入矩阵A的原数据或者权重矩阵B的原数据等。
可选的,该神经网络处理器130还包括向量计算单元1310。该向量计算单元1310包括多个运算处理单元。在需要的情况下,该向量计算单元1310可以对运算电路1301的输出做进一步处理。例如,向量乘、向量加、指数运算、对数运算或者大小比较等。此外,该向量计算单元1310还用于神经网络中非卷积/全连接层网络计算,如批量归一化(batchnormalization)(也被称为批量标准化)、像素级求和以及对特征图进行上采样等处理。
在一种可能的实现方式中,前述向量计算单元1310能将经处理之后输出的向量存储到统一存储器1306中,以使得运算电路1301在后续计算过程中调用统一存储器1306中的向量、函数等数据。例如,向量计算单元1310可以将线性函数和/或非线性函数存于统一存储器1306中,以使得该向量计算单元可以从统一存储器1306调用线性函数和/或非线性函数对运算电路1301的输出进行进一步处理,并将处理结果存储至统一存储器1306或累加器1305中。又例如,该向量计算单元1310可以对待处理数据进行线性变换或非线性变换。在另一种可能的实现方式中,向量计算单元1310还可以用于生成归一化的值、像素级求和的值,或二者均有。在另一种可能的实现方式中,处理过的输出的向量能够用作到运算电路1301的激活输入,以使得输出的向量能够在神经网络中的后续隐含层中使用。
此外,前述控制器1302还与取指存储器1309连接,以使得该取指存储器1309能够存储控制器1302使用的指令。
应当理解的是,前述权重存储器1303、输入存储器1304、统一存储器1306以及取指存储器1309均为片上(On-Chip)存储器。此外,外部存储器私有于该神经网络处理器硬件架构。
其中,神经网络中各层的运算可以由运算电路1301或向量计算单元1310执行。
其中,上述任一处提到的处理器,可以是一个通用中央处理器、微处理器、ASIC,或一个或多个用于控制上述图3、图5、图7、图8A、图9以及图10A的方法的程序执行的集成电路,具体此处不做限定。
如图14所示,为本申请一个实施例提供的一种数据处理装置140的结构示意图。
当数据处理装置140作为编码端,该数据处理装置140运行如下模块以实现前述图3、图7以及图8A对应的方法实施例中的数据处理装置的功能。
具体地,该数据处理装置140包括:获取模块1401、变换处理模块1402以及编码模块1403。其中,变换处理模块1402包括本申请提出的可逆流模型,在编码端该可逆流模型用于对输入该可逆流模型的数据进行正向变换处理。具体地,前述各个功能模块的具体功能如下:
获取模块1401,用于获取待编码数据;
变换处理模块1402,用于采用可逆流模型对该待编码数据进行正向变换处理,得到隐变量;其中,该可逆流模型包括目标可逆流层,该目标可逆流层包括模型参数,该模型参数用于约束在该正向变换处理过程中生成的辅助变量,该目标可逆流层对应的运算包括基于该模型参数确定的乘法运算和除法运算,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数;
编码模块1403,用于对该隐变量进行编码处理,得到该待编码数据对应的编码数据。
本实施例中,由于用于对待编码数据进行正向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述正向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请不仅能够使用乘法运算,还可以在进行除法运算时通过使用辅助变量实现可逆,因此,相比于传统技术中的整数流模型提高了模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
在一种可能的实施方式中,该可逆流模型包括N个可逆流层,该N个可逆流层包括该目标可逆流层,该N为大于或等于1的整数。
该目标可逆流层用于对输入该目标可逆流层的第一数据进行正向变换处理,得到输出该目标可逆流层的第二数据,该第一数据为该乘法运算的乘数,该第二数据为该除法运算的整数商。其中,该第一数据为该待编码数据或者经过至少一个该可逆流层处理后输出的数据,该第二数据为该隐变量或者该第二数据经过至少一个该可逆流层处理后输出的数据为该隐变量。
在一种可能的实施方式中,该模型参数包括第一参数和第二参数,该第一参数和该第二参数均为正整数,该第一参数与该第二参数不相等;该辅助变量包括第一辅助变量,该第一辅助变量为该乘法运算的乘积的增量。
该变换处理模块1402,具体用于:
将该第一数据作为该第一参数的乘数进行乘法运算,得到第一乘积数据;
将该第一辅助变量作用该第一乘积数据的增量进行加法运算,得到中间数据;
将该中间数据作为除数且该第二参数作为被除数进行除法取整运算,得到该第二数据。
本实施方式中,数据处理装置140将第一数据与第一参数进行乘法运算而获得的乘积(即第一乘积数据)与第一辅助变量进行加法运算,得到中间数据;然后,该数据处理装置140将中间数据作为除数且该第二参数作为被除数进行除法运算,得到的整数商为第二数据。由此可见,在前述正向变换过程中,第一数据先基于乘法运算和加法运算变换为中间数据,再由该中间数据基于除法取整运算变换为第二数据。由于,第一辅助变量参与了确定中间数据的过程,即第一辅助变量作为该乘法运算的乘积的增量,基于该中间数据进行除法取整运算的整数商才为第二数据,因此,避免了仅用乘法运算而造成的运算不可逆的问题,也避免了仅用加法运算和减法运算而造成的模型表征能力差的问题。
在一种可能的实施方式中,该辅助变量还包括第二辅助变量,该第二辅助变量为该除法运算产生的余数。
该变换处理模块1402,还用于以该中间数据为除数且该第二参数为被除数进行除法取余运算,得到该第二辅助变量,该第二辅助变量用于作为该正向变换处理对应的逆向变换处理中的乘法运算的乘积的增量,该第一辅助变量用于作为该逆向变换处理中的除法运算产生的余数。
本实施方式中,提出该目标可逆流模型在正向变换处理中,还将生成第二辅助变量,该第二辅助变量用于作为该正向变换处理对应的逆向变换处理中的乘法运算的乘积的增量。也就是说,在逆向变换处理中,数据处理装置140将基于第二辅助变量将第二数据恢复为中间数据,进而将中间数据恢复为第一数据。因此,在正向变换处理中,计算出第二辅助变量,有利于实现将第二数据恢复为第一数据。
在一种可能的实施方式中,该变换处理模块1402,还用于:
获取输入该目标可逆流层的第一辅助数据;
基于该第一辅助数据和该第一参数确定该第一辅助变量。
在一种可能的实施方式中,该变换处理模块1402,具体用于:
基于该第一参数确定第一均匀分布,该第一均匀分布的端点为0和该第一参数;
采用该第一均匀分布解码该第一辅助数据,得到该第一辅助变量和第二辅助数据,该第一辅助变量的取值位于0到该第一参数之间。
在一种可能的实施方式中,该变换处理模块1402包括第一熵编解码模块14021,该第一熵编解码模块14021存储有第一均匀分布,该第一熵编解码模块14021用于:
以该第一辅助数据为除数且该第一参数为被除数,进行除法取余运算,得到该第一辅助变量;
以该第一辅助数据为除数且该第一参数为被除数,进行除法取整运算,得到该第二辅助数据,该第二辅助数据用于在正向变换过程中编码该第二辅助变量,在逆向变换过程中编码该第一辅助变量。
在一种可能的实施方式中,该变换处理模块1402,还用于:
基于该第二参数确定第二均匀分布,该第二均匀分布的端点为0和该第二参数;
采用该第二均匀分布和该第二辅助数据编码该第二辅助变量,得到第三辅助数据,该第二辅助变量的取值位于0到该第二参数之间;
存储该第三辅助数据,该第三辅助数据用于在该逆向变换处理中解码该第二辅助变量。
本实施方式中,由于数据处理装置140采用第二辅助数据编码第二辅助变量,以获得编码了第二辅助变量的第三辅助数据,有利于数据处理装置140存储第三辅助数据,以便于在逆向变换处理过程中,数据处理装置140采用第三辅助数据解码第二辅助变量。由于,存储第三辅助数据占用的存储空间远小于存储第二辅助变量需要的存储空间,因此,相比于该数据处理装置140直接存储第二辅助变量的方案,有利于节省存储空间,提高存储效率。另外,由于第三辅助数据是基于第二辅助数据编码第二辅助变量确定的,而第二辅助数据又是在采用第一辅助数据解码第一辅助变量的过程获得的,因此,存储了第三辅助数据,便间接存储了第二辅助变量和第一辅助变量的对应关系(相当于将第一辅助变量和第二辅助变量对应存储)。
在一种可能的实施方式中,该变换处理模块1402,该变换处理模块1402包括第二熵编解码模块14022,该第二熵编解码模块14022存储有第二均匀分布,该第二熵编解码模块14022用于:
将该第二辅助数据与该第二参数进行乘法运算而获得的乘积,与该第二辅助变量进行加法运算,得到该第三辅助数据。
在一种可能的实施方式中,该目标可逆流层还用于:
获取第一单调连续函数的定义域中的第一区间和该第一区间在该第一单调连续函数的值域上对应的第二区间,该第一单调连续函数为非线性函数;
基于该第一区间和该第二区间采用插值法或二分查找法计算该模型参数。
在一种可能的实施方式中,当该N个可逆流层包括至少两个可逆流层时,该N个可逆流层采用串行的方式排布;
其中,第i-1个可逆流层的输出用于作为第i个可逆流层的输入,该i为大于1且不大于N的正整数,第1个可逆流层的输入为该待编码数据,该第N个可逆流层的输出为该隐变量。
在一种可能的实施方式中,该待编码数据为采用噪声数据对原始数据进行反编码处理而获得的数据,该待编码数据为具有第一预设精度的定点数数据;该第i个可逆流层还用于在该正向变换处理之前,将基于该具有第一预设精度的定点数数据处理为整数数据,以及将该经该正向变换处理后的整数数据处理为具有该第一预设精度的定点数数据以作为该第i个可逆流层的输出。
应理解,前述噪声数据可以是数据处理装置140中已压缩的数据的比特流,还可以是数据处理装置140中预存的比特流,具体此处不做限定。本实施方式中,由于采用噪声数据对原始数据进行反编码处理,能够增大数据处理装置140计算的数据的数值,有利于提升后续变换过程的处理精度,也有利于提升压缩率。
在一种可能的实施方式中,该N个可逆流层还包括可逆卷积层,该可逆卷积层包括卷积核和该目标可逆流层,该卷积核为以该待编码数据的通道数为阶数的方阵;该可逆卷积层用于对该卷积核进行LU分解,得到目标矩阵,该目标矩阵为对角阵,该对角阵的对角线上的非零元素用于确定该可逆卷积层中该目标可逆流层的模型参数。
本实施方式中,提出在可逆流模型中设置可逆卷积层,采用1x1卷积层与目标可逆流层结合。具体地,将1x1卷积层转化成连续上三角阵、对角阵、下三角阵和置乱阵的矩阵乘法运算,对四种矩阵乘法分别使用迭代计算、基于目标可逆流层的数值可逆线性流变换处理、迭代计算、元素重排。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
在一种可能的实施方式中,该N个可逆流层还包括耦合层,该耦合层包括该目标可逆流层;该耦合层用于将输入该耦合层的数据按预设维度划分为至少两部分数据,并将该至少两部分数据中的至少一部分数据作为该目标可逆流层的输入进行处理,得到该耦合层的输出。
应理解,耦合层可以包含神经网络,该神经网络用于分维度对输入该耦合层的数据进行处理。该神经网络可以包括多种类型。例如,卷积神经网络(convolutional neuralnetwork,CNN)、深度神经网络(deep neural network,DNN)、循环神经网络(recurrentneural networks,RNN)或其他神经网络等。具体此处不做限定。
本实施方式中,提出在可逆流模型中设置耦合层,该耦合层能够将输入该耦合层的数据按照维度划分,并仅对其中一部分维度的数据采用目标可逆流层的变换方式进行变换处理。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
如图15所示,为本申请一个实施例提供的一种数据处理装置150的结构示意图。
当数据处理装置150作为解码端,该数据处理装置150运行如下模块以实现前述图5、图9以及图10A对应的方法实施例中的数据处理装置的功能。
具体地,该数据处理装置150包括:获取模块1501、解码模块1502以及变换处理模块1503。其中,变换处理模块1502包括本申请提出的可逆流模型,在解码端该可逆流模型用于对输入该可逆流模型的隐变量进行逆向变换处理。具体地,前述各个功能模块的具体功能如下:
获取模块1501,用于获取编码数据;
解码模块1502,用于对该编码数据进行解码处理,得到隐变量;
变换处理模块1503,用于采用可逆流模型对该隐变量进行逆向变换处理,得到解码输出;其中,该可逆流模型包括目标可逆流层,该目标可逆流层包括模型参数,该模型参数用于约束在该逆向变换处理过程中生成的辅助变量,该目标可逆流层对应的运算包括基于该模型参数确定的乘法运算和除法运算,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。
本实施例中,数据处理装置150将对解码后的隐变量进行逆向变换处理,该逆向变换处理的可逆流模型包括目标可逆流层,该目标可逆流层不仅包括基于该模型参数确定的乘法运算和除法运算,该目标可逆流层中的模型参数还能够约束在所述逆向变换处理过程中生成的辅助变量,该辅助变量为该乘法运算的乘积的增量或该除法运算产生的余数。也就是说,本申请能够针对正向变换处理过程中的乘法运算,采用辅助变量进行除法运算,以将隐变量恢复为正向变换处理前的数据(即前述数据编码方法中的待编码数据)。因此,不仅能够保证变换处理的可逆运算,还能够提高模型表征能力,有利于提升模型概率分布的估计准确率,进而能够提升无损压缩的压缩效率。
在一种可能的实施方式中,该可逆流模型包括N个可逆流层,该N个可逆流层包括该目标可逆流层,该N为大于或等于1的整数。
该目标可逆流层用于对输入该目标可逆流层的第二数据进行逆向变换处理,得到输出该目标可逆流层的第一数据,该第二数据为该乘法运算的乘数,该第一数据为该除法运算的整数商。其中,该第二数据为该隐变量或者经过至少一个该可逆流层处理后输出的数据,该第一数据为该解码输出或者该第一数据经过至少一个该可逆流层处理后的输出为该解码输出。
在一种可能的实施方式中,该模型参数包括第一参数和第二参数,该第一参数和该第二参数均为正整数,该第一参数与该第二参数不相等;该辅助变量包括第二辅助变量,该第二辅助变量为该乘法运算的乘积的增量。
该变换处理模块1503,具体用于:
将该第二数据作为该第二参数的乘数进行乘法运算,得到第二乘积数据;
将该第二辅助变量作用该第二乘积数据的增量进行加法运算,得到中间数据;
将该中间数据作为除数且该第一参数作为被除数进行除法取整运算,得到该第一数据。
本实施方式中,数据处理装置150将第二数据与第二参数进行乘法运算而获得的乘积(即第二乘积数据)与第二辅助变量进行加法运算,得到中间数据;然后,该数据处理装置150将中间数据作为除数且该第一参数作为被除数进行除法运算,得到的整数商为第一数据。由此可见,在前述正向变换过程中,第二数据先基于乘法运算和加法运算变换为中间数据,再由该中间数据基于除法取整运算变换为第一数据。由于,第二辅助变量参与了确定中间数据的过程,即第二辅助变量作为该乘法运算的乘积的增量,基于该中间数据进行除法取整运算的整数商才为第一数据,因此,避免了仅用乘法运算而造成的运算不可逆的问题,也避免了仅用加法运算和减法运算而造成的模型表征能力差的问题。
在一种可能的实施方式中,该辅助变量还包括第一辅助变量,该第一辅助变量为该除法运算产生的余数;
该变换处理模块1503,还用于:
以该中间数据为除数且该第一参数为被除数进行除法取余运算,得到该第一辅助变量。
在一种可能的实施方式中,该变换处理模块1503,具体用于:
获取输入该目标可逆流层的第三辅助数据,该第三辅助数据为在该逆向变换处理对应的正向变换处理中存储的辅助数据;
基于该第三辅助数据和该第二参数确定该第二辅助变量。
本实施例中,提出数据处理装置150采用在该逆向变换处理对应的正向变换处理中存储的第三辅助数据确定第二辅助变量,有利于从第三辅助数据中恢复出第二辅助变量,以确保在逆向变换处理过程中使用的第二辅助变量的取值与在正向变换处理过程中使用的第二辅助变量的取值是一致的。
在一种可能的实施方式中,该变换处理模块1503,具体用于:
基于该第二参数确定第二均匀分布,该第二均匀分布的端点为0和该第二参数;
采用该第二均匀分布解码该第三辅助数据,得到该第二辅助变量和该第二辅助数据,该第二辅助变量的取值位于0到该第二参数之间。
在一种可能的实施方式中,该变换处理模块1503包括第二熵编解码模块15032,该第二熵编解码模块15032存储有第二均匀分布,该第二熵编解码模块15032用于:
以该第三辅助数据为除数且该第二参数为被除数,进行除法取余运算,得到该第二辅助变量;
以该第三辅助数据为除数且该第二参数为被除数,进行除法取整运算,得到该第二辅助数据,该第二辅助数据用于在正向变换过程中编码该第二辅助变量,在逆向变换过程中编码该第一辅助变量。
在一种可能的实施方式中,该变换处理模块1503,还用于:
基于该第一参数确定第一均匀分布,该第一均匀分布的端点为0和该第一参数;
采用该第一均匀分布和该第二辅助数据编码该第一辅助变量,得到第一辅助数据,该第一辅助变量的取值位于0到该第一参数之间;
存储该第一辅助数据,该第一辅助数据为该逆向变换处理对应的正向变换处理中输入该目标可逆流层的辅助数据。
本实施方式中,由于数据处理装置150采用第二辅助数据编码第一辅助变量,以获得编码了第一辅助变量的第一辅助数据,有利于数据处理装置150存储第一辅助数据。由于,存储第一辅助数据占用的存储空间远小于存储第一辅助变量需要的存储空间,因此,相比于该数据处理装置150直接存储第一辅助变量的方案,有利于节省存储空间,提高存储效率。另外,生成并存储第一辅助数据,有利于恢复在正向变换处理过程中输入该目标可逆流层的第一辅助数据。
在一种可能的实施方式中,该变换处理模块1503,该变换处理模块1503包括第一熵编解码模块15031,该第一熵编解码模块15031存储有第一均匀分布,该第一熵编解码模块15031用于:
将该第二辅助数据与该第一参数进行乘法运算而获得的乘积,与该第一辅助变量进行加法运算,得到该第一辅助数据。
在一种可能的实施方式中,该目标可逆流层还用于:
获取第一单调连续函数的定义域中的第一区间和该第一区间在该第一单调连续函数的值域上对应的第二区间,该第一单调连续函数为非线性函数;
基于该第一区间和该第二区间采用插值法或二分查找法计算该模型参数。
在一种可能的实施方式中,当该N个可逆流层包括至少两个可逆流层时,该N个可逆流层采用串行的方式排布;
其中,第i个可逆流层的输出用于作为第i-1个可逆流层的输入,该i为大于1且不大于N的正整数,第N个可逆流层的输入为该隐变量,该第1个可逆流层的输出为该解码输出。
在一种可能的实施方式中,该第i个可逆流层还用于在该逆向变换处理之前,将基于该具有第一预设精度的定点数数据处理为整数数据,以及将该经该逆向变换处理后的整数数据处理为具有第一预设精度的定点数数据以作为该第i个可逆流层的输出。
在一种可能的实施方式中,该解码模块,还用于对该第1个可逆流层的输出进行解反编码处理,得到原始数据和噪声数据。
在一种可能的实施方式中,该N个串行的可逆流层还包括可逆卷积层,该可逆卷积层包括卷积核和该目标可逆流层,该卷积核为以该待编码数据的通道数为阶数的方阵;该可逆卷积层用于对该卷积核进行LU分解,得到目标矩阵,该目标矩阵为对角阵,该对角阵的对角线上的非零元素用于确定该可逆卷积层中该目标可逆流层的模型参数。
本实施方式中,提出在可逆流模型中设置可逆卷积层,采用1x1卷积层与目标可逆流层结合。具体地,将1x1卷积层转化成连续上三角阵、对角阵、下三角阵和置乱阵的矩阵乘法运算,对四种矩阵乘法分别使用迭代计算、基于目标可逆流层的数值可逆线性流变换处理、迭代计算、元素重排。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
在一种可能的实施方式中,该N个串行的可逆流层还包括耦合层,该耦合层包括该目标可逆流层;该耦合层用于将输入该耦合层的数据按预设维度划分为至少两部分数据,并将该至少两部分数据中的至少一部分数据作为该目标可逆流层的输入进行处理,得到该耦合层的输出。
应理解,耦合层可以包含神经网络,该神经网络用于分维度对输入该耦合层的数据进行处理。该神经网络可以包括多种类型。例如,卷积神经网络CNN、深度神经网络DNN、循环神经网络RNN或其他神经网络等。具体此处不做限定。
本实施方式中,提出在可逆流模型中设置耦合层,该耦合层能够将输入该耦合层的数据按照维度划分,并仅对其中一部分维度的数据采用目标可逆流层的变换方式进行变换处理。因此,能够实现数据变换的多样性,提高可逆流模型的表征能力。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的。其中所述作为分离部件说明的单元可以是物理上分开的,也可以不是物理上分开的。作为单元显示的部件可以是物理单元,也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。在实际应用中,可以根据实际的需要选择其中的部分或者全部模块/单元来实现本实施例方案的目的。另外,本申请提供的装置实施例的附图中,模块之间的连接关系表示它们之间具有通信连接,具体实现可以为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器以及专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
本文中“第一”、“第二”……之类的描述仅仅用来将一个对象或者操作与另一个对象或操作区分开来,而不一定要求或者暗示这些对象或操作之间存在任何这种实际的关系或者顺序。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (33)
1.一种数据编码方法,其特征在于,包括:
获取待编码数据;
采用可逆流模型对所述待编码数据进行正向变换处理,得到隐变量;其中,所述可逆流模型包括目标可逆流层,所述目标可逆流层包括模型参数,所述模型参数用于约束在所述正向变换处理过程中生成的辅助变量,所述目标可逆流层对应的运算包括基于所述模型参数确定的乘法运算和除法运算,所述辅助变量为所述乘法运算的乘积的增量或所述除法运算产生的余数;
对所述隐变量进行编码处理,得到所述待编码数据对应的编码数据。
2.根据权利要求1所述的方法,其特征在于,所述可逆流模型包括N个可逆流层,所述N个可逆流层包括所述目标可逆流层,所述N为大于或等于1的整数;
所述目标可逆流层用于对输入所述目标可逆流层的第一数据进行正向变换处理,得到输出所述目标可逆流层的第二数据,所述第一数据为所述乘法运算的乘数,所述第二数据为所述除法运算的整数商;
其中,所述第一数据为所述待编码数据或者经过至少一个所述可逆流层处理后输出的数据,所述第二数据为所述隐变量或者所述第二数据经过至少一个所述可逆流层处理后输出的数据为所述隐变量。
3.根据权利要求2所述的方法,其特征在于,所述模型参数包括第一参数和第二参数,所述第一参数和所述第二参数均为正整数,所述第一参数与所述第二参数不相等;所述辅助变量包括第一辅助变量,所述第一辅助变量为所述乘法运算的乘积的增量;
所述对输入所述目标可逆流层的第一数据进行正向变换处理,得到输出所述目标可逆流层的第二数据,包括:
将所述第一数据作为所述第一参数的乘数进行乘法运算,得到第一乘积数据;
将所述第一辅助变量作用所述第一乘积数据的增量进行加法运算,得到中间数据;
将所述中间数据作为除数且所述第二参数作为被除数进行除法取整运算,得到所述第二数据。
4.根据权利要求3所述的方法,其特征在于,所述辅助变量还包括第二辅助变量,所述第二辅助变量为所述除法运算产生的余数;
所述方法还包括:
以所述中间数据为除数且所述第二参数为被除数进行除法取余运算,得到所述第二辅助变量,所述第二辅助变量用于作为所述正向变换处理对应的逆向变换处理中的乘法运算的乘积的增量,所述第一辅助变量用于作为所述逆向变换处理中的除法运算产生的余数。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
获取输入所述目标可逆流层的第一辅助数据;
基于所述第一辅助数据和所述第一参数确定所述第一辅助变量。
6.根据权利要求5所述的方法,其特征在于,所述基于所述第一辅助数据和所述第一参数确定所述第一辅助变量,包括:
基于所述第一参数确定第一均匀分布,所述第一均匀分布的端点为0和所述第一参数;
采用所述第一均匀分布解码所述第一辅助数据,得到所述第一辅助变量和第二辅助数据,所述第一辅助变量的取值位于0到所述第一参数之间。
7.根据权利要求6所述的方法,其特征在于,所述采用所述第一均匀分布解码所述第一辅助数据,得到所述第一辅助变量和第二辅助数据,包括:
以所述第一辅助数据为除数且所述第一参数为被除数,进行除法取余运算,得到所述第一辅助变量;
以所述第一辅助数据为除数且所述第一参数为被除数,进行除法取整运算,得到所述第二辅助数据,所述第二辅助数据用于在正向变换过程中编码所述第二辅助变量,在逆向变换过程中编码所述第一辅助变量。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
基于所述第二参数确定第二均匀分布,所述第二均匀分布的端点为0和所述第二参数;
采用所述第二均匀分布和所述第二辅助数据编码所述第二辅助变量,得到第三辅助数据,所述第二辅助变量的取值位于0到所述第二参数之间;
存储所述第三辅助数据,所述第三辅助数据用于在所述逆向变换处理中解码所述第二辅助变量。
9.根据权利要求8所述的方法,其特征在于,所述采用所述第二均匀分布和所述第二辅助数据编码所述第二辅助变量,得到第三辅助数据,包括:
将所述第二辅助数据与所述第二参数进行乘法运算而获得的乘积,与所述第二辅助变量进行加法运算,得到所述第三辅助数据。
10.根据权利要求2至9中任意一项所述的方法,其特征在于,所述目标可逆流层还用于:
获取第一单调连续函数的定义域中的第一区间和所述第一区间在所述第一单调连续函数的值域上对应的第二区间,所述第一单调连续函数为非线性函数;
基于所述第一区间和所述第二区间采用插值法或二分查找法计算所述模型参数。
11.根据权利要求2至10中任意一项所述的方法,其特征在于,当所述N个可逆流层包括至少两个可逆流层时,所述N个可逆流层采用串行的方式排布;
其中,第i-1个可逆流层的输出用于作为第i个可逆流层的输入,所述i为大于1且不大于N的正整数,第1个可逆流层的输入为所述待编码数据,所述第N个可逆流层的输出为所述隐变量。
12.根据权利要求11所述的方法,其特征在于,所述待编码数据为采用噪声数据对原始数据进行反编码处理而获得的数据,所述待编码数据为具有第一预设精度的定点数数据;
所述第i个可逆流层还用于在所述正向变换处理之前,将基于所述具有第一预设精度的定点数数据处理为整数数据,以及将所述经所述正向变换处理后的整数数据处理为具有所述第一预设精度的定点数数据以作为所述第i个可逆流层的输出。
13.根据权利要求2至12中任意一项所述的方法,其特征在于,所述N个可逆流层还包括可逆卷积层,所述可逆卷积层包括卷积核和所述目标可逆流层,所述卷积核为以所述待编码数据的通道数为阶数的方阵;
所述可逆卷积层用于对所述卷积核进行LU分解,得到目标矩阵,所述目标矩阵为对角阵,所述对角阵的对角线上的非零元素用于确定所述可逆卷积层中所述目标可逆流层的模型参数。
14.根据权利要求2至12中任意一项所述的方法,其特征在于,所述N个可逆流层还包括耦合层,所述耦合层包括所述目标可逆流层;
所述耦合层用于将输入所述耦合层的数据按预设维度划分为至少两部分数据,并将所述至少两部分数据中的至少一部分数据作为所述目标可逆流层的输入进行处理,得到所述耦合层的输出。
15.一种数据解码方法,其特征在于,包括:
获取编码数据;
对所述编码数据进行解码处理,得到隐变量;
采用可逆流模型对所述隐变量进行逆向变换处理,得到解码输出;其中,所述可逆流模型包括目标可逆流层,所述目标可逆流层包括模型参数,所述模型参数用于约束在所述逆向变换处理过程中生成的辅助变量,所述目标可逆流层对应的运算包括基于所述模型参数确定的乘法运算和除法运算,所述辅助变量为所述乘法运算的乘积的增量或所述除法运算产生的余数。
16.根据权利要求15所述的方法,其特征在于,所述可逆流模型包括N个可逆流层,所述N个可逆流层包括所述目标可逆流层,所述N为大于或等于1的整数;
所述目标可逆流层用于对输入所述目标可逆流层的第二数据进行逆向变换处理,得到输出所述目标可逆流层的第一数据,所述第二数据为所述乘法运算的乘数,所述第一数据为所述除法运算的整数商;
其中,所述第二数据为所述隐变量或者经过至少一个所述可逆流层处理后输出的数据,所述第一数据为所述解码输出或者所述第一数据经过至少一个所述可逆流层处理后的输出为所述解码输出。
17.根据权利要求16所述的方法,其特征在于,所述模型参数包括第一参数和第二参数,所述第一参数和所述第二参数均为正整数,所述第一参数与所述第二参数不相等;所述辅助变量包括第二辅助变量,所述第二辅助变量为所述乘法运算的乘积的增量;
所述对输入所述目标可逆流层的第二数据进行逆向变换处理,得到输出所述目标可逆流层的第一数据,包括:
将所述第二数据作为所述第二参数的乘数进行乘法运算,得到第二乘积数据;
将所述第二辅助变量作用所述第二乘积数据的增量进行加法运算,得到中间数据;
将所述中间数据作为除数且所述第一参数作为被除数进行除法取整运算,得到所述第一数据。
18.根据权利要求17所述的方法,其特征在于,所述辅助变量还包括第一辅助变量,所述第一辅助变量为所述除法运算产生的余数;
所述方法还包括:
以所述中间数据为除数且所述第一参数为被除数进行除法取余运算,得到所述第一辅助变量。
19.根据权利要求17或18所述的方法,其特征在于,所述方法还包括:
获取输入所述目标可逆流层的第三辅助数据,所述第三辅助数据为在所述逆向变换处理对应的正向变换处理中存储的辅助数据;
基于所述第三辅助数据和所述第二参数确定所述第二辅助变量。
20.根据权利要求19所述的方法,其特征在于,所述基于所述第三辅助数据和所述第二参数确定所述第二辅助变量,包括:
基于所述第二参数确定第二均匀分布,所述第二均匀分布的端点为0和所述第二参数;
采用所述第二均匀分布解码所述第三辅助数据,得到所述第二辅助变量和所述第二辅助数据,所述第二辅助变量的取值位于0到所述第二参数之间。
21.根据权利要求20所述的方法,其特征在于,所述采用所述第二均匀分布解码所述第三辅助数据,得到所述第二辅助变量和所述第二辅助数据,包括:
以所述第三辅助数据为除数且所述第二参数为被除数,进行除法取余运算,得到所述第二辅助变量;
以所述第三辅助数据为除数且所述第二参数为被除数,进行除法取整运算,得到所述第二辅助数据,所述第二辅助数据用于在正向变换过程中编码所述第二辅助变量,在逆向变换过程中编码所述第一辅助变量。
22.根据权利要求20或21所述的方法,其特征在于,所述方法还包括:
基于所述第一参数确定第一均匀分布,所述第一均匀分布的端点为0和所述第一参数;
采用所述第一均匀分布和所述第二辅助数据编码所述第一辅助变量,得到第一辅助数据,所述第一辅助变量的取值位于0到所述第一参数之间;
存储所述第一辅助数据,所述第一辅助数据为所述逆向变换处理对应的正向变换处理中输入所述目标可逆流层的辅助数据。
23.根据权利要求22所述的方法,其特征在于,所述采用所述第一均匀分布和所述第二辅助数据编码所述第一辅助变量,得到第一辅助数据,包括:
将所述第二辅助数据与所述第一参数进行乘法运算而获得的乘积,与所述第一辅助变量进行加法运算,得到所述第一辅助数据。
24.根据权利要求16至23中任意一项所述的方法,其特征在于,所述目标可逆流层还用于:
获取第一单调连续函数的定义域中的第一区间和所述第一区间在所述第一单调连续函数的值域上对应的第二区间,所述第一单调连续函数为非线性函数;
基于所述第一区间和所述第二区间采用插值法或二分查找法计算所述模型参数。
25.根据权利要求16至24中任意一项所述的方法,其特征在于,当所述N个可逆流层包括至少两个可逆流层时,所述N个可逆流层采用串行的方式排布;
其中,第i个可逆流层的输出用于作为第i-1个可逆流层的输入,所述i为大于1且不大于N的正整数,第N个可逆流层的输入为所述隐变量,所述第1个可逆流层的输出为所述解码输出。
26.根据权利要求25所述的方法,其特征在于,所述第i个可逆流层还用于在所述逆向变换处理之前,将基于所述具有第一预设精度的定点数数据处理为整数数据,以及将所述经所述逆向逆变换处理后的整数数据处理为具有第一预设精度的定点数数据以作为所述第i个可逆流层的输出。
27.根据权利要求25或26所述的方法,其特征在于,所述方法还包括:
对所述第1个可逆流层的输出进行解反编码处理,得到原始数据和噪声数据。
28.根据权利要求16至27中任意一项所述的方法,其特征在于,所述N个串行的可逆流层还包括可逆卷积层,所述可逆卷积层包括卷积核和所述目标可逆流层,所述卷积核为以所述待编码数据的通道数为阶数的方阵;
所述可逆卷积层用于对所述卷积核进行LU分解,得到目标矩阵,所述目标矩阵为对角阵,所述对角阵的对角线上的非零元素用于确定所述可逆卷积层中所述目标可逆流层的模型参数。
29.根据权利要求16至27中任意一项所述的方法,其特征在于,所述N个串行的可逆流层还包括耦合层,所述耦合层包括所述目标可逆流层;
所述耦合层用于将输入所述耦合层的数据按预设维度划分为至少两部分数据,并将所述至少两部分数据中的至少一部分数据作为所述目标可逆流层的输入进行处理,得到所述耦合层的输出。
30.一种数据处理装置,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述处理器执行时使得所述数据处理装置实现权利要求1至14中任意一项所述的方法。
31.一种数据处理装置,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述处理器执行时使得所述数据处理装置实现权利要求15至29中任意一项所述的方法。
32.一种计算机可读存储介质,包括程序,当所述程序被处理单元所执行时,执行如权利要求1至14中任意一项所述的方法,或者,执行如权利要求15至29中任意一项所述的方法。
33.一种芯片,其特征在于,包括处理单元和通信接口,所述处理单元通过所述通信接口获取程序指令,当所述程序指令被所述处理单元执行时使得所述芯片实现权利要求1至14中任意一项所述的方法,或者,实现如权利要求15至29中任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111163722.5A CN115913245A (zh) | 2021-09-30 | 2021-09-30 | 数据编码方法、数据解码方法以及数据处理装置 |
PCT/CN2022/120095 WO2023051335A1 (zh) | 2021-09-30 | 2022-09-21 | 数据编码方法、数据解码方法以及数据处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111163722.5A CN115913245A (zh) | 2021-09-30 | 2021-09-30 | 数据编码方法、数据解码方法以及数据处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115913245A true CN115913245A (zh) | 2023-04-04 |
Family
ID=85767797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111163722.5A Pending CN115913245A (zh) | 2021-09-30 | 2021-09-30 | 数据编码方法、数据解码方法以及数据处理装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115913245A (zh) |
WO (1) | WO2023051335A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116091873B (zh) * | 2023-04-10 | 2023-11-28 | 宁德时代新能源科技股份有限公司 | 图像生成方法、装置、电子设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102547295B (zh) * | 2012-02-22 | 2014-07-30 | 上海大学 | 一种图像数据无损压缩的编码方法 |
US10122379B1 (en) * | 2016-03-23 | 2018-11-06 | EMC IP Holding Company LLC | Content-aware compression of data with reduced number of class codes to be encoded |
CA3108717A1 (en) * | 2020-02-06 | 2021-08-06 | Royal Bank Of Canada | Systems and methods for modeling continuous stochastic processes with dynamic normalizing flows |
CN113259665B (zh) * | 2020-02-07 | 2022-08-09 | 华为技术有限公司 | 一种图像处理方法以及相关设备 |
CN112487992B (zh) * | 2020-12-02 | 2022-07-22 | 重庆邮电大学 | 一种基于流模型的人脸情绪图像的生成方法及设备 |
CN114978189A (zh) * | 2021-02-27 | 2022-08-30 | 华为技术有限公司 | 一种数据编码方法以及相关设备 |
-
2021
- 2021-09-30 CN CN202111163722.5A patent/CN115913245A/zh active Pending
-
2022
- 2022-09-21 WO PCT/CN2022/120095 patent/WO2023051335A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2023051335A1 (zh) | 2023-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10834415B2 (en) | Devices for compression/decompression, system, chip, and electronic device | |
WO2020014590A1 (en) | Generating a compressed representation of a neural network with proficient inference speed and power consumption | |
CN113259665B (zh) | 一种图像处理方法以及相关设备 | |
CN111986278B (zh) | 图像编码装置、概率模型生成装置和图像压缩系统 | |
US20220215595A1 (en) | Systems and methods for image compression at multiple, different bitrates | |
CN111988609A (zh) | 图像编码装置、概率模型生成装置和图像解码装置 | |
WO2022028197A1 (zh) | 一种图像处理方法及其设备 | |
US20230401756A1 (en) | Data Encoding Method and Related Device | |
WO2023207836A1 (zh) | 一种图像编码方法、图像解压方法以及装置 | |
CN114615507B (zh) | 一种图像编码方法、解码方法及相关装置 | |
WO2023051335A1 (zh) | 数据编码方法、数据解码方法以及数据处理装置 | |
CN115661635A (zh) | 基于Transformer融合卷积神经网络的高光谱图像重建方法 | |
WO2023174256A1 (zh) | 一种数据压缩方法以及相关设备 | |
CN112784956A (zh) | 用于处理神经网络的数据的方法和设备 | |
WO2023159820A1 (zh) | 图像压缩方法、图像解压缩方法及装置 | |
CN114501031B (zh) | 一种压缩编码、解压缩方法以及装置 | |
CN113949867B (zh) | 一种图像处理的方法及装置 | |
CN113554719B (zh) | 一种图像编码方法、解码方法、存储介质及终端设备 | |
WO2022022176A1 (zh) | 一种图像处理方法以及相关设备 | |
CN114154621A (zh) | 一种基于fpga的卷积神经网络图像处理方法及装置 | |
CN115409697A (zh) | 一种图像处理方法及相关装置 | |
CN113949868B (zh) | 一种熵编码方法及装置 | |
CN114554225B (zh) | 图像编码方法、装置、设备及计算机可读介质 | |
CN112733585B (zh) | 图像识别方法 | |
CN112580772B (zh) | 卷积神经网络的压缩方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |