使用率失真成本作为深度学习的损失函数

文档序号:1942817 发布日期:2021-12-07 浏览:4次 >En<

阅读说明:本技术 使用率失真成本作为深度学习的损失函数 (Using rate distortion cost as a loss function for deep learning ) 是由 克劳迪诺·科埃略 阿基·库塞拉 约瑟夫·扬 山·李 达克·何 于 2019-03-21 设计创作,主要内容包括:一种用于对图像块进行编码的装置,其包括处理器,其将图像块呈现给机器学习模型,从模型获得用于对图像块进行编码的分割决策,并且使用分割决策对图像块进行编码。模型被训练以输出分割决策,用于使用多个训练块的训练数据作为输入对图像块进行编码,训练数据包括:对于训练块,用于对训练块进行编码的分割决策以及对于每个分割决策,从使用分割决策对训练块进行编码而产生的率失真值。模型是使用损失函数来训练的,损失函数将以下组合:基于分割决策与相应预测分割之间的关系的分割损失函数和基于率失真值与相应预测率失真值之间的关系的率失真成本损失函数。(An apparatus for encoding an image block includes a processor that presents an image block to a machine learning model, obtains a segmentation decision from the model for encoding the image block, and encodes the image block using the segmentation decision. The model is trained to output segmentation decisions for encoding the image blocks using training data of a plurality of training blocks as input, the training data comprising: for a training block, segmentation decisions for encoding the training block, and for each segmentation decision, rate-distortion values resulting from encoding the training block using the segmentation decisions. The model is trained using a loss function that combines: a segmentation loss function based on a relationship between the segmentation decision and the respective prediction segmentation and a rate-distortion cost loss function based on a relationship between the rate-distortion value and the respective prediction rate-distortion value.)

使用率失真成本作为深度学习的损失函数

背景技术

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

发明内容

所公开的实施方式的一个方面是使用第一编码器对图像块进行编码的方法。该方法包括将图像块呈现给第一编码器的机器学习模型,其中,机器学习模型被训练以输出分割决策,用于通过使用多个训练块的训练数据作为输入对图像块进行编码,以对包括机器学习模型的机器学习模块进行训练,对于多个训练块中的训练块,训练数据包括由第二编码器用于对训练块进行编码的多个分割决策,并且对于多个分割决策中的每个分割决策,训练数据包括从使用分割决策对训练块进行编码而产生的率失真值。机器学习模型是使用损失函数来训练的,该损失函数将以下的组合:基于分割决策与相应预测分割之间的关系的分割损失函数和基于率失真值与相应预测率失真值之间的关系的率失真成本损失函数。方法还包括从机器学习模型获得用于对图像块进行编码的分割决策,并且在压缩比特流中使用分割决策对图像块进行编码。

本文中所描述的另一方法包括将图像块呈现给第一编码器的机器学习模型,其中,机器学习模型被训练以输出分割决策,用于用多个训练块的训练数据以及损失函数对图像块进行编码,对于多个训练块中的训练块,训练数据包括由第二编码器用于对训练数据进行编码的多个分割决策,并且对于多个分割决策中的每个分割决策,训练数据包括从哪个使用分割决策对训练块进行编码而产生的率失真值,该损失函数包括以下的组合:基于分割决策与相应预测分割之间的关系的分割损失函数和基于率失真值与相应预测率失真值之间的关系的率失真成本损失函数。方法还包括从机器学习模型获得用于对图像块进行编码的分割决策,并且在压缩比特流中使用分割决策对图像块进行编码。

根据本文中的技术的装置包括处理器,该处理器配置为接收训练数据,该训练数据包括多个训练块,并且对于多个训练块中的训练块,包括由编码器用于对训练块进行编码的多个分割决策,并且对于多个分割决策中的每个分割决策,包括从使用分割决策对训练块进行编码而产生的率失真值。处理器配置为对机器学习模型进行训练以输出分割决策,用于使用损失函数通过将训练数据输入神经网络对图像块进行编码,该损失函数包括以下的组合:基于分割决策与相应预测分割之间的关系的分割损失函数和基于率失真值与相应预测率失真值之间的关系的率失真成本损失函数。

另一方面是用于对图像块进行编码的装置。该装置包括处理器,该处理器将图像块呈现给机器学习模型,从机器学习模型获得用于对图像块进行编码的分割决策,并且在压缩比特流中使用分割决策对图像块进行编码。机器学习模型被训练以输出分割决策,用于通过使用多个训练块的训练数据作为输入对图像块进行编码,以对机器学习模型进行训练,对于多个训练块中的训练块,训练数据包括由编码器用于对训练块进行编码的多个分割决策,并且对于多个分割决策中的每个分割决策,训练数据包括由于使用分割决策对训练块进行编码而产生的率失真值,其中,机器学习模型是使用损失函数来训练的,该损失函数将以下的组合:基于分割决策与相应预测分割之间的关系的分割损失函数和基于率失真值与相应预测率失真值之间的关系的率失真成本损失函数。

本文中所描述的另一装置包括处理器,该处理器将图像块呈现给机器学习模型。机器学习模型被训练以输出分割决策,用于用多个训练块的训练数据对图像块进行编码,对于多个训练块中的训练块,训练数据包括由编码器用于对训练块进行编码的多个分割决策,并且对于多个分割决策中的每个分割决策,训练数据包括从使用分割决策对训练块进行编码而产生的率失真值。机器学习模型也是用以下的组合来训练的:基于分割决策与相应预测分割之间的关系的分割损失函数和基于率失真值与相应预测率失真值之间的关系的率失真成本损失函数。处理器还从机器学习模型获得用于对图像块进行编码的分割决策,并且在压缩比特流中使用分割决策对图像块进行编码。

另一方面是用于对图像块进行编码的装置,该装置包括机器学习模型、编码器和处理器。编码器通过对多个训练块中的每个训练块进行多次编码生成训练数据,每次使用多个分割决策中的对应分割决策对相应训练块进行编码。处理器对机器学习模型进行训练以输出分割决策,用于通过使用训练数据作为输入对图形块进行编码,以对机器训练模型进行训练,对于多个训练块中的训练块,训练数据包括由编码器用于对训练块进行编码的多个分割决策,并且对于多个分割决策中的每个分割决策,训练数据包括从使用分割决策对训练块进行编码而产生的率失真值。机器学习模型是使用损失函数来训练的,该损失函数将以下的组合:基于分割决策与相应预测分割之间的关系的分割损失函数和基于率失真值与相应预测率失真值之间的关系的率失真成本损失函数。

每个方面都可以可选地包括以下一个或多个特征。损失函数可以包括分割损失函数和率失真损失函数的不均匀加权。分割损失函数可以包括二进制交叉熵损失函数。二进制交叉熵损失函数可以将相应权重应用于分割决策,应用于多个分割决策中的分割决策的权重等于由于多个分割决策而产生的最低率失真值归一化的分割决策的率失真值。率失真成本损失函数可以以指数方式处罚预测分割,该预测分割与从第二编码器的穷举分割搜索而产生的训练块的选择分割决策不匹配。机器学习模块可以包括率失真成本估计器,该率失真成本估计器接收来自机器学习模型的预测分割并且估计损失函数的预测率失真值,并且机器学习模型是卷积神经网络模型。对于多个分割决策中的每个分割决策,由于使用分割决策对训练块进行编码而产生的率失真值可以包括用于在没有进一步分割训练块的情况下对训练块进行编码的率失真成本和分裂训练块时产生的成本。多个分割决策可以包括四叉树分割决策。多个分割决策可以包括导致训练块的至少一个非方形分割的分割决策。第二编码器可以包括基于块的编码器。对于多个分割决策中的每个分割决策,率失真成本损失函数可以是指数函数,该指数函数包括由于使用分割决策对训练块进行编码而产生的率失真值与预测率失真值之间的差异。对于多个分割决策中的每个分割决策,相应预测率失真值可以使用率失真成本损失函数中的多个分割决策的最低率失真值进行归一化。率失真成本损失函数可以包括:使用多个分割决策中的分割决策对预测率失真值进行的确定以及由于使用多个分割决策中的分割决策对训练块进行编码而产生的率失真值,其中,分割决策包括训练块的分裂决策和不分裂决策的组合,并且率失真值包括由于使用分裂决策和不分裂决策的组合对训练块进行编码而产生的率失真值的组合。预测率失真值可以包括表示训练块的不分裂决策的率失真成本的第一项和表示将训练块分成多个子块的训练块的分裂决策的率失真成本的第二项。将训练块分成多个子块的训练块的分裂决策的率失真成本可以包括多个子块中的每个子块的分割决策的对应率失真成本;第一项的率失真成本可以由用于对训练块进行编码的多个分割决策的最低率失真值进行加权;以及第二项的率失真成本可以包括由用于对训练块进行编码的多个分割决策的最低率失真值对用于对所述多个子块中的每个子块进行分割的相应率失真成本中的每一个进行加权。机器学习模型可以使用机器学习模块来训练,该机器学习模块包括机器学习模型和率失真成本估计器,该率失真成本估计器接收来自机器学习模型的预测分割并且估计损失函数的预测率失真值。机器学习模型可以通过将比率失真成本损失函数大的权重应用于分割损失函数使用损失函数来训练。机器学习模块可以包括率失真成本估计器,该率失真成本估计器接收来自机器学习模型的预测分割并且估计损失函数的预测率失真值。

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

附图说明

本文中的描述参考附图,其中,相同的参考数字在贯穿视图中指类似的部件。

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

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

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

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

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

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

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

图8是搜索对块进行代码化的最佳模式的过程的流程图。

图9是可以用于实施本文中的教导的卷积神经网络的简化表示。

图10A是具有相对均匀的内容的b×b块的分割决策的示例。

图10B是比图10A的块更详细的b×b块的分割决策的示例。

图11是图示了块的分割模式以及递归分割的示意图。

图12是图示了机器学习/深度学习模型的训练的示意图。

图13是使用从根据图12训练的机器学习/深度学习模型获得的推断进行编码的过程的流程图。

具体实施方式

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

现代视频编解码器(例如,H.264,其还被称为MPEG-4AVC;VP9、H.265,其还被称为HEVC;AVS2和AV1)定义和使用大量工具和配置(例如,参数)来提高代码化效率。视频编解码器可以使用模式决策来检查(例如测试、评估等)至少一些有效的参数组合,以选择导致相对较低的率失真值的组合。模式决策的示例是帧内预测模式决策,该帧内预测模式决策确定用于对块进行代码化的最佳预测内模式。模式决策的另一示例是分割决策,该分割决策确定代码化单元(还被称为代码化单元或CU)的最佳分割。模式决策的另一示例包括关于变换类型的决策,以在将块(诸如残差块或图像块)从像素域转变为频域以形成包括变换系数的变换块时使用。

为了评估一个组合是否比另一组合好,可以为每个检查的组合计算度量,并且对对应的度量进行比较。在示例中,度量可以将上述速率和失真组合以产生率失真(RD)值或成本。RD值或成本可以是单个标量值。

如上所述,最佳模式可以从许多可能的组合中选择。例如,与特定模式(或特定工具组合)相关联的RD成本可以通过执行编码器的编码步骤的至少一个子集来确定。根据要确定RD成本的模式,编码步骤的子集可以包括以下至少一项:确定预测块,确定残差块,确定变换类型,确定插值滤波器,量化变换块,熵编码等。注意,这些编码步骤既不旨在典型编码器可以执行的编码步骤的穷举列表,也不是以任何特定的顺序(即,编码器不一定按所列顺序执行这些步骤)呈现的。随着可能的工具和参数的数量的增加,组合的数量也增加,这又增加了确定最佳模式所需的时间。

除了穷举搜索,当编码器发现RD成本小于设置阈值的模式时,它可以终止模式搜索。然而,这意味着,如果编码器继续进行模式搜索,则以后可能找到更好的模式。在某些情况下,可以执行穷举搜索,也可以不执行穷举搜索,但是整个RD成本计算被粗略的估计取代。这可以进一步降低编码器所进行的决策。

可以利用诸如机器学习的技术来减少确定最佳模式——诸如分割模式——所需的时间。例如,除了执行所有的编码步骤(即,蛮力或穷举方法)来确定各种分割模式的速率和失真以比较这些模式并且选择最佳模式,机器学习模型可以用于估计最佳模式。

机器学习模型可以使用从执行标准编码技术——诸如关于图4和图6至图8所描述的技术——的编码器获得的大量训练数据来训练。更具体地,在机器学习的学习阶段期间,可以使用训练数据来推导(例如,学习、推断等)机器学习模型,该机器学习模型是(例如,定义、构成等)从输入数据(例如,块数据)到输出的映射。

一旦机器学习模型被训练,模型便计算输出作为其输入的确定函数。在示例中,机器学习模型可以是神经网络模型,该神经网络模型可以是卷积神经网络(CNN)。神经网络模型(包括CNN)的进一步的细节将在下面进行讨论。

一般而言,机器学习模型的训练使用损失函数来发生。损失函数可以被表征为测量模型的预测值(也被称为预测)与预期结果的匹配程度如何。常见的损失函数包括均方误差(MSE)、二进制交叉熵或交叉熵。使用本文中所描述的速率和失真的损失函数可以导致比单独使用这种损失函数更好的训练模型,从而提高代码化效率。这种机器学习模型的细节在本文中首先参考可以并入教导的基于块的编解码器进行描述。尽管基于块的编解码器被描述为示例,但是其他编解码器也可以与本教导一起使用,包括基于特征的编解码器。

图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可以是中央处理单元。可替代地,CPU 202可以是现存或以后开发的任何其他类型的设备或多个设备,这些设备能够操纵或处理信息。尽管所公开的实施方式可以用如图所示的单个处理器(例如,CPU 202)来实践,但是在速度和效率方面的优势可以通过使用一个以上的处理器来实现。

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

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

计算设备200还可以包括图像感测设备220,例如,摄像头或可以感测图像——诸如,操作计算设备200的用户的图像——的现存或以后开发的任何其他图像感测设备,或与其进行通信。图像感测设备220可以被定位,以便其指向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴可以被配置,以便视场包括直接与显示器218相邻并且从其可见显示器218的区域。

计算设备200还可以包括声音感测设备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的框图。编码器400可以如上所述在发送站102中实施,诸如通过提供存储在存储器——例如存储器204——中的计算机软件程序。计算机软件程序可以包括机器指令,该机器指令在由处理器——诸如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的框图。解码器500可以在接收站106中实施,例如,通过提供存储在存储器204中的计算机软件程序。计算机软件程序可以包括机器指令,这些机器指令在由处理器——诸如CPU 202——执行时使接收站106以下述方式对视频数据进行解码。解码器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。在解码器500的一些实施方式中,后滤波阶段514是在环路滤波阶段512之后应用的。环路滤波阶段512可以包括可选的去块滤波阶段。可选地或可替代地,编码器400包括环路滤波阶段416中的可选的去块滤波阶段。

图6是根据本公开的实施方式的帧——诸如图3的帧306——的部分600的表示的框图。如所示的,帧的部分600包括四个64×64块610,这些块可以被称为超级块,在矩阵或笛卡尔平面中的两行和两列。超级块可以具有较大或较小的大小。虽然图6是关于大小为64×64的超级块进行说明的,但是描述很容易扩展到较大(例如128×128)或较小的超级块大小。

在示例中,并且在不损失通用性的情况下,超级块可以是基本或最大代码化单元(CU)。每个超级块都可以包括四个32×32块620。每个32×32块620可以包括四个16×16块630。每个16×16块630可以包括4个8×8块640。每个8×8块640可以包括四个4×4块650。每个4×4块650可以包括16个像素,在笛卡尔平面或矩阵中,这些像素可以以四行和四列表示。像素可以包括表示在帧中捕捉到的图像的信息,诸如亮度信息、颜色信息和位置信息。在示例中,块——诸如如图所示的16×16像素块——可以包括亮度块660,该亮度块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块或其组合。

在一些实施方式中,视频代码化可以包括有序块级代码化。有序块级代码化可以包括按照一定顺序——诸如光栅扫描顺序——对帧的块进行代码化,其中,可以从帧的左上角的块或帧的部分开始识别和处理块,并且沿从左到右和从顶行到底行的行继续进行,依次识别每个块以进行处理。例如,在帧的顶行和左列中的超级块可以是代码化的第一块,并且紧邻第一块右边的超级块可以是代码化的第二块。从顶部开始的第二行可以是代码化的第二行,以便第二行的左列中的超级块可以在第一行的最右边的列中的超级块之后进行代码化。

在示例中,对块进行代码化可以包括使用四叉树代码化,该四叉树代码化可以包括按照光栅扫描顺序用快对较小的块单元进行代码化。例如,可以使用四叉树代码化对在图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的值),并且可以使用例如8个位进行存储或发送。虽然本公开参照YUV颜色模型进行了描述,但是可以使用任何颜色模型。

减少空间冗余可以包括将块转变为频域,如上所述。例如,编码器的单元,诸如图4的熵代码化单元408,可以基于空间频率使用变换系数值执行DCT。

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

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

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

虽然其他分割是可能的,如上面关于图6所描述的,但是CU或块可以使用图7的示例中所示的四叉树分割或代码化进行代码化。示例示出了块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成本。即,例如,检查预测块和预测(例如,帧内预测、帧间预测等)的不同组合,以确定最佳分割。

如本领域技术人员所认识到的,许多模式决策过程可以由编码器执行。

图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}。编码器可以具有可用的帧内预测模式列表。例如,可用的帧内预测模式列表可以是{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继续到816。在816处,过程800输出最佳模式BEST_MODE的索引。输出最佳模式可能意味着将最佳模式返回给过程800的调用者。输出最佳模式可能意味着使用最佳模式对图像进行编码。输出最佳模式可以有其他语义。过程800终止于820。

图8图示了模式决策的蛮力方法很大程度上是串行过程,该串行过程本质上是通过使用候选模式对图像块X进行代码化,以确定成本最佳的模式。机器学习可以用于降低模式决策的计算复杂度。即,编码器的模式决策可以使用深度学习来实施。深度学习是指机器学习模型,其中,网络从非结构化或无标记的数据中学习,而深度学习模型可以被称为深度神经网络。

在高级别,并且在不损失通用性的情况下,机器学习模型,诸如分类深度学习模型,包括两个主要部分:特征提取部分和分类部分。特征提取部分检测模型的特征。分类部分试图将检测到的特征分类为预期响应。每个部分都可以包括一个或多个层和/或一个或多个操作。

如上所述,CNN是机器学习模型的示例。简化CNN 900如图9所示。在该CNN 900中,特征提取部分902包括卷积操作集合,这些卷积操作可以是设置在卷积层904、906、908中的一系列滤波器,这些滤波器用于基于滤波器(通常是大小为k的方形,在不损失通用性的情况下)对输入图像进行滤波。例如,并且在机器视觉的情境中,这些滤波器可以用于寻找输入图像中的特征。例如,特征可以包括边缘、拐角、端点等。随着堆叠的卷积操作的数量的增加,后来的卷积操作可以找到更高级的特征。

在CNN 900中,若干全连接(FC)层912、914可以查看图像的所有输入特征,以生成高级分类器。几个阶段(例如,一系列)的高级分类器最终生成所需的分类输出。总的来说,这些分类器形成分类部分910。

从该描述可以看出,CNN网络通常由若干卷积操作(例如,特征提取部分902的卷积层904、906、908)和形成分类部分的若干FC层912、914组成。每个类型的操作数量以及其对应的大小通常是在机器学习的训练阶段确定的。如本领域技术人员认识到的,附加层和/操作可以包括在每个部分中。例如,池化、最大池化、退出、激活、归一化、批量归一化和其他操作可以用卷积操作(即,在特征提取部分902中)和/或全连接操作(即,在分类部分910中)来分组。FC层912、914可以被称为密集操作。如本领域技术人员认识到的,任何卷积层904、906、908的卷积操作都可以使用可分离卷积2D或卷积2D操作。

如本公开中所使用的,卷积层可以是一组操作,从卷积2D或可分离卷积2D开始,然后是零个或多个操作(例如,池化、退出、激活、归一化、批量归一化、其他操作或其组合),直到到达另一卷积层、密集操作或CNN 900的输出。类似地,密集层可以是一组操作或层,从密集操作(即,FC层912、914)开始,然后是零个或多个操作(例如,池化、退出、激活、归一化、批量归一化、其他操作或其组合),直到到达另一卷积层、另一密集层或CNN 900的输出。基于卷积网络的特征提取部分902与使用密集操作的特征分类部分910之间的边界可以通过扁平化操作进行标记,该扁平化操作将多维矩阵从特征提取扁平化为向量。

在CNN 900中,每个卷积层904、906、908都可以由滤波器集合构成。当滤波器每次应用于输入数据的子集时,滤波器应用于整个输入,诸如通过扫过输入。卷积层所执行的操作通常是线性/矩阵乘法。卷积滤波器的输出可以使用激活函数进行进一步滤波。激活函数可以是线性函数或非线性函数(例如,sigmoid函数、arcTan函数、tanH函数、ReLu函数等)。

每个FC层912、914都是线性操作,其中,每个输入通过权重连接到每个输出。FC层的线性操作通常遵循非线性激活函数来生成层的输出。当最后一个卷积层(例如,卷积层908)与第一个FC层(例如,FC层912)之间存在扁平化操作(例如,扁平化层)时,整个神经网络的参数数量由该接口处的参数数量决定。

注意,在这里省略了机器学习、卷积神经网络的细节和/或本领域技术人员所知的细节。例如,本领域技术人员认识到,在训练阶段,卷积滤波器的值和CNN 900中的节点(即,神经元)之间的连接的权重由CNN 900确定。因此,在这里不对这些进行详细讨论。

在对关于图7和图8所描述的分割决策的模型进行训练时,有一个问题是,分割决策依赖于非常非线性的操作。例如,并且如上面关于图4所描述的,块残差是图像块和预测块之间的(线性)差异(例如,在帧内/帧间预测阶段402),但是该残差然后经受非线性操作,包括计算残差的变换(例如,在变换阶段404)并且将量化应用于变换后的残差(例如,在量化阶段406)。进一步地,计算对图像块与图像块的重构版本(例如,由图4中的重构路径执行)之间的图像块率和失真D进行编码所需的位的数量(速率R)以获得RD成本作为标量值D+λR还包括非线性操作。例如,失真可以是均方误差、绝对差异误差的和或图像块和重构块的像素值之间的一些其他误差度量。

拉格朗日参数或拉格朗日乘子λ本身可以与用于量化变换后的残差的量化参数QP有非线性关系。例如,实施H.264或HEVC标准的编解码器可以根据0.85×2(QP-12)/3推导乘子,实施H.263标准的编解码器可以根据0.85·QP2推导乘子,实施VP9标准的编解码器可以根据88·QP2/24推导乘子,并且实施AVI标准的编解码器可以根据0.12·QP2/256推导乘子。

为了用机器学习或深度学习模型近似分割问题,可以使用损失函数将标记分割(例如,来自上面关于图7所描述的穷举编码器分割)与预测分割进行比较。如上所述,例如,损失函数测量模型的预测值p与预期结果y的匹配程度如何,在该示例中为块的预测分割与来自训练数据的块的标记分割的匹配程度如何。损失函数可以是MSE损失函数、二进制交叉熵损失函数或交叉熵损失函数。

MSE损失函数的公式为:

其中,[n]表示样本n,并且N表示样本的总数。二进制交叉熵函数的公式为:

交叉熵函数是二进制交叉熵函数的一般情况,其中,只有两种选择。决策过程可以由采用有限字母表A中的值的一个预测变量表示。决策过程可以如下面的交叉熵函数的公式中所示:

其中,i表示A中的预测变量的选择的索引。在二进制情况下,例如,i要么是0,要么是1。在预测变量可以取字母表{0,1,......A-1}(例如,A>2)中的值的情况下,i可以是0、......A-1......换言之,函数使用索引i对可用预测类的数量进行迭代。对于两类问题(例如,四叉树分裂或不分裂),交叉熵函数可以简化为上述二进制交叉熵函数。

如上面关于图6和图7所描述的,分割决策可以是四叉树决策过程。在这种过程中,尺寸为b×b的块(在本文中也被称为块b×b)的不分裂决策意味着,尺寸为b/2×b/2的子块(在本文中也被称为块b/2×b/2)的对应的剩余分裂决策的剩余损失函数不需要进行评估。在该示例中,假设最大块尺寸为64×64像素,并且最小块分割为8×8像素,可以使用的修改二进制熵损失函数如下:

在上面,y64和p64分别与64×64块的标记分割和预测分割(或预测)对应。类似地,分别与32×32块的标记分割和预测对应,并且分别与16×16块的标记分割和预测对应。当所有对应的块被分裂时,假设是8×8分割。这是修改的损失函数的一个示例。可以包括附加或更少的项。例如,可以添加附加的项,其中,最大块尺寸为128×128像素。

上述技术的一个问题是,它对不同的分割决策的权重是相等的。对于不同的分割决策,包含加权函数可能导致附加的益处。这将式(1)的损失函数修改为:

加权函数可以按比例对分割决策进行加权,诸如通过将比例因子应用于速率和失真成本。加权函数的比例因子可以通过考虑由于分割决策而产生的速率和失真成本来发展。在每个分割决策中,例如,编码器可以执行如下比较:

式(3)确定尺寸为b×b(也被称为块b×b)的速率和失真,并且递归地计算每个子块i的最佳决策,其中,是用于不分裂块b×b的RD成本,RDCb×b是块b×b的分裂决策和不分裂决策之间的最佳RD成本,是尺寸为b/2×b/2的子块的分裂决策和不分裂决策之间的最佳RD成本,并且Δb×b是在分裂块b×b时发生的附加成本。换言之,式(3)将用于不分裂块b×b的成本与将块b×b分裂为四个b/2×b/2子块的成本进行比较,并且选择较低成本来进行分割决策。

通过识别分割的决策是否为二进制决策,可以将式(3)转换为损失函数,用于对深度学习模型进行训练。假设变量pb表示块的决策,则变量pb可能属于0和1的集合(pb∈[0,1])。对于标记训练数据,在该示例中,变量pb可以有0或1的值。因此,当pb=1时,RD成本为并且当pb=0时,RD成本为更一般而言,将不分裂决策乘以变量pb,并且将分裂决策乘以表达式(1-pb),导致以下损失函数:

做出与关于式(1)和式(2)所做出的假设相同的假设,式(4)可以扩展为考虑递归分割决策的所有分割,从而导致以下损失函数:

其中,可以如下表示是否进一步分裂第i个32×32块的成本的计算:

因此,RDC(p)可以如下表示:

假设编码器对最低(即,最佳)RD成本执行穷举搜索,该最低RD成本可以被称为RDCMIN。应用于分割决策中的分割决策的权重可以等于从多个分割决策产生的最低率失真值归一化的分割决策的率失真值。即,比例因子可以是1/RDCMIN。这可以通过将式(5)中的RDC(p)除以RDCMIN看出,结果如下:

其中,常数(权重)和常数ob=Δb/RDCMIN。在该示例中,预测率失真值包括表示块的不分裂决策的率失真成本的第一项和表示将块分成多个子块的块的分裂决策的率失真成本的第二项。将块分裂为多个子块的块的分裂决策的率失真成本可以包括多个子块中的每个子块的分割决策的对应率失真成本。如能够从式(6)中看到的,第一项的率失真成本由用于对训练块进行编码的最低率失真值进行加权。类似地,第二项的率失真成本包括由用于对训练块进行编码的最低率失真值对多个子块中的每个子块进行分割的每个相应率失真成本进行加权。

值得注意的是,式(6)中的RDC′(p)≥1。这是因为RDC′(p)=1是由于穷举搜索而产生的64×64块的分割的最小RD成本,并且预测将不产生比该最小RD成本低的RD成本。从这方面的知识,式(6)可以发展率失真成本损失函数Loss(RDC),该函数是基于率失真值与对应的预测率失真值之间的关系。在该示例中,它是相应分割决策的标记数据y和预测数据p之间的关系,其中,分割决策可以包括块的分裂决策和不分裂决策的组合。率失真成本损失函数可以是MSE函数或指数函数。指数函数的一个示例如下:

Loss(RDC)=eRDC′(p)-eRDC(y)=eRDC′(p)-eRDC(1) (7)

其中,RDC(y)=RDC(1)=RDCMIN

式(7)的率失真成本损失函数以指数方式处罚坏决策。坏决策是比最优差——例如,分割的预测RD成本高于用于训练的标记数据的RD成本——的决策。换言之,率失真成本损失函数以指数方式处罚预测分割,该预测分割与由于(例如,基于块的编码器的)穷举分割搜索而产生的训练块的选定分割决策不匹配。进一步地,这种确定的复杂性较低。这种低复杂性是由于通过将RD成本除以标记数据的RD成本来归一化RD成本,因为最佳分割的RD成本(例如,RDMMIN)是已知的。

进一步的益处可以由按照式(1)和式(2)回顾编码器可以通过计算和比较所有分割类型的RD成本来选择最佳分割造成。为此原因,由编码器确定的分割是机器学习模型的良好目标。包含分割损失函数与式(7)的基于RDC的成本函数的组合损失函数——其处罚坏决策——如下:

Loss=αLoss(partition) + βLoss(RDC) (8)

在式(8)中,分割损失函数Loss(partition)可以是基于训练块的分割决策与相应预测分割之间的关系。分割损失函数可以是MSE损失函数、二进制交叉熵损失函数或交叉熵损失函数。例如,可以使用式(1)的层次二进制交叉熵损失函数或式(2)的加权损失函数。式(8)的损失函数可以不同地对分割损失函数和率失真成本损失函数进行加权,以确定组合损失函数。加权可以使用变量α和β来实现。变量α和β是用于平衡这些函数的权重的乘子,并且可以在训练期间预先定义或调整。例如,函数Loss(RDC)首先可以用于对模型进行训练,然后,函数Loss(partition)可以用于对模型进行微调。在示例中,α+β=1,其中,1>α,β>0。变量α可以是10%,并且变量β可以是90%。变量α和β的其他值可能用于对分割损失函数和率失真成本损失函数进行加权。在一些实施方式中,机器学习模型可以通过将比率失真成本损失函数大的权重应用于分割损失函数使用损失函数来训练。

将用于发展式(7)和式(8)的式(6)与式(2)进行比较,可以看出,通过允许对于不同的分割决策的每个块调整权重wb,式(6)改进了加权函数的使用。相反,式(2)使用权重wb的固定值。

参照图10A和图10B,可以看出调整加权函数的权重wb的值的可取性。图10A图示了具有相对均匀的内容的b×b块1000的分割决策,并且图10B图示了具有更详细的内容的b×b块1002的分割决策(例如,与图10A的相对均匀的内容相比,像素值有更大的差异)。

由(例如,软件)编码器执行的分割决策可以用于提取分割yb,并且从机器学习/深度学习模型获得的分割预测被标识为pb。在图10A中,由于相对均匀的内容,编码器很可能将yb设置为一个值,以便b×b块1000不应被分裂(即,不被分割为由虚线表示的b/2×b/2块),因为块1000可以由单个(强度和颜色)分量表示。在示例中,yb=1。如果分割预测pb是错误决策,则当Loss(partition)是加权损失函数时,分割损失成本将最多是wb。在某些情况下,不分裂决策和分裂决策的RD成本可能非常类似。因此,RD成本可能几乎相同,产生很小的处罚。即,Loss(RDC)很小。

在图10B中,编码器更可能将yb设置为一个值,以便b×b块1000应被分裂(即,被分割为由实线表示的b/2×b/2块),因为附加的细节使单个组分的表示不可取。例如,对于块1002,yb=0。如果坏决策由图10B中的模型做出(例如,不分裂b×b块1000),如果按式(2)中所述的wb对分割进行加权,则最多产生wb的处罚。然而,与图10A相反,RD成本差异可能要高得多。这种差异可以通过式(8)中的Loss(RDC)所表示的指数处罚来表示。

因此,并且一般而言,RD成本中的速率用于考虑编码器如何处理给定内容。换言之,速率提供关于给定编码器的块的复杂性的估计。这种复杂性方面在失真中是无法捕捉到的。

虽然到目前为止所描述的示例和公式只使用四叉树分割来表达,但是许多编解码器支持非四叉树(例如,非方形)分割。下面的公式通过将其包括在式(5)中并且通过将其包括在Loss(RDC)的计算中将本文中的教导扩展到非四叉树分割:

以及

在式(9)和式(10)中,i是要针对当前块大小b×b考虑的非四叉树分割的索引。进一步地,k是当前分割i中的子分割的索引,以便为当前非四叉树分割i的当前子分割k的RD成本。例如,并且参照图11,一直到最小块大小(在这里为b/8×b/8)的每个块大小都包括是否执行垂直分割、水平分割、分裂分割或不分割的决策。在特定块大小级别,关于是否进行分割以及哪个分割是最佳的决策可以是基于误差值,诸如RD成本。如果在块大小级别不进行分割,则不发生进一步的分割。同样,在该示例中,如果选择了垂直或水平分割,则不发生进一步分割为子节点。如果选择了分裂分割,则进一步的分割是可能的。

在该示例中,当最大CU为b×b块,则做出分割或不分割决策。没有分割导致b×b像素的最终块大小。否则,b×b块的垂直分割包括b/2×b像素的两个分割k,b×b块的水平分割包括b×b/2像素的两个分割k,或b×b块的分裂分割各自都包括四个b/2×b/2的分割。当考虑分裂分割模式是否是最佳模式时,考虑每个b/2×b/2块的递归分割(由图11中的“R”注解)。当考虑每个b/2×b/2块作为该递归分割的部分时,做出另一分割或不分割决策。b/2×b/2块的不分割导致b/2×b/2像素的最终块大小。当b/2×b/2块被分割时,垂直分割包括b/4×b/2像素的两个分割k,水平分割包括b/2×b/4像素的两个分割k,或者分裂分割各自都包括四个b/4×b/4的分割。类似地,当b/2×b/2块的分裂分割发生时,考虑每个b/4×b/4块的另一分割或不分割决策。b/4×b/4块的不分割导致b/4×b/4像素的最终块大小。b/4×b/4块的垂直分割包括b/8×b/8像素的两个分割k,b/4×b/4块的水平分割包括b/4×b/8像素的两个分割k,并且b/4×b/4块的分裂分割各自都包括b/8×b/8像素的四个分割。

如能够从图11中看出,并且鉴于图7,分割可以由树表示。树可以由向量表示。如果P表示所有有效分割的集合(或者,等价得,分割的对应表示),则可以对CNN进行训练以推断到集合P的映射。对CNN进行训练以推断分割包括定义适当的集合P并且使用集合P的每个索引i、k的适当的训练数据。例如,在编解码器使用64×64的代码化单元大小和四个基本分割类型的情况下,对于四叉树分割,只有与一个64×64分割决策、四个32×32分割决策和十六个16×16分割决策对应的21个决策。在CNN还用于确定非四叉树分割的情况下,21*4=84个可能的决策,其中,21与四叉树分割对应,并且4与图11的四个基本分割类型对应。

附加分割类型可以由对垂直分割类型和水平分割类型的修改造成。例如,非方形分割可以与四叉树的内部节点对应,该节点具有数量大于或等于两个子节点的子节点。分割类型可以将b×b块分裂为两个水平相邻的方形块(每个方形块的大小都是b/2×b/2)以及大小为b×b/2的矩形预测单元。分割类型可以将b×b块分裂为大小为b×b/2的矩形预测单元和两个水平相邻的方形块,每个方形块的大小都是b/2×b/2。分割类型可以将b×b块分裂为两个垂直相邻的方形块——每个方形块的大小都是b/2×b/2——以及大小为b/2×b的矩形预测单元。分割类型可以将b×b块分裂为大小为b/2×b的矩形预测单元以及两个垂直相邻的方形块,每个方形块的大小都是b/2×b/2。分割类型可以将b×b块分裂为垂直相邻的矩形块,每个矩形块的大小都是b×b/4。分割类型可以将b×b块分裂为四个水平相邻的矩形块,每个矩形块的大小都是b/4×b。这增加了另外六个分割类型,这些类型可以被称为扩展分割类型。

在添加了附加分割类型的情况下,决策的数量迅速增加。在编解码器使用128×128像素的最大代码化单元大小、四个基本分割类型和六个扩展分割类型(总共10个分割类型)的示例中,对于四叉树分割,每个分割类型只有85个决策(与一个128×128分割决策、四个64×64分割决策、十六个32×32分割决策和四十六个分割决策对应)。在模型还用于确定非四叉树分割的情况下,可以有850个决策(与85个决策乘以10个分割类型对应)。

图11还有助于理解式(5)的发展,从而理解Loss(RDC)。更具体地,并且如图11的阴影块所示,分割决策可以包括递归分割,其中,分裂分割模式需要考虑每个结果块的可用分割。更广泛地说,为了确定块b×b的分割或不分割是否是更好的,由于未对块进行分割而产生的速率和失真可以与由于后续分割决策而产生的速率和失真总数进行比较。在图11和式(5)中,只有分裂分割才能够导致进一步的分割决策。然而,在其他实施方式中,其他分割模式的进一步的分割决策是可能的。

为了将这些技术并入机器学习/深度学习模型中,可以使用图12的结构。在图12中,模型1200可以是具有关于图9的示例所描述的结构的CNN。模型1200使用训练数据1204进行训练,以推断图像块的模式决策。图像块可以是要使用帧间或帧内预测进行编码的图像(例如,视频帧)的块。在该示例中,模式决策是图像块的分割决策。分割决策可以是图像块的四叉树分割决策。在另一示例中,分割决策可以是包括关于图11所描述分割的分割。

为了对模型1200进行训练,将RD成本估计器1202附接到模型1200,但是没有任何可学习的参数。为了便于说明,模型1200和RD成本估计器1202的这种组合在本文中可以被称为机器学习模块。模型1200可以使用多个视频快(也称为训练块)的训练数据1204作为输入进行训练,以对机器学习模型进行训练。多个训练块使用编码器通过传统的编码方法(诸如关于图4和图6至图8所描述的编码方法)进行编码。在本文中,执行穷举搜索的编码器和使用模型1200的编码器可以被称为第一编码器或第二编码器,这仅仅是为了彼此区分,与编码器的使用顺序无关。对于多个训练块中的训练块,训练数据1204可以包括由实施传统编码方法的编码器确定的分割决策,例如,在编码器的穷举搜索中使用的所有分割模式的所有分割。对于多个训练块中的训练块,训练数据可以包括由于使用分割决策对训练块进行编码而产生的率失真值。对于每个分割决策,由于使用分割决策对训练块进行编码而产生的率失真值可以包括用于在没有进一步分割训练块的情况下对训练块进行编码的率失真成本和分裂训练块时产生的成本。例如,率失真值可以是与对应的分割决策的RDCb和Δb(以及相应RDCMIN)对应的ω和ο的值。分割决策的许多指示(例如,表示)是可能的。在示例中,关于每个分割决策的ω和ο的对应值,可以使用关于四叉树704所述的二进制标志的向量(例如,序列)。

将训练数据1204的子集1206输入到RD成本估计器1202中,以便估计从模型1200输出的分割的RD成本。率失真成本估计器可以接收来自机器学习模型的预测分割,可选地与对应分割决策的率失真值(例如,与RDCb和Δb对应的ω和ο的值)一起,并且估计损失函数的预测率失真值。例如,在训练阶段,生成模型1200的参数,以便模型1200针对训练块推断至少一些分割/不分割决策(预测分割pb),诸如关于图7所描述的四叉树分割决策,并且预测分割用于根据式(7)计算Loss(RDC)。预测分割pb在图12中由标记为64、32和8/16的箭头表示,在该示例中,这分别表示尺寸为64×64、32×32和16×16的块的四叉树决策。预测分割pb以及训练数据1204的分割决策的标记分割yb可以用于根据例如式(1)或式(2)确定Loss(partition)。值Loss(partition)和Loss(RDC)可以结合用于在模型1200的训练中最小化值Loss。

值得注意的是,用于对模型1200进行训练的这种技术使用从编码器的穷举分析中提取的ω和ο的值来估计分割决策,然后使用该分割决策来估计分割的成本。备选技术是直接估计ω和ο的值作为模型1200的训练的部分。然后,可以直接将RD成本并入模型1200中,以产生分割,而不是使用单独的RD成本估计器1202。然而,后一种这样的技术不太可取,因为估计ω和ο明显更困难。

在训练过程中,模型1200学习(例如,训练、构建、导出等)映射(即,函数),该映射接受块作为输入,并且输出块的分割。在训练过程中,并且为了使所学习的函数能够尽可能有用,最好使用大量的输入训练块对模型1200进行训练,这些输入训练块分别导致不同的分割决策,以便每个分割决策都与多个输入训练块相关联。

图13是使用从根据图122进行训练的机器学习/深度学习模型1200获得的推断进行编码的过程1300的流程图。模型1200可以在推断阶段使用,同时对当前块进行编码。即,在推断过程中,将RD成本估计器1202从其到模型1200的附接中去除,因为该网络的主要目标是获得图像块的分割。

在1302中,将输入呈现给模型1200。输入是要进行编码的图像块。图像块可以是一个颜色平面块。因此,块可以是亮度块。块可以是编码器的最大CU。虽然大小为64×64的块在上述公式的发展中进行了描述,但是块可以有任何大小。例如,块可以是128×128像素、32×32像素或任何大小的块,其分割通常由编码器确定。如上所述,编码器可以是任何基于块的编码器。

在1304中,模型1200推断或获得块的分割决策。例如,模型1200可以提供指示块的(例如,四叉树)分割的输出(被称为分割决策)。分割决策可以包括是否将块分裂为不同的分割,直到达到最小分割大小的一个或多个决策——诸如关于图7或图11所描述的决策。分割决策可以包括单个决策,即,块不应被分裂。分割决策可以包括块的分割决策和不分割决策的组合。模型1200可以由编码器使用,其中,最小的可能块分割为8×8分割。因此,在该示例中,对于16×16或更大的块(即,最大CU的子块),是否对块进行分裂的决策或确定由模型1200做出。模型1200可以由编码器使用,其中,最小的可能块分割为4×4分割。因此,在该示例中,对于8×8或更大的块(即,最大CU的子块),是否对块进行分裂的决策或确定由模型1200做出。

在1306中,使用分割决策对图像块进行编码。模型1200将输入提供给编码器,诸如编码器400,或者可以并入编码器中。例如,分割决策定义在图4的帧内/帧间预测阶段402预测的一个或多个块(例如,子块)的相应块大小。块大小可以被提供给帧内/帧间预测阶段402,或者模型1200可以并入帧内/帧间预测阶段402中。每个块的编码步骤的其余部分可以根据图4的描述继续进行,最后完成对每个块进行熵编码,如关于熵编码阶段408所描述的,因此在压缩比特流(诸如图4的比特流420)中对整个图像块进行熵编码。分割决策还可以被编码为压缩比特流。

解码器,诸如图5的解码器500,可以使用在压缩比特流中接收到的分割决策对图像块进行解码。即,对图像块进行解码的过程可以包括在压缩比特流——诸如图5的压缩比特流420——中接收将图像块分割为一个或多个子块的指示;并且通过对一个或多个子块进行解码,使用分割的指示对图像块进行解码。

为了便于说明,本文中的过程各自被描绘和描述为一系列框、步骤或操作。然而,根据本公开的框、步骤或操作可以按照各种顺序和/或同时发生。附加地,可以使用本文中没有呈现和描述的其他步骤或操作。此外,可能并不需要所有所示的步骤或操作来实施根据所公开的主题的技术。

上述编码和解码的方面说明了一些编码和解码技术。然而,要理解,“编码”和“解码”,如在权利要求书中所使用的那些术语,可以指对数据的压缩、解压缩、变换或任何其他处理或改变。

词语“示例”或“实施方式”在本文中被用来指充当示例、实例或说明。在本文中被描述为“示例”或“实施方式”的任何方面或设计都不一定被视为比其他方面或设计优选或有利。确切地说,词语“示例”或“实施方式”的使用旨在以具体的方式呈现概念。如本申请中所使用的,术语“或”旨在指包括性的“或”,而不是排他性的“或”。即,除非上下文另有说明或明确说明,否则“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可以在与服务器分离的设备——诸如,手持通信设备——上实施。在这种情况下,使用编码器400,发送站102可以将内容编码为编码视频信号,并且将编码视频信号发送给通信设备。反过来,通信设备然后可以使用解码器500对编码视频信号进行解码。可替代地,通信设备可以对本地存储在通信设备上的内容——例如,不由发送站102发送的内容——进行解码。其他发送站102和接收站106实施方案也是可用的。例如,接收站106可以是大体上固定的个人计算机,而不是便携式通信设备和/或包括编码器400的设备还可以包括解码器500。

进一步地,本公开的所有或部分实施方式可以采取计算机程序产品的形式,该计算机程序产品从例如有形的计算机可用或计算机可读介质是可访问的。计算机可用或计算机可读介质可以是任何设备,例如,该设备可以有形地包含、存储、传递或传输程序以供任何处理器使用或与其结合使用。例如,介质可以是电子、磁性、光学、电磁或半导体设备。其他合适的介质也是可用的。

为了允许便于理解本公开并且不限制本公开,已经描述了上述实施例、实施方式和方面。相反,本公开旨在涵盖包括在所附权利要求书的范围内的各种修改和等同布置,该范围应被赋予最广泛的解释来涵盖法律允许的所有这样的修改和等同结构。

37页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:跨医疗数据源的网络表示学习算法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!