首页> 中国专利> 使用机器学习的图像和视频压缩中的改进熵代码化

使用机器学习的图像和视频压缩中的改进熵代码化

摘要

机器学习被用于细化用于对视频或图像数据进行熵代码化的概率分布。确定与视频块相关联的符号(例如,诸如在编码期间的量化的变换系数或诸如在解码期间的来自于比特流的语法元素)的概率分布,并且从与视频块和/或邻近块相关联的视频数据中提取特征集。然后,使用机器学习对概率分布和特征集进行处理,以产生精细的概率分布。根据精细的概率分布,对与视频块相关联的视频数据进行熵代码化。使用机器学习以细化用于熵代码化的概率分布最小化要熵代码化的符号与精细的概率分布之间的交叉熵损失。

著录项

  • 公开/公告号CN113287306A

    专利类型发明专利

  • 公开/公告日2021-08-20

    原文格式PDF

  • 申请/专利权人 谷歌有限责任公司;

    申请/专利号CN201980087947.1

  • 发明设计人 亚历山大·博科夫;苏辉;

    申请日2019-10-31

  • 分类号H04N19/11(20060101);H04N19/13(20060101);H04N19/14(20060101);H04N19/157(20060101);H04N19/176(20060101);H04N19/194(20060101);H04N19/593(20060101);

  • 代理机构11219 中原信达知识产权代理有限责任公司;

  • 代理人周亚荣;邓聪惠

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 12:16:29

说明书

背景技术

数字视频流可以使用帧或静止图像的序列来表示视频。数字视频能够被用于各种应用,例如包括视频会议、高清视频娱乐、视频广告或用户生成的视频的共享。数字视频流能够包含大量数据并消耗用于处理、传输或者存储视频数据的计算设备的大量的计算或通信资源。已提出各种方法来减少视频流中的数据量,所述各种方法包括编码或解码技术。

发明内容

根据本公开的实施方式的用于将视频块编码为比特流的方法包括确定针对视频块的量化的变换系数的概率分布。从视频块或者视频块的一个或者多个邻近块中的一个或者两者相关联的视频数据提取特征集。使用机器学习来处理概率分布和特征集,以产生精细的概率分布。根据精细的概率分布对视频块的量化的变换系数进行熵编码以产生编码的视频块。然后将编码的视频块输出到比特流。

根据本公开的实施方式的用于从比特流解码编码的视频块的方法包括从比特流得出表示编码的视频块的语法元素。确定针对语法元素的概率分布。从自比特流中解码的视频数据中提取特征集。使用机器学习来处理概率分布和特征集,以产生精细的概率分布。根据精细的概率分布对语法元素进行熵解码,以产生量化的变换系数。对量化的变换系数进行去量化以产生变换系数。对变换系数进行逆变换以产生预测残差。重构预测残差以产生解码的视频块。然后将解码的视频块输出到输出视频流。

一种用于将视频块编码为比特流的装置包括存储器和处理器。处理器被配置成执行存储在存储器中的指令。所述指令包括用于以下的指令:确定针对视频块的量化变换系数的概率分布,识别特征集,使用机器学习来处理概率分布和特征集以产生精细的概率分布,根据精细的概率分布对视频块的编码的量化变换系数进行熵编码以产生编码的视频块,并将该编码视频块输出至比特流。基于与视频块相关联的视频数据、与视频块的一个或多个邻近块相关联的视频数据或用于对一个或多个邻近块进行编码的代码化模式中的一个或多个来识别特征集。

一种用于从比特流解码编码的视频块的装置包括存储器和处理器。处理器被配置成执行存储在存储器中的指令。这些指令包括用于以下的指令:确定表示编码的视频块的语法元素的概率分布,其中从比特流得出语法元素,识别特征集,使用机器学习处理概率分布和特征集以产生精细的概率分布,根据精细的概率分布对语法元素进行熵解码以产生量化的变换系数,对量化的变换系数进一步解码以产生解码的视频块,并将解码的视频块输出到输出视频流。基于与编码的视频块相关联的视频数据、与编码的视频块中的一个或多个邻近块相关联的视频数据或用于对一个或多个邻近块进行解码的代码化模式中的一个或多个来识别特征集。

根据本公开的实施方式的编码器执行用于将视频块编码为比特流的操作。操作包括基于从视频块或视频块的一个或多个邻近块中的一个或者两者中提取的特征集,使用机器学习来细化视频块的量化变换系数的概率分布。对视频块的量化的变换系数进行编码以产生编码的视频块,其中对视频块的量化的变换系数进行编码包括根据精细的概率分布对视频块的量化的变换系数进行熵编码。编码的视频块被输出到比特流。

根据本公开的实施方式的解码器执行用于从比特流解码编码的视频块的操作。该操作包括基于从自比特流中解码的视频数据中提取的特征集,使用机器学习来细化针对表示编码视频块的语法元素的概率分布。对语法元素进行解码以产生解码视频块,其中对语法元素进行解码包括根据精细的概率分布对语法元素进行熵解码。解码的视频块被输出到输出视频流。

在对实施方式、所附权利要求书和附图的以下详细描述中公开本公开的这些和其它方面。

附图说明

这里的描述参考下面描述的附图,其中,遍及数个视图相同的附图标记指代相同的部件。

图1是视频编码和解码系统的示例的示意图。

图2是可以实现发送站或接收站的计算设备的示例的框图。

图3是要编码并随后解码的视频流的示例的图。

图4是根据本公开的实施方式的编码器的示例的框图。

图5是根据本公开的实施方式的解码器的示例的框图。

图6是使用机器学习进行编码或解码的熵代码化器的示例的框图。

图7是用于使用机器学习将视频块的量化的变换系数熵编码为比特流的技术的示例的流程图。

图8是用于使用机器学习对来自比特流的表示编码视频块的语法元素进行熵解码的技术的示例的流程图。

具体实施方式

视频压缩方案可以包括将输入视频流的相应图像或帧分解为诸如块的较小部分,以及使用用于限制输出中的相应块所包括的信息的技术来生成输出比特流。可以对编码的比特流进行解码,以根据受限的信息重新创建源图像。典型的视频压缩和解压缩技术使用熵代码化来进一步减少将视频数据编码到比特流或从比特流解码视频数据所需的比特数目。例如,熵编码可以包括使用符号值的概率分布来编码为比特流,诸如以减少需要编码的数据量。然后,解码器可以使用那些概率分布对作为来自比特流的语法元素的编码符号进行熵解码。

概率分布的概率值指示视频数据的特定符号(例如,变换块的量化变换系数)将会具有特定值(例如,对于二值情况为0或1或对于非二值情况为其他值)的可能性。概率分布的概率可以以累积密度函数的形式存储,其中第一符号值的概率为p0,并且前两个符号值的概率为p0+p1,前三个符号值的概率为p0+p1+p2,依此类推。

可以在编码或解码期间更新概率分布的概率值,诸如基于要编码或解码的符号值的观察。概率分布对于熵代码化来说是重要的,因为它们用于确定代码化符号所需的比特数目。例如,可以使用更少的比特来代码化更有可能的符号值,而可以使用更多的比特来代码化不太可能的符号值。这样,可以最小化代码化视频数据所需的总比特数目。

然而,在一些情况下,可能使用与输入视频流(例如,在编码期间)或比特流(例如,在解码期间)有关的信息来细化概率分布。即,概率分布指示特定符号值出现在要编码或解码的符号序列或集合内的概率,但是没有参考输入视频流或比特流的其他方面。例如,如果适用,可能可以使用来自编码或解码过程的其他信息,以细化概率分布,并且从而改善熵代码化的效力。

本公开的实施方式通过在对符号值进行熵代码化之前使用机器学习来细化视频数据的符号值的概率分布来解决诸如此类的问题。在编码期间,为视频块的量化的变换系数确定概率分布,并且从与视频块和/或视频块的一个或多个邻近块相关联的视频数据中提取特征集。然后,使用机器学习对概率分布和特征集进行处理,以产生精细的概率分布。根据细化的概率分布对视频块的量化的变换系数进行熵编码以产生编码的视频块。然后将编码的视频块输出到输出视频流。

在解码期间,表示编码视频块的语法元素从比特流中被得出。确定语法元素的概率分布,并从自比特流中解码的视频数据中提取特征集。然后,使用机器学习对概率分布和特征集进行处理,以产生精细的概率分布。根据精细的概率分布对语法元素进行熵解码,以产生量化的变换系数。对量化的变换系数进行去量化以产生变换系数。对变换系数进行逆变换以产生预测残差。重构预测残差以产生解码视频块。然后将解码的视频块输出到输出视频流。

在本文中最初参考能够实现用于使用机器学习在图像和视频压缩中进行熵代码化的技术的系统来描述所述技术的进一步细节。图1是视频编码和解码系统100的示例的示意图。发送站102例如能够是具有诸如图2中描述的硬件的内部配置的计算机。然而,发送站102的其它实施方式是可能的。例如,发送站102的处理能够被分布在多个设备之间。

网络104能够连接发送站102和接收站106,以用于进行视频流的编码和解码。具体地,能够在发送站102中对视频流进行编码,并且能够在接收站106中对编码的视频流进行解码。网络104能够是例如因特网。网络104也能够是局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、蜂窝电话网络或将视频流从发送站102传送到此示例中的接收站106的任何其它手段。

在一个示例中,接收站106能够是具有诸如图2中描述的硬件的内部配置的计算机。然而,接收站106的其它适合的实施方式是可能的。例如,接收站106的处理能够被分布在多个设备之间。

视频编码和解码系统100的其它实施方式是可能的。例如,实施方式能够省略网络104。在另一实施方式中,视频流能够被编码,并且然后被存储以用于在稍后的时间传输到接收站106或具有存储器的任何其它设备。在一个实施方式中,接收站106(例如,经由网络104、计算机总线和/或某个通信途径)接收编码的视频流并且存储该视频流以用于稍后解码。在示例实施方式中,实时传输协议(RTP)被用于通过网络104的编码的视频的传输。在另一实施方式中,可以使用除RTP以外的传输协议(例如,基于超文本传送协议的(基于HTTP的)视频流送协议)。

当被用在视频会议系统中时,例如,发送站102和/或接收站106可以包括如下所述的对视频流进行编码和解码的能力。例如,接收站106可能是视频会议参与者,所述视频会议参与者从视频会议服务器(例如,发送站102)接收经编码的视频比特流以解码和查看,并且进一步对他或她自己的视频流进行编码并发送到视频会议服务器,以用于由其它参与者进行解码和查看。

在一些实施方式中,视频编码和解码系统100可替代地用于编码和解码除了视频数据以外的数据。例如,视频编码和解码系统100可以用于处理图像数据。图像数据可以包括来自图像的数据块。在这样的实施方式中,发送站102可以用于对图像数据进行编码,而接收站106可以用于对图像数据进行解码。

可替代地,接收站106可以表示存储编码的图像数据以供以后使用的计算设备,诸如在从发送站102接收到编码的或预编码的图像数据之后。作为另一替代方案,发送站102可以表示对图像数据进行解码的计算设备,诸如在将解码的图像数据发送到接收站106进行显示之前。

图2是能够实现发送站或接收站的计算设备200的示例的框图。例如,计算设备200能够实现图1的发送站102和接收站106中的一个或两个。计算设备200能够为包括多个计算设备的计算系统的形式,或者一个计算设备的形式,例如,移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等。

计算设备200中的处理器202能够是常规的中央处理单元。替代地,处理器202能够是能够操纵或者处理现存或此后开发的信息的另一类型的一个或多个设备。例如,尽管所公开的实施方式能够利用如所示的一个处理器(例如,处理器202)来实践,但是能够通过使用多于一个处理器来实现速度和效率方面的优势。

在一个实施方式中,计算设备200中的存储器204能够是只读存储器(ROM)设备或随机存取存储器(RAM)设备。然而,其它适合类型的存储设备能够被用作存储器204。存储器204能够包括由处理器202使用总线212来访问的代码和数据206。存储器204能够进一步包括操作系统208和应用程序210,所述应用程序210包括许可处理器202执行本文中所述的技术的至少一个程序。例如,应用程序210能够包括应用1至N,所述应用1至N进一步包括执行本文所描的技术的视频和/或图像代码化应用。

计算设备200还能够包括辅助存储214,其能够例如是与移动计算设备一起使用的存储器卡。因为视频通信会话可以包含大量信息,所以它们能够被整个地或部分地存储在辅助存储214中并被按需加载到存储器204中以用于进行处理。

计算设备200还能够包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是触敏显示器,其将显示器与能够操作以感测触摸输入的触敏元件相组合。显示器218能够经由总线212被耦合到处理器202。除了显示器218之外或作为显示器218的替代方案,还能够提供许可用户对计算设备200进行编程或者以其它方式使用计算设备200的其它输出设备。当输出设备是显示器或者包括显示器时,能够以各种方式实现该显示器,包括通过液晶显示器(LCD)、阴极射线管(CRT)显示器或发光二极管(LED)显示器,诸如有机LED(OLED)显示器。

计算设备200还能够包括以下设备或者与以下设备通信:图像感测设备220或现存或此后开发的能够感测诸如操作计算设备200的用户图像的图像的任何其它图像感测设备220,所述图像感测设备220例如是相机。图像感测设备220能够被定位成使得它被指向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴能够被配置成使得视场包括与显示器218直接相邻并且显示器218从中可见的区域。

计算设备200还能够包括以下设备或者与以下设备通信:声音感测设备222或现存或此后开发的能够感测计算设备200附近的声音的任何其它声音感测设备,所述声音感测设备222例如是麦克风。声音感测设备222能够被定位成使得它被指向操作计算设备200的用户并且能够被配置成接收由用户在该用户操作计算设备200的同时做出的声音,例如,语音或其它发言。

尽管图2将计算设备200的处理器202和存储器204描绘为被集成到一个单元中,但是能够利用其它配置。处理器202的操作能够跨越可直接地或者跨越局域网或其它网络耦合的多个机器(其中单独的机器能够具有一个或多个处理器)分布。存储器204能够跨越多个机器分布,所述机器诸如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器。

尽管在这里被描绘为一个总线,但是计算设备200的总线212能够由多个总线组成。另外,辅助存储214能够被直接耦合到计算设备200的其它组件或者能够经由网络访问,并且能够包括诸如存储卡这样的集成单元或诸如多个存储卡这样的多个单元。因此能够按照多种各样的配置来实现计算设备200。

图3是要编码并随后解码的视频流300的示例的图。视频流300包括视频序列302。在下一个等级处,视频序列302包括许多相邻帧304。虽然三个帧被描绘为相邻帧304,但是视频序列302能够包括任何数目的相邻帧304。然后,能够将相邻帧304进一步细分成单独的帧,例如,帧306。

在下一个等级处,能够将帧306划分成一系列平面或区段(segment)308。例如,区段308能够例如是许可并行处理的帧的子集。区段308也能够是可将视频数据分离成单独的颜色的帧的子集。例如,彩色视频数据的帧306能够包括亮度平面和两个色度平面。可以以不同的分辨率对区段308进行采样。

无论帧306是否被划分成区段308,都可以将帧306进一步细分成块310,所述块310能够包含例如与帧306中的16x16像素相对应的数据。还能够将块310布置成包括来自像素数据的一个或多个区段308的数据。块310还能够是任何其它适合的大小,诸如4x4像素、8x8像素、16x8像素、8x16像素、16x16像素或更大。除非另外指出,否则在本文中能够以互换的方式使用术语块和宏块。

图4是编码器400的示例的框图。诸如通过提供存储在存储器(例如存储器204)中的计算机软件程序,能够如上所述在发送站102中实现编码器400。计算机软件程序能够包括机器指令,所述机器指令当由诸如处理器202这样的处理器执行时,使发送站102以图4中描述的方式对视频数据进行编码。编码器400还能够作为包括在例如发送站102中的专用硬件被实现。在一个特别期望的实施方式中,编码器400是硬件编码器。

编码器400具有在前向路径(通过实连接线示出)中执行各种功能以使用视频流300作为输入来产生编码或压缩比特流420的以下级:帧内/帧间预测级402、变换级404、量化级406和熵编码级408。编码器400还可以包括重构路径(通过虚连接线示出),以重构用于对将来的块进行编码的帧。在图4中,编码器400具有在重构路径中执行各种功能的以下级:去量化级410、逆变换级412、重构级414和环路滤波级416。编码器400的其它结构变型能够被用于对视频流300进行编码。

当视频流300被呈现用于进行编码时,能够以块为单位处理相应相邻帧304,诸如帧306。在帧内/帧间预测级402处,能够使用帧内预测(也称作帧内预测)或帧间预测(也称作帧间预测)来对相应块进行编码。在任何情况下,能够形成预测块。在帧内预测的情况下,预测块可以由当前帧中的先前已经编码和重构的样本形成。在帧间预测的情况下,预测块可以由一个或多个先前构建的参考帧中的样本形成。

接下来,能够在帧内/帧间预测级402处将预测块从当前块中减去以产生残差块(也称作残差)。变换级404使用基于块的变换来在例如频域中将残差变换成变换系数。量化级406使用量化器值或量化等级来将变换系数转换成离散量子值,该离散量子值被称为量化变换系数。例如,变换系数可以除以量化值并被截断。

量化变换系数然后由熵编码级408进行熵编码。熵编码系数以及用于对块进行解码的其它信息(其可以包括例如诸如用于指示所用预测的类型、变换类型、运动矢量、量化器值等的语法元素)然后被输出到压缩比特流420。能够使用各种技术来格式化压缩比特流420,所述各种技术诸如可变长度代码化(VLC)或算术代码化。压缩比特流420也能够被称为编码视频流或编码视频比特流,并且将在本文中以可互换方式使用这些术语。

重构路径(通过虚连接线示出)能够被用于确保编码器400和解码器500(在下面针对图5进行描述)使用相同的参考帧来对压缩比特流420进行解码。重构路径执行与在解码过程(在下面针对图5进行描述)期间进行的功能类似的功能,其包括在去量化级410处对量化变换系数进行去量化以及在逆变换级412处对去量化变换系数进行逆变换以产生导数残差块(也称作导数残差)。

在重构级414处,能够将在帧内/帧间预测级402处预测的预测块添加到导数残差以创建重构块。环路滤波级416可以将环内滤波器或其他滤波器应用于重构块,以减少诸如块状伪影的失真。滤波器的示例包括但不限于:如H.264、VP9、HEVC和AV1中的解块滤波器;如AV1中的约束方向增强滤波器;以及如AV1中的环路恢复滤波器。

编码器400的其它变型能够被用于对压缩比特流420进行编码。在一些实施方式中,基于非变换的编码器能够针对某些块或帧在没有变换级404的情况下直接量化残差信号。在一些实施方式中,编码器能够使量化级406和去量化级410被组合在公共级中。

图5是解码器500的示例的框图。例如,通过提供存储在存储器204中的计算机软件程序,能够在接收站106中实现解码器500。计算机软件程序能够包括机器指令,所述机器指令当由诸如处理器202这样的处理器执行时,使接收站106以图5中所述的方式对视频数据进行解码。解码器500还能够用包括在例如发送站102或接收站106中的硬件来实现。

类似于上面讨论的编码器400的重构路径,解码器500在一个示例中包括执行各种功能以从压缩比特流420产生输出视频流516的以下级:熵解码级502、去量化级504、逆变换级506、帧内/帧间预测级508、重构级510、环路滤波级512和后滤波器级514。解码器500的其它结构变型能够被用于对压缩比特流420进行解码。

当压缩比特流420被呈现以用于解码时,压缩比特流420内的数据元素能够由熵解码级502解码以产生量化变换系数集。去量化级504(例如,通过将量化变换系数乘以量化器值)对量化变换系数进行去量化,并且逆变换级506对去量化变换系数进行逆变换以产生能够与在编码器400中由逆变换级412所创建的导数残差相同的导数残差。使用从压缩比特流420解码的报头信息,解码器500能够使用帧内/帧间预测级508来创建与在编码器400中(例如,在帧内/帧间预测级402处)创建的相同的预测块。

在重构级510处,能够将预测块添加到导数残差以创建重构块。能够将环路滤波级512应用于重构块以减少块伪像。能够将其它滤波应用于重构块。在此示例中,后滤波器级514被应用于重构块以减少块失真,并且结果作为输出视频流516输出。输出视频流516也能够被称为解码视频流,并且将在本文中以可互换方式使用这些术语。

解码器500的其它变型能够被用于对压缩比特流420进行解码。在一些实施方式中,解码器500能够在没有后滤波器级514的情况下产生输出视频流516。

图6是使用机器学习进行编码或解码的熵代码化器600的示例的框图。熵代码化器600表示用于对视频数据进行熵代码化的功能性,诸如将视频数据熵代码化成比特流(例如,图4和5中所示的比特流420)或者从比特流熵代码化视频数据。例如,熵代码化器600可以表示用于将符号熵编码到比特流的功能性,诸如在图4中所示的编码器400的熵编码级408处执行的功能性。在另一个示例中,熵代码化器600可以表示用于对来自比特流的符号进行熵解码的功能性,诸如在图5中所示的熵解码级502处执行的功能性。

接收到熵代码化器600的输入包括概率分布602和特征集604。概率分布602指示在适用时将可能的值编码到比特流或从比特流解码的可能值的概率。例如,在要编码或解码的值表示二值化视频数据的情况下,概率分布602可以包括值0的第一概率和值1的第二概率。在另一个示例中,在要编码或解码的值表示非二值视频数据的情况下,概率分布602可以包括N个概率,其中N是可以被编码或解码的不同值的数目。

特征集604包括与要使用熵代码化器600进行熵代码化的视频块和/或该视频块的一个或多个邻近块有关的视频信息。具体地,基于与视频块相关联的视频数据、与视频块中的一个或多个邻近块相关联的视频数据或用于对一个或多个邻近块进行编码的代码化模式中的一个或多个来识别特征集604。特征集604中的特征可以例如对应于沿着一个或多个不同方向的视频块的像素值的差异、视频块的边缘或像素属性、用于对视频块的一个或多个邻近块进行编码的帧内预测模式、视频块和/或视频块的一个或多个邻近块内的局部图像纹理、其他视频数据或其组合。

机器学习级606使用机器学习来处理概率分布602和特征集604,以产生精细的概率分布608。使用机器学习来处理概率分布602和特征集604包括使用机器学习将机器学习模型应用于概率分布602和特征集604。机器学习级606所使用的机器学习模型可以例如是或包括神经网络、深度神经网络、支持向量机、聚类网络、贝叶斯网络、遗传算法或另一模型。

精细的概率分布608是已基于机器学习级606处的处理来更新的概率值的分布。可以通过更新概率分布602的一些或全部概率来产生精细的概率分布608。例如,精细的概率分布608可以包括一个或多个概率值,该一个或多个概率值与概率分布602的相应概率值或值不同。

符号610包括一个或多个符号,它们可以与视频方面(例如,视频帧的块、块的部分、视频帧的区段或图块或另一视频方面)共同相关联。符号610可以表示二值化的视频数据,使得符号610的每个符号具有值0或1。可替选地,符号610可以表示非二值的视频数据,使得符号610的每个符号可以具有值0、1、2或3,或者可以具有其他值。

根据先前的概率分布和先前的视频数据来训练机器学习模型,以辨识和处理概率分布602和特征集604。机器学习级606用作使用机器学习模型(例如,神经网络),其被训练以最小化符号610(例如,量化的变换系数、语法元素或其他符号)与由机器学习级606产生的精细的概率分布608之间的交叉熵损失。

熵代码化级612根据细化的概率分布608对符号610进行熵代码化。根据细化的概率分布608对符号610进行熵代码化可以包括使用细化的概率分布608的细化值对符号610进行算术代码化。算术代码化可以被用于基于那些符号610出现在从其编码符号610的视频流中或符号所解码成的比特流中出现的概率来对每个符号610进行代码化。例如,具有较高概率的符号610中的一个可以使用较少数目的比特来进行算术代码化,而具有较低概率的符号610中的一些可以使用较大数目的比特被算术代码化。在一些情况下,熵代码化级612可以使用除了算术代码化之外的技术。

熵代码化级612用来将符号610减少到一个或多个比特的算术代码化或其他技术定义熵代码化级612的压缩吞吐量,并且因此,定义熵代码化器600的压缩吞吐量。压缩吞吐量指代熵代码化级612最小化用于表示符号610的比特数目的功效,无论是到比特流还是从比特流。因此,从根据精细的概率分布608对符号610(例如,量化的变换系数、语法元素或其他视频数据)进行熵代码化所产生的压缩吞吐量大于从根据概率分布602对符号进行熵代码化所产生的压缩吞吐量。

在一些实施方式中,概率分布602可以用于更新存储在由熵代码化器600访问的概率表中的值。例如,可以根据概率分布602而不是精细的概率分布608来更新存储用于确定概率分布602的值的概率表。更新概率表包括在符号610根据精细的概率分布608在熵代码化级612处被熵代码化之后根据概率分布602改变存储在概率表中的一个或多个值。

现在描述使用机器学习在图像和视频压缩中进行熵代码化的技术的更多细节。图7是用于使用机器学习将视频块的量化的变换系数熵编码为比特流的技术700的示例的流程图。图8是用于使用机器学习对来自比特流的表示编码视频块的语法元素进行熵解码的技术800的示例的流程图。

技术700和/或技术800可以实现为例如可以由诸如发送站102或接收站106的计算设备执行的软件程序。例如,该软件程序可以包括机器可读指令,其可以存储在诸如存储器204或辅助存储214的存储器中,并且在由诸如处理器202的处理器执行时,可以使计算设备执行技术700和/或技术800。可以使用专用硬件或固件来实现技术700和/或技术800。例如,硬件组件被配置成执行技术700和/或技术800。如在上面所解释的,一些计算设备可以具有多个存储器或处理器,并且可以使用多个处理器、存储器或两者分布在技术700和/或技术800中描述的操作。

为了简化说明,本文将技术700和技术800都描绘和描述为一系列步骤或操作。然而,根据本公开的步骤或操作可以以各种顺序和/或同时发生。另外,可以使用本文未提出和描述的其他步骤或操作。此外,可能不需要所有图示的步骤或操作来实现根据所公开的主题的技术。

首先参考图7,示出用于使用机器学习将视频块的量化的变换系数熵编码为比特流的技术700。在702处,确定量化的变换系数的概率分布。量化的变换系数是在编码器的预测、变换和量化级——例如,图4中示出的编码器400的帧内/帧间预测级402、变换级404和量化级406——处对视频块进行处理之后的视频块的系数。量化的变换系数的概率分布是量化的变换系数的每个可能值的概率的分布。概率分布可以存储在概率表中或从概率表中检索。概率分布的概率值可以以累积密度函数的形式存储。

在704处,从与视频块或视频块的一个或多个邻近块中的一个或两者相关联的视频数据中提取特征集。具体地,基于与视频块相关联的视频数据、与视频块的一个或多个邻近块相关联的视频数据或用于对一个或多个邻近块进行编码的代码化模式中的一个或多个来识别特征集。特征集的特征可以例如对应于沿着一个或多个不同方向的视频块的像素值的差异、视频块的边缘或像素属性、用于对视频块的一个或多个邻近块进行编码的帧内预测模式、视频块和/或视频块的一个或多个邻近块内的局部图像纹理、其他视频数据或其组合。

在706处,使用机器学习来处理概率分布和特征集以产生精细的概率分布。使用机器学习产生精细的概率分布包括将概率分布和特征集馈送到机器学习模型中。机器学习模型是一种机器学习方面,其已经根据先前的概率分布和先前的视频数据被训练,以辨识和处理概率分布和特征集。特别地,训练机器学习模型以处理使用概率分布和特征集识别、产生、选择或以其他方式确定的信息。

从视频数据中提取的特征集可以例如对应于视频块的像素值的差异。例如,那些像素值可以与视频块的块上下文的已经重构的部分有关。可以基于那些像素值的差异的不同方向来计算定向梯度直方图(例如,归一化的定向梯度直方图)。机器学习模型可以用于处理定向梯度直方图(即,特征集可以包括定向梯度直方图)。在一些实施方式中,特征集代替或除了定向梯度直方图之外还包括不同类型的特征描述符,例如,边缘定向直方图、尺度不变特征变换描述符或形状上下文。

然后,可以通过基于归一化的定向梯度直方图来更新概率分布来产生精细的概率分布。例如,可以训练使用先前的概率分布和先前的视频数据训练的机器学习模型,以基于归一化的定向梯度直方图确定像素差异的不同方向的概率。然后,机器学习模型可以使那些概率用于更新概率分布。

在一些情况下,诸如在像素差异的不同方向的概率不满足阈值(例如,因为这些概率太低)的情况下,基于归一化的定向梯度直方图来更新概率分布可以包括丢弃该像素差异的不同方向的概率。在这种情况下,精细的概率分布可以是如最初从概率表中接收到的概率分布。

在一些实施方式中,机器学习模型可以被用于处理用于对视频块的一个或一个以上邻近块进行编码的帧内预测模式的方向。来自视频数据的特征集可以例如对应于用于对邻近块进行编码的那些帧内预测模式的不同方向。机器学习模型可以处理用于对邻近块进行编码的帧内预测模式的不同方向,以确定视频块的量化变换系数的预测方向的概率。然后可以通过基于预测方向的概率来更新概率分布来产生精细的概率分布。

在一些情况下,诸如在量化的变换系数的预测方向的概率不满足阈值的情况下(例如,因为这些概率太低),基于预测方向的概率来更新概率分布可以包括丢弃该预测方向的概率。在这种情况下,精细的概率分布可以是如最初从概率表中接收到的概率分布。

前述内容表示可以使用机器学习处理概率分布和特征集以产生精细的概率模型的方式。机器学习模型可以被可用于处理其他视频数据,诸如来自视频块的视频数据、来自视频块的一个或多个邻近块的视频数据、来自输入视频流的其他方面的视频数据或其组合。

在708处,根据细化的概率分布来对视频块的量化的变换系数进行熵编码。根据精细的概率分布对量化的变换系数进行熵编码包括:使用熵编码技术——例如,算术代码化——以基于精细的概率分布的概率来确定要用于编码量化的变换系数的比特数目,使得最小化在比特流内用信号发送量化的变换系数所需的比特数目。在710处,将编码的视频块输出到比特流。

在一些实施方案中,技术700可以包括在对量化的变换系数进行熵编码之后更新概率分布。例如,可以根据概率分布而不是根据精细的概率分布来更新存储用于确定概率分布的值的概率表。例如,概率分布可以用于在逐个符号基础上更新存储在概率表中的值,使得在处理符号中的单个符号后,概率分布的概率被更新。更新概率表包括根据针对量化的变换系数的概率分布来改变存储在概率表中的一个或多个值。

接下来参考图8,示出用于使用机器学习对来自比特流的表示编码视频块的语法元素进行熵解码的技术800。在802处,语法元素从比特流中得出。得出语法元素可以包括解码与编码的视频块相对应的比特流的部分、与包括编码的视频块的编码的视频帧相对应的比特流的部分或比特流的另一部分。

在804处,确定语法元素的概率分布。确定概率分布可以包括从概率表中检索值。例如,概率表可以是存储用于确定概率分布的值的表或其他数据存储。该值可以是累积密度函数的概率值。概率表可以是用于对来自比特流的语法元素进行熵解码的解码器可访问的表。

在806处,从自比特流中解码的视频数据中提取特征集。该特征集可以是来自编码的视频块和/或来自编码的视频块的一个或多个邻近块的特征。这样,提取特征集可以包括基于与编码的视频块相关联的视频数据、与编码的视频块的一个或多个邻近块相关联的视频数据或者用于解码一个或者多个邻近块的代码化模式中的一个或多个来识别特征集。

在808处,使用机器学习来处理概率分布和特征集以产生精细的概率分布。使用机器学习以产生精细的概率分布包括将概率分布和特征集馈送到机器学习模型中。机器学习模型是一种机器学习方面,其已经根据先前的概率分布和先前的视频数据被训练,以辨识和处理概率分布和特征集。特别地,训练机器学习模型以处理使用概率分布和特征集识别、产生、选择或以其他方式确定的信息。

例如,机器学习模型可以被可用于处理归一化的定向梯度直方图。从视频数据提取的特征集可以例如对应于编码的视频块的像素值的差异。例如,那些像素值可以与编码的视频块的块上下文的已经重构的部分有关。可以基于那些像素值的差异的不同方向来计算归一化的定向梯度直方图。

然后可以通过基于归一化的定向梯度直方图来更新概率分布来产生精细的概率分布。例如,可以训练使用先前的概率分布和先前的视频数据训练的机器学习模型,以基于归一化的定向梯度直方图来确定像素差异的不同方向的概率。然后,机器学习模型可以使那些概率被用于更新概率分布。

在一些情况下,诸如在像素差异的不同方向的概率不满足阈值的情况下(例如,因为这些概率太低),基于归一化的定向梯度直方图来更新概率分布可以包括丢弃该像素差异的不同方向的概率。在这种情况下,精细的概率分布可以是如最初从概率表中接收到的概率分布。

在一些实施方案中,机器学习模型可以被用于处理帧内预测模式的方向,所述帧内预测模式被用于解码编码的视频块的一个或多个邻近块。来自视频数据的特征集可以例如对应于用于解码邻近块的那些帧内预测模式的不同方向。机器学习模型可以处理用于对邻近块进行解码的帧内预测模式的不同方向,以确定针对编码的视频块的语法元素的预测方向的概率。然后可以通过基于预测方向的概率来更新概率分布来产生精细的概率分布。

在一些情况下,诸如在语法元素的预测方向的概率不满足阈值的情况下(例如,因为这些概率太低),基于预测方向的概率来更新概率分布可以包括丢弃该预测方向的概率。在这种情况下,精细的概率分布可以是如最初从概率表中接收到的概率分布。

前述内容表示可以其中使用机器学习来处理概率分布和特征集以产生精细的概率模型的方式。机器学习模型可以被用于处理其他视频数据,诸如来自编码的视频块的视频数据、来自编码的视频块的一个或多个邻近块的视频数据、来自比特流的其他方面的视频数据或其组合。

在810处,根据精细的概率分布来对表示编码的视频块的语法元素进行熵解码。根据精细的概率分布对语法元素进行熵解码包括使用熵解码技术——例如,算术代码化——以基于精细的概率分布的概率来确定与每个语法元素相对应的符号。

在812处,量化的变换系数被进一步解码以产生解码的视频块。进一步对量化的变换系数进行解码包括:对量化的变换系数进行去量化以产生变换系数;对变换系数进行逆变换以产生预测残差;以及重构预测残差以产生解码的视频块。例如,可以在图5中所示的解码器500的去量化级504、逆变换级506、帧内/帧间预测级508和重构级510处执行进一步的解码。在814处,将解码的视频块输出到输出视频流。

在一些实施方式中,技术800可以包括在对语法元素进行熵解码之后更新概率分布。例如,可以根据概率分布而不是根据精细的概率分布来更新存储用于确定概率分布的值的概率表。例如,概率分布可以用于在逐个符号基础上更新存储在概率表中的值,使得在处理各个符号后,概率分布的概率被更新。更新概率表包括根据语法元素的概率分布来改变存储在概率表中的一个或多个值。

上面描述的编码和解码的各个方面说明编码和解码技术的一些示例。然而,要理解的是,如在权利要求中使用的那些术语,编码和解码可以意指压缩、解压缩、变换或数据的任何其他处理或变化。

单词“示例”在本文中被用于意指用作示例、实例或图示。在本文中被描述为“示例”的任何方面或设计不一定被解释为比其它方面或设计优选或有利。相反,单词“示例”的使用旨在以具体方式呈现构思。如本申请中所使用的,术语“或”旨在意指包括性“或”而不是排他性“或”。也就是说,除非另外指定或者通过上下文另外清楚地指示,否则陈述“X包括A或B”旨在意指其自然包含性排列中的任一种。也就是说,如果X包括A;X包括B;或者X包括A和B两者,则在上述实例中的任一个下满足“X包括A或B”。此外,除非另外指定或者通过上下文清楚地指示为针对单数形式,否则如本申请和所附权利要求书中所使用的冠词“一”和“一个”通常应该被解释成意指“一个或多个”。此外,术语“实施方式”或术语“一个实施方式”在整个本公开中的使用不旨在意指同一实施方式,除非被如此描述。

发送站102和/或接收站106的实施方式(以及存储在其上并且/或者由其(包括由编码器400和解码器500)执行的算法、方法、指令等)能够用硬件、软件或其任何组合加以实现。硬件能够包括例如计算机、知识产权(IP)核、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微码、微控制器、服务器、微处理器、数字信号处理器或任何其它适合的电路。在权利要求书中,术语“处理器”应该被理解为单独地或相结合地包含上述硬件中的任一个硬件。术语“信号”和“数据”以可互换的方式使用。另外,发送站102和接收站106的各部分不一定必须被以相同的方式实现。

另外,在一个方面中,例如,能够使用具有计算机程序的通用计算机或通用处理器来实现发送站102或接收站106,当执行所述计算机程序时,实行本文中描述的各个方法、算法和/或指令中的任一种。此外或替代地,例如,能够利用专用计算机/处理器,所述专用计算机/处理器能够包含用于实行本文中描述的方法、算法或指令中的任一种的其它硬件。

例如能够在视频会议系统中的计算机上实现发送站102和接收站106。替代地,能够在服务器上实现发送站102,并且能够在与服务器分开的设备(诸如手持通信设备)上实现接收站106。在此实例中,发送站102能够使用编码器400将内容编码成编码的视频信号并将该编码的视频信号发送到通信设备。进而,通信设备然后能够使用解码器500来对经编码的视频信号进行解码。替代地,通信设备能够对本地存储在通信设备上的内容(例如,不由发送站102发送的内容)进行解码。其它适合的发送和接收实施方式的方案是可用的。例如,接收站106能够是通常固定的个人计算机,而不是便携式通信设备,并且/或者包括编码器400的设备也可以包括解码器500。

另外,本公开的实施现方式的全部或一部分能够采取例如能够从计算机可用介质或计算机可读介质访问的计算机程序产品的形式。计算机可用介质或计算机可读介质能够是例如能够有形地包含、存储、通讯或者传输程序以用于由任何处理器使用或者连同任何处理器一起使用的任何设备。介质能够是例如电子、磁、光学、电磁或半导体设备。其它适合的介质也是可用的。

已描述了上述实施方式和其它方面以便容易理解本公开并且不限制本公开。相反,本公开旨在涵盖包括在所附权利要求书的范围内的各种修改和等同布置,该范围应被赋予如在法律许可下的最广泛解释,以便包含所有这样的修改和等同布置。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号