具有基于边信息的视频编译的混合运动补偿神经网络

文档序号:991724 发布日期:2020-10-20 浏览:6次 >En<

阅读说明:本技术 具有基于边信息的视频编译的混合运动补偿神经网络 (Hybrid motion compensated neural network with side information based video coding ) 是由 德巴尔加·慕克吉 乌尔旺·乔希 陈悦 萨拉·帕克 于 2019-11-04 设计创作,主要内容包括:一种用于对视频流进行编译的混合装置包括第一编码器。第一编码器包括具有至少一个隐藏层的神经网络,并且该神经网络在至少一个隐藏层中的第一隐藏层处从视频流接收源数据,在第一隐藏层处接收与源数据相关的边信息,并且使用源数据和边信息来生成引导信息。第一编码器输出引导信息和边信息以供解码器重构源数据。(A mixing apparatus for coding a video stream includes a first encoder. The first encoder includes a neural network having at least one hidden layer, and the neural network receives source data from the video stream at a first hidden layer of the at least one hidden layer, receives side information related to the source data at the first hidden layer, and generates the guide information using the source data and the side information. The first encoder outputs the guide information and the side information for the decoder to reconstruct the source data.)

具有基于边信息的视频编译的混合运动补偿神经网络

背景技术

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

发明内容

所公开的实现方式的一个方面是第一编码器,该第一编码器包括具有至少一个隐藏层的神经网络,其中该神经网络在至少一个隐藏层中的第一隐藏层处从视频流接收源数据,在第一隐藏层处接收与源数据相关的边信息,并且使用源数据和边信息来生成引导信息。第一编码器将引导信息和边信息输出到解码器以用于重构源数据。

本文所述的用于对视频流进行编译的方法包括:将源数据从视频流提供给包括神经网络的第一编码器;使用源数据来生成边信息;将边信息输入到神经网络以用于对源数据进行编码;以及将源数据和边信息从第一编码器传输到解码器。

本文所述的用于对视频流进行编译的另一混合装置包括第一编码器和第一解码器,该第一编码器和该第一解码器包括具有多个隐藏层的神经网络。该神经网络在编码器的第一隐藏层处从视频流接收源数据,在编码器的第一隐藏层处接收与源数据相关的边信息,使用源数据和边信息来生成引导信息,并且在第一解码器的第一隐藏层处接收引导信息和边信息以用于重构源数据。

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

附图说明

本文的描述参考附图,其中,相似的附图标记在所有若干视图中自始至终指代相似的部分。

图1是视频编码和解码系统的简图。

图2是能够实现传输站或接收站的计算设备的示例的框图。

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

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

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

图6是根据本公开的实现方式的帧的一部分的表示的框图。

图7是根据本公开的实现方式的块的四叉树表示的示例的框图。

图8是用于搜索最佳模式以对块进行编译的过程的流程图。

图9是通过使用预测模式来估计对图像块进行编译的速率和失真成本的过程的框图。

图10是根据本公开的实现方式的用于对视频流的块进行编码的过程的流程图。

图11是根据本公开的实现方式的包括具有边信息的神经网络的编解码器的示例的框图。

图12是能够用于实现图11的编解码器的神经网络的示例的框图。

图13是能够用于实现图11的编解码器的神经网络的另一示例的框图。

图14是图13的神经网络的示例中的变型的框图。

图15是根据本公开的实现方式的包括具有边信息的神经网络的编解码器的替代示例的框图。

具体实施方式

可以设计编码技术以使编译效率最大化。编译效率可能是指在使失真最小化的同时(例如,在维持一定水平的视频质量的同时)以最低可能的比特速率对视频进行编码。通常按速率和失真两者测量编译效率。速率是指编码(诸如对块、帧等进行编码)所需要的比特数。失真测量例如源视频块与该源视频块的重构版本之间的质量损失。例如,可以将失真计算为源块的像素值与重构块的像素值之间的均方误差。通过执行速率失真优化过程,视频编解码器对照对视频进行编码所需要的速率来优化失真量。

现代视频编解码器(例如,H.264,其也称为MPEG-4AVC;VP9;H.265,其也称为HEVC;AVS2;和AV1)定义并使用大量工具和配置(例如,参数)以改进编译效率。视频编码器能够使用模式判定来检查(例如,测试、评价等)参数的有效组合中的至少一些以选择导致相对较低的速率失真值的组合。模式判定的示例是帧内预测模式判定,其确定用于对块进行编译的最佳帧内预测模式。模式判定的另一示例是分区判定,其确定编译单元(也称为编译树单元或CTU)的最佳子分区。模式判定的另一示例包括关于要在将块(诸如残差块或图像块)从像素域变换到频域以形成包括变换系数的变换块时使用的变换类型的判定。

为了评价一种组合是否好于另一组合,能够针对每个所检查的组合来计算度量并且比较相应的度量。在一个示例中,度量能够组合上述速率和失真以产生速率失真(RD)值或成本。RD值或成本可以是单个标量值。

视频编解码器中的量化参数能够用于控制速率与失真之间的权衡。通常,更大的量化参数意味着更高的量化(诸如变换系数的量化)导致更低的速率但更高的失真;而更小的量化参数意味着更低的量化导致更高的速率但更低的失真。可以在本公开中互换地使用变量QP、q和Q来指代量化参数。

量化参数的值可以是固定的。例如,编码器能够使用一个量化参数值来对视频的所有帧和/或所有块进行编码。在其它示例中,量化参数能够例如从帧到帧改变。例如,在视频会议应用的情况下,编码器能够基于网络带宽中的波动来改变量化参数值。

由于量化参数能够用于控制速率与失真之间的权衡,所以量化参数能够用于计算与参数的相应组合相关联的RD成本。导致最低成本(例如,最低RD成本)的组合能够被用于对例如压缩比特流中的块或帧进行编码。也就是说,每当编码器判定(例如,模式判定)基于RD成本时,QP值就可以用于确定RD成本。

在一个示例中,QP能够用于导出乘子,该乘子用于将速率和失真值组合成一个度量。一些编解码器可以将乘子称为拉格朗日乘子(被表示为λmode);其它编解码器可以使用被称为rdmult的类似乘子。每个编解码器可以具有计算乘子的不同方法。除非上下文清楚地指出,否则不管编解码器如何,在本文中将乘子称为拉格朗日乘子或拉格朗日参数。

重申一下,拉格朗日乘子能够用于评价竞争模式(即,参数的竞争组合)的RD成本。具体地,令rm表示由使用模式m产生的速率(以比特为单位)并且令dm表示所产生的失真。能够将选择模式m的速率失真成本计算为标量值:dmmoderm。通过使用拉格朗日参数λmode,然后能够比较两种模式的成本并且选择具有较低的组合RD成本的模式。评价速率失真成本的这种技术是至少一些视频编解码器中的模式判定过程的基础。

不同的视频编解码器可以使用不同的技术来根据量化参数计算拉格朗日乘子。这是部分地由于以下事实而导致的:不同的编解码器对于量化参数及其使用方法可以具有不同的含义(例如,定义、语义等)。

实现H.264标准的编解码器(在本文中称为H.264编解码器)可以使用公式(1)来导出拉格朗日乘子λmode

λmode=0.85×2(QP-12)/3 (1)

实现HEVC标准的编解码器(在本文中称为HEVC编解码器)可以使用与公式(1)类似的公式。实现H.263标准的编解码器(在本文中称为H.263编解码器)可以使用公式(2)来导出拉格朗日乘子λmode

λmode=0.85·QH263 2 (2)

实现VP9标准的编解码器(在本文中称为VP9编解码器)可以使用公式(3)来导出乘子rdmult:

rdmult=88·q2/24 (3)

实现AV1标准的编解码器(在本文中称为AV1编解码器)可以使用公式(4)来导出拉格朗日乘子λmode

λmode=0.12·QAV1 2/256 (4)

如能够在上述情况下看到的,乘子与量化参数呈非线性关系。在HEVC和H.264的情况下,乘子与QP呈指数关系;而在H.263、VP9和AV1的情况下,乘子与QP呈二次关系。注意,乘子在用于相应的编解码器中之前可以经历进一步变化,以说明由编码器包括在压缩比特流中的附加边信息(side information)。边信息的示例包括图片类型(例如,帧内对帧间预测帧)、颜色分量(例如,亮度或色度)和/或感兴趣区域。在一个示例中,此类附加变化可以是乘子的线性变化。

如上所述,能够从许多可能的组合中选择最佳模式。例如,可以通过执行编码器的编码步骤的至少一子集来确定与特定模式(或工具的特定组合)相关联的RD成本。取决于要确定RD成本的模式,编码步骤的子集能够包括以下步骤中的至少一个:确定预测块、确定残差块、确定变换类型、确定插值滤波器、量化变换块、熵编码(例如使用假想编码器)等。注意,这些编码步骤既不旨在作为典型编码器可以执行的编码步骤的详尽列表,也不以任何特定次序呈现(也就是说,编码器不一定顺序地执行如列举的这些步骤)。随着可能的工具和参数的数目增加,组合的数目也增加,这继而增加确定最佳模式所需要的时间。

可以利用诸如机器学习的技术来减少确定最佳模式所需要的时间。机器学习可能非常适于解决视频编译中的计算复杂性问题。例如,不是执行用于确定与模式相关联的速率和失真(或等效地,RD成本)的所有编码步骤(即,蛮力或穷举方法),而是能够使用机器学习模型来估计速率和失真,或者估计与模式相关联的RD成本。然后,可以基于例如最低RD成本来选择最佳模式。

可以使用可从执行标准编码技术的编码器例如关于图4和图6至图9描述的那些获得的大量训练数据来训练机器学习模型。更具体地,能够在机器学习的学习阶段期间使用训练数据来导出(例如,学习、推理等)机器学习模型,该机器学习模型是(例如,定义、构成等)从输入数据到输出(在此示例中为能够用于做出一个或多个模式判定的RD成本)的映射。

机器学习模型的预测能力(即,准确性)与用于训练机器学习模型的输入和呈现给机器学习模型以预测结果(例如,最佳模式)的输入一样好。一旦机器学习模型被训练,该模型就将输出计算为其输入的确定性函数。在一个示例中,机器学习模型可以是神经网络模型,其可以是卷积神经网络(CNN)。将在下面关于图12至图14讨论包括CNN的神经网络模型的进一步细节。

如可以从上述描述中看出的,机器学***和垂直维度。使用机器学习来从数据的三维体积中学习运动场是可能的,但是涉及附加程度的复杂性。根据本文教导,可以使从常规编码方法导出的信息(例如,运动信息)可用以用于至少部分地使用机器学习来压缩的视频数据的重构。这使用具有在解码器处实施信息的可用性的结构约束的深度神经网络来实现。

在本文中首先参考基于块的编解码器来描述神经网络,同时可以并入教导。尽管将基于块的编解码器描述为示例,但是可以与本教导一起使用其它编解码器,包括基于特征的编解码器。

图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)接收编码视频比特流以解码和查看,并且进一步对它自己的视频比特流进行编码并传输到视频会议服务器以供由其它参与者解码和查看。

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

计算设备200中的CPU 202可以是中央处理单元。替换地,CPU202可以是任何其它类型的设备,或现存的或此后开发的能够操纵或处理信息的多个设备。尽管所公开的实现方式能够用如图所示的单个处理器(例如,CPU 202)来实践,但是能够通过使用不止一个处理器来实现速度和效率上的优势。

在一个实现方式中,计算设备200中的存储器204可以是只读存储器(ROM)设备或随机存取存储器(RAM)设备。能够将任何其它合适类型的存储设备用作存储器204。存储器204能够包括由CPU 202使用总线212来访问的代码和数据206。存储器204能够进一步包括操作系统208和应用程序210,应用程序210包括允许CPU 202执行本文所述的方法的至少一个程序。例如,应用程序210能够包括应用1至应用N,这些应用进一步包括执行本文所述的方法的视频编译应用。计算设备200也能够包括辅助存储214,该辅助存储214例如可以是与移动的计算设备200一起使用的存储卡。因为视频通信会话可以包含大量信息,所以能够将它们全部或部分地存储在辅助存储214中并且视需要加载到存储器204中以进行处理。

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

计算设备200也能够包括图像感测设备220或与之通信,该图像感测设备220例如为相机或现存的或此后开发的能够感测图像例如操作计算设备200的用户的图像的任何其它图像感测设备。图像感测设备220能够被定位为使得它朝向操作计算机计算设备200的用户定向。在一个示例中,图像感测设备220的位置和光轴能够被配置为使得视场包括与显示器218直接相邻并且显示器218可见的区域。

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

尽管图2将计算设备200的CPU 202和存储器204描绘为被集成到单个单元中,但是能够利用其它配置。CPU 202的操作能够分布在能够直接或跨越局域网或其它网络耦合的多个机器(每个机器具有一个或多个处理器)之上。存储器204能够分布在多个机器例如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器之上。尽管在这里被描绘为单条总线,但是计算设备200的总线212能够由多条总线组成。另外,辅助存储214能够直接耦合到计算设备200的其它组件或者能够经由网络访问并且能够包括单个集成单元(诸如存储卡)或多个单元(诸如多个存储卡)。因此能够以各种广泛的配置实现计算设备200。

图3是要编码并随后解码的视频流300的示例的图。视频流300包括视频序列302。在下一个级别,视频序列302包括多个相邻帧304。虽然将三个帧描述为相邻帧304,但是视频序列302能够包括任何数目的相邻帧304。然后能够将相邻帧304进一步细分成单独的帧,例如,帧306。在下一个级别,能够将帧306划分成一系列分段308或平面。例如,分段308可以是允许并行处理的帧的子集。分段308也可以是能够将视频数据分成单独颜色的帧的子集。例如,彩***数据的帧306能够包括亮度平面和两个色度平面。可以以不同的分辨率对分段308进行采样。

无论帧306是否被划分成分段308,都可以将帧306进一步细分成块310,这些块310能够包含与例如帧306中的16×16个像素相对应的数据。块310也能够被布置成包括来自像素数据的一个或多个分段308的数据。块310也可以具有任何其它合适的尺寸,诸如4×4个像素、8×8个像素、16×8个像素、8×16个像素、16×16个像素或更大。

图4是依照本公开的实现方式的编码器400的框图。如上所述,能够例如通过提供存储在存储器例如存储器204中的计算机软件程序来在传输站102中实现编码器400。计算机软件程序能够包括机器指令,这些机器指令当由诸如CPU 202的处理器执行时,使传输站102以本文所述的方式对视频数据进行编码。也能够将编码器400实现为例如传输站102中包括的专用硬件。编码器400具有以下级来在(由实线连接线示出的)正向路径中执行各种功能以使用视频流300作为输入来产生编码或压缩比特流420:帧内/帧间预测级402、变换级404、量化级406和熵编码级408。编码器400也可以包括(由虚线连接线示出的)重构路径以重构用于将来块的编码的帧。在图4中,编码器400具有以下级来在重构路径中执行各种功能:去量化级410、逆变换级412、重构级414和环路滤波级416。编码器400的其它结构变型能够用于对视频流300进行编码。

当呈现视频流300以进行编码时,能够以块为单位处理帧306。在帧内/帧间预测级402处,能够使用帧内预测(也称作帧内预测)或帧间预测(也称作帧间预测)或两者的组合来对块进行编码。无论如何,都能够形成预测块。在帧内预测的情况下,预测块的全部或一部分可以由当前帧中的先前已经被编码和重构的样本形成。在帧间预测的情况下,预测块的全部或一部分可以由使用运动矢量确定的一个或多个先前构建的参考帧中的样本形成。

接下来,仍然参考图4,能够在帧内/帧间预测级402处从当前块减去预测块以产生残差块(也称作残差)。变换级404使用基于块的变换来在例如频域中将残差变换成变换系数。此类基于块的变换(即,变换类型)包括例如离散余弦变换(DCT)和非对称离散正弦变换(ADST)。其它基于块的变换是可能的。另外,可以对单个残差应用不同变换的组合。在应用变换的一个示例中,DCT将残差块变换成其中变换系数值基于空间频率的频域。最低频率(DC)系数在矩阵的左上部,而最高频率系数在矩阵的右底部。值得注意的是,预测块以及因此所产生的残差块的尺寸可以与变换块的尺寸不同。例如,可以将预测块分割成应用单独变换的更小块。

量化级406使用量化器值或量化水平来将变换系数转换成离散量子值,这些离散量子值被称为量化变换系数。例如,可以将变换系数除以量化器值并截断。量化变换系数然后由熵编码级408进行熵编码。可以使用包括令牌树和二叉树的任何数目的技术来执行熵编译。然后将经熵编码的系数与用于对块进行解码的其它信息(其可以包括例如所用的预测类型、变换类型、运动矢量和量化器值)一起输出到压缩比特流420。可以将用于对块进行解码的信息熵编译成压缩比特流420内的块、帧、分片和/或段报头。压缩比特流420也能够被称为编码视频流或编码视频比特流;将在本文中互换地使用这些术语。

图4中的(由虚线连接线示出的)重构路径能够用于确保编码器400和解码器500(在下面描述)都使用相同的参考帧和块来对压缩比特流420进行解码。重构路径执行与在解码过程期间进行的功能类似并且在下面更详细地讨论的功能,包括在去量化级410处对量化变换系数进行去量化和在逆变换级412处对去量化变换系数进行逆变换以产生导数残差块(也称作导数残差)。在重构级414处,能够将在帧内/帧间预测级402处预测的预测块添加到导数残差以创建重构块。能够对重构块应用环路滤波级416以减少失真,诸如块伪像。

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

图5是依照本公开的实现方式的解码器500的框图。能够例如通过提供存储在存储器204中的计算机软件程序来在接收站106中实现解码器500。计算机软件程序能够包括机器指令,这些机器指令当由诸如CPU 202的处理器执行时,使接收站106以下述方式对视频数据进行解码。也能够在例如传输站102或接收站106中包括的硬件中实现解码器500。

与上面讨论的编码器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。在解码器500的一些实现方式中,在环路滤波级512之后应用后置滤波级514。环路滤波级512能够包括可选的去块滤波级。附加地或替换地,编码器400在环路滤波级416中包括可选的去块滤波级。

图6是根据本公开的实现方式的帧(例如图3的帧306)的一部分600的表示的框图。如图所示,帧的部分600包括在矩阵或笛卡尔平面中的两行和两列中的四个64×64块610,其可以被称为超级块。超级块能够具有更大或更小的尺寸。虽然参照尺寸64×64的超级块说明图6,但是描述可容易地扩展到更大(例如,128×128)或更小的超级块尺寸。

在一个示例中,并且在不失一般性的情况下,超级块可以是基本或最大编译单元(CU)。每个CU能够包括四个32×32块620。每个32×32块620能够包括四个16×16块630。每个16×16块630能够包括四个8×8块640。每个8×8块640能够包括四个4×4块650。每个4×4块650能够包括16个像素,这16个像素在笛卡尔平面或矩阵中能够以每个相应块中的四行和四列表示。像素能够包括表示在帧中捕获的图像的信息,诸如亮度信息、颜色信息和位置信息。在一个示例中,诸如所示的16×16像素块的块能够包括:亮度块660,其能够包括亮度像素662;以及两个色度块670/680,诸如U或Cb色度块670和V或Cr色度块680。色度块670/680能够包括色度像素690。例如,亮度块660能够包括16×16个亮度像素662,并且每个色度块670/680能够包括8×8个色度像素690,如图所示。尽管示出了块的一种布置,但是能够使用任何布置。尽管图6示出N×N块,但是在一些实现方式中,能够使用N×M(其中N≠M)块。例如,能够使用32×64块、64×32块、16×32块、32×16块或任何其它尺寸的块。在一些实现方式中,能够使用N×2N块、2N×N块或其组合。

视频编译能够包括有序块级编译。有序块级编译能够包括以扫描次序例如光栅扫描次序对帧的块进行编译,其中,能够从帧的左上角中的块或帧的一部分开始标识并处理块,并且沿着行从左向右且从顶行到底行继续进行,依次标识每个块以进行处理。例如,帧的顶行和左列中的CU可以是被编译的第一块,并且紧接在第一块右边的CU可以是被编译的第二块。从顶部起的第二行可以是被编译的第二行,使得能够在第一行的最右列中的CU之后对第二行的左列中的CU进行编译。

在一个示例中,对块进行编译能够包括使用四叉树编译,该四叉树编译能够包括以光栅扫描次序按块对更小的块单元进行编译。例如,能够使用四叉树编译来对图6中所示的帧的部分的左下角中所示的64×64超级块进行编译,其中能够对左上32×32块进行编译,然后能够对右上32×32块进行编译,然后能够对左下32×32块进行编译,并且然后能够对右下32×32块进行编译。能够使用四叉树编译来对每个32×32块进行编译,其中能够对左上16×16块进行编译,然后能够对右上16×16块进行编译,然后能够对左下16×16块进行编译,并且然后能够对右上16×16块进行编译。能够使用四叉树编译来对每个16×16块进行编译,其中能够对左上8×8块进行编译,然后能够对右上8×8块进行编译,然后能够对左下8×8块进行编译,并且然后能够对右下8×8块进行编译。能够使用四叉树编译来对每个8×8块进行编译,其中能够对左上4×4块进行编译,然后能够对右上4×4块进行编译,然后能够对左下4×4块进行编译,并且然后能够对右下4×4块进行编译。在一些实现方式中,对于16×16块能够省略8×8块,并且能够使用四叉树编码来对16×16块进行编译,其中能够对左上4×4块进行编译,并且然后能够以光栅扫描次序对16×16块中的其它4×4块进行编译。

视频编译能够包括通过从对应编码帧中省略原始帧中的一些信息来压缩原始或输入帧中包括的信息。例如,编译能够包括减少频谱冗余、减少空间冗余、减少时间冗余或它们的组合。

在一个示例中,减少频谱冗余能够包括使用基于亮度分量(Y)和两个色度分量(U和V或Cb和Cr)的颜色模型,该颜色模型可以被称为YUV或YCbCr颜色模型或颜色空间。使用YUV颜色模型能够包括使用相对大量的信息来表示帧的一部分的亮度分量并且使用相对少量的信息来表示帧的该部分的每个对应色度分量。例如,帧的一部分能够由高分辨率的亮度分量(其能够包括16×16像素块)来表示,并且能够由两个更低分辨率的色度分量(其中的每一个均将帧的该部分表示为8×8像素块)来表示。像素能够指示值(例如,从0到255的范围内的值)并且能够使用例如八个比特来存储或传输。尽管参考YUV颜色模型描述了本公开,但是能够使用任何颜色模型。

减少空间冗余能够包括如上所述对块进行帧内预测并且将残差块变换成频域。例如,编码器的单元,诸如图4的变换级404,能够在帧内/帧间预测级402之后基于空间频率使用变换系数值来执行DCT。

减少时间冗余能够包括使用帧之间的相似性来基于一个或多个参考帧使用相对少量的数据来对帧进行编码,所述参考帧可以是视频流的先前编码、解码和重构的帧。例如,当前帧的块或像素可以与参考帧的空间上对应的块或像素类似。当前帧的块或像素可以与参考帧的在不同空间位置处的块或像素类似。因此,减少时间冗余能够包括生成指示空间差异(例如,当前帧中的块或像素的位置与参考帧中的块或像素的对应位置之间的平移)的运动信息。这在上面被称为帧间预测。

减少时间冗余能够包括标识参考帧或参考帧的一部分中的与当前帧的当前块或像素对应的块或像素。例如,能够搜索能够被存储在存储器中的参考帧或参考帧的一部分以得到要用于对当前帧的当前块或像素进行编码的最佳块或像素。例如,搜索可以标识参考块与当前块之间的像素值差异被最小化的参考帧的块,并且能够被称为运动搜索。能够限制被搜索的参考帧的部分。例如,能够被称为搜索区域的被搜索的参考帧的部分能够包括参考帧的有限数目的行。在一个示例中,标识参考块能够包括计算搜索区域中的块的像素与当前块的像素之间的成本函数,诸如绝对差之和(SAD)。

能够将参考帧中的参考块的位置与当前帧中的当前块的位置之间的空间差异表示为运动矢量。能够将参考块与当前块之间的像素值差异称为差分数据、残差数据或残差块。在一些实现方式中,生成运动矢量能够被称为运动估计,并且当前块的像素能够基于使用诸如fx,y的笛卡尔坐标的位置来指示。类似地,能够基于使用诸如rx,y的笛卡尔坐标的位置来指示参考帧的搜索区域的像素。能够基于例如当前帧的像素与参考帧的对应像素之间的SAD来确定当前块的运动矢量(MV)。

尽管其它分区也是可能的,但是如上面关于图6所描述的,可以使用如图7的示例中所示的四叉树分区或编译来对CU或块进行编译。该示例示出了块700的四叉树分区。然而,块700能够例如由如本文所述的编码器(例如,图4的编码器400)或机器学习模型不同地分区。

块700被分区成四个块,即,块700-1、700-2、700-3和700-4。块700-2被进一步分区成块702-1、702-2、702-3和702-4。因此,如果例如块700的尺寸是N×N(例如,128×128),则块700-1、700-2、700-3和700-4的尺寸中的每一个均为N/2×N/2(例如,64×64),而块702-1、702-2、702-3和702-4的尺寸中的每一个均为N/4×N/4(例如,32×32)。如果对块进行分区,则将它分区成四个相等尺寸的非重叠方形子块。

四叉树数据表示用于描述如何将块700分区成子块,诸如块700-1、700-2、700-3、700-4、702-1、702-2、702-3和702-4。示出了块700的分区的四叉树704。四叉树704的每个节点在将该节点进一步分割成四个子节点的情况下被指派了标志“1”,而在不分割该节点的情况下被指派了标志“0”。标志能够被称为分割比特(例如,1)或停止比特(例如,0)并且被编译在压缩比特流中。在四叉树中,节点具有四个子节点或没有子节点。没有子节点的节点对应于未被进一步分割的块。分割块的子节点中的每一个均对应于子块。

在四叉树704中,每个节点对应于块700的子块。对应子块被示出在圆括号之间。例如,具有值为0的节点704-1对应于块700-1。

根节点704-0对应于块700。当将块700分割成四个子块时,根节点704-0的值是分割比特(例如,1)。在中间级别,标志指示是否将块700的子块进一步分割成四个子子块。在这种情况下,节点704-2包括标志“1”,因为块700-2被分割成块702-1、702-2、702-3和702-4。节点704-1、704-3和704-4中的每一个均包括标志“0”,因为对应块未被分割。由于节点704-5、704-6、704-7和704-8处于四叉树的底部级别,所以这些节点不需要标记“0”或“1”。块702-5、702-6、702-7和702-8未被进一步分割能够根据不存在与这些块相对应的附加标志来推理。在此示例中,最小子块是32×32个像素,但是进一步分区是可能的。

四叉树704的四叉树数据表示能够由二进制数据“10100”表示,其中每个比特表示四叉树704的节点。二进制数据将块700的分区指示给编码器和解码器。在编码器需要将二进制数据传送到解码器(例如图5的解码器500)的情况下,编码器能够将二进制数据编码在压缩比特流(例如图4的压缩比特流420)中。

能够将与四叉树704的叶节点相对应的块用作预测的基础。也就是说,能够针对在本文中称为编译块的块700-1、702-1、702-2、702-3、702-4、700-3和700-4中的每一个执行预测。如关于图6所提及的,编译块可以是亮度块或色度块。注意,在一个示例中,能够关于亮度块确定块分区。能够与色度块一起使用相同的分区或不同的分区。

以编译块确定预测类型(例如,帧内预测或帧间预测)。也就是说,编译块是用于预测的判定点。

模式判定过程(例如,分区判定过程)确定诸如块700的编译块的分区。分区判定过程计算编译参数的不同组合的RD成本。也就是说,例如,检查预测块和预测(例如,帧内预测、帧间预测等)的不同组合以确定最佳分区。

如本领域的技术人员认识到那样,许多模式判定过程能够由编码器执行。

机器学习模型能够用于生成与相应模式相关联的RD成本的估计,这些估计进而用在模式判定中。也就是说,根据本公开的实现方式能够被用于通常使用RDO过程从一组可能的模式当中选择最佳模式的情况。

图8是用于搜索最佳模式以对块进行编译的过程800的流程图。过程800是确定多种可用模式中的最佳模式的模式判定过程的说明性高级过程。为了便于描述,相对于选择用于对预测块进行编码的帧内预测模式来描述过程800。能够通过与过程800类似的过程来确定的最佳模式的其它示例包括确定变换类型并且确定变换尺寸。过程800能够由编码器(例如图4的编码器400)使用模式判定的蛮力方法来实现。

在802处,过程800接收块。当相对于确定帧内预测模式来描述过程800时,块可以是预测单元。参考图7,例如,能够将叶节点编译块(例如,块700-1、702-1、702-2,702-3、702-4、700-3或700-4)中的每一个分区成一个或多个预测单元。因此,块可以是一个这样的预测单元。

在804处,过程800确定(例如,选择、计算、选取等)模式的列表。模式的列表能够包括K种模式,其中K是整数。能够将模式的列表表示为{m1,m2,…,mk}。编码器能够具有可用的帧内预测模式的列表。例如,在AV1编解码器的情况下,可用的帧内预测模式的列表可以是{DC_PRED,V_PRED,H_PRED,D45_PRED,D135_PRED,D117_PRED,D153_PRED,D207_PRED,D63_PRED,SMOOTH_PRED,SMOOTH_V_PRED,和SMOOTH_H_PRED,PAETH_PRED}。这些帧内预测模式的描述被省略,因为该描述与对本公开的理解无关。在804处确定的模式的列表可以是可用的帧内预测模式的列表的任何子集。

在806处,过程800将BEST_COST变量初始化为高值(例如,INT_MAX,其可以等于2,147,483,647)并且将循环变量i初始化为1,其对应于要检查的第一模式。

在808处,过程800对于modei计算或计算出RD_COSTi。在810处,过程800测试受检的当前模式modei的RD成本RD_COSTi是否小于当前最佳成本BEST_COST。如果测试是肯定的,则在812处,过程800将最佳成本更新为当前模式的成本(即,BEST_COST=RD_COSTi)并且将当前最佳模式索引(BEST_MODE)设置为循环变量i(BEST_MODE=i)。过程800然后进行到814以递增循环变量i(即,i=i+1)以准备检查下一种模式(若有的话)。如果测试是否定的,则过程800进行到814。

在816处,如果有更多的模式要检查,则过程800返回到808;否则过程800进行到818。在818处,过程800输出最佳模式的索引BEST_MODE。输出最佳模式能够是指将最佳模式返回给过程800的调用者。输出最佳模式能够是指使用最佳模式来对图像进行编码。输出最佳模式能够具有其它语义。过程800然后终止。

图9是估计通过使用编译模式mi对图像块X进行编译的速率和失真成本的过程900的框图。过程900能够由编码器(例如图4的编码器400)执行。过程900包括使用编译模式mi对图像块X进行编译以确定对块进行编码的RD成本。更具体地,过程900计算对图像块X进行编码所需要的比特数(RATE(速率))。示例900也基于图像块X与图像块的重构版本Xd之间的差异来计算失真(DISTORTION(失真))。过程800能够由过程800在808处使用。在此示例中,编译模式mi是预测模式。

在904处,确定使用模式mi的预测。能够如相对于图4的帧内/帧间预测级402所描述的那样确定预测。在906处,确定残差作为图像块902与预测之间的差异。在908和910处,对残差进行变换和量化,诸如分别相对于图4的变换级404和量化级406所描述的。速率(RATE)由速率估计器912计算出,该速率估计器912执行假想编码。在一个示例中,速率估计器912能够执行熵编码,诸如相对于图4的熵编码级408所描述的。

量化残差在914处被去量化(诸如例如相对于图4的去量化级410所描述的),在916处被逆变换(诸如例如相对于图4的逆变换级412所描述的),并且在918处被重构(诸如例如相对于图4的重构级414所描述的)以生成重构块。失真估计器920计算出图像块X与重构块之间的失真。在一个示例中,失真可以是图像块X的像素值与重构块的像素值之间的均方误差。失真可以是图像块X和重构块的像素值之间的绝对差误差之和。能够使用任何其它合适的失真量度。

然后通过使用拉格朗日乘子来将速率RATE和失真DISTORTION组合成标量值(即,RD成本),如公式(5)中所示

DISTORTION+λmode×RATE, (5)

公式5的拉格朗日乘子λmode能够改变(例如,取决于执行过程900的操作的编码器)。

图8和图9图示在基于块的编码器中的模式判定的方法,该方法主要是实质上通过使用候选模式对图像块X进行编译来确定具有最佳成本的模式的串行过程。已经使用这些技术来降低模式判定中的复杂性。例如,一旦满足某些条件,例如速率失真成本低于阈值,就使用早期终止技术来终止图8的过程800的循环。其它技术包括例如基于试探法来选择可用候选模式的子集或遍及候选模式使用多遍。

图10是根据本公开的实现方式的用于使用机器学习模型来对视频流的块进行编码的过程1000的流程图。过程1000包括两个阶段:训练阶段和推理阶段。为了说明的简单,将训练阶段和推理阶段示出为一个过程(即,过程1000)的阶段。然而,训练阶段和推理阶段常常是单独的过程。

在1002处,过程1000训练机器学习(ML)模式。能够使用训练数据1004作为输入来训练ML模型。训练数据1004是一组训练数据。每个训练基准由下标i指示。训练数据1004的每个训练基准能够包括通过诸如关于图4和图6至图9所描述的传统编码方法(例如,通过基于块的编码器)编码的视频块(即,训练块i);由编码器用于对训练块进行编码的一种或多种模式i;以及如由编码器所确定的使用模式i对训练块i进行编码的所产生的编码成本i。在训练阶段中,生成ML模型的参数,使得对于训练数据1004中的至少一些,ML模型能够对于训练基准i推理模式i、编码成本i或两者。在1002处的训练阶段期间,ML模型学习(例如,训练、构建、导出等)从输入到输出的映射(即,函数)。模式可以是分区判定或用于在视频编译中进行压缩或重构的任何其它模式判定。模式能够包括模式判定的组合。

块可以是例如源帧的图像块、预测块或变换块。块可以是残差块,即,源图像块与预测块之间的差异。因此,编码模式能够与这些块中的任一个有关。例如,编码模式能够包括分区模式、帧内或帧间预测模式、变换模式等,并且编码成本可以是使用编码模式来对块进行编码的成本。除了所示的输入数据之外,输入数据还能够包括训练阶段期间的训练块i的块特征。哪些块特征被计算出(例如生成)并用作机器学习模型的输入可能取决于编码模式。例如,能够对于与变换块有关的编码模式提取(例如,计算、确定等)与和预测块有关的编码模式不同的块特征。

在一个示例中,编码成本能够包括两个单独的值;即,能够如上所述计算出RD成本的比率和失真。在一个示例中,编码成本能够包括或可以是RD成本值它本身。

ML模型然后能够由过程1000在推理阶段期间使用。如图所示,推理阶段包括操作1020和1022。分离1010指示训练阶段和推理阶段能够在时间上分离。因此,能够使用与用于在1002处训练机器学习模型的编码器不同的编码器来执行推理阶段。在一个示例中,使用相同的编码器。在任何一种情况下,推理阶段使用如相对于1002所描述的那样训练的机器学习模型。

虽然未具体地示出,但是在推理阶段期间,过程1000接收源块,对于该源块将确定用于在比特流中对该块进行编码的最佳模式。最佳模式可以是使编码成本最小化的分区。最佳模式可以是与块有关的模式,诸如变换类型或变换尺寸。最佳模式可以是与帧内预测块有关的模式,诸如帧内预测模式。最佳模式可以是与帧间预测块有关的模式,诸如插值滤波器类型。最佳模式可以是用于编码并可选地重构源块的模式的组合。

在1020处,将源块呈现给如相对于1002所描述的那样训练的模型。在1022处,过程1000获得(例如,生成、计算、选择、确定等)使编码成本最小化的模式判定(例如,最佳模式)作为机器学习模型的输出。在1024处,过程1000在压缩比特流中使用最佳模式来对块进行编码。

在编码过程1000的推理阶段期间从源块导出的信息不可容易地被编码器或解码器的不同模式判定利用。另外,过程1000非常适于图像压缩,但是更难以应用于视频压缩。由于至少这些原因,虽然神经网络编码器(例如,实现机器学习模型的那些)在表示并恢复高频信息和残差方面可能更好,但是常规编码器常常在捕获简单运动并对低频率进行编译时更好。

在本文所述的混合方法中,可以照惯例主要处理运动,并且神经网络可以在帧、块等级别下的维度之上操作。以这种方式,例如,将不会被神经网络以其它方式利用的边信息可以是可用的。例如,这改进对具有视频压缩的神经网络编码器的使用。这样的结构可以通常由图11表示,图11是包括具有边信息的神经网络的编解码器1100的示例的框图。可以将这种布置认为是对学习到的图像压缩的修改,其中网络学习(通过训练)如何得以接近于源X的最优速率失真函数。边信息Y可以在神经网络中与引导信息一起用于引导恢复。图11的设计及其变型的目标是,给定由源X表示的源图像和由输入Y表示的降级图像(也称为降级源数据),从源X发送允许将边信息Y变换为Xd的最少指导信息,其中Xd比边信息Y更接近于源X。常规编码器管线可以对比特流进行编码,这生成基础层重构。可以将基础层重构用作边信息Y,而由源X提供的单独的引导信息产生恢复的信号Xd(也称为重构源数据)。

在图11中,源(例如,输入)X 1102被输入到编码器1104,该编码器1104并入用于重构源X 1102的解码器1108,该源X 1102是重构源或输出Xd 1110。编码器1104和解码器1108可以包括体现能够根据本文教导开发的机器学习模型的一个或多个神经网络。例如,可以将编码器称为神经网络编码器1104,并且可以将解码器1108称为神经网络解码器1108。可以将机器学习模型训练成得以接近于源信息例如源块的最优速率失真函数。也就是说,可以训练神经网络,使得重构源Xd 1110与源X 1102基本上类似。例如,当使编码成本最小化时,重构源Xd 1110与源X 1102基本上类似。编码成本在一些实现方式中可以是速率失真值。在图11中,训练神经网络的目标函数RX/Y(D)是在失真D下给定已知边信息Y发送源X1102的速率R。

一旦被训练,编解码器1100就能够产生输出或压缩比特流以供传输到解码器或以供存储。可以通过使用量化器1106对来自编码器1104的块残差进行量化并且使用熵编译器1112对量化残差进行熵编译来生成压缩比特流。可以或可以不对块残差进行变换。量化器1106可以与图4的量化级406类似地操作。熵编译器1112可以与图4的熵编码级408类似地操作。可以将来自熵编译器1112的比特流传输到解码器,诸如与解码器1108类似地构造的解码器。

编解码器1100接收边信息Y作为输入,在下面对其示例进行描述。通常,边信息是与源X相关的信息,并且可在无需由其神经网络修改的情况下被编码器和解码器两者利用。可用的边信息被提供给神经网络以导出引导信息,该引导信息与边信息一起能够重构源。以这种方式,可以将引导信息认为是增强信息。编解码器1100的结构提供了能够通过改变边信息Y来实现许多混合视频编码架构的强大框架。

图12是能够用于实现图11的编解码器的神经网络的框图。该神经网络可以包括CNN和/或全连接神经网络。在此示例中,将约束添加到神经网络结构以便将边信息Y从输入传递通过到编码器并且到解码器的单个(例如,第一)层。

在高级别,并且在不失一般性的情况下,诸如分类深度学习模型的机器学习模型包括两个主要部分:特征提取部分和分类部分。特征提取部分检测模型的特征。分类部分试图将检测到的特征分类成期望响应。这些部分中的每一个均能够包括一个或多个层和/或一种或多种运算。术语“分类”在本文中用于指代从模型输出一个或多个值的层中的一个或多个。输出可以是离散值,诸如类或类别。输出可以是连续值(例如,速率值、失真值、RD成本值)。因此,可以将分类部分适当地称为回归部分。

如上所述,CNN是机器学***方)对输入图像进行滤波的一系列滤波器。例如,并且在机器视觉的背景下,这些滤波器能够用于查找输入图像中的特征。这些特征能够包括例如边缘、拐角、端点等。随着堆叠的卷积运算(例如,层)的数目增加,以后的卷积运算能够查找更高级别的特征。注意,在本公开内的两种不同的上下文中使用术语“特征”。首先,能够通过CNN的特征提取部分从输入图像或块中提取“特征”。第二,能够根据输入块计算出(例如,导出)“特征”并且将其用作机器学习模型的输入。上下文清楚地指出术语“特征”的哪一种用途是预定的。

在CNN中,分类(例如,回归)部分可以是一组全连接层。能够将全连接层视为查看图像的所有输入特征以便生成高级分类器。高级分类器的若干级(例如,系列)最终生成所期望的回归输出。

如所提及的,CNN可以由许多卷积运算(例如,特征提取部分)紧接着许多全连接层组成。可以在机器学习的训练阶段期间确定每种类型的运算数及其相应的大小。如本领域的技术人员认识到那样,能够在每个部分中包括附加层和/或运算。例如,Pooling、MaxPooling、Dropout、Activation、Normalization、BatchNormalization和其它运算的组合能够与卷积运算(即,在特征提取部分中)和/或全连接运算(即,在分类部分中)分组在一起。可以将全连接层称为Dense运算。卷积运算能够使用SeparableConvolution2D或Convolution2D运算。

如本公开中所使用的,卷积层可以是从Convolution2D或SeparableConvolution2D运算开始紧接着零个或多个运算(例如,Pooling、Dropout、Activation、Normalization、BatchNormalization、其它运算或它们的组合)直到达到另一卷积层、Dense运算或CNN的输出为止的一组运算。类似地,Dense层可以是从Dense运算(即,全连接层)开始紧接着零个或多个运算(例如,Pooling、Dropout、Activation、Normalization、BatchNormalization、其它运算或它们的组合)直到达到另一卷积层、另一Dense层或网络的输出为止的一组运算或层。尽管在图12的示例中未使用,但是能够通过Flatten运算来标记基于卷积网络的特征提取与使用Dense运算的特征分类之间的边界,该Flatten运算把来自特征提取的多维矩阵弄平成矢量。

全连接运算中的每一个均是其中每一输入通过权重连接到每一输出的线性运算。因此,具有N个输入和M个输出的全连接层能够具有总共N×M个权重。Dense运算可以紧接着非线性激活函数以生成该层的输出。

在图12的神经网络中,包括三个隐藏层1200A、1200B和1200C。第一隐藏层1200A可以是特征提取层,然而第二隐藏层1200B和第三隐藏层1200C可以是分类层。

源X的数据包括来自视频流的输入数据。输入数据能够包括诸如亮度或色度数据的像素数据、诸如x坐标和y坐标的位置数据等。与源X一起,边信息Y被提供给第一隐藏层1200A以进行特征提取。然后将所产生的提取特征用于在第二隐藏层1200B处分类。在此示例中,量化器1106的输出包括可以或可以不像先前描述的那样变换的(例如,对于亮度和每个色度块的)块残差。这仅作为示例,并且也可以传输重构块所需的其它信息(例如,分区等)。

编码器1104将边信息Y传递通过到解码器1108的单个层,这里为第一层(例如,第三隐藏层1200C)。也就是说,边信息Y在被用于第一隐藏层1200A中的特征提取之后传递通过编码器1104的各层以便在解码器1108的第一层中用于重构。当参考“传递通过”边信息Y时,本文公开是指将边信息Y或重新创建边信息Y所需的无论什么信息从编码器1104传输到解码器1108。在图12中,边信息Y将编码器1104的隐藏层传递通过到解码器1108。或者,边信息Y(例如,重新创建边信息Y所需的信息)可以如在下面关于图13所述的那样跳过(或绕过)编码器1104的一个或多个层。在任何一种情况下,可以将神经网络称为受约束网络,因为神经网络受边信息Y约束。也就是说,编码器1104和解码器1108中的每一个中的层依赖于边信息Y。

图13是能够用于实现图11的编解码器的另一神经网络的框图。该神经网络可以包括与关于图12描述的神经网络类似的CNN和/或全连接神经网络。另外在此示例中,将约束添加到神经网络结构以便将边信息Y从输入传递通过到编码器并且到解码器的第一层。

在图13的神经网络中,包括三个隐藏层1300A、1300B和1300C。第一隐藏层1300A可以是特征提取层,而第二隐藏层1300B和第三隐藏层1300C可以是分类层。

源X的数据包括来自视频流的输入数据。输入数据能够包括诸如亮度或色度数据、诸如x坐标和y坐标的位置数据等的像素数据。与源X一起,边信息Y被提供给第一隐藏层1300A以进行特征提取。然后将所产生的提取特征用于在第二隐藏层1300B处分类。量化器1106的输出可以包括可以或可以不像先前描述的那样变换的(例如,对于亮度和每个色度块的)块残差。也可以传输重构块所需的信息(例如,分区等)。

编码器1104将边信息Y传递到解码器1108的第一层(例如,第三隐藏层1300C)。在图12的编码器1104中,边信息Y传递通过在编码器1104的第一层之后的一个或多个隐藏层以便在解码器1108的第一层中用于重构。相比之下,边信息Y绕过图13的编码器1104的一个或多个隐藏层以便将边信息Y或重新创建边信息Y所需的信息传递通过到解码器1108的第一层。

第三隐藏层1300C将边信息Y与量化器1106的输出一起用作输入,并且提供重构源或输出Xd 1110。图13是受约束网络的另一示例,因为编码器1104和解码器1108中的每一个的层依赖于边信息Y。

虽然在图12和图13中示出了三个隐藏层,但是这仅作为示例。神经网络包括至少一层且常常为多层,隐藏的或其它的。因此,可以在任一实现方式中使用不止三层或少于三层。此外,由编码器1104和解码器1108中的每一个使用的层数可以与所示的层数不同。例如,解码器1108可以在第三隐藏层1300C之后包括一个或多个附加层,其中后续层不接收边信息Y作为输入,而是替代地从第三隐藏层1200C接收输入。在图14中示出了图13的神经网络的示例中的变型的框图。

图14中的神经网络包括至少四个隐藏层1400A、1400B、1400C和1400D。第一隐藏层1400A可以是特征提取层而第二隐藏层1400B、第三隐藏层1400C和第四隐藏层1400D可以是分类层。在此示例中,卷积运算被用于特征提取和分类中的每一种,而不是将全连接层用于分类。因此,可以将这称为仅卷积神经网络。这不是必需的,并且全连接层也可以或替换地被用于分类。

源X的数据包括来自视频流的输入数据。输入数据1102能够包括诸如亮度或色度数据、诸如x坐标和y坐标的位置数据等的像素数据。与源X一起,边信息Y被提供给第一隐藏层1400A以进行特征提取。然后将所产生的提取特征用于在第二隐藏层1400B处分类。量化器1106的输出可以包括可以或可以不像先前描述的那样变换的(例如,对于亮度和每个色度块的)块残差。也可以传输重构块所需的信息(例如,分区等)。

编码器1104将边信息Y传递到解码器1108的单个层(例如,第一层)。更具体地,并且如在图13中一样,边信息Y绕过图14的编码器1104的一个或多个隐藏层以便将边信息Y或重新创建边信息Y所需的信息传递通过到解码器1108。

图14与图13不同在于,除了别的之外,图14还包括可以被认为是解码器1108的一部分的扩展器层1410。扩展器层1410可以是另一隐藏卷积层。扩展器层1410接收来自量化器1106的输出作为输入,并且扩展来自该输出的信息以用作第三隐藏层1300C的输入。如上面关于图11所讨论的,希望通过训练编解码器例如图14的编解码器来使从源X获得以用于输入到解码器1108的引导信息最小化。因此,可以并入扩展器层1410以允许编码器1104发送比图12和13的编解码器更少的信息。扩展器层1410接收来自量化器1106的输出,并且该信息被扩展,即,通过卷积运算来增加数据量以形成用于输入到解码器1108的第一层(例如,第三隐藏层1400C)的引导信息。例如,可以通过增加来自编码器1104的引导信息的分辨率来增加数据量。

虽然可以将扩展器层1410称为解码器1108的一部分,但是不将它认为是解码器1108的第一层。替代地,它被认为是生成用于输入到解码器的第一层的引导信息的预层。解码器的第一层是输入引导信息和边信息Y两者的第一层。

第三隐藏层1400C将边信息Y与扩展器层1410的输出一起用作输入,并且执行卷积运算以将输出提供给第四隐藏层1400D。第四隐藏层1400D对来自第三隐藏层1400C的输出执行卷积运算以输出重构源或输出Xd 1110。可以将图14描述为受约束网络,因为编码器1104和解码器1108中的每一个的层依赖于边信息Y(即,受边信息Y约束)。

从以上描述清楚的是,扩展器层1410可以执行放大。因此,可以将扩展器层1410称为放大层。层1410的存在说明边信息Y和输入数据1102(或相应地量化器1106的输出)可以不具有相同的分辨率。因此,层1410可以替代地为减少层,即,通过卷积运算来减少数据量以形成用于输入到解码器1108的第一层(例如,第三隐藏层1400C)的引导信息的层。例如,可以通过降低来自编码器1104的引导信息的分辨率来减少数据量。因此,可以将层1410称为缩小层。更一般地,可以将层1410称为分辨率调整层或归一化层。

在诸如图14中所示的一些实现方式中,分辨率调整层可以是(使用机器学习实现的)训练层。在其它实现方式中,分辨率调整层可以执行标准算法中的任何一种或多种以依照边信息Y的分辨率改变其输入的分辨率。也能够省略层1410。在此类实现方式中,可以由第三隐藏层1400C通过使用不同分辨率下的两个数据源作为输入来训练该层来执行由层1410执行的扩展或减少功能,同时第四隐藏层1400D的输出处于全分辨率或减少分辨率,无论哪一个都是针对重构源或输出Xd1110指示的。

图11至图14中的每一个的结构提供神经网络的端到端训练。以这种方式,网络自动地学习如何恢复Y以得到Xd以及什么最少信息要作为指导发送。

在图11至图14中所示的示例的替代示例中,神经网络结构不受边信息Y约束。图15是根据本公开的实现方式的包括具有边信息的神经网络的编解码器1500的替代示例的框图。除了形成编码器1504和解码器1508的神经网络的结构以外,编解码器1500与编解码器1100类似。

更具体地,可以为图11的相同源X 1102的输入被输入到编码器1504,该编码器1504并入用于重构源X 1102的解码器1508,该源X1102是重构输出或源Xd 1110。编码器1504和解码器1508可以包括体现能够根据本文教导开发的机器学习模型的一个或多个神经网络。例如,可以将编码器1504称为神经网络编码器,并且可以将解码器1508称为神经网络解码器。

编解码器1500生成输出或压缩比特流RX/Y(D)以供传输到解码器或以供存储。可以通过使用量化器1106对来自编码器1504的块残差进行量化并且使用熵编译器1112对量化残差进行熵编译来生成压缩比特流RX/Y(D)。可以或可以不对块残差进行变换。量化器1106可以与图4的量化级406类似地操作。熵编译器1112可以与图4的熵编码级408类似地操作。

编解码器1500接收边信息Y作为输入,在下面对其示例进行描述。和编解码器1100对比,在此示例中不对神经网络强加结构约束以考虑边信息Y。替代地使用简化模型,由此通过生成使用由编码器1504和解码器1508形成的神经网络来编译的差X–T(Y)来将边信息用作输入。也就是说,差X–T(Y)被用作编码器1504的第一层的输入。可以将机器学习模型训练成得以接近于差的最佳速率失真函数。可以训练神经网络,使得解码器1508的输出与差X–T(Y)基本上类似。例如,当使编码成本最小化时输出与差X–T(Y)基本上类似。编码成本在一些实现方式中可以是速率失真值。

边信息T(Y)由对Y的确定性变换来定义,使得信息T(Y)处于与源X 1102相同的分辨率。因此,边信息T(Y)可以用于通过将边信息T(Y)添加到解码器1508的输出来生成重构源或输出Xd 1110。

虽然未示出编解码器1500的各层,但是除了包括允许传递通过边信息Y的结构之外,编解码器1500可以具有与如图12至图14的示例中所示的编解码器1100类似的结构。编解码器1500优于编解码器1100的优点是神经网络的结构更容易。由于缺少对神经网络结构的边信息约束,可以使用(例如,训练)各种神经网络应用编程接口(API)。然而,由于边信息Y中的结构的丢失,编解码器1500可能具有降低的性能(例如,更高的速率失真值)。

注意,省略了(包括卷积神经网络的)机器学习神经网络的细节和/或基于本文描述将为本领域的技术人员已知的细节。例如,本领域的技术人员认识到,卷积滤波器的值和CNN中的节点(即,神经元)之间的连接的权重由CNN在训练阶段期间确定。因此,不在此详细地讨论此类细节。在图11至图15中的每一个中,描述了集成标记为解码器的解码级的编码器。这是如关于图4描述的类似布置。虽然在这些图中未明确地示出,但是具有与解码器1108或1508的结构类似的结构的另一解码器可以用于使用边信息和源数据作为进入解码器(例如,至少第一隐藏层)中的输入来重构源数据/信息。

在以上讨论中,边信息Y被描述为从常规编码方法导出。边信息Y可以是与源信息相关的任何边信息。边信息Y可以是编码器它本身的乘积,诸如其中仅编码器的部分是经由神经网络实现的。也就是说,编码器可以是与一个或多个神经网络组合的混合编码器,该混合编码器包括如以图3至图5的示例所描述的某些基于块的组件或如为本领域的技术人员已知的基于对象的组件。在此示例中,混合编码器它本身可以产生(并使用)边信息。边信息Y也可以由第二编码器确定,其中第二编码器将边信息Y提供给第一(例如,神经网络)编码器。

边信息Y(或其功能)与深度神经网络一起使用,该深度神经网络可以具有在解码器侧实施边信息Y的可用性的结构约束。如在上面简要地描述的,可以将从神经网络层导出的信息认为是针对正在编译的视频的引导信息或增强信息。边信息Y的许多变型以及因此增强信息是可能的。

在根据本文教导的混合编解码器的第一示例中,可以在预测残差(残差)编译和重构中使用边信息Y。例如,边信息Y可以是全分辨率预测器或来自传统基于运动的预测器的预测信号(例如,来自例如在帧内/帧间预测级402处执行的帧间预测的预测块)。神经网络可以学习例如针对由源X(例如,块)和全分辨率预测器产生的残差的最优残差变换(即,产生最低速率失真值的变换)。由于全分辨率预测器的结构(即,特征)的可用性,全分辨率预测器还可以改进由解码器进行的重构。在此示例中,仅常规编码器中的残差编译被修改的混合视频编码器产生。因为常规视频压缩独立于预测对预测残差进行编译,所以将预测作为边信息与神经网络包括在一起可以提供对原始视频数据的更好重构。

在根据本文教导的混合编解码器的另一示例中,神经网络可以被用于利用引导信息进行恢复。例如,常规编码器可以用于对比特流进行编码,该比特流可以被称为基础层。然后,可以将基础层重构用作边信息Y以在单独的引导层中细化源X。以这种方式,形成了可伸缩编码的形式。

在此后者技术的实现方式中,常规编码器可以以降低分辨率对基础层比特流进行编码。在使用源X对高分辨率信息进行编码的同时,可以将来自常规基础层的降低分辨率的重构(例如,每帧降低分辨率的重构)用作边信息Y。此过程生成空间可伸缩编码的形式,其中运动信息仅处于降低分辨率。甚至在这样的设计中,也期望对于小减少比、低比特速率或两者将产生优势(例如,在速率失真值方面)。

当在空间可伸缩性模型中使用基础层比特流时,可以独立于增强神经网络层对基础层比特流进行解码。由于运动信息的精度的损失,预计编译效率方面的某种损失。然而,这允许设计由此神经网络的训练可以是开环的。例如,这可以用如上所述的两个编码器来实现。

在空间可伸缩性模型中使用基础层比特流的另一种设计中,可以实现环内超分辨率。也就是说,全分辨率增强神经网络层的输出可以用于刷新用于对后续帧进行编码的帧缓冲器。以这种方式,参考帧缓冲器可以总是处于全分辨率(例如,参考帧缓冲器能够存储全分辨率参考帧)。处于较低分辨率的编译帧能够使用缩放运动补偿。和以上开环设计对比,可以使用单个混合编码器来实现这种环内设计。

具有边信息的人工神经网络也可以用于生成多模式预测器。在这样的实现方式中,源X可以是要预测的数据而边信息Y可以是用于预测源X的数据。例如,边信息Y可以包括用于帧内预测的相邻像素。然后将通过将先前描述的穷举分析的结果用作输入来训练神经网络,其中结果包括针对相应的训练块的最高效的帧内预测模式(例如,产生最低编码成本的帧内预测模式)。全连接层在这种设计中可以是分类所希望的(例如,代替卷积层),因为这样的设计可以用于更严格地控制层的尺寸(例如,参数的数目)。例如,可以将多模式预测器中的可用模式认为限制信息的仅几个比特的传递。

图11至图15的编解码器1100和1500包括编码器和解码器两者。此布置表示用于训练神经网络的结构,并且可以表示传输站102处的编码器。在传输或存储熵编译器1112(以及因此编解码器1100或编解码器1500)的输出以供在例如在编解码器1100或编解码器1500位于传输站102处的接收站106处的单独的解码器上回放的情况下,解码器可以在结构上与解码器1108或解码器1508以及另一解码器或另一解码器的各部分例如图5的解码器500的训练后的实现方式对应。在任何一种情况下,解码器能够使用熵编译器1112的输出来生成边信息以用于包括在解码器的神经网络部分的第一层中,或者能够接收边信息作为与来自熵编译器1112的信号分开的信号以用于包括在解码器的神经网络部分的第一层中。

如上所述的具有边信息的人工神经网络提供了能够解决许多感兴趣用例的强大框架。神经网络具有在解码器侧实施边信息的可用性的结构约束。边信息可以从常规编码方法或任何其它降级过程(即,使源降级的降级过程)导出。许多变型取决于边信息是什么而是可能的。

为了说明的简单,将本文过程描绘并描述为一系列框、步骤或操作。然而,依照本公开的框、步骤或操作能够以各种顺序和/或同时地发生。附加地,可以使用本文未呈现和描述的其它步骤或操作。此外,可能不需要所有图示的步骤或操作来实现依照所公开的主题的技术。

上述编码和解码的各方面图示了一些编码和解码技术。然而,应当理解的是,“编码”和“解码”如在权利要求书中使用那些术语一样,可能意指数据的压缩、解压缩、变换或任何其它处理或变化。

词语“示例”或“实现方式”在本文中用于是指用作示例、实例或说明。在本文中描述为“示例”或“实现方式”的任何方面或设计不一定被解释为优于其它方面或设计为优选的或有利的。相反,词语“示例”或“实现方式”的使用旨在以具体方式呈现构思。如本申请中使用的,术语“或”旨在是指包括性“或”而不是排他性“或”。也就是说,除非另外指定或由上下文另外清楚地指示,否则“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发送的内容进行解码。其它传输站102和接收站106的实现方式方案是可用的。例如,接收站106可以是通常不动的个人计算机而不是便携式通信设备,并且/或者包括编码器400的设备也可以包括解码器500。

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

已经描述了上述实施例、实现方式和方面以便允许容易地理解本公开并且不限制本公开。相反,本公开旨在涵盖所附权利要求的范围内包括的各种修改和等效布置,该范围将被赋予如在法律下许可的最泛解释,以便包含所有此类修改和等效布置。

38页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于具有降低的译码复杂性的视频译码的广义双预测

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类