一种图像编码方法、图像解压方法以及装置与流程

文档序号:31456984发布日期:2022-09-07 14:53阅读:48来源:国知局
1.本技术涉及图像处理领域,尤其涉及一种图像编码方法、图像解压方法以及装置。
背景技术
::2.图像在各个领域使用广泛,在大量场景中都可能涉及到图像的传输或保存等。且随着图像的分辨率越高,在保存图像时所需要的存储空间消耗也就越多,在传输图像时所需的带宽也就越高,传输效率也就越低。因此,通常,为了便于图像的传输或者保存,可以对图像进行压缩,从而降低图像所占的比特数量,进而减少保存图像所需的存储空间以及传输图像所需的带宽。3.例如,在一些常用的图像压缩方式中,可以采用熵编码的方式来进行图像压缩,如常用的熵编码算法有霍夫曼编码,算术编码,ans编码等来进行图像压缩。然而,多种熵编码方式的压缩率均已达到最优,很难再进一步提高压缩率。因此,如何提高编解码效率,成为亟待解决的问题。技术实现要素:4.本技术提供一种图像编码方法、图像解压方法以及装置,用于结合自回归模型和自编码模型的输出进行编码,降低所需模型的大小,提高编解码效率。5.有鉴于此,第一方面,本技术提供一种图像编码方法,包括:将输入图像作为自回归模型的输入,输出第一图像;获取第一图像和输入图像之间的残差,得到第一残差图像;将输入图像作为自编码模型的输入,输出隐变量和第一残差分布,隐变量包括从输入图像中提取到的特征,第一残差分布包括自编码模型预测的用于表示输入图像中各个像素点和第一残差图像中各个像素点对应的残差值;对第一残差图像和第一残差分布进行编码,得到残差编码数据;对隐变量进行编码,得到隐变量编码数据,隐变量编码数据和残差编码数据用于解压后得到输入图像。6.因此,本技术中,结合了自回归模型与自编码模型的输出结果进行编码,可以将自编码与自回归模型都控制到很小,避免了自编码模型的网络过大造成的推理时间过长的问题,实现高效的图像压缩。并且,本技术提供的方法中,全流程均可基于ai芯片的ai无损压缩实现,包括ai模型及熵编码,避免了系统内存与ai芯片内存的传输问题,提高编码效率。7.在一种可能的实施方式中,前述的对第一残差图像和第一残差分布进行编码,得到残差编码数据,包括:将第一残差图像和第一残差分布作为半动态熵编码器的输入,输出残差编码数据,该半动态熵编码器用于使用第一预设类型的编码运算进行熵编码,第一预设类型的编码运算包括加、减或位运算,且半动态熵编码器中不包括第二预设类型的编码运算,第二预设类型包括乘、除或取余运算中的至少一种,即该半动态熵编码器中不包括乘、除或取余运算等耗时较长运算,即该半动态熵编码器中可以仅包括简单的加减运算,从而可以实现高效编码。8.因此,本技术实施方式中,可以对残差图像进行半动态熵编码,以有限种分布方式进行编码,相对于动态熵编码减少了乘、除以及取余运算等耗时较多的运损,大大提高了编码效率。9.在一种可能的实施方式中,该半动态熵编码器可以是对动态上编码器进行转换得到。具体地,可以对动态熵编码器的运算进行近似处理,如将动态熵编码器的运算替换为近似运算,减少或者去除乘、除、取余等运算,随后还可以进行变换处理,对运算进行变换,从而将所有耗时超过一定时长的运算(如剩余的取余、乘以及除等运损)转化为表格存取,及加、减、位等轻量级运算,得到本技术提供的半动态熵编码器。可以理解为,该半动态熵编码器可以是对动态熵编码器中的一些运算进行替换或者转换得到的熵编码器,使用该半动态熵编码器进行熵编码时,即可使用简单的运算,如加、减、位运算等高效编码的运算,从而实现高效编码。10.在一种可能的实施方式中,前述的对隐变量进行编码,得到残差编码数据,可以包括:将隐变量作为静态熵编码器的输入,得到隐变量编码数据。11.因此,本技术实施方式中,可以对从输入图像中提取到的特征进行静态熵编码,可以高效地实现编码。12.在一种可能的实施方式中,自编码模型可以包括编码模型和解码模型,将输入图像作为自编码模型的输入,输出隐变量和第一残差分布,包括:将输入图像作为编码模型的输入,输出隐变量,编码模型用于从输入图形中提取特征;将隐变量作为解码模型的输入,得到第一残差分布,解码模型用于预测输入的图像与对应的像素分布之间的残差值。13.本技术实施方式中,可以利用训练好的自编码模型来从输入图像中提取重要特征,并预测对应的残差图像,以便于结合自回归模型的输出,得到能表示输入图像中的数据的残差编码数据。14.在一种可能的实施方式中,自回归模型用于使用已预测的像素点的像素值预测处于同一连线上的像素点的值,以使后续解码过程中,针对同一连线上的像素点,无需等待其他像素点解码后才能对当前像素点进行解码,实现同一连线上的像素点的解码效率,提高针对输入图像的解码效率。15.第二方面,本技术提供一种图像解压方法,包括:获取隐变量编码数据和残差编码数据,该隐变量编码数据包括编码端从输入图像中提取到的特征进行编码得到,该残差编码数据包括自回归模型前向传播输出的图像和该输入图像之间的残差进行编码得到;对隐变量编码数据进行解码,得到隐变量,该隐变量包括编码端从输入图像中提取到的特征;将隐变量作为自编码模型的输入,输出第二残差分布;结合第二残差分布和残差编码数据进行解码,得到第二残差图像;将第二残差图像作为自回归模型的反向传播的输入,输出解压图像。16.因此,本技术实施方式,自编码模型通常拟合能力较差,需要用较深的网络才能达到较好的压缩率,而本技术结合了自回归模型的输出结果,从而可以降低自编码模型的大小。因此,本技术中,结合了自回归模型与自编码模型进行解码,可以将自编码与自回归模型都控制到很小,避免了自编码模型的网络过大造成的推理时间过长的问题,实现高效的图像解压。并且,本技术提供的方法中,全流程均可基于ai芯片的ai无损压缩实现,包括ai模型及熵编码,避免了系统内存与ai芯片内存的传输问题,提高编码效率。17.在一种可能的实施方式中,前述的对隐变量编码数据进行解码,得到隐变量,包括:将隐变量编码数据作为静态熵编码器的输入,输出隐变量。其中,该解码可以理解为编码端进行静态熵编码的逆运算,从而无损恢复得到图像中的重要特征。18.在一种可能的实施方式中,前述的结合第二残差分布和残差编码数据进行解码,得到第二残差图像,包括:将第二残差分布和残差编码数据作为半动态熵编码器的输入,输出第二残差图像,该半动态熵编码器用于使用第一预设类型的编码运算进行熵编码,第一预设类型的编码运算包括加、减或位运算,且半动态熵编码器中不包括第二预设类型的编码运算,第二预设类型包括乘、除或取余运算中的至少一种,即该半动态熵编码器中不包括乘、除或取余运算等耗时较长运算,即该半动态熵编码器中可以仅包括简单的加减运算,从而可以实现高效编码。因此,可以对残差图像基于半动态熵编码进行解码,以有限种分布方式进行解码,相对于动态熵编码减少了乘、除以及取余运算等耗时较多的运损,大大提高了解码效率。19.在一种可能的实施方式中,该半动态熵编码器可以是对动态上编码器进行转换得到。具体地,可以对动态熵编码器的运算进行近似处理,如将动态熵编码器的运算替换为近似运算,减少或者去除乘、除、取余等运算,随后还可以进行变换处理,对运算进行变换,从而将所有耗时超过一定时长的运算(如剩余的取余、乘以及除等运损)转化为表格存取,及加、减、位等轻量级运算,得到本技术提供的半动态熵编码器。可以理解为,该半动态熵编码器可以是对动态熵编码器中的一些运算进行替换或者转换得到的熵编码器,使用该半动态熵编码器进行熵编码时,即可使用简单的运算,如加、减、位运算等高效编码的运算,从而实现高效编码。20.在一种可能的实施方式中,前述的将第二残差图像作为自回归模型的反向传播的输入,输出解压图像,包括:通过自回归模型,对第二残差图像中处于同一连线上的像素点进行并行解码,得到解压图像。因此,针对同一连线上的像素点,无需等待其他像素点解码后才能对当前像素点进行解码,实现同一连线上的像素点的解码效率,提高针对输入图像的解码效率。21.第三方面,本技术提供一种图像编码装置,包括:22.自回归模块,用于将输入图像作为自回归模型的输入,输出第一图像,自回归模型;23.残差计算模块,用于获取第一图像和输入图像之间的残差,得到第一残差图像;24.自编码模块,用于将输入图像作为自编码模型的输入,输出隐变量和第一残差分布,隐变量包括从输入图像中提取到的特征,第一残差分布包括自编码模型输出的用于表示输入图像中各个像素点和第一残差图像中各个像素点对应的残差值;25.残差编码模块,用于对第一残差图像和第一残差分布进行编码,得到残差编码数据;26.隐变量编码模块,用于对隐变量进行编码,得到隐变量编码数据,隐变量编码数据和残差编码数据用于解压后得到输入图像。27.在一种可能的实施方式中,残差编码模块,具体用于将第一残差图像和第一残差分布作为半动态熵编码器的输入,输出残差编码数据,该半动态熵编码器用于使用第一预设类型的编码运算进行熵编码,第一预设类型的编码运算包括加、减或位运算,且半动态熵编码器中不包括第二预设类型的编码运算,第二预设类型包括乘、除或取余运算中的至少一种,即该半动态熵编码器中不包括乘、除或取余运算等耗时较长运算,即该半动态熵编码器中可以仅包括简单的加减运算,从而可以实现高效编码。28.在一种可能的实施方式中,该半动态熵编码器可以是对动态上编码器进行转换得到。具体地,可以对动态熵编码器的运算进行近似处理,如将动态熵编码器的运算替换为近似运算,减少或者去除乘、除、取余等运算,随后还可以进行变换处理,对运算进行变换,从而将所有耗时超过一定时长的运算(如剩余的取余、乘以及除等运损)转化为表格存取,及加、减、位等轻量级运算,得到本技术提供的半动态熵编码器。可以理解为,该半动态熵编码器可以是对动态熵编码器中的一些运算进行替换或者转换得到的熵编码器,使用该半动态熵编码器进行熵编码时,即可使用简单的运算,如加、减、位运算等高效编码的运算,从而实现高效编码。29.在一种可能的实施方式中,隐变量编码模块,具体用于将隐变量作为静态熵编码器的输入,得到隐变量编码数据。30.在一种可能的实施方式中,自编码模型包括编码模型和解码模型,自编码模块,具体用于:将输入图像作为编码模型的输入,输出隐变量,编码模型用于从输入图形中提取特征;将隐变量作为解码模型的输入,得到第一残差分布,解码模型用于预测输入的图像与对应的像素分布之间的残差值。31.在一种可能的实施方式中,自回归模型用于使用已预测的像素点的像素值预测处于同一连线上的像素点的值。32.第四方面,本技术提供一种图像解压装置,包括:33.收发模块,用于获取隐变量编码数据和残差编码数据,该隐变量编码数据包括编码端从输入图像中提取到的特征进行编码得到,该残差编码数据包括对自回归模型输出的图像和该输入图像之间的残差进行编码得到的数据;34.隐变量解码模块,用于对隐变量编码数据进行解码,得到隐变量,该隐变量包括编码端从输入图像中提取到的特征;35.自编码模块,用于将隐变量作为自编码模型的输入,输出第二残差分布;36.残差解码模块,用于结合第二残差分布和残差编码数据进行解码,得到第二残差图像;37.自回归模块,用于将第二残差图像作为自回归模型的反向传播的输入,输出解压图像。38.在一种可能的实施方式中,隐变量解码模块,具体用于将隐变量编码数据作为静态熵编码器的输入,输出隐变量。39.在一种可能的实施方式中,残差解码模块,具体用于将第二残差分布和残差编码数据作为半动态熵编码器的输入,输出第二残差图像,该半动态熵编码器用于使用第一预设类型的编码运算进行熵编码,第一预设类型的编码运算包括加、减或位运算,且半动态熵编码器中不包括第二预设类型的编码运算,第二预设类型包括乘、除或取余运算中的至少一种,即该半动态熵编码器中不包括乘、除或取余运算等耗时较长运算,即该半动态熵编码器中可以仅包括简单的加减运算,从而可以实现高效编码。40.在一种可能的实施方式中,该半动态熵编码器可以是对动态上编码器进行转换得到。具体地,可以对动态熵编码器的运算进行近似处理,如将动态熵编码器的运算替换为近似运算,减少或者去除乘、除、取余等运算,随后还可以进行变换处理,对运算进行变换,从而将所有耗时超过一定时长的运算(如剩余的取余、乘以及除等运损)转化为表格存取,及加、减、位等轻量级运算,得到本技术提供的半动态熵编码器。可以理解为,该半动态熵编码器可以是对动态熵编码器中的一些运算进行替换或者转换得到的熵编码器,使用该半动态熵编码器进行熵编码时,即可使用简单的运算,如加、减、位运算等高效编码的运算,从而实现高效编码。41.在一种可能的实施方式中,自回归模块,具体用于通过自回归模型,对第二残差图像中处于同一连线上的像素点进行并行解码,得到解压图像。42.第五方面,本技术实施例提供一种图像编码装置,该图像编码装置具有实现上述第一方面图像处理方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。43.第六方面,本技术实施例提供一种图像解压装置,该图像解压装置具有实现上述第二方面图像处理方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。44.第七方面,本技术实施例提供一种图像编码装置,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第一方面任一项所示的用于图像编码方法中与处理相关的功能。可选地,该图像编码装置可以是芯片。45.第八方面,本技术实施例提供一种图像解压装置,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第二方面任一项所示的用于图像解压方法中与处理相关的功能。可选地,该图像解压装置可以是芯片。46.第九方面,本技术实施例提供了一种图像编码装置,该图像编码装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第一方面或第一方面任一可选实施方式中与处理相关的功能。47.第十方面,本技术实施例提供了一种图像解压装置,该图像编码装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第二方面或第二方面任一可选实施方式中与处理相关的功能。48.第十一方面,本技术实施例提供了一种图像处理系统,其特征在于,包括图像编码装置和图像解压装置,所述图像编码装置用于执行如上述第一方面或第一方面任一可选实施方式中与处理相关的功能,所述图像解压装置用于执行如上述第二方面或第二方面任一可选实施方式中与处理相关的功能。49.第十二方面,本技术实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面中任一可选实施方式中的方法。50.第十三方面,本技术实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面中任一可选实施方式中的方法。附图说明51.图1为本技术应用的一种人工智能主体框架示意图;52.图2为本技术实施例提供的一种系统架构示意图;53.图3为本技术实施例的一种应用场景示意图;54.图4为本技术实施例的另一种应用场景示意图;55.图5为本技术实施例的另一种应用场景示意图;56.图6为本技术实施例提供的一种图像编码方法的流程示意图;57.图7为本技术实施例提供的另一种图像编码方法的流程示意图;58.图8为本技术实施例提供的一种自回归模型的预测方式示意图;59.图9为本技术实施例提供的一种自回归模型的预测顺序示意图;60.图10为本技术实施例提供的一种残差计算方式示意图;61.图11为本技术实施例提供的一种数据结构示意图;62.图12为本技术实施例提供的一种图像解压方法的流程示意图;63.图13为本技术实施例提供的另一种图像解压方法的流程示意图;64.图14为本技术提供的一种图像编码装置的结构示意图;65.图15为本技术提供的一种图像解码装置的结构示意图;66.图16为本技术提供的另一种图像编码装置的结构示意图;67.图17为本技术提供的另一种图像解码装置的结构示意图;68.图18为本技术提供的一种芯片结构示意图。具体实施方式69.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。70.首先对人工智能系统总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“it价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“it价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。71.(1)基础设施72.基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片,如中央处理器(centralprocessingunit,cpu)、网络处理器(neural-networkprocessingunit,npu)、图形处理器(graphicsprocessingunit,gpu)、专用集成电路(applicationspecificintegratedcircuit,asic)或现场可编程逻辑门阵列(fieldprogrammablegatearray,fpga)等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。73.(2)数据74.基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。75.(3)数据处理76.数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。77.其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。78.推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。79.决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。80.(4)通用能力81.对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。82.(5)智能产品及行业应用83.智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能交通、智能医疗、自动驾驶、智慧城市等。84.本技术实施例涉及了大量神经网络和图像的相关应用,为了更好地理解本技术实施例的方案,下面先对本技术实施例可能涉及的神经网络和图像领域的相关术语和概念进行介绍。85.(1)神经网络86.神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以如以下公式所示:[0087][0088]其中,s=1、2、……n,n为大于1的自然数,ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activationfunctions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。[0089](2)深度神经网络[0090]深度神经网络(deepneuralnetwork,dnn),也称多层神经网络,可以理解为具有多层中间层的神经网络。按照不同层的位置对dnn进行划分,dnn内部的神经网络可以分为三类:输入层,中间层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是中间层,或者称为隐层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。[0091]虽然dnn看起来很复杂,其每一层可以表示为线性关系表达式:其中,是输入向量,是输出向量,是偏移向量或者称为偏置参数,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量由于dnn层数多,系数w和偏移向量的数量也比较多。这些参数在dnn中的定义如下所述:以系数w为例:假设在一个三层的dnn中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。[0092]综上,第l-1层的第k个神经元到第l层的第j个神经元的系数定义为[0093]需要注意的是,输入层是没有w参数的。在深度神经网络中,更多的中间层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。[0094](3)卷积神经网络[0095]卷积神经网络(convolutionalneuronnetwork,cnn)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。[0096](4)损失函数[0097]在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(lossfunction)或目标函数(objectivefunction),是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。该损失函数通常可以包括误差平方均方、交叉熵、对数、指数等损失函数。例如,可以使用误差均方作为损失函数,定义为具体可以根据实际应用场景选择具体的损失函数。[0098](5)反向传播算法[0099]神经网络可以采用误差反向传播(backpropagation,bp)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。[0100](6)熵编码[0101]熵编码即编码过程中按熵原理不丢失任何信息的编码。信息熵为信源的平均信息量(不确定性的度量)。常见的熵编码有:香农(shannon)编码、哈夫曼(huffman)编码和算术编码(arithmeticcoding)等。[0102]例如,若预测的图像中各个像素点的像素值分布已知,则最优压缩方案可利用熵编码技术获得。利用熵编码技术,一张概率为p的图像可利用-log2p比特表示。例如:概率为1/8的图像需要用3个比特表示,概率为1/256的图像需用8个比特表示。[0103]要确定每个字母的比特数算法需要尽可能精确地知道每个字母的出现机率,模型的任务是提供这个数据。模型的预言越好压缩的结果就越好。此外模型必须在压缩和恢复时提出同样的数据。[0104]静态模型(或者称为静态熵编码)在压缩前对整个文字进行分析计算每个字母的机率。这个计算结果用于整个文字上。编码表只需计算一次,因此编码速度高,除在解码时所需要的机率值外结果肯定不比原文长。本技术提供的方法中,所采用的熵编码可以包括tans或fse等静态熵编码方式。[0105]动态模型在这个模型里机率随编码过程而不断变化。通过多种算法可以达到这个目的,如:[0106]前向动态:机率按照已经被编码的字母来计算,每次一个字母被编码后它的机率就增高。[0107]反向动态:在编码前计算每个字母在剩下的还未编码的部分的机率。随着编码的进行最后越来越多的字母不再出现,它们的机率成为0,而剩下的字母的机率升高,为它们编码的比特数降低。压缩率不断增高,以至于最后一个字母只需要0比特来编码。[0108]因此,模型按照不同部位的特殊性优化;在前向模型中机率数据不需要输送。[0109]本技术中,将熵编码分为多种,如可以分为静态熵编码、半动态熵编码以及动态熵编码,无论哪种编码器,实现的目的均为:对于概率为p的数据,用接近log2p的长度将其编码出来。区别在于,静态熵编码采用单一概率分布进行编码,半动态采用多种(即有限种)概率分布进行编码,而动态熵编码采用任意无限种概率分布进行编码。[0110](7)自回归模型[0111]是一种处理时间序列的方式,其用同一变量的前期历史数据来预测当前数据。[0112]例如,用同一变数例如x的之前各期,即x1至xt-1来预测本期xt的表现,并假设它们为一线性关系。因为这是从回归分析中的线性回归发展而来,只是不用x预测y,而是用x预测x;所以叫做自回归。[0113](8)自编码模型[0114]自编码模型是一种利用反向传播算法使得输出值等于输入值的神经网络,先将输入数据压缩成潜在空间表征,然后通过这种表征来重构输出。[0115]自编码模型通常包括编码(encoder)模型和解码(decoder)模型。本技术中,训练后的编码模型用于从输入图像中提取特征,得到隐变量,将该隐变量输入至训练后的解码模型,即可输出预测的输入图像对应的残差。[0116](9)无损压缩[0117]对数据进行压缩的技术,压缩后数据占用空间小于压缩前,并且压缩后数据能够通过解压还原出原始数据,解压后的数据与压缩前的数据是完全一致的。[0118]通常,图像中各个像素点出现的概率(即通过其他像素点的像素值预测当前像素点的像素值时得到的概率值)越大,压缩后的长度越短。真实存在的图像的概率远高于随机生成的图像,因此压缩每像素所需要的比特数(bpd)远小于后者。在实际应用中,大部分图像的bpd显著小于压缩前,只有极小概率高于压缩前,从而减小平均每张图像的bpd。[0119](10)压缩率[0120]原始数据大小与压缩后数据大小的比值,如果没有压缩该值为1,该值越大越好。[0121](11)吞吐量[0122]每秒钟能够压缩/解压原始数据的大小。[0123](12)感受野[0124]预测一个像素点时,需要预先知道的点。改变非感受野中的点不会改变像素点的预测。[0125]本技术实施例提供的编码方法以及解码方法可以在服务器上被执行,还可以在终端设备上被执行,相应地,本技术以下提及的神经网络,可以部署于服务器,也可以部署于终端上,具体可以根据实际应用场景调整。例如,本技术提供的编码方法以及解码方法,可以通过插件的方式部署于终端中。其中该终端设备可以是具有图像处理功能的移动电话、平板个人电脑(tabletpersonalcomputer,tpc)、媒体播放器、智能电视、笔记本电脑(laptopcomputer,lc)、个人数字助理(personaldigitalassistant,pda)、个人计算机(personalcomputer,pc)、照相机、摄像机、智能手表、可穿戴式设备(wearabledevice,wd)或者自动驾驶的车辆等,本技术实施例对此不作限定。下面示例性地,以本技术提供的编码方法以及解码方法部署于终端为例进行示例性说明。[0126]本技术提供的编码方法以及解码方法中的全部或者部分流程可以通过神经网络来实现,如其中的自回归模型、自编码模型等,都可以通过神经网络来实现。而通常神经网络需要在训练之后部署在终端上,如图2所示,本技术实施例提供了一种系统架构100。在图2中,数据采集设备160用于采集训练数据。在一些可选的实现中,本技术中,针对自回归模型和自编码模型,训练数据可以包括大量高清图像。[0127]在采集到训练数据之后,数据采集设备160将这些训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。可选地,在本技术以下实施方式中所提及的训练集,可以是从该数据库130中得到,也可以是通过用户的输入数据得到。[0128]其中,目标模型/规则101可以为本技术实施例中进行训练后的神经网络,该神经网络可以包括一个或者多个网络,如自回归模型或者自编码模型等。[0129]下面对训练设备120基于训练数据得到目标模型/规则101进行描述,训练设备120对输入的三维模型进行处理,将输出的图像与输入的三维模型对应的高质量渲染图像进行对比,直到训练设备120输出的图像与高质量渲染图像的差值小于一定的阈值,从而完成目标模型/规则101的训练。[0130]上述目标模型/规则101能够用于实现本技术实施例的用于编码方法以及解码方法中提及的神经网络,即,将待处理数据(如待压缩的图像)通过相关预处理后输入该目标模型/规则101,即可得到处理结果。本技术实施例中的目标模型/规则101具体可以为本技术以下所提及的神经网络,该神经网络可以是前述的cnn、dnn或者rnn等类型的神经网络。需要说明的是,在实际的应用中,所述数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其他地方获取训练数据进行模型训练,本技术对此并不作限定。[0131]根据训练设备120训练得到的目标模型/规则101可以应用于不同的系统或设备中,如应用于图2所示的执行设备110,该执行设备110也可以称为计算设备,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmentedreality,ar)/虚拟现实(virtualreality,vr),车载终端等,还可以是服务器或者云端设备等。在图2中,执行设备110配置输入/输出(input/output,i/o)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向i/o接口112输入数据,所述输入数据在本技术实施例中可以包括:客户设备输入的待处理数据。客户端可以是其他的硬件设备,如终端或者服务器等,客户端也可以是部署于终端上的软件,如app、网页端等。[0132]预处理模块113和预处理模块114用于根据i/o接口112接收到的输入数据(如待处理数据)进行预处理,在本技术实施例中,也可以没有预处理模块113和预处理模块114(也可以只有其中的一个预处理模块),而直接采用计算模块111对输入数据进行处理。[0133]在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储系统150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统150中。[0134]最后,i/o接口112将处理结果,则将处理结果返回给客户设备140,从而提供给用户,例如若第一神经网络用于进行图像分类,处理结果为分类结果,则i/o接口112将上述得到的分类结果返回给客户设备140,从而提供给用户。[0135]需要说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。在一些场景中,执行设备110和训练设备120可以是相同的设备,或者位于相同的计算设备内部,为便于理解,本技术将执行设备和训练设备分别进行介绍,并不作为限定。[0136]在图2所示情况下,用户可以手动给定输入数据,该手动给定可以通过i/o接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向i/o接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入i/o接口112的输入数据及输出i/o接口112的预测标签作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由i/o接口112直接将如图所示输入i/o接口112的输入数据及输出i/o接口112的预测标签,作为新的样本数据存入数据库130。[0137]需要说明的是,图2仅是本技术实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图2中,数据存储系统150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储系统150置于执行设备110中。[0138]如图2所示,根据训练设备120训练得到目标模型/规则101,该目标模型/规则101在本技术实施例中可以是本技术中的神经网络,具体的,本技术实施例提供的神经网络可以包括cnn,深度卷积神经网络(deepconvolutionalneuralnetworks,dcnn),循环神经网络(recurrentneuralnetwork,rnn)或者构建得到的神经网络等等。[0139]本技术实施例中的编码方法以及解码方法可以由电子设备来执行,该电子设备即前述的执行设备。该电子设备中包括cpu和gpu,能够对图像进行压缩。当然,还可以包括其他设备,如npu或者asic等,此处仅仅是示例性说明,不再一一赘述。示例性地,该电子设备例如可以是手机(mobilephone)、平板电脑、笔记本电脑、pc、移动互联网设备(mobileinternetdevice,mid)、可穿戴设备,虚拟现实(virtualreality,vr)设备、增强现实(augmentedreality,ar)设备、工业控制(industrialcontrol)中的无线电子设备、无人驾驶(selfdriving)中的无线电子设备、远程手术(remotemedicalsurgery)中的无线电子设备、智能电网(smartgrid)中的无线电子设备、运输安全(transportationsafety)中的无线电子设备、智慧城市(smartcity)中的无线电子设备、智慧家庭(smarthome)中的无线电子设备等。该电子设备可以是运行安卓系统、ios系统、windows系统以及其他系统的设备。在该电子设备中可以运行有需要对图像进行压缩得到压缩图像的应用程序,例如通信软件、相册或相机等应用。[0140]通常,在一些图像压缩场景中,可以采用熵编码进行压缩。而图像的分布未知,需对原分布做估计,并将估计的分布输入熵编码器进行编码。通常估计得越准确,压缩率越高。传统的图像无损压缩算法多采用“相近的像素值通常较为接近”的原则,利用固定的预测方法。而这种方式编码效率低。[0141]在一些场景中,还可以采用ai图像无损压缩的方式进行压缩,相对于传统编码算法,ai算法可得到显著更高的压缩率,但压缩/解压效率很低。[0142]例如,可以采用自回归模型进行图像压缩。如构建一个自回归模型,输入此前所有像素的值,则可输出被预测点的分布参数。如分布为高斯分布,则输出为均值与方差两个参数。在使用自回归模型进行压缩时,可以将所有像素输入至自回归模型,得到像素的分布预测,将像素的分布预测以及像素的值输入熵编码器,得到编码后的数据。在解压时,将所有像素输入至自回归模型,得到像素的分布预测,将分布预测及其编码数据输入至熵编码器,即可得到解码数据。然而,在编码和解码过程中,每个像素的预测依赖此前的所有像素,运行效率低,在解压时,需将当前像素之前的所有像素解压后才能解压当前像素,一次网络推理只能解压一个像素,网络推理的次数大,解压效率低。[0143]又例如,可以采用自编码模型进行图像压缩。在进行编码时,将原数据输入编码网络(encoder),得到隐变量,将隐变量输入解码网络(decoder),得到图像的分布预测;将手工设计的分布,及隐变量的值输入熵编码,编码隐变量;将图像的分布预测及原图像输入熵编码,编码图像。在进行解码时,将手工设计的分布,及隐变量的编码输入熵编码,解码隐变量;将隐变量输入解码网络(decoder),得到图像的分布预测;将图像的分布预测及图像的编码输入熵编码,解码图像。与自回归模型相比,自编码模型的拟合能力较差。若要压缩率超过传统压缩算法,则需要较深的网络,单次网络推理的时延高。[0144]因此,本技术提供一种编码方法和解码方法,利用自回归模型以及自编码器模型进行无损压缩,且提供了高效的半动态熵编码器,使得模型推理以及编码过程均在ai芯片上运行,减少了系统内存和ai芯片内存之间的传输,实现了高带宽的压缩解压。[0145]首先,为便于理解,对本技术提供的编码方法以及解码方法的一些应用场景进行示例性介绍。[0146]场景一、本地保存拍摄图像[0147]以本技术提供的方法部署于终端为例,该终端可以包括手机、相机、监测设备或者其他具有拍摄功能或者与摄像装置连接的设备。例如,如图3所示,在拍摄得到图像之后,为例降低图像所占用的存储空间,可以通过本技术提供的编码方法对该图像进行无损压缩,从而得到压缩后的编码数据。当需要读取该图像时,如在相册中显示该图像时,则可以通过本技术提供的解码方法进行解码,从而得到高清图像。通过本技术提供的方法,可以对图像进行高效的无损压缩,降低保存图像所需的内容,并对图像进行无损恢复,解压得到高清图像。[0148]场景二、图像传输[0149]在一些通信场景中,可能涉及到图像传输。例如,如图4所示,如用户在使用通信软件进行交流时,可以通过有线或者无线网络传输图像,为了提高传输速率以及降低传输图像所占用的网络资源,可以通过本技术提供的编码方法对图像进行无损压缩,得到压缩后的编码数据,随后传输编码数据即可。接收端在接收到编码数据之后,即可通过本技术提供的解码方法,对编码数据进行解码,得到恢复后的图像。[0150]场景三、服务器保存大量图像[0151]在一些为用户提供服务的平台或者一些数据库中,通常需要保存大量的高清图像,若直接按照每帧图像的像素点进行保存,则需要占用非常大的存储空间。例如,如图5所示,一些购物软件或者公开数据集中,需要在服务器中对大量的高清图像进行保存,用户可以从服务器中读取所需的图像。可以通过本技术提供的编码方法来对需要保存的图像高效地进行无损压缩,得到压缩后的数据。当需要读取图像时,即可通过本技术提供的解码方法对保存的编码数据进行解码,得到高清图像。[0152]为便于理解,下面分别对本技术提供的编码方法和解码方法的流程进行介绍。[0153]参阅图6,本技术提供的一种编码方法的流程示意图,如下所述。[0154]601、将输入图像作为自回归模型的输入,输出第一图像。[0155]其中,输入图像可以是待压缩的图像,自回归模型可以用于使用输入图像中除当前像素点外的其他像素点的值,来预测当前像素点的像素值,得到预测的各个像素点的像素分布,即第一图像。[0156]该输入图像可以包括多种图像,根据场景的不同输入图像的来源也可能不相同。例如,该输入图像可以是拍摄得到的图像,也可以接收到的图像等。[0157]可选地,在自回归模型进行预测的过程中,针对处于同一连线上的像素点,可以使用已进行预测的像素点的像素值进行预测,以使后续解码过程中,针对同一连线上的像素点,无需等待其他像素点解码后才能对当前像素点进行解码,实现同一连线上的像素点的解码效率,提高针对输入图像的解码效率。该同一连线可以是同一行、同一列或者同一对角线等,具体可以根据实际应用场景确定。[0158]602、获取第一图像和输入图像之间的残差,得到第一残差图像。[0159]在得到第一图像之后,可以计算第一图像中各个像素点和输入图像中对应像素点之间的残差值,得到第一残差图像。[0160]其中,该第一图像和输入图像之间的分辨率通常相同,即第一图像和输入图像中的像素点一一对应,从而在计算残差值时,可以计算每对像素点之间的残差值,得到的残差值可以组成图像,即第一残差图像。[0161]可选地,在计算残差时,通常残差值为范围在[-255,255]的整数类型,可以将残差值转换为低精度的数值类型来表示,如将整数转化为uint8数值类型,从而将数值缩小至[0,255],并可以通过设置偏移量,使各个像素点的残差值分布在128附近,从而使数据更集中,通过较少的数据即可表示出输入图像和自回归模型输出图像之间的残差分布。[0162]603、将输入图像作为自编码模型的输入,输出隐变量和第一残差分布。[0163]在得到输入图像之后,还可以将输入图像作为自编码模型的输入,输出对应的隐变量和第一残差分布。[0164]该隐变量可以包括从输入图像中提取到的特征,该第一残差分布可以包括由自编码模型预测得到的输入图像的各个像素点和第一残差图像中对应像素点之间的残差值。[0165]具体地,该自编码模型可以包括编码模型和解码模型,编码模型可以用于从输入图像中提取特征,解码模型用于对输入图像与自回归模型输出的图像之间的残差进行预测。即可以通过编码模型从输入图像中提取特征,得到用于表示输入图像重要特征的隐变量,将隐变量作为解码模型的输入,输出第一残差分布。[0166]需要说明的是,本技术对步骤601和步骤603的执行顺序不作限定,可以先执行步骤601,也可以先执行步骤603,还可以同时执行步骤601和步骤603,具体可以根据实际应用场景调整。[0167]604、对第一残差图像和第一残差分布进行编码,得到残差编码数据。[0168]在得到第一残差图像和第一残差分布之后,可以对该第一残差图像和第一残差分布进行编码,得到残差编码数据。[0169]具体地,在对第一残差图像和第一残差分布进行编码时,可以采用半动态熵编码,即采用有限种概率分布进行编码,得到残差图像的编码数据,即残差编码数据。该该半动态熵编码器用于使用第一预设类型的编码运算进行熵编码,第一预设类型的编码运算包括加、减或位运算,且该半动态熵编码器中不包括第二预设类型的编码运算,第二预设类型包括乘、除或取余运算中的至少一种耗时较长的运算,以提高编码效率。因此,本技术实施方式中,可以采用有限数量的概率分布进行编码,得到残差图像的编码。相对于动态熵编码,解压一个字符,需要的指令较多;除法、乘方的耗时长,每个指令的耗时为加法的数十倍,通过本技术提供的有限种概率分布的半动态熵编码即可实现高效编码,提高编码效率。[0170]在一种可能的实施方式中,该半动态熵编码器可以是对动态上编码器进行转换得到。具体地,可以对动态熵编码器的运算进行近似处理,如将动态熵编码器的运算替换为近似运算,减少或者去除乘、除、取余等运算,随后还可以进行变换处理,对运算进行变换,从而将所有耗时超过一定时长的运算(如剩余的取余、乘以及除等运损)转化为表格存取,及加、减、位等轻量级运算,得到本技术提供的半动态熵编码器。可以理解为,该半动态熵编码器可以是对动态熵编码器中的一些运算进行替换或者转换得到的熵编码器,使用该半动态熵编码器进行熵编码时,即可使用简单的运算,如加、减、位运算等高效编码的运算,从而实现高效编码。[0171]605、对隐变量进行编码,得到残差编码数据。[0172]该隐变量可以包括从输入图像中提取到的重要特征,因此在进行图像压缩时,可以对提取到的重要特征进行编码,得到残差编码数据,以便于后续对图像进行恢复,得到无损图像。[0173]可选地,在对隐变量进行编码时,可以采用静态熵编码的方式进行编码。将该隐变量作为静态熵编码器的输入,从而输出隐变量的编码比特流。[0174]该隐变量编码数据和残差编码数据即可用于解码端进行图像的无损恢复,从而实现对图像的无损压缩与恢复。[0175]通常,自编码模型通常拟合能力较差,需要用较深的网络才能达到较好的压缩率,而本技术结合了自回归模型的输出结果,从而可以降低自编码模型的大小。因此,本技术中,结合了自回归模型与自编码模型的输出结果进行编码,可以将自编码与自回归模型都控制到很小,避免了自编码模型的网络过大造成的推理时间过长的问题,实现高效的图像压缩。并且,本技术提供的方法中,全流程均可基于ai芯片的ai无损压缩实现,包括ai模型及熵编码,避免了系统内存与ai芯片内存的传输问题,提高编码效率。[0176]前述对本技术提供的编码方法的流程进行了介绍,下面结合具体的应用场景,对本技术提供的编码方法的流程进行更详细的介绍。参与图7,本技术提供的另一种编码方法的流程示意图。[0177]首先,获取输入图像701。[0178]该输入图像701可以包括自身采集到的图像也可以包括接收到的图像。例如,若本技术提供的方法部署于终端,该输入图像可以包括终端采集到的图像,也可以是终端从其他服务器或者终端接收到的图像。[0179]随后,将输入图像701作为自回归模型702的输入,输出预测图像703。[0180]其中,该自回归模型可以用于使用每个像素点相邻的像素点来预测每个像素点的像素概率分布,得到预测图像703,即前述的第一图像。[0181]可以理解为,自回归模型可以使用相邻像素点的像素值来预测当前像素点的像素值。[0182]本技术实施方式中,为了加快解码端的解码效率,在自回归模型进行预测时,针对同一条线的像素点,可以使用与其相邻的像素点的像素值来并行进行预测。以一种具体的自回归模型为例,如图8所示,给定一张m×n的图像及超参h(0≤h《n),若对于任意像素点(i,j),自回归模型中预测(i,j)的所有点(i′,j′)满足:h×i′+j′《h×i+j,则此图像可以通过n+(m-1)×h次并行预测,如图8中所示,当h=1时,对于同一对角线上的像素点,可以使用以1为单位选择其左侧多个像素点的像素值作为感受野,来预测当前像素点的像素概率分布,即该像素点为各个像素值的概率。如图8中所示,当h=2时,可以以2为单位选择其左侧多个像素点的像素值作为感受野来预测当前像素点的像素概率分布。以便于在后续进行解压时,针对处于同一对角线上的像素点可以并行解压。[0183]此外,对于各个像素点的预测顺序可以如图9所示,其中数字越小表示预测顺序越优先,相同数字的像素点同时预测。因此,针对处于同一对角线上的像素点,可以并行进行预测,提高自回归模型的预测效率。[0184]随后,计算预测图像和输入图像之间的残差,得到图像残差704。[0185]在得到自回归输出的预测图像703之后,即可计算该预测图像与输入图像中各个像素点之间的残差,得到图像残差704,即前述的第一残差图像。[0186]如给定原始图像x,即输入图像,利用自回归模型对原始图像进行预测,得到预测的重建图像可以计算出重建图像和原始图像每个像素点之间的图像残差[0187]例如,如图10所示,在得到输入图像和预测图像之后,即可计算输入图像和预测图像对应像素点之间的差值,得到各个像素点之间的残差值,组成残差图像。[0188]可选地,在计算残差时,可以将范围在[-255,255]的整数类型,可以将残差值转换为低精度的数值类型来表示,如将整数转化为uint8数值类型,从而将数值缩小至[0,255],并可以通过设置偏移量,使各个像素点的残差值分布在128附近,从而使数据更集中,通过较少的数据即可表示出输入图像和自回归模型输出图像之间的残差分布。[0189]例如,用自回归模型输入原图像x,输出y,则预测的图像x′=round(clip(y,0,m-1)),则残差计算为其中x′中每像素的取值范围为0~m-1的整数;利用模型二预测r得到分布n(μ,σ),则利用分布编码其中n为高斯分布或逻辑分布。[0190]此外,还将输入图像输入至自编码模型705,输出预测残差707和隐变量706。[0191]如可以将原始图像x输入至自编码模型,利用自编码模型来估计图像残差r的概率分布p(r|x),即预测残差707。[0192]具体地,该自编码模型可以包括编码模型(encoder)和解码模型(decoder),将输入图像作为编码模型的输入,可以从输入图像中提取重要特征,得到隐变量706,随后将隐变量作为解码模型的输入,输出预测残差707。[0193]通常,自编码模型可以是预训练后的模型,具体可以采用自编码器(autoencoder,ae)、变分字编码器(variationalautoencoder,vae)或者vq-vae(vectorquantised-variationalautoencoder)等,具体可以根据实际应用场景进行调整,本技术对此并不作限定。[0194]随后,可以对隐变量706进行编码,得到隐变量编码708。[0195]具体地,对隐变量可以采用静态熵编码的方式进行编码。即利用数状结构将概率大的数据用较短的比特数表示,概率小的数据用较长的表示。[0196]例如,树状结构可以如图11所示,其对应的比特可以表示为如表1所示。[0197]字符概率编码a10.40a20.3510a30.2110a40.05111[0198]表1[0199]因此,数据a1a2a1a4编码后为0100110。[0200]此外,还可以对图像残差704和预测残差707进行编码,得到残差编码709。[0201]具体地,可以对图像残差704和预测残差707进行半动态熵编码,得到残差编码。[0202]为便于理解,对动态熵编码和本技术提供的半动态熵编码的区别进行说明。[0203]首先,以rans编码为例,动态编码即利用状态(通常为大整数,或大小数)表示数据,利用数据的概率信息更改状态值,最终编码值为状态的0、1表示。在rans编码中,首先要设一个m值,代表表示一个概率所需要的比特数。对于一个字符ai,其对应的pmfi与其概率成正比,且加和为2m;其对应的cdfi为之前所有pmf的值的累加,即pmf1+pmf2+…+pmfi-1。上表中,若取m=4,则概率值对应的pmf及cdf如表2所示:[0204]字符概率pmfcdfa10.460a20.3566a30.2312a40.05115[0205]表2[0206]若压缩一个字符x前后的状态分别为s、s’,则[0207]s’=s/pmf(x)*2m+cdf(x)+s%pmf(x)[0208]动态熵编码也可当作静态熵编码使用,当表格中的值为定值时,则为静态熵编码;当不同符号的表格不完全一样时,需用动态熵编码。[0209]动态熵编码中的速度瓶颈包括:解压中的符号搜索以及运算:其中除法、取余运算最耗时,其次为乘法。因此,针对动态熵编码中的无线中概率分布方式所带来的效率降低,本技术提供一种半动态熵编码。基于前述动态熵编码,即rans的编码公式,先做近似处理,如将动态熵编码中的乘、除、取余等运算替换为近似的加、减、位等轻量级运算,在少量的压缩率损失的前提下,大幅减少或者去除乘、除、取余等运算;再通过一系列的变换处理,将所有耗时超过一定时长的运算(如剩余的取余、乘以及除等运损)转化为表格存取,及加、减、位等轻量级运算。可以理解为,本技术提供的半动态熵编码,可以通过算法变换及表格化处理,去除所有符号搜索、乘除取余等耗时运算,达到与静态熵编码相当的吞吐率。[0210]例如,与常用的rans实现相似,对状态值s做截断及近似处理,但区别包括:[0211]不同于通常rans将s截断至[2m,22m),共22m-2m种状态;此方案将其截断至[2m,2m+1),共2m种状态。以实现更小的状态空间,便于后续的表格化处理;[0212]不同于通常rans利用除法及取余计算,此方案将其改成循环+位运算的近似求解方法,便于进一步减小表格化所需的存储空间。此计算中的循环耗时较长,因此在此处理后,耗时通常会超过原rans,但后续的处理中,会将循环次数表格化处理,以实现高效压缩、解压。[0213]在压缩的过程中,对于每种分布、符号,利用表格预计算、存储循环的次数(即状态右移位数),及此分布、符号下,下一状态与此状态的差值。如在进行压缩时,对于每一个输入的分布索引、及符号,查表得到对应的δ,计算得到状态右移位数b=(δ+s)>>m;将状态的最右边的b位压栈至存储器中,并将状态值右移b位;通过分布索引、及符号,查表得到下一状态与此状态的差值,将此差值加到当前状态值上,得到更新后的状态值。[0214]相比于直接存储循环的次数,此方案存储中间结果δ,循环次数可计算为(δ+s)>>m,本技术提供的编码方式可减小存储表格所需的内存空间。相比于直接存储两状态的差值,本技术提供的半动态熵编码方式中存储状态右移后,两状态的差值,此方法可以用无符号数字存储,相同位数下减小一半的内存空间。[0215]在得到残差编码709和隐变量编码708之后,即可进行后续操作。如保存该残差编码709和隐变量编码708,或者向接收端传输该残差编码709和隐变量编码708等,具体可以根据实际应用场景确定。[0216]因此,本技术实施方式提供的方法,可以应用于图像无损压缩,实现高效的图像无损压缩。且提供了高效的半动态熵编码器,使得模型推理以及编码过程均在ai芯片上运行,减少了系统内存和ai芯片内存之间的传输,实现了高带宽的压缩解压。[0217]前述对本技术提供的编码方法的流程进行了介绍,下面对与其对应的解码方法的流程进行介绍,即前述编码流程的逆运算。参阅图12,本技术提供的一种解码方法的流程示意图,如下所述。[0218]1201、获取隐变量编码数据和残差编码数据。[0219]其中,解码端可以从本地读取隐变量编码数据和残差编码数据,或者接收编码端发送的该隐变量编码数据和残差编码数据,具体可以根据实际应用场景确定该隐变量编码数据和残差编码数据的来源,本技术对此并不作限定。[0220]具体地,该隐变量编码数据可以由编码端对从输入图像中提取到的特征进行编码得到。该残差编码数据可以是编码端对前述的图像残差和预测残差进行编码得到,该图像残差可以包括前述编码端的输入图像和自回归模型输出的图像之间的残差。该隐变量编码数据和残差编码数据可以参阅前述图6-图11中的相关介绍,此处不再赘述。[0221]1202、对隐变量编码数据进行解码,得到隐变量。[0222]其中,对隐变量编码数据进行解码的方式可以与编码端相对应。例如,若编码端采用静态熵编码器进行编码,则在解码时,可以使用静态熵编码器进行解码。如将该隐变量编码数据作为静态熵编码器的输入,输出隐变量。该隐变量可以包括从输入图像中提取到的特征,针对解压端而言,该隐变量即表示解压图像中的特征。[0223]1203、将隐变量作为自编码模型的输入,输出第二残差分布。[0224]在对隐变量编码数据进行解码得到隐变量之后,即可将隐变量作为自编码模型的输入,输出对应的第二残差分布,即与前述编码端第一残差分布对应的图像,可以理解为表示编码端中自回归模型输出的图像与输入图像之间的残差分布。[0225]具体地,该自编码模型中可以包括解码模型,将隐变量作为该解码模型的输入,即可输出预测的残差图像。该解码模型可以是训练后的模型,用于输出输入图像对应的残差图像,该残差图像可以理解为自回归模型预测的残差图像与输入图像之间的残差值。[0226]需要说明的是,编码端和解码端均部署了自回归模型和自编码模型,且编码端侧的自回归模型与解码端的自回归模型相同,若编码端和解码端部署于同一设备中,则编码端和解码端的自编码模型相同,若编码端和解码端部署于不同设备中,则编码端和解码端可以部署相同的自编码模型,也可以在编码端部署完整的自编码模型,而在解码端部署自编码模型中的解码模型,具体可以根据实际应用场景进行调整,本技术对此并不作限定。[0227]1204、结合第二残差分布和残差编码数据进行解码,得到第二残差图像。[0228]在得到第二残差分布和残差编码数据之后,即可结合该第二残差分布和残差编码数据进行解码,得到第二残差图像。[0229]具体地,若编码端采用半动态熵编码的方式进行编码,则将解码端也可以基于半动态熵编码进行解码,输出第二残差图像,即与编码端的第一残差图像对应的图像。该半动态熵编码器用于使用第一预设类型的编码运算进行熵编码,第一预设类型的编码运算包括加、减或位运算,且半动态熵编码器中不包括第二预设类型的编码运算,第二预设类型包括乘、除或取余运算中的至少一种,即该半动态熵编码器中不包括乘、除或取余运算等耗时较长运算,即该半动态熵编码器中可以仅包括简单的加减运算,从而可以实现高效编码。[0230]更具体地,该半动态熵编码器可以参与前述图6-图11中的相关描述,此处不再赘述。[0231]可以理解为,针对前述编码端对第一残差图像和第一残差分布进行编码得到残差编码数据的过程,在解码端获取到第二残差分布和残差编码数据之后,即可进行逆运算推理出第二残差分布,相当于获取到前述编码端自回归模型输出的第一图像和输入图像之间的残差,即第一残差分布。[0232]1205、将第二残差图像作为自回归模型的反向传播的输入,输出解压图像。[0233]在得到第二残差图像之后,即可将该第二残差分布作为自回归模型的输入进行反向传播,推理出解压图像,即实现对编码端的输入图像的无损恢复。[0234]此外,在将第二残差图像作为自回归模型的输入进行反向传播时,若编码端的自回归模型使用已预测的像素点的像素值预测处于同一连线上的像素点的值,则在解码端进行解码操作时,可以对处于同一连线上的像素点的值进行并行解码,实现高效解码。该同一连线可以是同一行、同一列或者同一对角线等,具体可以根据实际应用场景确定。[0235]因此,本技术实施方式,自编码模型通常拟合能力较差,需要用较深的网络才能达到较好的压缩率,而本技术结合了自回归模型的输出结果,从而可以降低自编码模型的大小。因此,本技术中,结合了自回归模型与自编码模型进行解码,可以将自编码与自回归模型都控制到很小,避免了自编码模型的网络过大造成的推理时间过长的问题,实现高效的图像解压。并且,本技术提供的方法中,全流程均可基于ai芯片的ai无损压缩实现,包括ai模型及熵编码,避免了系统内存与ai芯片内存的传输问题,提高编码效率。[0236]为便于理解,下面结合具体的应用场景对本技术提供的解码方法的流程进行介绍,参阅图13,本技术提供的另一种解码方法的流程示意图,如下所述。[0237]首先,获取隐变量编码1301以及残差编码1302。[0238]其中,该隐变量编码1301以及残差编码1302可以是从本地读取到的,也可以是从编码端接收得到的,具体可以根据实际应用场景调整。例如,该隐变量编码1301以及残差编码可以是前述图7中提及的隐变量编码708以及残差编码709。[0239]随后,对隐变量编码1301输入至静态熵编码器1303,输出隐变量1304。[0240]通常,熵编码中各个概率对应的比特可以如前述表1所示,在得到隐变量编码的比特流之后,即可根据该对应关系确定出各个字符对应的概率,从而输出隐变量,该隐变量可以理解为解压图像中的重要特征。[0241]随后将隐变量1304作为自编码模型1305中解码模型的输入,输出预测残差1306。[0242]其中,解码模型与前述图7中的解码模型类似,此处不再赘述。该预测残差1306与前述的预测残差707类似,此处不再赘述。[0243]随后将残差编码1302和预测残差1306均作为半动态熵编码器的输入,输出图像残差1308。[0244]该图像残差1308与前述图像残差704类似,此处不再赘述。[0245]其中,半动态熵编码的解码过程可以理解为前述半动态熵编码的逆运算,即在已知预测残差和残差编码的情况下,反向推理出图像残差。如:求出当前符号的状态值:s=s′%2m,找到s对应的符号x,解压出x。需满足cdf(x)≤s《cdf(x)+pmf(x),根据解压出的符号x,还原上一步的状态值:s=s’/2m*pmf(x)+s’%2m–pmf(x)。[0246]在得到图像残差1308之后,即可使用该图像残差作为自回归模型1309的反向传播的输入,从而推理出解压图像1310。[0247]可以理解为,自回归模型1309为训练后的模型,与前述自回归模型702相同,可以理解为已知图像残差的情况下,反向推理出输入图像701。[0248]可选地,若编码端在通过自回归模型输出预测残差时,使用已预测的像素点的像素值来并行预测处于同一条线的像素点的像素值,则在对自回归模型进行反向传播时,可以对处于同一条线上的像素点的像素值进行解码,从而实现并行解码。[0249]例如,给定一张m×n的图像及超参h(0≤h《n),若对于任意像素点(i,j),自回归模型中预测(i,j)的所有点(i′,j′)满足:h×i′+j′《h×i+j,则此图像可以通过n+(m-1)×h次并行计算解压。解压顺序包括:[0250]顺次解压第一行中的点:(0,0),(0,1),…,(0,n-1)。在解压(0,j)点的同时,若j-h≥0,则同时解压(1,j-h);若j-h×2≥0,则同时解压(2,j-h×2),依此类推;[0251]顺次解压第二行中的点:(1,n-h-1),…,(1,n-1)。解压(1,j)点的同时,若j-h≥0,则同时解压(2,j-h);若j-h×2≥0,则同时解压(3,j-h×2),依此类推;[0252]按照此规律解压,直到解压所有点。[0253]因此,通过本技术提供的对同一条线并行进行编码以及解码的方式,可以大大提高编码以及解码效率,实现更高效的图像压缩。[0254]为便于理解,下面以一些具体的应用场景为例对本技术实现的效果进行示例性介绍。[0255]首先需要构造以自回归模型和自编码模型为核心的神经网络模型,本技术方案中自回归模型实施了轻量化的设计,只包含12个参数,对三通道的图像来说每个通道只需要4个参数进行预测。自编码器模型使用的是向量量化的自编码器,利用向量码本缩小隐变量的空间,设置码本大小为256,也即自编码器中的隐变量的取值空间被限制在256个整数中。自编码器的编码器解码器均采用四个残差卷积块,每层特征的通道数为32。[0256]模型训练过程以及测试过程如下:[0257]训练:在单一数据集的训练集上训练,得到自回归模型、自编码模型的参数,及隐变量的统计量,用于隐变量的压缩。[0258]压缩:通过本技术提供的方法,将单一数据集的所有测试图像在batch维度堆叠在一起,组成一个四维张量。将此四维张量一次性作为流程的输入,并将所有图像的残差编码与隐变量的编码并行输出。[0259]解压:通过本技术提供的方法将所有图像的残差编码、隐变量一次性作为解压流程中的输入,并将所有图像的原图像并行输出。[0260]以一些常用的无损压缩为对比,如l3c(practicalfullresolutionlearnedlosslessimagecompression)、flif(freelosslessimageformatbasedonmaniaccompression)webp或png(portablenetworkgraphics)等,将本技术提供的方法称为pilc(practicalimagelosslesscompression,图像无损压缩),参阅表3。[0261][0262][0263]表3[0264]从表3可以看出,与此前ai图像无损压缩算法——l3c相比,本技术发明在保持压缩率基本相当的情况下,将吞吐率提升14倍,同时本技术发明在压缩率和吞吐率上也优于png、webp、flif等传统方法。[0265]因此,本技术提供的方法,结合了自回归模型与自编码模型,相比单独使用自编码模型,大大降低了模型大小。且本技术提供的自回归模型可以实现并行编码和并行解压,可以实现高效的编码和解码,实现高效的图像压缩和解压。且本技术提供的方法的流程均可在ai芯片运行,避免了系统内存与ai芯片内存间的信息传输,进一步提高编解码效率。[0266]此外,针对现实生产环境中,图像的尺寸基本是不同的,同时图像的分辨率也相对较高,为了能够不同尺寸的高清大图进行高效压缩、解压,本实施例进行如下设计。[0267]模型训练:在模型训练阶段,利用openimage,imagenet64等高清大数据集进行模型训练,得到自回归模型、自编码模型的参数。[0268]压缩:[0269]首先进行图像的预处理,将不同尺寸的高清大图像统一切片成相同尺寸(如32x32),并单独存储每张图像大小信息,用于图像的还原;[0270]将所有切片在batch维度堆叠在一起,作为流程的输入;[0271]将所有图像的残差编码与隐变量的编码并行输出;[0272]将每个数据集(同一数据集)/每张图像(不同数据集)隐变量的统计信息记录下来,作为流程的另一个输出。[0273]所实现的效果可以参阅表4。[0274][0275]表4[0276]显然,本技术提供的方法,可以实现更高的吞吐率,实现高效编解码。[0277]更具体地,下面以一些常用的压缩方式进行更详细的对比。[0278]参阅表5,在最大似然(评价生成模型预测准确率的指标,越小越好)与此前最快ai算法l3c基本一致的前提下,推理速度提升9.6倍。[0279][0280]表5[0281]参阅表6,相同的自回归模型,用本技术提供的并行方案,与未并行的方案相比,解压速度提升7.9倍。并行方案对感受野有限制,但此感受野对压缩率的影响有限。[0282]感受野是否并行bpd吞吐率(mb/s)3是5.77382.53否5.7748.54否5.7747.57否5.7444.0[0283]表6[0284]参阅表7,与动态熵编码(rans)相比,本技术提出的半动态熵编码(ans-ai)编码速度提升20倍,解码速度提升100倍,bpd损失小于0.55,0.17。且此半动态熵编码可在ai芯片上运行,在单张v100上,巅峰速度可达1gb/s。[0285][0286]表7[0287]此外,半动态熵编码与动态熵编码相比,所需要的分布种类数由2048减小到8,预处理需要的内存大小减小至原来的1/256,bpd损失小于0.03,可以降低熵编码所需计算资源,提高编码效率。[0288]前述对本技术提供的图像编码方法和图像解压方法的流程进行了介绍,下面对执行前述方法的装置进行介绍。[0289]参阅图14,本技术提供的一种图像编码装置的结构示意图,该图像编码装置包括:[0290]自回归模块1401,用于将输入图像作为自回归模型的输入,输出第一图像,自回归模型;[0291]残差计算模块1402,用于获取第一图像和输入图像之间的残差,得到第一残差图像;[0292]自编码模块1403,用于将输入图像作为自编码模型的输入,输出隐变量和第一残差分布,隐变量包括从输入图像中提取到的特征,第一残差分布包括自编码模型输出的用于表示输入图像中各个像素点和第一残差图像中对应的各个像素点之间的残差值;[0293]残差编码模块1404,用于对第一残差图像和第一残差分布进行编码,得到残差编码数据;[0294]隐变量编码模块1405,用于对隐变量进行编码,得到隐变量编码数据,隐变量编码数据和残差编码数据用于解压后得到输入图像。[0295]在一种可能的实施方式中,残差编码模块1404,具体用于将第一残差图像和第一残差分布作为半动态熵编码器的输入,输出残差编码数据,该半动态熵编码器用于使用第一预设类型的编码运算进行熵编码,第一预设类型的编码运算包括加、减或位运算,且半动态熵编码器中不包括第二预设类型的编码运算,第二预设类型包括乘、除或取余运算中的至少一种,即该半动态熵编码器中不包括乘、除或取余运算等耗时较长运算。[0296]在一种可能的实施方式中,该半动态熵编码器可以是对动态上编码器进行转换得到。具体地,可以对动态熵编码器的运算进行近似处理,如将动态熵编码器的运算替换为近似运算,减少或者去除乘、除、取余等运算,随后还可以进行变换处理,对运算进行变换,从而将所有耗时超过一定时长的运算(如剩余的取余、乘以及除等运损)转化为表格存取,及加、减、位等轻量级运算,得到本技术提供的半动态熵编码器。可以理解为,该半动态熵编码器可以是对动态熵编码器中的一些运算进行替换或者转换得到的熵编码器,使用该半动态熵编码器进行熵编码时,即可使用简单的运算,如加、减、位运算等高效编码的运算,从而实现高效编码。[0297]在一种可能的实施方式中,隐变量编码模块1405,具体用于将隐变量作为静态熵编码器的输入,得到隐变量编码数据。[0298]在一种可能的实施方式中,自编码模型包括编码模型和解码模型,自编码模块1403,具体用于:将输入图像作为编码模型的输入,输出隐变量,编码模型用于从输入图形中提取特征;将隐变量作为解码模型的输入,得到第一残差分布,解码模型用于预测输入的图像与对应的像素分布之间的残差值。[0299]在一种可能的实施方式中,自回归模型用于使用已预测的像素点的像素值预测处于同一连线上的像素点的值。[0300]参阅图15,本技术提供的一种图像解压装置的结构示意图,该图像解压装置包括:[0301]收发模块1501,用于获取隐变量编码数据和残差编码数据,该隐变量编码数据包括编码端从输入图像中提取到的特征进行编码得到,该残差编码数据包括对自回归模型输出的第一图像和该输入图像之间的残差进行编码得到的数据;[0302]隐变量解码模块1502,用于对隐变量编码数据进行解码,得到隐变量,该隐变量包括编码端从输入图像中提取到的特征;[0303]自编码模块1503,用于将隐变量作为自编码模型的输入,输出第二残差分布;[0304]残差解码模块1504,用于结合第二残差分布和残差编码数据进行解码,得到第二残差图像;[0305]自回归模块1505,用于将第二残差图像作为自回归模型的反向传播的输入,输出解压图像。[0306]在一种可能的实施方式中,隐变量解码模块1502,具体用于将隐变量编码数据作为静态熵编码器的输入,输出隐变量。[0307]在一种可能的实施方式中,残差解码模块1504,具体用于将第二残差分布和残差编码数据作为半动态熵编码器的输入,输出第二残差图像,该半动态熵编码器用于使用第一预设类型的编码运算进行熵编码,第一预设类型的编码运算包括加、减或位运算,且半动态熵编码器中不包括第二预设类型的编码运算,第二预设类型包括乘、除或取余运算中的至少一种,即该半动态熵编码器中不包括乘、除或取余运算等耗时较长运算。[0308]在一种可能的实施方式中,该半动态熵编码器可以是对动态上编码器进行转换得到。具体地,可以对动态熵编码器的运算进行近似处理,如将动态熵编码器的运算替换为近似运算,减少或者去除乘、除、取余等运算,随后还可以进行变换处理,对运算进行变换,从而将所有耗时超过一定时长的运算(如剩余的取余、乘以及除等运损)转化为表格存取,及加、减、位等轻量级运算,得到本技术提供的半动态熵编码器。可以理解为,该半动态熵编码器可以是对动态熵编码器中的一些运算进行替换或者转换得到的熵编码器,使用该半动态熵编码器进行熵编码时,即可使用简单的运算,如加、减、位运算等高效编码的运算,从而实现高效编码。[0309]在一种可能的实施方式中,自回归模块1505,具体用于通过自回归模型,对第二残差图像中处于同一连线上的像素点进行并行解码,得到解压图像。[0310]请参阅图16,本技术提供的另一种图像编码装置的结构示意图,如下所述。[0311]该图像编码装置可以包括处理器1601和存储器1602。该处理器1601和存储器1602通过线路互联。其中,存储器1602中存储有程序指令和数据。[0312]存储器1602中存储了前述图6-图11中的步骤对应的程序指令以及数据。[0313]处理器1601用于执行前述图6-图11中任一实施例所示的图像编码装置执行的方法步骤。[0314]可选地,该图像编码装置还可以包括收发器1603,用于接收或者发送数据。[0315]本技术实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于生成车辆行驶速度的程序,当其在计算机上行驶时,使得计算机执行如前述图6-图11所示实施例描述的方法中的步骤。[0316]可选地,前述的图16中所示的图像编码装置为芯片。[0317]本技术实施例还提供了一种图像编码装置,该图像编码装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行前述图6-图11中任一实施例所示的图像编码装置执行的方法步骤。[0318]本技术实施例还提供一种数字处理芯片。该数字处理芯片中集成了用于实现上述处理器1601,或者处理器1601的功能的电路和一个或者多个接口。当该数字处理芯片中集成了存储器时,该数字处理芯片可以完成前述实施例中的任一个或多个实施例的方法步骤。当该数字处理芯片中未集成存储器时,可以通过通信接口与外置的存储器连接。该数字处理芯片根据外置的存储器中存储的程序代码来实现上述实施例中图像编码装置执行的动作。[0319]本技术实施例提供的图像编码装置可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图6-图11所示实施例描述的图像编码方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)等。[0320]请参阅图17,本技术提供的另一种图像解压装置的结构示意图,如下所述。[0321]该图像解压装置可以包括处理器1701和存储器1702。该处理器1701和存储器1702通过线路互联。其中,存储器1702中存储有程序指令和数据。[0322]存储器1702中存储了前述图12-图13中的步骤对应的程序指令以及数据。[0323]处理器1701用于执行前述图12-图13中任一实施例所示的图像解压装置执行的方法步骤。[0324]可选地,该图像解压装置还可以包括收发器1703,用于接收或者发送数据。[0325]本技术实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于生成车辆行驶速度的程序,当其在计算机上行驶时,使得计算机执行如前述图12-图13所示实施例描述的方法中的步骤。[0326]可选地,前述的图17中所示的图像解压装置为芯片。[0327]本技术实施例还提供了一种图像解压装置,该图像解压装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行前述图12-图13中任一实施例所示的图像解压装置执行的方法步骤。[0328]本技术实施例还提供一种数字处理芯片。该数字处理芯片中集成了用于实现上述处理器1701,或者处理器1701的功能的电路和一个或者多个接口。当该数字处理芯片中集成了存储器时,该数字处理芯片可以完成前述实施例中的任一个或多个实施例的方法步骤。当该数字处理芯片中未集成存储器时,可以通过通信接口与外置的存储器连接。该数字处理芯片根据外置的存储器中存储的程序代码来实现上述实施例中图像解压装置执行的动作。[0329]本技术实施例提供的图像解压装置可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图6-图11所示实施例描述的图像解压方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)等。[0330]本技术实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图6-图13所示实施例描述的方法中图像解压装置或者图像解压装置所执行的步骤。[0331]本技术还提供了一种图像处理系统,包括了图像编码装置以及图像解压装置,该图像编码装置用于执行前述图6-图11对应的方法步骤,该图像解压装置用于执行前述图12-图13对应的方法步骤。[0332]具体地,前述的处理单元或者处理器可以是中央处理器(centralprocessingunit,cpu)、网络处理器(neural-networkprocessingunit,npu)、图形处理器(graphicsprocessingunit,gpu)、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)或现场可编程逻辑门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器等。[0333]示例性地,请参阅图18,图18为本技术实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器npu180,npu180作为协处理器挂载到主cpu(hostcpu)上,由hostcpu分配任务。npu的核心部分为运算电路1803,通过控制器1804控制运算电路1803提取存储器中的矩阵数据并进行乘法运算。[0334]在一些实现中,运算电路1803内部包括多个处理单元(processengine,pe)。在一些实现中,运算电路1803是二维脉动阵列。运算电路1803还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1803是通用的矩阵处理器。[0335]举例来说,假设有输入矩阵a,权重矩阵b,输出矩阵c。运算电路从权重存储器1802中取矩阵b相应的数据,并缓存在运算电路中每一个pe上。运算电路从输入存储器1801中取矩阵a数据与矩阵b进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)1808中。[0336]统一存储器1806用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(directmemoryaccesscontroller,dmac)1805,dmac被搬运到权重存储器1802中。输入数据也通过dmac被搬运到统一存储器1806中。[0337]总线接口单元(businterfaceunit,biu)1810,用于axi总线与dmac和取指存储器(instructionfetchbuffer,ifb)1809的交互。[0338]总线接口单元1810(businterfaceunit,biu),用于取指存储器1809从外部存储器获取指令,还用于存储单元访问控制器1805从外部存储器获取输入矩阵a或者权重矩阵b的原数据。[0339]dmac主要用于将外部存储器ddr中的输入数据搬运到统一存储器1806或将权重数据搬运到权重存储器1802中或将输入数据数据搬运到输入存储器1801中。[0340]向量计算单元1807包括多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如批归一化(batchnormalization),像素级求和,对特征平面进行上采样等。[0341]在一些实现中,向量计算单元1807能将经处理的输出的向量存储到统一存储器1806。例如,向量计算单元1807可以将线性函数和/或非线性函数应用到运算电路1803的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元1807生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1803的激活输入,例如用于在神经网络中的后续层中的使用。[0342]控制器1804连接的取指存储器(instructionfetchbuffer)1809,用于存储控制器1804使用的指令;[0343]统一存储器1806,输入存储器1801,权重存储器1802以及取指存储器1809均为on-chip存储器。外部存储器私有于该npu硬件架构。[0344]其中,循环神经网络中各层的运算可以由运算电路1803或向量计算单元1807执行。[0345]其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,asic,或一个或多个用于控制上述图6-图13的方法的程序执行的集成电路。[0346]另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本技术提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。[0347]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本技术而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。[0348]在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。[0349]所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。[0350]本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。[0351]最后应说明的是:以上,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1