利用神经网络的预测性编码

文档序号:174671 发布日期:2021-10-29 浏览:55次 >En<

阅读说明:本技术 利用神经网络的预测性编码 (Predictive coding using neural networks ) 是由 翟杰夫 X·张 周小松 辛军 吴锡荣 苏野平 于 2020-01-13 设计创作,主要内容包括:公开了用于视频压缩的系统和方法,该系统和方法利用神经网络进行预测视频编码。所采用的过程将多个神经网络库与编解码器系统部件组合以执行视频数据的编码和解码。(Systems and methods for video compression are disclosed that utilize neural networks for predictive video coding. The process employed combines multiple neural network libraries with codec system components to perform encoding and decoding of video data.)

具体实施方式

在本公开中,机器学习技术被集成到预测视频编码系统中,其中神经网络库与编解码器系统部件组合以执行视频数据的编码和解码。

现在将详细地参考本公开的方面,其示例在附图中示出。在下面的详细描述中给出了许多具体细节,以便提供对本发明的彻底理解。但是,对本领域技术人员将显而易见的是,本发明可在没有这些具体细节的情况下被实施。在其他情况下,没有详细地描述众所周知的方法、过程、部件和电路,从而不会不必要地使实施方案的各个方面晦涩难懂。

本公开中描述的系统和方法包括用于利用基于神经网络(NN)的编码以及基于变换的编码来对视频流进行编码的技术。在一个方面,对于待编码的输入帧的像素块,可以使用基于NN的预测或基于帧内/帧间的预测来生成像素块预测;可基于从视频流的先前编码的数据的参考数据导出的输入数据来执行像素块预测。残差块可以由像素块与像素块预测之间的差生成,并且可以被编码,从而产生编码的残差块。然后,残差块可以被编码并且可以与编码视频流中的相关联的编码参数一起被封装。可以根据基于NN的编码方法对残差块进行编码。另选地,当与基于NN的编码相关联的置信度分数低于某个阈值时,可基于基于变换的编码来执行对残差块的编码。

本公开的各方面还描述了用于对编码视频流进行解码的系统和方法。在一个方面,对于待解码的编码残差块,可以从编码视频流中提取编码残差块和相关联的编码参数。可以使用基于NN的解码或基于变换的解码基于编码参数对编码残差块进行解码,从而得到解码残差块。然后,可基于编码视频流的先前解码数据的参考数据生成像素块预测。并且,然后可以获得重构像素块作为解码残差块和像素块预测的和。类似于由编码器所执行的预测,解码器中的像素块预测可由基于NN的预测或基于帧内/帧间的预测来执行。

图1是根据本公开的一个方面的编码系统100的功能框图。编码系统100可包括编码器110、解码器120、回路滤波器130、参考画面缓冲器140、预测器150、控制器160、熵编码器170和语法单元180。预测器150可预测在新呈现的输入帧105的编码期间使用的图像数据;它可以基于从参考画面缓冲器140检索到的参考数据为输入帧105提供估计值。编码器110然后可对每个输入帧与其预测版本(即残差帧)之间的差异进行编码,从而应用基于NN的编码、基于变换的编码或这两种技术的组合。接下来,编码器110可将编码残差帧提供给熵编码器170。通常,熵编码是无损过程,即,熵编码器的输入处的编码数据可以从熵编码器的输出处的熵编码数据完全恢复。熵编码器170可以进一步减小由编码器110生成的代码的带宽,从而实现熵编码方法,诸如运行长度编码、霍夫曼编码、哥伦布编码、上下文自适应二进制算术编码或任何其他合适的编码方法。在熵编码之后,将熵编码帧呈现给语法单元180。语法单元180可以将熵编码帧与对应的编码参数一起被封装在符合管理编码协议的编码视频流中。编码器110还可将编码帧提供给解码器120。解码器120可对编码帧进行解码,从而生成解码帧,即重构帧。接下来,回路滤波器130可对重构帧执行一个或多个滤波操作,该一个或多个滤波操作可解决由编码器110和解码器120执行的处理所引入的伪影。参考画面缓冲器140可以存储经滤波的重构帧。然后预测器150可使用这些存储的参考帧来预测稍后接收的帧。

本文相对于帧所述的编码过程可相对于帧的子区域以较低粒度执行。例如,编码器110、解码器120和预测器150可独立于帧的每个像素块、片段、最大编码单元(“LCU”)或编码树单元(“CTU”)操作,无论该操作涵盖一个帧还是多个帧。

编码器110可包括减法器112、基于变换的编码器114、基于NN的编码器116和代码选择器118。基于变换的编码器114通常包括变压器和量化器。编码器110可在减法器112的输入处接收输入帧105。减法器112可从由预测器150提供的其对应的预测帧中减去所接收的帧,反之亦然。该减法运算可导致残差帧。编码器110然后可决定采用基于NN的编码116或基于变换的编码114将什么编码技术应用于残差帧(或该残差帧内的每个像素块)。例如,代码选择器118可从基于NN的编码器116接收置信度分数。如果该置信度分数低于某个阈值,则代码选择器118可选择由基于变换的编码器118提供的代码;否则,其可选择由基于NN的编码器116提供的代码。另选地,编码器110可例如基于编码参数(例如,预测元数据)来确定针对某个帧或块可应用基于变换的编码114还是基于NN的编码116。

如果应用基于变换的编码,则基于变换的编码器114可以变换所接收的残差帧或像素块—将残差帧或像素块从其原始像素域映射到变换域中,从而产生由变换系数组成的变换帧或块。在该变换之后,量化器可量化变换系数。另选地,如果应用基于NN的编码,则基于NN的编码器116可对所接收的残差帧或像素块进行编码,如下文所详述。如所讨论的,基于变换的编码器114和基于NN的编码器116均可并行使用,并且代码选择器118可例如基于置信度分数来选择任一者的输出。

基于变换的编码器114可以利用多种变换模式M,如可以由控制器160确定的。一般来讲,基于变换的编码通过将像素的能量压缩成变换块内的较少变换系数来减少像素块内的空间冗余,从而允许在高能量系数上花费更多比特,同时在低能量系数上花费更少比特或根本不花费比特。例如,基于变换的编码器114可以应用变换模式,诸如离散余弦变换(“DCT”)、离散正弦变换(“DST”)、Walsh-Hadamard变换、Haar变换或Daubechies小波变换。在一个方面,控制器160可以:选择待应用的变换模式M;相应地配置基于变换的编码器114的变压器;以及将编码模式M明确地或隐含地存储在编码参数的记录中。在变压器的操作之后,基于变换的编码器114的量化器可根据一个或多个量化参数QP操作,并且可根据可由控制器160确定的设置应用均匀或非均匀量化技术。在一个方面,量化参数QP可以是向量。在这种情况下,量化操作可以针对每个变换块和每个变换块内的每个系数或系数组采用不同的量化参数。

如上所述,控制器160可设置可用于配置编码器110的编码参数,包括基于变换的编码器114的参数(例如,变压器和量化器的参数)和基于NN的编码器116的参数。此外,此类编码参数可包括控制确定是基于变换的编码器还是基于NN的编码器用于对特定帧或像素块进行编码的逻辑的参数。控制器160可以设置可用于另外配置熵编码器170和语法单元180的编码参数。编码参数可与编码残差一起被封装在编码视频流190中,从而可用于解码系统200(图2)。相关的编码参数也可用于解码器120-使编码参数可用于基于变换的解码器124和基于NN的解码器126。

依赖于预测性编码技术的视频编码系统通常包括解码功能。在一个方面,图1的视频编码100包括解码器120,该解码器恢复被指定为“参考帧”的帧的图像数据,该参考帧是指将用于由预测器150进行预测的帧。在不存在传输误差或其他操作异常的情况下,解码器120应产生与由图2的远端视频解码系统200生成的恢复参考帧相同的恢复帧。一般来讲,解码器120反转编码器110所施加的编码操作。例如,解码器120可包括基于变换的解码器124、基于NN的解码器126和加法器122。基于变换的解码器124可包括逆量化器和逆变压器。逆量化器可反转基于变换的编码器114的量化器的操作,从而执行如由QP所指定的均匀或非均匀去量化。类似地,逆变压器可使用如由M所指定的变换模式反转基于变换的编码器114的变压器的操作。因此,为了反转基于变换的编码器114的编码操作,逆量化器和逆变压器可使用相同的量化参数QP和变换模式M作为它们的对应物。需注意,量化是有损运算,因为变换系数被量化器(根据QP)截断,因此这些系数的初始值不能被逆量化器恢复,从而导致编码误差。

加法器122可以反转由减法器112所执行的操作。因此,基于变换的解码器124或基于NN的解码器126的输出可以是由减法器112输出的残差帧的编码/解码版本,即重构的残差帧。加法器122可以将重构的残差帧添加到由预测器150提供的预测帧(通常是与预测器150在减法器112的输出处提供的用于生成残差帧的预测帧相同的预测帧)。因此,可在加法器122的输出处获得输入帧105的编码/解码版本,即重构的输入帧。

回路滤波器130可从加法器122获得重构的输入帧,并且可对重构的输入帧执行各种滤波操作,特别是以减轻通过独立地处理来自不同像素块的数据而生成的伪影,如可由编码器110和解码器120执行的。因此,回路滤波器130可以包括例如去块滤波器132和样本自适应偏移(“SAO”)滤波器134。回路滤波器130还可采用执行自适应回路滤波(“ALF”)、基于最大似然(“ML”)的滤波方案、去振铃、去带环、锐化、分辨率缩放和其他此类操作的其他滤波器。在滤波之后,经滤波的重构输入帧可被存储在参考画面缓冲器140中。

预测器150可包括模式选择器152、基于帧内的预测器154、基于帧间的预测器156和基于NN的预测器158。预测器150可以将帧或像素块预测基于能够从存储在参考画面缓冲器140中的参考数据访问的先前编码/解码帧或像素块。可以根据可以由模式选择器152确定的多个预测模式中的一个预测模式来完成预测。例如,在基于帧内的预测模式中,预测器可以使用来自相同当前编码的输入帧的先前编码/解码的像素块来生成来自该当前编码的输入帧的像素块的估计。因此,参考画面缓冲器140可以存储其当前正在编码的输入帧的编码/解码像素块。相比之下,在基于帧间的预测模式中,预测器可以使用来自先前帧或当前帧和先前帧的先前编码/解码的像素块来生成来自当前编码的输入帧的像素块的估计。参考画面缓冲器140可以存储这些编码/解码的参考帧。另选地,模式选择器152可以选择基于NN的预测模式,以便生成当前编码的输入帧的估计或来自当前编码的输入帧的像素块的估计。

因此,基于帧间的预测器156可接收待编码的新输入帧105的输入像素块。为此,基于帧间的预测器可以在参考画面缓冲器140中搜索要用于预测该输入像素块的匹配像素块。另一方面,基于帧内的预测器154可以搜索参考画面缓冲器140,从而将其搜索限制为与属于相同输入帧105的参考块匹配。并且,基于NN的预测器158可使用来自相同输入帧和/或来自先前帧的信息来执行预测。所有这些预测器可生成预测元数据PM、用于预测的记录参数,例如所使用的一个或多个参考帧的标识符、所使用的参考块的位置(例如,运动向量)或所使用的神经网络库的索引和/或参数。

模式选择器152可以确定预测模式或选择最终预测模式。例如,基于基于帧内的预测器154、基于帧间的预测器156和/或基于NN的预测器158的预测性能,模式选择器152可选择导致更准确预测的预测模式。然后可以将与所选择的预测模式对应的预测帧或像素块提供给减法器112,该减法器112可基于该预测帧或像素块生成残差帧或块。通常,模式选择器152选择在给定目标比特率预算的情况下实现最低编码失真的模式。当编码模式被选择为满足编码系统100可遵循的其他策略,诸如满足特定信道行为、或支持随机接入或数据刷新策略时,可能出现例外。在一个方面,可以采用多假设预测模式,在这种情况下,可以针对多个预测假设中的每个预测假设重复基于帧内的预测器154、基于帧间的预测器156和/或基于NN的预测器158的操作。

控制器160可以控制编码系统100的整个操作。控制器160可以基于输入像素块的分析和/或基于外部约束诸如编码比特率目标和其他操作参数来选择编码器110和预测器150的操作参数。例如,模式选择器152可以向控制器160输出预测元数据PM,包括预测模式和对应的参数。然后,控制器160可将那些预测元数据添加到所有其他编码参数(例如,M和QP)的记录,并且可将那些编码参数递送到语法单元180以与编码残差一起被封装。

如上所述,在操作期间,控制器160能够以视频帧的不同粒度(逐像素块或以较大粒度级别(例如,逐帧、逐片、逐LCU或逐CTU))设置编码器110的操作参数。例如,可在编码帧内逐像素地修改基于变换的编码器114的量化器的量化参数。另外,如所讨论的,控制器160可以控制解码器120、回路滤波器130、预测器150、熵编码器170和语法单元180的操作。例如,预测器150可以接收关于模式选择的控制数据,例如,要采用的特定模式以及参考数据内的搜索窗口的大小。回路滤波器130可接收关于滤波器选择及其参数的控制数据。

图2是根据本公开的一个方面的解码系统200的功能框图。解码系统200可包括解码器210、回路滤波器230、参考画面缓冲器240、预测器250、控制器260、熵解码器270和语法单元280。

该语法单元280可以接收图1的编码视频流190,并且可以将该数据流解析成其组成部分,包括表示编码参数和熵编码残差的数据。表示编码参数的数据可以被递送给控制器260,而表示熵编码残差的数据可以被递送给熵解码器270。熵解码器270可以执行熵解码以反转由熵编码器170执行的过程,并且可以向解码器210呈现编码残差(由图1的编码器110产生)。预测器250可以使用由编码参数中提供的预测元数据PM指定的这些参考帧或像素块,基于参考画面缓冲器240中可用的参考帧来预测当前解码的帧或块。然后,可将预测的帧或块提供给解码器210。解码器210通常可通过反转编码器110所施加的编码操作来产生重构视频帧。回路滤波器230可对重构视频帧进行滤波。然后可从解码系统输出经滤波的重构视频帧,即输出视频290。如果经滤波的重构视频帧被指定为用作参考帧,则它们可被存储在参考画面缓冲器240中。

与编码器110协作,并且以相反顺序,解码器210可包括基于变换的解码器214、基于NN的解码器216和加法器212。类似地,基于变换的解码器214和基于NN的解码器216可反转分别由基于变换的编码器114和基于NN的编码器216执行的过程。例如,对于由基于变换的编码器114编码的那些帧或像素块,逆量化器可反转量化操作,并且逆变压器可反转可由基于变换的编码器114执行的变换操作。因此,逆量化器可使用由从编码视频流解析的编码参数提供的量化参数QP。类似地,逆变压器可以使用由从编码视频流解析的编码参数提供的变换模式M。如所讨论的,在基于变换的编码中,通常,量化操作是编码失真的主要原因—量化器截断其量化的数据,并且因此截断逆量化器的输出,继而,当与分别呈现给基于变换的编码器114的量化器和变压器的输入相比时,在逆变压器的输出处重构的残差帧具有编码误差。

加法器212可反转由图1的减法器112所执行的操作。从预测器250接收预测帧或像素块,加法器212可以将这些预测数据添加到由基于变换的解码器214或基于NN的解码器216提供的对应的重构残差帧或像素块。因此,加法器212可以将重构视频帧输出到回路滤波器230。

回路滤波器230可对所接收的重构视频帧执行各种滤波操作,如由从编码视频流190解析的编码参数所指定的。例如,回路滤波器230可包括去块滤波器232和SAO滤波器234。其他滤波器可执行ALF、基于ML的滤波方案、去振铃、去带环、锐化或分辨率缩放。回路滤波器230也可采用其他类似的操作。这样,回路滤波器230的操作可模拟编码系统100的对应回路滤波器130的操作。因此,回路滤波器230可输出经滤波的重构视频帧,即,输出视频290。输出视频290可由主机系统使用(例如,显示、存储和/或处理)和/或可进一步传输到另一个系统。

参考画面缓冲器240可存储参考视频帧,诸如由回路滤波器230提供的经滤波的重构视频帧。那些参考视频帧可用于其他帧或像素块的后续预测。因此,预测器250可以访问存储在参考画面缓冲器240中的参考帧或像素块,并且可以检索在预测元数据PM中指定的那些参考帧或像素块。同样,预测器250可以采用如在预测元数据PM中指定的预测方法及其相关参数。预测元数据可以是从编码视频流190解析的编码参数的一部分。预测器250然后可执行预测,并且可将预测的帧或像素块提供给解码器210。

控制器260可以控制解码系统200的整个操作。因此,控制器260可基于从编码视频流190解析的编码参数来设置解码器210、回路滤波器230、预测器250和熵解码器270的操作参数。能够以视频帧的各种粒度设置编码参数,例如,逐像素块、逐帧、逐片、逐LCU、逐CTU或基于针对输入图像定义的其他类型的区域。这些操作参数可以包括量化参数QP、变换模式M和预测元数据PM。编码参数还可包括将由基于NN的解码器216和基于NN的预测器250使用的基于NN的编码参数。与神经网络库相关联的参数可包括相对于某个像素块使用的库的索引以及与每个库相关联的权重。例如,编码参数可包括神经网络库的参数,该参数用于预测某个帧或块并且可被提供给预测器250。在特定帧或块的预测中使用的神经网络库的权重可从服务器访问或者可以是编码参数的一部分。

基于NN的预测器158可采用一个或多个神经网络来执行预测。图3示出了基于单库NN的预测器。例如,神经网络310可接收能够从参考画面缓冲器140访问的当前编码帧和/或先前编码帧提取的先前编码的像素块(参考数据)作为输入。另选地或除此之外,神经网络310可接收先前编码的像素块的经处理版本作为输入。然后,基于权重320,W预测器,网络可生成预测数据,例如像素块预测,其预测当前编码的像素块。通常,W预测器通过训练过程获得,其中神经网络“学习”多对输入数据(观察)和输出数据(感兴趣的信息)之间的相关性。因此,当与新观察一起呈现时,库基于其学习的权重来预测感兴趣的信息。如本文所公开的方面所应用的,神经网络310可被训练以基于先前编码的像素块(通常在该当前编码的像素块的时空邻域内)或基于这些先前编码的像素块的表示来预测当前编码的像素块。此类表示可包括例如通过将参考数据从像素域变换为变换域或者通过从参考数据提取特征向量来提供的变换系数。如所讨论的,为了在解码器中再现某个像素块预测,预测器250可获得对与编码器中在该某个像素块的预测中使用的相同库相关的数据的访问–例如,库索引、库的权重和用于预测的参考数据(例如,要预测的像素块的预先确定的邻域中的先前编码的像素块)。

在一个方面,可以使用多于一个库来生成像素块的预测。图4示出了基于NN的预测器,其可包括预处理器410、多个神经网络库(库420、430和440)以及混频器450。预处理器410的输入可以是能够从参考画面缓冲器140访问的参考数据。此类参考数据可包括先前编码的图像信息,诸如来自当前编码帧或其他先前编码帧的先前编码的像素块。参考数据可由预处理器410进一步处理以生成多个版本InBn。例如,预处理器410可将参考数据从其像素域转换成其他数据域和/或可从参考数据中提取特征向量。另选地或除此之外,预处理器410可将参考数据按原样递送到库420、430和440。在一个方面,预处理器410可从当前编码块的各个邻域内的参考数据中提取数据,其中这些邻域的时空大小和图像分辨率可变化。例如,可以对参考数据进行二次采样以生成不同分辨率的图像金字塔,可以分级处理该图像金字塔以生成预测数据。因此,预测器(基于NN或基于帧间/基于帧内的预测器)可基于参考数据的低分辨率版本来执行初始预测,然后可基于参考数据的较高分辨率来细化该初始预测。此类分级处理提供了更稳定和准确的预测,尤其是在处理高运动视频内容时。

构成基于NN的预测器158的库的数量以及它们的预测可被组合的方式可由神经网络学习。因此,例如,可以训练库n以预测像素块,从而得到预测PBn以及预测该预测的可能性(表示为Pn)。然后混频器450可分别基于其可能性P1、P2、...、PN来组合各种像素块预测PB1、PB2、...、PBN。例如,混频器450可基于线性组合或更一般地经由任何非线性函数PB=f(PBn,Pn):n=[1,N]来组合预测。可通过选择具有最高可能性的预测器的子集来确定要在某个像素块的预测中使用的库的数量–其中较高可能性可对应于较低预测误差。

在本公开的一个方面,神经网络还可用于对残差帧进行编码和解码。因此,当与残差帧一起呈现时,可训练基于NN的编码器116以生成编码残差帧,并且当与编码残差帧一起呈现时,可训练基于NN的解码器216以生成解码残差帧。在一个方面,预测相关数据也可被馈送到基于NN的编码器116和基于NN的解码器216中。预测相关数据可以包括块预测和对应的预测参数。例如,预测参数可包括所使用的预测器的类型(基于NN的、基于帧间或基于帧内的预测器)。如果使用基于NN的预测器,则预测参数还可包括所使用的库的索引及其可能性Pn

类似于基于NN的预测器,基于NN的编码器116和基于NN的解码器216可包括一个或多个神经网络库。图5示出了基于NN的编码器510和基于NN的解码器550。基于NN的编码器510可包括预处理器520、库530、532和534以及混频器540。同样,基于NN的解码器550可包括预处理器560、库570、572和574,以及混频器580。基于NN的编码器510可接收包括残差数据、预测相关数据或它们的组合的输入数据515。输入数据515可为帧子区域(诸如像素块、片、LCU或CTU)的粒度。例如,当编码相对于像素块时,输入数据515可以包括残差块和对应的预测相关数据(块预测和/或其预测参数)。基于NN的编码器510可生成编码残差数据545。例如,当编码相对于像素块时,编码残差数据545可以包括编码残差块。类似地,基于NN的解码器550可接收输入数据555,包括编码残差数据、预测相关数据或它们的组合。输入数据555可为帧子区域(诸如像素块、片、LCU或CTU)的粒度。例如,当解码相对于像素块时,输入数据555可以包括编码残差块和对应的预测相关数据(块预测和/或其预测参数)。基于NN的解码器550可生成解码残差数据585。例如,当编码相对于像素块时,解码残差数据585可以包括解码残差块。

预处理器520可处理输入数据515,从而创建这些数据的若干版本-InB1、InB2和InBN-以分别呈现给库530、532和534。例如,预处理器520可将输入数据515从一个域(例如,像素域)变换到另一个域(例如,频域)和/或可从输入数据515提取特征向量。另选地或除此之外,预处理器520可将输入数据按原样递送到库530、532和534。类似地,预处理器560可处理输入数据555,从而创建这些数据的若干版本-InB1、InB2和InBN-以分别呈现给库570、572和574。例如,预处理器560可将输入数据555从代码域变换为变换域和/或可从输入数据555提取特征向量。另选地或除此之外,预处理器560可将输入数据555原样递送到库570、572和574。

编码器的混频器540和解码器的混频器580可以组合从它们相应的库生成的输出。构成基于NN的编码器510和基于NN的解码器550的库的数量以及它们的输出可被组合的方式可由神经网络学习。因此,例如,可训练编码器510的库n以生成编码残差块,从而得到CRBn,以及预测该代码的可能性,表示为Pn。然后,混频器540可以分别基于其可能性P1、P2、...、P2来组合各种编码残差块CRB1、CRB2、...、CRBN。例如,混频器540可基于线性组合或更一般地经由任何非线性函数CRB=f(CRBn,Pn):n=[1,N]来组合编码残差块。可通过选择具有最高可能性的CRB1、CRB2、...、CRBN的子集来确定要在某个残差块的编码中使用的库的数量-其中较高可能性可对应于较低编码误差。同样,可训练解码器550的库n以生成解码残差块,从而得到RBn,以及预测该解码残差块的可能性,表示为Pn。然后,混频器580可以分别基于其可能性P1、P2、...、PN来组合各种解码残差块RB1、RB2、...、RBN。例如,混频器580可基于线性组合RBnPn或更一般地经由任何非线性函数RB=f(RBn,Pn):n=[1,N]来组合解码残差块。还可通过选择具有最高可能性的RB1、RB2、...、RBN的子集来确定解码中要使用的库的数量,其中较高可能性可对应于较低编码误差。需注意,当基于NN的编码器510和基于NN的解码器550被训练时,基于NN的编码器510的输出可用于基于NN的解码器550的训练过程。

在一个方面,可以使用自动编码器完成残差块的编码和解码。图6示出了自动编码器相对于基于NN的编码器116和基于NN的解码器216的库对的训练。一般来讲,自动编码器是被训练以输出其输入的副本的神经网络。因此,自动编码器的神经网络可分为两个网络(库)-编码器库610和解码器库620。在一个方面,自动编码器600的输入可以是输入数据X(例如,残差块),并且自动编码器600的输出可以是重构的输入数据XR(例如,重构的残差块)。而表示为h的隐藏层的输出数据可构成编码器库610的输出和解码器库620的输入。因此,自动编码器可由编码函数h=f(X)表示,该编码函数被设计成提供输入数据X的压缩表示和重构函数XR=g(h)=g(f(X))。为了获得足够接近输入数据X的重构输入数据XR,通过使X与XR之间的距离最小化的学习过程来训练自动编码器,即,学习过程使距离函数D(X,g(f(X))最小化。学习过程可导致编码器库的权重615和解码器库的权重625稍后(在实时操作中)可分别用于对残差块进行编码和解码。

在一个方面,自动编码器600可以利用除输入数据X之外的辅助数据XA来产生XR。例如,编码器库610可接收由预测器150生成的残差块以及预测相关数据(例如,块预测和/或其预测参数)作为输入。辅助数据可以允许利用残差块与其对应的预测相关数据之间可能存在的任何相关性。在这种情况下,编码函数可以是h=f(X,XA)。因此,为了获得足够接近输入数据X的重构输入数据XR,可以训练自动编码器,使得距离函数D(X,g(f(X,XA))最小化。

在本公开的一个方面,图4的库420、430和440以及图5的库530、532、534、570、572和574可为不同类型,其特征在于例如它们的网络架构、激活函数(例如,单极sigmoid、双极sigmoid、正切双曲线或径向基函数)、超参数、训练成本函数和训练数据类别。典型的超参数可以是学习速率、动量、批量大小或权重衰减速率。例如,可训练基于NN的预测器158、基于NN的编码器116和基于NN的解码器126的不同库以不同比特率或以不同端到端成本函数操作。类似地,可基于来自不同类别的数据来训练不同库,这可能是因为视频帧可能包含非静止数据,其中视频的统计属性跨一个帧(在空间上)和跨多个帧(在时间上)变化。因此,本公开的各方面可通过针对特定类别的视频特征训练每个库来对此类不同的特征进行建模。

支持多个库可以增加解码器的操作的复杂性,尤其是相对于在对残差块216进行解码时或在执行基于NN的预测250时将用于从一个库切换到另一个库的存储器带宽。另一方面,可使用一大组库来满足不同的视频内容特征。因此,利用库的参数(即,库的特性和权重)之间的相似性来减少解码过程中使用的库的总数可能是有利的。另外,尽管可预定义(例如,可从服务器访问)库的参数,但也可将它们编码并封装在编码视频流中。在这种情况下,利用与相邻像素块相关联的库之间的相似性可允许将这些库的参数更有效地编码到编码视频流中。例如,解码器200在使用基于NN的预测器预测某个像素块时,可利用神经网络库,该神经网络库通过使用相同的库(或使用其变型)已经被用于相邻像素块的预测。因此,相对于某个块,编码器100可向解码器200(作为与该某个块相关联的预测参数的一部分)提供库的参数以用于预测该某个块,或者,相反,编码器可提供指示解码器基于与先前预测的块相关联的库的参数来导出新库的参数的指示。因此,在一个方面,解码器可能需要的用于预测某个像素块的库的参数可以从已经用于预测相邻像素块的库的参数导出。类似地,在另一方面,解码器可能需要的用于对特定残差块进行解码的库的参数可以从已经用于对相邻残差块进行解码的库的参数导出。

在本文所公开的一个方面,库的权重可利用在线机器学习技术使用动态训练来细化。例如,基于NN的预测器158可包括其中基于最新可用的训练数据来更新库的参数的操作。最新可用的训练数据可以是多对(当前处理的像素块的)参考数据和对应的预测数据。这些对应的预测数据可以是由基于帧内的预测器154、基于帧间的预测器156或任何其他预测方法生成的数据。类似地,基于NN的编码器116可包括其中基于最新可用的训练数据来更新库的参数的操作。最新可用的训练数据可以是当前处理的残差块、预测相关数据和对应的编码残差块。例如,对应的编码残差块可以是由基于变换的编码器114生成的数据。

图7示出了本公开的另一个方面。其中,视频编码器710可接收视频流715并且可产生编码视频流755。编码视频流755可被提供给视频解码器750,该视频解码器继而可产生重构的视频流790。可使用基于NN的预测器、基于帧内的预测器或基于帧间的预测器基于参考数据生成像素块的预测(框720)。可通过从所生成的像素块预测中减去像素块来产生残差块(框725)。然后可以使用基于NN的编码器或基于变换的编码器执行残差块的编码(框730)。经编码的残差可与相应的编码参数一起被封装在编码视频流中(框735)。编码视频流可被存储以供稍后参考,或者可通过通信链路传输到接收终端,其中编码视频流可由解码器750进行解码(由箭头755表示)。

在解码过程期间,可以提取编码残差块和相应的编码参数(框760)。使用基于NN的解码器或基于变换的解码器,可以对编码残差块进行解码(框765),从而得到重构的残差块。基于参考数据生成像素块预测,从而复制框720中所示的预测(框770)。解码器可以将重构的残差块添加到像素块预测,从而得到重构的像素块(框775)。编码器710和解码器750能够以像素块的粒度操作,如图7所示,或者如所讨论的,也能够以其他粒度级别操作。

前述讨论已在视频编码器和解码器的上下文中描述了本公开各个方面的操作。这些部件常常作为电子设备来提供。视频解码器和/或控制器可以被嵌入在集成电路中,诸如专用集成电路、现场可编程门阵列和/或数字信号处理器。另选地,它们可以被嵌入到在相机设备、个人计算机、笔记本电脑、平板电脑、智能电话或计算机服务器上执行的计算机程序中。此类计算机程序通常存储在物理存储介质诸如基于电子、基于磁性的存储设备和/或基于光学的存储设备中,在这些介质中,它们被读取到处理器中并被执行。解码器常常被封装在消费电子设备中,诸如智能电话、平板电脑、游戏系统、DVD播放器、便携式媒体播放器等。它们也可以被封装在消费软件应用中,诸如视频游戏、媒体播放器、媒体编辑器等等。并且,当然,这些部件可被提供作为根据需要在专用硬件部件和经编程的通用处理器上具有分布式功能的混合系统。

视频编码器和解码器可以多种方式通过信道来交换视频。它们可以经由通信和/或计算机网络彼此通信,如图1所示。在其他应用中,视频编码器可以将视频数据输出给存储设备,诸如电、磁和/或光学存储介质,所述存储设备可以在稍后某个时候被提供给解码器。在此类应用中,解码器可以从存储设备检索所编码的视频数据并对其进行解码。

本文具体示出和/或描述了本发明的若干实施方案。然而,应当理解,在不脱离本发明的实质和预期范围的情况下,本发明的修改和变型由上述教导内容涵盖并且在所附权利要求的范围内。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:环路整形信息的信令和语法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类