视频代码化的感受野一致卷积模型的制作方法

文档序号:22688600发布日期:2020-10-28 12:58阅读:198来源:国知局
视频代码化的感受野一致卷积模型的制作方法



背景技术:

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

多年来,视频编码器的代码化效率已经提高。代码化效率可以意味着以最低可能的比特率对视频进行编码,同时使失真最小化(即,同时维持一定级别的视频质量)。然而,提高的代码化效率已导致了增加的计算复杂度。也就是说,编码器需要更多的计算时间来实现提高的代码化效率。因而,需要以更少的计算时间(即,降低的计算复杂度)获得提高的代码化效率。



技术实现要素:

所公开的实施方式的一个方面是一种用于确定用于在视频代码化时对块进行编码的模式决策的卷积神经网络(cnn)。该cnn包括用于提取用于确定模式决策的块的特征的特征提取层。非重叠卷积运算通过设置等于内核大小的步幅值来对特征提取层中的至少一个处的输入执行,模式决策包括对块的块分割,该块具有n×n大小,并且块的最小分割输出具有s×s大小。cnn还包括多个分类器。每个分类器包括分类层,该分类层中的每个分类层接收具有相应特征尺寸的相应特征映射。每个分类器配置为通过以下操作来针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2、……、n/s:在分类层中的一些连续分类层处应用大小为1×1的内核,以减小相应特征尺寸;并且通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出。每个分类器的初始分类层可以接收特征映射作为特征提取层中的最终特征提取层的输出。输出映射可以指示针对块的一个或多个模式决策。例如,输出映射可以指示分割决策。输出映射可以用于对块进行编码。

另一方面是一种使用卷积神经网络(cnn)确定用于在视频代码化时对块进行编码的模式决策的方法。该方法包括:使用cnn的特征提取层来提取用于确定模式决策的块的特征,其中,非重叠卷积运算通过设置等于内核大小的步幅值来对特征提取层中的至少一个处的输入执行,模式决策包括对块的块分割,该块具有n×n大小,并且块的最小分割输出具有s×s大小。该方法还包括:通过cnn的其中每一个均包括分类层的多个分类器来推断模式决策。推断模式决策包括:通过每个分类层接收具有相应特征尺寸的相应特征映射;并且通过多个分类器中的相应分类器来针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2、……、n/s。推断模式决策包括:在分类层中的一些连续分类层处应用大小为1×1的内核,以将相应特征尺寸减小一半;并且通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出。每个分类器的初始分类层可以接收特征映射作为特征提取层中的最终特征提取层的输出。如由输出指示的模式决策可以用于对块进行编码。

另一方面是一种用于对图像块进行解码的设备。该设备包括:处理器,该处理器配置为执行方法,该方法包括:在压缩比特流中接收将图像块分割成子块的指示。编码器使用卷积神经网络(cnn)来确定图像块的分割,该卷积神经网络包括用于提取用于确定分割的块的特征,其中,非重叠卷积运算通过设置等于内核大小的步幅值来对特征提取层中的至少一个处的输入执行,块具有n×n大小,并且块的最小分割输出具有s×s大小。cnn还包括多个分类器,其中,每个分类器包括分类层,分类层中的每个分类层接收具有相应特征尺寸的相应特征映射。每个分类器配置为通过以下操作来针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2、……、n/s:在分类层中的一些连续分类层处应用大小为1×1的内核,以减小相应特征尺寸;并且通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出。每个分类器的初始分类层可以接收特征映射作为特征提取层中的最终特征提取层的输出。该方法还包括:使用图像块的分割的指示来对图像块进行解码。

所公开的实施方式的另一方面是一种用于确定视频代码化时的块分割的卷积神经网络(cnn),块具有n×n的大小,并且由cnn确定的最小分割的大小为s×s。cnn包括特征提取层;级联层,该级联层从特征提取层接收块的第一特征映射,其中,每个第一特征映射的大小为s×s;以及分类器。每个分类器包括分类层,每个分类层接收具有相应特征尺寸的第二特征映射。每个分类器配置为通过以下操作来针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2,……,n/s:在分类层中的至少一些连续分类层处应用大小为1×1的内核,以将相应特征尺寸减小一半;并且通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出。

另一方面是一种使用卷积神经网络(cnn)来确定视频代码化时的块分割的方法,块具有n×n大小,并且由cnn确定的最小分割的大小为s×s。该方法包括:使用cnn的特征提取层来提取块的第一特征映射,其中,每个第一特征映射的大小为s×s;使用cnn的级联层来级联块的第一特征映射;以及通过cnn的其中每一个均包括分类层的分类器来推断块分割。该推断包括:通过每个分类层接收具有相应特征尺寸的第二特征映射;通过每个分类器通过以下操作来针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2、……、n/s:在分类层中的一些连续分类层处应用大小为1×1内核,以将相应特征尺寸减小一半;并且通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出。

另一方面是一种用于对图像块进行解码的设备,该设备包括:处理器,该处理器在压缩比特流中接收将图像块四叉树分割成子块的指示,其中,编码器使用卷积神经网络(cnn)来确定图像块的四叉树分割;并且使用图像块的四叉树分割的指示来对图像块进行解码。cnn包括特征提取层;级联层,该级联层从特征提取层接收块的第一特征映射,其中,每个第一特征映射的大小为s×s;以及分类器。每个分类器包括分类层。每个分类层接收具有相应特征尺寸的第二特征映射。每个分类器配置为通过以下操作来针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2、……、n/s:在分类层中的一些连续分类层处应用大小为1×1的内核,以将相应特征尺寸减小一半;并且通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出。

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

附图说明

本文中的描述参考了附图,其中,贯穿若干视图,相似的附图标记表示相似的部分。

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

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

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

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

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

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

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

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

图9是使用预测模式估计对图像块进行代码化的速率和失真成本的示例的框图。

图10是根据本公开的实施方式的用于模式决策的卷积神经网络(cnn)的第一示例的框图。

图11是根据本公开的实施方式的卷积运算的示例。

图12是根据本公开的实施方式的感受野的示例。

图13是根据本公开的实施方式的用于模式决策的cnn的第二示例的框图。

图14是根据本公开的实施方式的用于模式决策的cnn的第三示例的框图。

图15是根据本公开的实施方式的用于模式决策的cnn的第四示例的框图。

图16是根据本公开的实施方式的用于模式决策的cnn的第五示例的框图。

图17是根据本公开的实施方式的用于通过编码器对图像块进行编码的过程的流程图。

图18是根据本公开的实施方式的使用线性段来逼近量化参数的非线性函数的示例。

图19是将非线性qp函数用作输入的第一机器学习模型和将线性qp函数用作输入的第二机器学习模型的速率失真性能比较的示例。

图20是块的非正方形分割的示例。

具体实施方式

可以将编码技术设计为用于使代码化效率最大化。代码化效率可以意味着以最低可能的比特率对视频进行编码,同时使失真最小化(例如,同时维持一定级别的视频质量)。代码化效率通常就速率和失真两者而言进行测量。速率是指编码(诸如对块、帧等进行编码)所需的比特数目。失真测量例如源视频块与源视频块的重构版本之间的质量损失。例如,可以将失真运算为源块的像素值与重构块的那些像素值之间的均方误差。通过执行速率失真优化过程,视频编解码器相对于对视频进行编码所需的速率优化了失真量。

现代视频编解码器(例如h.264(其也被称为mpeg-4avc;vp9);h.265(其也被称为hevc;avs2和av1))限定并使用了大量工具和配置(例如,参数)以提高代码化效率。视频编码器可以使用模式决策来检查(例如,测试、评估等)参数的至少一些有效组合,以选择产生相对较低的速率失真值的组合。模式决策的示例是确定用于对块进行代码化的最佳帧内预测模式的帧内预测模式决策。模式决策的另一示例是确定代码化单元的最佳分割的分割决策。模式决策的另一示例包括关于要在将块(诸如残差块或图像块)从像素域变换到频域以形成包括变换系数的变换块时使用的变换类型和/或大小的决策。

为了评估一个组合是否优于另一组合,可以针对所检查的组合中的每一者计算度量,并且比较相应度量。在示例中,度量可以将上述速率与失真组合,以产生速率失真(rd)值或成本。rd值或成本可以是单个标量值。

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

代替穷举搜索,编码器一找到具有小于设置阈值的rd成本的模式即可终止模式搜索。然而,这意味着如果编码器已继续进行了模式搜索,那么稍后可能会找到更佳模式。在一些情况下,可以或可以不执行穷举搜索,但利用粗略估计来替代整个rd成本运算。这可以进一步降低编码器进行的决策。

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

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

一旦对机器学习模型进行了训练,模型就将输出计算为其输入的确定性函数。在示例中,机器学习模型可以是神经网络模型,该神经网络模型可以由卷积神经网络(cnn)实施。可以期望训练有素的机器学习模型在代码化效率方面但以明显较低的计算成本或以规则或面向数据流的计算成本来与蛮力方法紧密匹配。

除了将适合的训练数据和输入用于机器学习模型之外,机器学习模型的架构还可以对模型的性能和/或预测能力而言为关键的。本文中所描述的模型包括cnn的卷积层,该卷积层具有遵守递归分割的边界的滤波器设计。也就是说,当分析诸如用于确定四叉树分割的图像区时,针对图像区提取(例如运算、推断等)的特征限制于图像区本身,而不是用于其它图像区。另外,本文中所描述的模型允许模型具有较小大小(即,与使用完全连接的层的模型相比,具有减少的参数数目的模型)。可以在减少计算复杂度的同时显著地提高视频代码化中的模式决策的推断准确度。

下文将首先参考可以并入有教导的基于块的编解码器来讨论根据本文中的教导的本发明的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中的cpu202可以是中央处理单元。可替代地,cpu202可以是任何其它类型的装置或现在存在或以后开发的能够操纵或处理信息的多个装置。尽管所公开的实施方式可以用如图所示的单个处理器(例如cpu202)来实践,但可以通过使用一个以上的处理器来实现速度和效率上的优点。

在实施方式中,计算装置200中的存储器204可以是只读存储器(rom)装置或随机存取存储器(ram)装置。任何其它合适类型的存储装置都可以用作存储器204。存储器204可以包括由cpu202使用总线212访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,应用程序210包括至少一个程序,该程序允许cpu202执行本文中所描述的方法。例如,应用程序210可以包括应用1至n,其进一步包括执行本文中所描述的方法的视频代码化应用。计算装置200还可以包括辅助存储装置214,其可以例如是与移动的计算装置200一起使用的记忆卡。因为视频通信会话可以包含大量信息,所以可以将它们全部或部分地存储在辅助存储装置214中,并根据需要将其加载到存储器204中。

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

计算装置200还可以包括图像感测装置220(例如相机)或现在存在的或以后开发的可以感测图像(诸如操作计算装置200的用户的图像)的任何其它图像感测装置220,或与该图像感测装置通信。可以将图像感测装置220定位成使得其朝向操作计算机装置200的用户。在示例中,可以将图像感测装置220的位置和光轴配置成使得视野包括与显示器218直接相邻的区域,并且从该区域可以看到显示器218。

计算装置200还可以包括声音感测装置222(例如麦克风)或现在存在的或以后开发的可以感测计算装置200附近的声音的任何其它声音感测装置,或与该声音感测装置通信。可以将声音感测装置222定位成使得其朝向操作计算装置200的用户,并且可以将其配置为接收在用户操作计算装置200时由用户发出的声音(例如语音或其它话语)。

尽管图2将计算装置200的cpu202和存储器204描绘为集成到单个单元中,但可以利用其它配置。cpu202的操作可以分布在可以直接耦合或跨局域网或其它网络耦合的多个机器(每个机器具有一个或多个处理器)上。存储器204可以分布在多个机器上,诸如基于网络的存储器或执行计算装置200的操作的多个机器中的存储器。尽管在此处被描绘为单个总线,但计算装置200的总线212可以由多个总线组成。另外,辅助存储装置214可以直接耦合至计算装置200的其它组件,或可以经由网络访问,并且可以包括单个集成单元(诸如记忆卡)或多个单元,诸如多个记忆卡。因此,可以以各种配置来实施计算装置200。

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

不管帧306是否被划分成分段308,都可以将帧306进一步细分为块310,其可以包含与例如帧306中的16×16像素对应的数据。也可以将块310布置为包括来自像素数据的一个或多个分段308的数据。块310还可以具有任何其它合适的大小,诸如4×4像素、8×8像素、16×8像素、8×16像素、16×16像素或更大。例如,并且如下文关于图6所描述的,块可以包括来自亮度平面的亮度像素或来自色度平面的色度像素。

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

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

接下来,仍然参照图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可以例如通过提供存储在存储器204中的计算机软件程序而实施在接收站106中。该计算机软件程序可以包括机器指令,该机器指令在被诸如cpu202的处理器执行时使接收站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的一些实施方式中,在环路滤波级512之后应用后置滤波级514。环路滤波级512可以包括可选去块滤波级。另外或可替代地,编码器400包括环路滤波级416中的可选去块滤波级。

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

在示例中且在不失一般性的情况下,超级块可以是基本或最大代码化单元(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像素块的块可以包括亮度块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的范围内的值),并且可以使用例如八个比特来存储或发送。尽管参考yuv颜色模型描述了本公开,但可以使用任何颜色模型。

减少空间冗余可以包括:将块变换到如上文所描述的频域中。例如,编码器的单元(诸如图4的熵编码级408)可以使用基于空间频率的变换系数值来执行dct。

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

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

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

尽管其它分割也是可能的(如上文关于图6所描述的),但可以使用如在图7的示例中所示的四叉树分割或代码化来对cu或块进行代码化。示例示出了块700的四叉树分割。然而,可以诸如通过如下文所描述的编码器(例如图4的编码器400)或机器学习模型来以不同方式分割块700。

将块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中的子块对应。在括号之间示出了对应子块。例如,节点704-1(其具有值0)与块700-1对应。

根节点704-0与块700对应。因为将块700拆分成四个子块,所以根节点704-0的值是拆分比特(例如1)。在中间级别处,标记指示是否将块700中的子块进一步拆分成四个子子块。在这种情况下,因为将块700-2拆分成块702-1、702-2、702-3和702-4,所以节点704-2包括标记“1”。因为不对对应块进行拆分,所以节点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。如果在810中的测试为肯定的,那么在812中,过程800将最佳成本更新为当前模式的成本(即,best_cost=rd_costi),并且将当前最佳模式索引(best_mode)设置为循环变量i(best_mode=i)。过程800然后继续进行至814,以对循环变量i进行增量(即,i=i+1),以准备好检查下一模式(若存在)。如果在810中的测试是否定的,那么过程800继续进行至814。

在816中,如果存在更多模式要检查(即,如果i≤k),那么过程800返回至808;否则,过程800继续进行至818。在818中,过程800输出最佳模式的索引best_mode。输出最佳模式可以是指将最佳模式返回至过程800的调用者。输出最佳模式可以是指使用最佳模式对图像进行编码。输出最佳模式可以具有其它语义。过程800在818中在输出最佳模式之后终止。

图9是通过使用预测模式mi估计对图像块x进行代码化的速率和失真成本的示例900的框图。过程900可以由编码器(诸如图4的编码器400)执行。过程900包括:使用预测模式mi执行图像块x的假设编码,以确定对块进行编码的rd成本。过程900可以由过程800在808中使用。

假设编码过程是实施代码化步骤但不将比特输出到压缩比特流(诸如图4的压缩比特流420)中的过程。由于目的是估计速率(也被称为比特率),因此可以将假设编码过程视为或称为速率估计过程。假设编码过程计算对图形块x进行编码所需的比特数目(rate)。示例900还基于图像块x与图像块x的重构版本之间的差异来运算失真(distortion)。

在904中,使用模式mi来确定预测。可以如相对于图4的帧内/帧间预测级402所述确定预测。在906中,将残差确定为图像块902与预测之间的差。在908和910中,诸如分别相对于图4的变换级404和量化级406所述对残差进行变换和量化。通过速率估计器912计算速率(rate),该速率估计器912执行假设编码。在示例中,速率估计器912可以执行熵编码,诸如相对于图4的熵编码级408所描述的。

在914中将量化残差去量化(诸如(例如)相对于图4的去量化级410所描述的),在916中对量化残差进行逆变换(诸如(例如)相对于图4的逆变换级412所描述的),并且在918中对量化残差进行重构(诸如(例如)相对于图4的重构级414所描述的),以生成重构块。失真估计器920运算图像块x与重构块之间的失真(即,视频质量的损失)。在示例中,失真可以是图像块x与重构块的像素值之间的均方误差。失真可以是图像块x与重构块的像素值之间的绝对差误差之和。可以使用任何其它合适的失真测量。

然后根据distortion+λmode×rate通过使用拉格朗日乘数将速率rate和失真distortion组合成标量值(即,rd成本)。

可以根据执行示例900的操作的编码器,如本文中所述运算拉格朗日乘数λmode。

图8和图9图示了用于模式决策的蛮力方法在很大程度上是串行过程,该串行过程基本上通过使用候选模式确定具有最佳成本的模式来对图像块x进行代码化。机器学习可以用于降低模式决策中的计算复杂度。

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

如上文所提及,cnn是机器学习模型的示例。在cnn中,特征提取部分可以包括一组卷积运算,其通常是用于基于滤波器(例如大小为k的正方形)对输入图像进行滤波的一系列滤波器。例如,且在机器视觉的上下文中,这些滤波器可以用于找到输入图像中的特征。特征可以包括例如边缘、边角、端点等。随着堆叠的卷积运算的数目增加,稍后的卷积运算可以找到更高级别的特征。

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

如从此描述中可看出,cnn网络通常由若干卷积运算(例如特征提取部分的卷积层)紧接着形成分类部分的若干完全连接层(也被称为密集层)组成。通常在机器学习的训练阶段期间确定每种类型的操作的数目及其相应大小。如本领域的技术人员应认识到,可以将附加层和/或操作包括在每个部分中。例如,可以将池化(pooling)、最大池化(maxpooling)、dropout(丢弃)、激活、归一化、批量归一化和其它操作的组合与卷积运算(即,在特征提取部分中)和/或完全连接操作(即,在分类部分的各个层中)分组在一起。卷积运算可以使用separableconvolution2d或convolution2d运算。例如,卷积层可以是从convolution2d或separableconvolution2d运算开始,紧接着零个或多个操作(例如池化、dropout、激活、归一化、批量归一化、其它操作或其组合),直至到达另一卷积层、密集层或cnn的输出为止的一组操作。

类似地,密集层可以是从密集操作(即,完全连接层)开始,紧接着零个或多个操作(例如池化、dropout、激活、归一化、批量归一化、其它操作或其组合),直至到达另一卷积层、另一密集层或网络的输出为止的一组操作或层。基于卷积网络的特征提取与使用密集操作的特征分类之间的边界可以通过平坦化操作来进行标记,该平坦化操作将来自特征提取的多维矩阵平坦化为矢量。

卷积层中的每一者可以由一组滤波器组成。虽然将滤波器一次性应用于输入数据的子集,但诸如通过扫掠输入将滤波器应用于完整输入中。由该层执行的操作可以是线性/矩阵乘法。下文描述了卷积滤波器的示例。可以使用激活函数来对卷积滤波器的输出进行进一步滤波。激活函数可以是线性函数或非线性函数(例如sigmoid函数、arctan函数、tanh函数、relu函数等)。

完全连接操作中的每一者是每个输入通过权重连接至每个输出的线性操作。因而,具有n个输入和m个输出的完全连接层可总共具有n×m个权重。密集操作通常可以紧接在非线性激活函数之后,以生成该层的输出。

一些cnn网络架构可以包括以不同粒度(例如以超级块的不同子块大小)提取特征的若干特征提取部分以及接收提取部分中的每一个的最终卷积层的(多个)输出的平坦化层(其可以被称为级联层)。平坦化层将由不同特征提取部分提取的所有特征聚合到一个输入集中。可以将平坦化层的输出馈送到分类部分的完全连接层中(即,用作分类部分的完全连接层的输入)。因而,整个网络的多个参数可以由特征提取部分(即,卷积层)与分类部分(即,完全连接层)之间的接口处的多个参数决定(例如限定、设置)。也就是说,网络的多个参数由平坦化层的参数决定。这是上述架构的一个缺点。

存在上述cnn架构的其它缺点,该cnn架构包括输出被馈送到完全连接层中的平坦化层。首先,具有完全连接层的模型趋向于具有大量参数和操作。在一些情况下,机器学习模型可以包括超过一百万个参数。可能无法有效地或高效地使用这些大型模型(如果存在的话)来推断可能会受到约束(例如计算约束、能量约束和/或存储器约束)的装置(例如移动装置)上的分类。也就是说,一些装置可以不具有足够的计算能力(例如就速度而言)或存储器存储(例如ram)来处理(例如执行)此类大型模型。

其次,此类网络架构的完全连接层据说具有由特征提取部分提取的所有特征的全局视图。因而,完全连接层可以例如失去特征与该特征在输入图像中的位置之间的相关性。因而,卷积运算的感受野可以由完全连接层混合。可以将感受野限定为输入空间中的特定特征正在查看和/或受到影响的区域。下文描述了感受野的示例。然而,目前,可以关于图7简要地说明其中感受野被混合的问题。

即,当如上文所描述的cnn(例如包括平坦化层和完全连接层的cnn)可以用于确定图7的块700的分割时。cnn可以提取与块700的不同区域和/或子块大小对应的特征。因而,例如,将从块700中的块700-1、700-2、700-3和700-4提取的特征平坦化为完全连接层的一个输入矢量。在推断是否要通过完全连接层将子块700-2分割成块702-1、702-2、702-3和702-4时,块700-1、700-3和700-4中的至少一者的特征可以由完全连接层使用。因而,子块(例如块700-1、700-3和700-4)的与要推断分割决策的子块702无关的特征可以用于推断。这可以导致错误推断和/或基于不相关信息的推断。

相比之下,根据本文中的本教导的cnn架构以卷积层的级联的感受野遵守四叉树边界的方式分析帧和帧的块。也就是说,当分析诸如用于确定四叉树分割的图像区域时,针对图像区域提取(例如运算、推断等)的任何特征的感受野限制于图像区域本身。这可以通过使用全卷积网络并仔细设计卷积运算的滤波器大小以产生分析区域(不论是64×64区域、32×32区域还是16×16区域)的矩阵表示来实现。根据本公开的实施方式可以确保用于确定例如块分割的(在训练期间生成并且在推断期间使用的)机器学习模型不是错误地基于不相关或没有关联的特征(诸如来自图像区域外部的像素)的。

在图10中示出了用于视频代码化的这种感受野一致卷积模型的一个示例。具体地,图10是根据本公开的实施方式的用于模式决策的卷积神经网络(cnn)1000的示例的框图。cnn1000可以用于确定图像块的块分割。块可以是超级块。例如,cnn1000可以用于确定在图4的帧内/帧间预测级402中所使用的块大小。分割可以是诸如相对于图7所描述的四叉树分割。cnn1000可以用于确定帧(诸如图3的帧304)的帧内代码化块或帧间代码化块的分割。cnn1000可以由编码器(其中,最小的可能块分割是8×8分割)使用。因而,需要针对16×16或更大的块(即,超级块的子块)做出是否要拆分块的确定。

如下文进一步描述的,cnn1000的特征提取部分的并行分支的数目可以是可参数化的(例如可配置的)。例如,在配置中,可以仅使用一个分支(例如线性分支)。只要维持如下文进一步描述的感受野一致性特性,这就是可能的。除了块的顶部行和左侧行之外,感受野一致性特性意味着块的感受野边界不跨越块的边界。

将要编码的块1002(即,图像块)呈现给cnn1000。块1002可以是一个彩色平面块。因而,块1002可以是亮度块。块是一个彩色平面块通过图10中的“64×64×1”中的“×1”来示出。如所提及的,块1002可以是超级块。虽然示出了大小为64×64的超级块并且该超级块用于描述cnn1000,块1002可以具有任何大小。例如,块1002可以是128×128、32×32或任何大小的块,已经由编码器(诸如图4的编码器400)为该块确定了例如四叉树分割。在另一示例中,并且由于预测模式可以取决于针对要分割的块的相邻(即,外围)像素,因此块1002(即,用作cnn1000的输入的块)可以包括在要确定分割的块的外部的像素。例如,如果要确定64×64块的分割,那么可以将大小为65×65×1的块用作cnn1000的输入。也就是说,例如,可以将要确定分割的块的左侧和顶部邻近像素包括在cnn1000的输入块中。下文描述了诸如配置的示例。

一个或多个特征提取层1003形成如图所示的三个分支,即,分支1003-a、分支1003-b和分支1003-c。特征提取层中的分支的数目可以配置为包括更多或更少的分支。分支中的每一者可以包括一个或多个层。在每一层处,提取了相应特征映射。在以下描述中,特征映射(诸如特征映射1004)被称为具有a×b×c的尺寸。例如,特征映射1004的大小为8×8×256。这应解释为如下:特征映射1004包括256个特征映射,并且256个特征映射中的每一者的大小为8×8像素(或特征)。换句话说,可以将特征映射1004视为256个矩阵的集合,其中,每个矩阵的大小为8×8。在cnn1000的一种配置中,可以分离每种分割类型的特征提取,而不是共享如图10中的特征提取。下文更详细地描述了使用这种配置的架构。

特征映射处的特征数目可以是可配置的。例如,虽然将特征映射1004示出为8×8×256,但其可以是8×8×n,其中,n是任何期望数目的特征。在不同实施方式中,其它大小也是可能的,诸如下文相对于图13所描述的大小。在一些示例中,可以将特征压缩率应用于机器学习模型以扩大或减小模型中的特征数目。例如,可以将特征压缩率乘以所有特征映射以用于特征扩大(或减小)。

分支1003-a在分支1003-a的第一层中提取与块1002的8×8块对应的特征。分支1003-a与块1002一起使256个滤波器(也被称为内核)卷积。图11是根据本公开的实施方式的卷积运算的示例1100。卷积运算可以用于生成本文中所描述的特征映射中的任一者。

示例1100包括图像区域1102。出于此示例的目的,将该区域1102示出为6×6区域。然而,应理解,可以将卷积滤波器应用于任何大小的块、超级块、图像区域或图像。

在此示例中使用大小为3×3的滤波器1104。然而,滤波器可以具有不同大小。示例1100使用步幅等于滤波器大小的非重叠卷积运算。因而,在水平方向和垂直方向中的每一个上的步幅大小为3。将滤波器1104示出为包括二进制(即,零和一)值。然而,滤波器的值可以是任何值(例如正和/或负实数值)。如上文所提及,可以在机器学习模型的训练阶段期间通过机器学习模型来确定滤波器的值。特征映射1114是使区域1102和滤波器1104卷积的输出。

首先(例如使用矩阵乘法运算)使滤波器1104与子区域1106卷积。因此,可以将特征映射1114的像素1116运算为(0×0+9×1+3×0+9×0+4×1+8×1+5×0+1×0+2×1)=23。随后使滤波器1104与子区域1108卷积。因此,可以将像素1118运算为(4×0+8×1+3×0+0×0+0×1+0×1+9×0+9×0+10×1)=18。随后使滤波器1104与子区域1110卷积。因此,可以将像素1120运算为(9×0+5×1+1×0+5×0+9×1+3×1+8×0+3×0+6×1)=23。随后使滤波器1104与子区域1112卷积。因此,可以将像素1122运算为(5×0+1×1+6×0+2×0+7×1+7×1+8×0+10×0+3×1)=18。

再次参照图10,分支1003-a使块1002与大小分别为8×8的256个滤波器卷积。使用等于滤波器大小的步幅(即,等于8的步幅)。因此,提取了大小均为8×8的256个特征映射(即,特征映射1004)。大小为8×8的滤波器由相同大小的内核限定,其中,内核中的每个条目都可以是实数。在示例中,条目可以是大于1的非负整数。因此,可以通过计算块与相同大小的滤波器内核之间的内积来实现对8×8块进行滤波。在机器学习中,可以在训练过程中学习滤波器内核(即,构成内核值的实数)。

分支1003-b提取大小均为8×8的256个特征映射(即,特征映射1008)。分支1003-b首先在分支1003-b的第一层处通过使块1002与大小均为4×4的128个滤波器卷积并且使用步幅4(即,等于滤波器大小的步幅)来提取特征映射1006。在分支1003-b的第二层处,使特征映射1006中的128个特征映射中的每一个与使用步幅2的两个2×2滤波器卷积,从而产生特征映射1008。

分支1003-c提取大小均为8×8的256个特征映射(即,特征映射1014)。分支1003-c首先在分支1003-c的第一层处通过使块1002与大小均为2×264个滤波器卷积并且使用步幅2来提取特征映射1010。在分支1003-b的第二层处,使特征映射1010的64个特征映射中的每一个与使用步幅2的两个2×2滤波器卷积,从而产生128个特征映射(即,特征映射1012)。在分支1003-c的第三层处,使特征映射1012中的128个特征映射中的每一者与使用步幅2的两个2×2滤波器卷积,从而产生特征映射1014。

应注意,每当将滤波器应用于单元(例如区域1102或特征映射)时,单元在每个维度上缩小了滤波器的大小(即,向下采样)。

特征映射1010是块1002中的32×32块的特征映射。特征映射1006是块1002中的16×16块的特征映射。特征映射1004是块1002中的8×8块的特征映射。特征映射1008将特征映射1006归一化为比如大小为8×8的特征映射1004。同样,紧接着特征映射1014的特征映射1012将特征映射1010归一化为类似地具有大小8×8。

在示例中,可以经由连续卷积将特征映射归一化为可以由编码器使用的最小可能分割的特征映射。因而,当使用图10的cnn1000时,由编码器可以使用与最小可能分割类型对应的大小8×8。类似地,如果最小可能分割是4×4,那么特征提取层1003可以将特征映射归一化为具有大小4×4。在示例中,特征提取层1003可以包括附加分支,并且分支中的每一个将经由连续卷积生成大小均为4×4的特征映射。在另一示例中,可以将特征映射归一化为不一定与最小分割大小对应的大小。例如,可以将特征映射归一化为大于或等于8×8的任何大小。

级联层1016接收特征映射1004、1008和1014。另外,当cnn1000用于确定(例如推断、提供等)要进行帧内预测的块1002的分割时,还可以将邻近块的至少一些样本用作级联层1016的输入。这是因为帧内预测使用了邻近块的至少一些样本(即,像素)。虽然出于说明性目的示出了来自顶部邻近块的采样(在图10中用顶部指示)和来自左侧邻近块的采样(在图10中用左侧指示),但可以根据用于处理视频帧的块的扫描顺序来使用其它邻近块。例如,在光栅扫描顺序的情况下使用了左侧和顶部。在实施方式中,将顶部和左侧邻近块的所有样本用作级联层1016的输入。然而,且如上文所提及,可以将顶部和左侧邻近块的样本包括在输入块(例如图10的块1002)中。另外,在用于确定其它模式决策参数(例如帧间预测参数或变换参数)的cnn中,可以或可以不将来自邻近块的样本用作cnn的输入。

在实施方式中,并且如本领域的技术人员应了解,顶部可以是在块1002的顶部边缘外围的先前重构的像素的行;并且左侧可以是在块1002的左侧边缘外围的先前重构的像素的列。可以存在与顶部对应的多达64个样本和与左侧对应的多达64个样本。如上文所提及,可以将顶部和左侧中的一者或两者添加至呈现给cnn的输入块,或可以将顶部和左侧中的一者或两者分别呈现给cnn。

可选地,可以将量化参数(qp、q或q)的非线性函数用作cnn的输入。视频编解码器中的qp可以用于控制速率与失真之间的折衷。通常,较大qp是指产生较低速率但较高失真的(例如变换系数的)较高量化;且较小qp是指产生较高速率但较低失真的较低量化。

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

由于qp可以用于控制速率与失真之间的折衷,因此qp可以用于运算与如上文关于图8和图9所描述的穷举搜索中的参数的每个组合相关联的rd成本。在示例中,qp可以用于导出乘数,该乘数用于将速率和失真值组合成一个度量。一些编解码器可以将乘数称为拉格朗日乘数(表示为λmode);其它编解码器可以使用被称为rdmult的类似乘数。每个编解码器可以具有运算乘数的不同方法。除非上下文明确说明,否则无论编解码器如何,乘数在本文中被称为拉格朗日乘数或拉格朗日参数。

需要重申,拉格朗日乘数可以用于评估竞争模式(即,参数的竞争组合)的rd成本。具体地,让rm表示由使用模式m所产生的速率(以比特为单位),且让dm表示所产生的失真。可以将选择模式m的rd成本计算为标量值dm+λmoderm。通过使用拉格朗日参数λmode,随后能够比较两个模式的成本并选择具有较低组合rd成本的一者。评估rd成本的这种技术是至少一些视频编解码器中的模式决策过程的基础。

不同视频编解码器可以使用不同技术来根据qp计算拉格朗日乘数。这部分地由于以下事实:不同编解码器针对qp和qp的使用方法可以具有不同含义(例如定义、语义等)。例如,实施h.264标准的编解码器可以根据λmode=0.85×2(qp-12)/3来导出拉格朗日乘数λmode。实施hevc标准的编解码器可以使用类似的公式。实施h.263标准的编解码器可以根据λmode=0.85·qh2632来导出拉格朗日乘数λmode:实施vp9标准的编解码器可以根据rdmult=88·q2/24来导出乘数rdmult。实施av1标准的编解码器可以根据λmode=0.12·qav12/256来导出拉格朗日乘数λmode。

如在以上情况中可看出,乘数与qp具有非线性(例如指数或二次)关系。应注意,乘数可以在用于相应编解码器中之前经历其它改变,以对编码器在压缩比特流中包括的附加辅助信息作出解释。辅助信息的示例包括图片类型(例如帧内预测帧相对于帧间预测帧)、颜色分量(例如亮度或色度)和/或感兴趣区。在示例中,这种附加改变可以是对乘数的线性改变。

鉴于上述情况,如果将qp本身的值用作机器学习模型的输入,那么在qp如何用于评估rd成本与qp如何用于训练机器学习模型之间可以出现脱节。对于使用qp来确定rd成本的编解码器,与使用线性(例如标量)形式的qp相比,可以通过将非线性(例如指数、二次等)形式的qp用作机器学习模型的输入来获得更佳性能。更佳性能可以是指较小网络大小和/或更佳推断性能。在示例中,非线性函数可以由分段线性段逼近。

如所提及的,可以将qp用作cnn的输入。在图10的示例中,将qp用作级联层1016的输入。更具体地,二次函数(即,qp2)在图10中示出。然而,如上文所描述的,所使用的函数取决于编解码器;更具体地,所使用的函数取决于由编解码器实施的标准。例如,在实施h.263、vp9或av1的编解码器的情况下可以使用二次函数;并且在实施h.264或hevc的编解码器的情况下可以使用指数函数。

可以由级联层1016接收总共897个输入。这些输入包括特征映射1004的256个输入、特征映射1008的256个输入、特征映射1014的256个输入、顶部处的64个输入、左侧处的64个输入和qp的非线性值(诸如qp2。在一些实施方式中,也可以将与块1002的左上角相邻的样本(即,像素)用作级联层1016的输入。在这种情况下,级联层1016接收898个输入。

cnn1000包括三个分类器,即,分类器1018、1020和1022。分类器1018、1020、1022中的每一个包括一组分类层并且使用如下文进一步描述的卷积。

分类器1018针对块1002中的大小为16×16的子块推断(即,输出)分割决策。应注意,可以将块1002分割成16个块(包括4×4个输出),每个块的大小为16×16。因而,分类器1018将从级联层1016接收到的特征映射(其大小均为8×8)减小至4×4的大小。

首先,特征映射1019通过使用2×2可分离卷积滤波器应用非重叠卷积来从自级联层1016接收到的特征映射中获得以将一些特征映射组合成一个,从而产生大小分别为4×4的256个特征映射。

其次,连续地应用一系列1×1卷积以将特征尺寸大小逐渐减小到1。因而,将1×1×128卷积(其中,滤波器的数目为128)应用于特征映射1019,从而产生4×4×128特征映射,对4×4×128特征映射应用1×1×64卷积(其中,滤波器的数目为64),从而产生4×4×64特征映射,对4×4×64特征映射应用1×1×32卷积,从而产生4×4×32特征映射,对4×4×32特征映射应用1×1×1卷积,从而产生4×4×1特征映射,即,特征映射1025。

对于块1002中的每个16×16子块,分类器1018推断是拆分子块还是不拆分子块。因而,分类器1018输出分别与块1002中的16×16子块中的每一者对应的16个决策。16个决策可以是二进制决策。也就是说,可以将特征映射1025视为二进制决策的矩阵。例如,零(0)可以与不拆分子块的决策对应,而一(1)可以与拆分子块的决策对应。分类器1018的输出的顺序可以与块1002中的16×16子块的光栅扫描顺序对应。在另一示例中,决策可以与概率(即,介于0到1的范围内的值)或一些其它值(诸如介于0到100的范围内的值)对应。当决策大于适合于决策值的范围(例如0.9、0.75、90%等)的阈值时,可以将其视为与二进制决策1对应。

分类器1020针对块1002中的大小为32×32的子块推断(即,输出)分割决策。分类器1020接收特征映射1019并且使特征映射中的每一个与2×2可分离卷积滤波器卷积,以将特征映射1019中的特征映射组合成一个,从而产生特征映射1021。应注意,可以将块1002分割成大小分别为32×32的2×2块。因而,分类器1020通过使用1×1滤波器的一系列非重叠卷积将特征映射1019(其大小分别为4×4)减小到2×2的大小,以将特征尺寸大小逐渐减小到1(如上文相对于特征映射1019所描述的),从而产生特征映射1027。针对块1002中的每个32×32子块,分类器1020推断是拆分子块还是不拆分子块。因而,分类器1020输出分别与块1002中的32×32子块中的每一个对应的4个决策。

分类器1022针对块1002本身推断(即,输出)分割决策。分类器1022接收特征映射1021并且使特征映射中的每一个与2×2可分离卷积滤波器卷积,从而产生特征映射1023,该2×2可分离卷积滤波器将特征映射1021中的一些特征映射组合成1。应注意,可以将块1002分割成大小为64×64的仅一个1×1块。因而,分类器1022通过使用1×1滤波器的一系列非重叠卷积将特征映射1023(其大小分别为1×1)减小到1×1的大小,以将特征尺寸大小逐渐减小到1(如上文相对于特征映射1019所描述的),从而产生特征映射1029。针对块1002,分类器1022推断是拆分块1002还是不拆分块1002。因而,分类器1022输出与是否要将块1002拆分成四个32×32子块对应的一个决策。

描述了大小为2×2的可分离卷积滤波器,以获得(分别为分类器1018、1020和1022的)特征映射1019、1021和1023,以便针对大小为64×64的块分别最终确定4×416×16分割(即,特征映射1025)、2×232×32分割(即,特征映射1027)和1×164×64分割(即,特征映射1029)。然而,在一般情况下,只要分类器1018、1020和1022如所描述确定了4×416×16分割(即,特征映射1025)、2×232×32分割(即,特征映射1027)和1×164×64分割(即,特征映射1029)就可以使用大小为2k的任何卷积滤波器。

在分类器1018中,将具有4×4×1的尺寸的特征映射1025示出为从特征映射1034(其大小为4×4×32)直接导出(即,不存在附加中间卷积运算)。然而,不需如此,且可以在特征映射1034与特征映射1025之间使用任何数目的附加卷积运算。这通过点划线1036示出。同样的情况可以分别相对于特征映射1027和特征映射1029适用于分类器1020和1022。

在示例中,可以将参数用作cnn的可配置参数(即,阈值参数)。如果剩余特征的数目小于或等于阈值参数,那么可以将下一层的特征的数目设置为1。在图10的cnn1000的示例中,将阈值参数设置为32。因为特征映射1034的特征的数目等于阈值参数(即32),所以随后,下一层与产生特征映射1025的层对应,该层具有特征尺寸为1。在示例中,分类器中的每一者可以配置有不同的相应阈值参数。在另一示例中,所有分类器可以配置为使用相同的阈值参数。

在示例中,可以使用特征减少参数f来降低分类器内的特征映射维度(即,特征映射的最终维度)。例如,分类器可以根据级数incomingfeature、incomingfeature/f、incomingfeature/f2、......、1(其中,incomingfeature是由层最初接收到的特征的数目)来减少信道的数目。在示例中,分类器中的每一者可以配置有不同的相应特征减少参数。在另一示例中,所有分类器可以配置为使用相同的特征减少参数。

现在使用分类器1018来说明阈值参数和特征减少参数。相对于分类器1018,incomingfeature是256(如由大小为4×4×256的特征映射1019所图示),特征减少参数f是2,并且阈值参数是32。因而,分类器1018根据级数256、256/2、256/22、256/23和1来减少信道的数目。也就是说,分类器1018根据级数256、128、64、32和1来减少信道的数目。分类器1018不包括信道的数目为256/24(即,16)的层,这是因为在级数256/23(即,32)处达到信道的数目的阈值参数32。

cnn1000可以扩展为针对其它块大小推断分割决策。例如,编码器可以允许最小分割具有4×4的大小。因而,为了针对大小为8×8的子块推断分割决策,可以将分支添加到特征提取层1003,以使得特征提取层1003的每个分支可以生成大小均为4×4的特征映射,作为级联层1016的输入。另外,可以在级联层1016与分类器1018之间添加分类器。所添加的分类器针对块1002中的大小为8×8的子块推断(即,输出)分割决策。应注意,可以将块1002分割成大小均为8×8的8×8子块。在此示例中,所添加的分类器通过使用2×2滤波器的一系列非重叠卷积将从级联层1016接收到的特征映射减小到8×8×1的大小。

cnn1000可以配置为推断128×128块的分割决策。针对128×128块,cnn可以配置为包括分类器,该分类器分别确定一个(即,1×1输出矩阵)128×128决策(即,与是否要对块进行拆分对应的一个决策)、四个(即,2×2输出矩阵)64×64决策、16个(即,4×4输出矩阵)32×32决策和64个(即,8×8输出矩阵)16×16决策。

在一些实施方式中,cnn1000可以包括早期终止特征。例如,如果分类器1022推断出块1002将不进行拆分,那么通过分类器1020和1018的处理不需要继续。类似地,如果分类器1020推断出块1002中的32×32子块中没有任何一个将被拆分,那么通过分类器1020的处理不需要继续。

cnn1000是感受野一致的全卷积架构的一个示例。可以参考图12进一步解释感受野一致性。图12是根据本公开的实施方式的感受野的示例1200。示例1200包括输入1202。示例1200和本文中的说明改编自danghathehien,“卷积神经网络的感受野算术指南(aguidetoreceptivefieldarithmeticforconvolutionalneuralnetworks)”,2017年4月,[于2018年8月6日检索]。从互联网中检索:<url:https://medium.com/mlreview/a-guide-to-receptive-field-arithmetic-for-convolutional-neural-networks-e0f514068807>。

输入1202可以是需要提取特征(例如特征映射)的图像的一部分。输入1202可以是例如块700;块700-1、700-2、700-3和700-4中的一个;或块702-1、702-2、702-3和702-4中的一个。将输入1202示出为具有5×5像素的大小。然而,输入1202的大小与对感受野的概念的描述不相关。

示例1200图示了使用大小k=3×3(也被称为内核大小为3)、填充大小p=1×1且步幅s=2×2(也被称为步幅值为2)的滤波器/内核的卷积运算。相对于图11的滤波器1104图示了步幅值为3的大小k=3×3的滤波器的示例。填充限定了如何在卷积期间处理样本的边界。本文中省略了对填充、步幅和内核(即,滤波器)大小的概念的进一步描述,这是由于此类概念对于本领域的技术人员是众所周知的。

示例1200图示了作为使输入1202与第一滤波器卷积的结果的第一特征映射1204和作为使第一特征映射与第二滤波器卷积的结果的第二特征映射1206。第一滤波器和第二滤波器可以具有不同的值。在机器学习中,可以在训练阶段期间确定(例如学习)滤波器的值。

第一特征映射1204的像素1208(其也可以被称为特征)是由输入1202的像素的卷积产生的。此类像素是像素1208的感受野。应注意,因为卷积使用填充,所以用于生成像素1208的一些像素(例如填充像素)在输入外部。像素1208的感受野由正方形限定,该正方形的边角由黑色正方形(诸如黑色正方形1213)标记。从像素1208的边角发散的虚线(诸如虚线1212)也图示了像素1208的感受野。虚线的终点是黑色正方形。

第二特征映射1206的像素1210(其也可以被称为特征)是由第一特征映射1204的像素的卷积产生的。此类像素是第一特征映射1204中的像素1210的感受野并且可以进一步投影到输入1202上,以确定输入1202中的感受野。应注意,因为卷积使用填充,所以用于生成像素1210的一些像素(例如填充像素)在第一特征映射1204外部。并未示出第一特征映射1204的填充像素以免使图12混乱。输入1202中的像素1210的感受野由正方形限定,该正方形的边角由黑色圆圈(诸如黑色圆圈1215)标记。从像素1210的边角发散的点划线(诸如点划线1214)还图示了像素1210的输入1202中的感受野。点划线的端点是黑色圆圈。

在视频编码期间,感受野可以在图像分析中发挥重要作用。可以将一系列卷积层的感受野解释为每个像素(例如特征)在计算该像素时“看到”(例如受到影响、概述等)的图像的“区域”(例如图像的块、超级块、帧或任何其它部分)。初始输入层处的像素(例如输入1202)变成cnn的后续层(例如包括第二特征映射1206的第二层)的特征(经由一系列卷积),该特征将协助cnn分析初始输入层。

当使用cnn来分析用于确定模式决策的模式(例如使用四叉树表示的分割)时,期望每个分析区域限制于其四叉树表示的边界。也就是说,例如,期望描述图像区域并且用于推断图像区域的模式决策的特征不混合来自其它图像区域的像素。例如,且再次参照图7,描述块700-2和/或块702-1、702-2、702-3和702-4的特征在其相应野中期望地不包括来自块700-1、700-3或700-4中的任何一者的像素。

以下四个等式可以用于运算cnn的每一层中的感受野。

jout=jin×s(2)

rout=rin+(k-1)×jin(3)

在上文中,nout是层中的输出特征的数目。在示例1200中,第一层对应于(例如包括)第一特征映射1204,且第二层对应于(例如包括)第二特征映射1206。另外,nin是层的输入特征的数目。例如,第二层的输入特征的数目是第一特征映射1204中的特征的数目,即,9个。变量k、p和s(被统称为卷积特性)分别是卷积内核大小、卷积填充大小和卷积步幅大小/值。

等式(1)基于输入特征的数目和卷积特性来运算层的输出特征的数目。等式(2)运算输出特征映射中的两个相邻特征之间的距离(即,跳跃jout)。公式(3)运算输出特征映射的感受野大小(即,rout),将该感受野大小限定为由k个输入特征覆盖的区域和由边界上的输入特征的感受野覆盖的额外区域。等式(4)运算第一输出特征的感受野的中心位置(即,startout)(例如,像素1208和像素1210分别对应于第一特征映射1204和第二特征映射1206中的第一输出特征。

在已经更详细地描述了感受野的概念后,接下来将描述由根据本文中的教导的感受野一致的cnn架构共享的特征以及变型。

如上文简要地提及的,本文中所描述的cnn架构是全卷积网络。也就是说,特征提取和分类层使用卷积运算。在特征提取层中,对每一层处的输入执行非重叠卷积运算。在特征提取层中的至少一些处,通过将步幅值设置为与内核大小相同来执行非重叠卷积运算。内核大小中的至少一些可以是偶数(即,2的倍数)。

例如,在图10中,特征提取层中的每个卷积层使用步幅为2的2×2内核。这种非重叠卷积运算确保了在最终特征提取层处(即,紧接在级联层1016之前),n×n信道(即,大小为n×n的特征映射)中的每一者(其中,在图10的示例中n=8)仅从其大小为(64/n)×(64/n)的子块中看到信息(例如使用信息、受到信息影响等),其中,在图10的示例中,64×64对应于块1002(即,输入块)的大小。在示例中,n可以是2k

在分类层中,代替完全连接层,执行具有1×1内核的卷积减少,直至达到期望输出的数目为止。在分类层中使用卷积层,因而,遵守(例如保持)感受野。

例如,在cnn1000中,为了针对大小为16×16的子块(即,通过分类器1018)推断分割决策(即,作为特征映射1025,其为分类器1018的输出),执行内核大小为2的非重叠卷积运算(即,在级联层1016与分类器1018的第一层之间),以将信道的数目从8×8(即,如上文所描述的级联层1016的特征映射中的每一者的大小)减少到4×4(即,特征映射1019中的每一者的大小),并且从那时起应用内核大小1×1并且将特征尺寸大小逐渐减小到1(即,特征映射1025,其大小为4×4×1)。最后一个分类层的输出是4×4×1,其为输入1002的16个子块的分割确定。16个子块中的每一者的大小为16×16像素。

类似地,可以通过分类器1020推断针对32×32子块中的每一个的分割决策;且可以通过分类器1022推断64×64块的分割。

如本领域的技术人员应认识到,大小为1×1的内核可以用于减少特征映射的维度。例如,当与大小为1×1的一个滤波器卷积时,大小为4×4×32(32个特征映射,其大小分别为4×4)的输入将产生大小为4×4×1的特征映射。因而,大小为1×1的内核可以用于池化(例如组合)来自多个特征映射的信息。另外,如本文中所使用,大小为1×1的内核不混合来自输入的不同位置的值。也就是说,继续参照以上示例,当确定大小为4×4×1的特征映射的位置(x,y)处的值时,仅使用大小为4×4×32的特征映射的32个映射中的每一个的位置(x,y)处的32个值。因而,通过使用1×1卷积,可以保持(例如遵守)感受野。

本文中所描述的本发明的cnn架构包括使用非重叠内核大小与遵守感受野的全卷积网络(用于特征提取和用于分类)的组合。与使用完全连接层进行分类相比,这种组合实现了减小大小的灵活的cnn架构。另外,本文中所描述的cnn架构可以通过替代结构来改善推断。

如所提及的,本文中所描述的cnn架构的灵活性在于,层的数目、特征提取分支的数目以及在每一层中所使用的特征的数目都是可配置的。这允许模型架构针对不同应用约束的部署灵活性。例如,较大模型(诸如图10的模型)可以用于具有较高准确度要求和较小功率/硬件占用空间约束的应用。可以在准确度不太重要和/或存在较大功率/硬件占用空间约束时使用较小模型(诸如下文关于图13至图16所描述的示例)。不论使用相对较小的模型还是使用相对较大的模型,级联层(诸如级联层1016)都是可选的。

图13是根据本公开的实施方式的用于模式决策的cnn1300的第二示例的框图。如同cnn1000,cnn1300包括输入1302、特征提取层1304和分类器1306。除了其它差异之外,与cnn1000相比,图13的cnn1300具有更少的特征提取层、分类器中的更少的分类层以及每一层中的更少的特征数目。

一般而言,针对本文中的cnn,在输入的大小为64×64×1的情况下,针对16×16子块的分割决策(即,输出处的大小为4×4×1的特征映射)是指内核/步幅的乘法最多可为16。针对32×32子块的分割决策(即,输出处的大小为2×2×1的特征映射)是指内核/步幅的乘法最多可为32。最后,针对64×64块的分割决策(即,输出处的大小为1×1×1的特征映射)是指内核/步幅的乘法最多可为64。参考图10可以看到感受野一致性cnn中的这种一般原理。即,在给定输入1002(其中,结尾是特征映射1025、特征映射1027或特征映射1029)的情况下,内核大小等于步幅值的乘法最多具有64/4、64/2或64/1,或针对分割16×16、32×32或64×64分别具有16、32或64。类似确定可以用于例如使用128×128、8×8或4×4输入来分割128×128、8×8或4×4。

该一般原理也可以如同在图13中在输入1302包括大小为65×65×1的(例如亮度)输入块并且输出包括针对16×16子块的分割决策(即,输出处的大小为4×4×1的特征映射)、针对32×32子块的分割决策(即,输出处大小为2×2×1的特征映射)和针对64×64块的分割决策(即,输出处的大小为1×1×1的特征映射)的情况下应用。如上文关于图10所描述,如果要确定64×64块的分割,那么可以将大小为65×65×1的块用作cnn1300的输入。即,例如,可以将要确定分割的块的(例如左侧和顶部)邻近像素包括在cnn1300的输入块中。在这种情况下,并且为了保持如上文所描述的感受野特性,第一滤波器(例如特征提取层的每个分支中的第一滤波器)的大小可为2k+1,且步幅可为2k。更具体地说,如图13中所示(并且在下文所描述的变型中)的内核/步幅的乘法使得特征分类层1304的每个分支1308-a、1308-b、1308-c中的初始特征提取层1310-0、1312-0、1314-0的内核大小为2k+1且步幅值为2k。连续层的内核大小等于步幅值,使得64/(2k*剩余步幅的乘积)=4、2或1。相同确定可以用于例如使用129×129、9×9或5×5输入来分割128×128、8×8或4×4块。

图13示出了将要编码的图像块呈现为cnn1300的输入1302。图像块可以是一个彩色平面块,诸如亮度块65×65×1。虽然使用大小为64×64的超级块来描述cnn1300,但该块可具有任何大小。

特征提取层1304形成三个分支1308-a、1308-b、1308-c。特征提取层中的分支的数目可以配置为包括更多或更少的分支。分支中的每一个可以包括特征提取层1304中的一个或多个。在每一层处,提取相应特征映射。在此示例中,特征提取层包括等于针对块的若干可能的四叉树分割决策或其基数的若干分支或其基数,但这不是必需的。在任何情况下,分支中的每一个包括特征提取层中的至少一个。

分支1308-a在分支1308-a的第一或初始层1310-0中提取与块中的8×8块对应的特征。分支1308-a使k个滤波器与大小为8×8的块卷积。使用等于2k+1的步幅。因此,提取大小为8×8的16个特征映射。在分支1308-b,1308-c的每个第一层1312-0、1314-0处执行相同的卷积运算。

在分支1308-a的第二层1310-1处,使用大小等于步幅值的滤波器对初始层1310-0的16个特征映射中的每一个进行卷积以提取大小均为4×4的32个特征映射。在分支1308-a的第三层1310-2处,使用大小等于步幅值的滤波器对第二层1310-1的32个特征映射中的每一个进行卷积以提取大小均为2×2的32个特征映射。最后,在分支1308-a的第四层1310-3处,使用大小等于步幅值的滤波器对第三层1310-2的32个特征映射中的每一者进行卷积以提取大小均为1×1的64个特征映射。

在分支1308-b的第二层1312-1处,使用大小等于步幅值的滤波器对初始层1312-0的16个特征映射中的每一个进行卷积以提取大小均为4×4的32个特征映射。在分支1308-b的第三层1312-2处,使用大小等于步幅值的滤波器对第二层1312-1的32个特征映射中的每一个进行卷积以提取大小均为2×2的64个特征映射。

在分支1308-c的第二层1314-1处,使用大小等于步幅值的滤波器对初始层1314-0的16个特征映射中的每一个进行卷积以提取大小均为4×4的64个特征映射。

cnn1300包括三个分类器,即,分类器1320-a、1320-b和1320-c。分类器1320-a、1320-b、1320-c中的每一个包括一个或多个分类层并且使用如下文进一步描述的卷积。在此示例中,多个分类器包括与特征提取层的分支中的相应分支对应的相应分类器。由相应分类器1320-a、1320-b和1320-c的初始分类层接收的特征映射可以配置为针对块中的大小为(αs)×(αs)的子块推断分割决策,该块包括具有相应特征尺寸(n/2β)×(n/2β)的n个特征映射的卷积,其中,β是整数并且β=0、……、(分支数目–1)。

在图13的示例中,在分类器1306之前的特征提取层1304的最终层中的每一个(即,第一分支1308-a的第四层1310-3、第二分支1308-b的第三层1312-1和第三分支的第二层1314-1)包括n个特征映射。每个分支中的n个特征映射的维度等于与分类器1306的对应分类器相关联的块大小的可能模式决策(例如四叉树分割)的数目。也就是说,分类器1320-a从层1310-3接收大小为1×1的64个特征映射,并且分类器1320-a推断(即,输出)针对64×64输入块的一个分割决策。分类器1320-b从层1312-2接收大小为2×2的64个特征映射,并且分类器1320-b推断四个分割决策,一个分割决策针对32×32子块中的每一个。分类器1320-c从层1314-1接收大小为4×4的64个特征映射,并且分类器1320-c推断十六个分割决策,一个分割决策针对16×16子块中的每一者。决策可以是二进制决策。也就是说,可以将从分类器1320-a、1320-b、1320-c中的每一个输出的特征映射视为二进制决策的矩阵。例如,零(0)可以与不拆分子块的决策对应,而一(1)可以与拆分子块的决策对应。分类器的输出的顺序可以与输入块的子块的光栅扫描顺序对应。在另一示例中,决策可以与概率(即,介于0到1的范围内的值)或一些其它值(诸如介于0到100的范围内的值)对应。当决策大于适合于决策值的范围(例如0.9、0.75、90%等)的阈值时,可以将其视为与二进制决策1对应。

在分类器1320-a处,连续地应用一系列卷积(该卷积中的至少一者为1×1卷积)以将特征尺寸大小逐渐减小到1。在分类器1320-a的第一或初始分类层1322-0处,将卷积应用于来自提取层1310-3的64个特征映射,从而产生1×1×24特征映射,在分类器1320-a的第二分类层1322-1处,对1×1×24特征映射应用卷积,从而产生1×1×8特征映射,在分类器1320-a的第三分类层1322-2处,对1×1×8特征映射应用卷积,从而产生最终的1×1×1特征映射。

在分类器1320-b处,连续地应用一系列卷积(该卷积中的至少一个为1×1卷积)以将特征尺寸大小逐渐减小到1。在分类器1320-b的第一或初始分类层1324-0处,将卷积应用于来自提取层1312-2的64个特征映射,从而产生2×2×24特征映射,在分类器1320-b的第二分类层1324-1处,对2×2×24特征映射应用卷积,从而产生2×2×8特征映射,在分类器1320-b的第三分类层1324-2处,对2×2×8特征映射应用卷积,从而产生最终的2×2×1特征映射。

在分类器1320-c处,连续地应用一系列卷积(该卷积中的至少一个为1×1卷积)以将特征尺寸大小逐渐减小到1。在分类器1320-c的第一或初始分类层1326-0处,将卷积应用于来自提取层1312-2的64个特征映射,从而产生4×4×24特征映射,在分类器1320-c的第二分类层1326-1处,对4×4×24特征映射应用卷积,从而产生4×4×8特征映射,在分类器1320-c的第三分类层1326-2处,对4×4×8特征映射应用卷积,从而产生最终的4×4×1特征映射。

在分类器1306中的每一者中,只要分类器1306如所描述确定4×416×16分割、2×232×32分割和1×164×64分割就可以使用任何大小的(例如非重叠)卷积滤波器。

尽管在图13中未明确地示出,但可以将qp用作cnn1300的特征提取层1304中的一个或多个的输入。可以将qp输入为非线性函数f(qp)。例如,输入函数可以是qp2或qpn。变量n可以是实数。变量n可以是绝对值大于1的非零(例如正)整数。

图13示出了其中输入1302从块的仅亮度(luma)数据扩展到块的亮度和色度(chroma)数据的cnn1300。例如,在亮度输入的尺寸为64×64的情况下,在输入中可以包括在每个信道中具有半分辨率的两个色度信道。色度信道可以按布置(诸如图10中的布置)中的尺寸32×32×2输入。在这种情况下,第一内核大小可以等于步幅值。在图13中,通过包括邻近像素(在该示例中为一行和一列)来将色度数据包括在尺寸为33×33×2的输入1302中。在此示例中,如相对于亮度信道所描述,第一内核为步幅值为2k的2k+1。在任一实施方式中,内核和步幅关系都是关于亮度信道所描述的关系以获得16-4×4分割,但内核/步幅的乘法最多可为8,这是因为32/4等于8。

更具体地,并且参照图13,分支1308-a在初始层1310-0的第二内核中提取与色度块中的4×4块对应的特征。分支1308-a使k个滤波器与大小均为4×4的色度块卷积。使用等于2k+1的步幅。因此,提取大小分别为4×4的8个特征映射。在分支1308-b、1308-c的每个第一层1312-0、1314-0处执行相同的卷积运算。随后,使大小为4×4的8个特征映射中的每一个与对应于附加特征提取层1304的亮度块的特征映射卷积。

包括色度数据是可选的,但与仅使用亮度数据相比,可以提高cnn的推断性能。例如,在一些视频中,在亮度信道中可能无法良好地捕获内容。通过在色度信道中包括附加数据,附加特征可用于特征提取,诸如可用于特征提取层1304中,从而提高了分类器(诸如分类器1306)处的推断准确度。

尽管图13及其变型涉及yuv颜色空间中的亮度和色度数据,但本文中所描述的cnn架构可以与其它颜色空间(诸如(例如)rgb或luv)一起使用。

在这些实施方式中,在亮度和色度输入中的每一个中,针对(例如左侧和顶部)邻近像素使用像素的一列和一行。在一些实施方式中,可以使用由值v表示的多于一个行/列因此,针对64×64亮度块,输入将为(64+v)×(64+v)×1,并且针对两个32×32色度块,输入将为(32+v)×(32+v)×2,且第一内核的内核大小为2k+v且步幅值为2k。值得注意的是,亮度和色度块大小的这些示例是指4:2:0格式。如果使用另一格式,那么亮度样本与色度样本之间的相对块大小将与这些示例不同。

除了调整每个卷积层上的特征的数目之外,图10和图13的架构及其在本文中所描述的变型可以设计成使得可以在所有层上应用全局特征调整速率r,以减少/扩大特征的数目。这种特征调整速率可以是可配置的超参数。在应用特征调整速率之后,特征的数目可以从n减少/扩大到n*r。

本文中所描述的灵活架构允许不同分类器具有如在cnn1000、1300中的不同特征提取,或共享一个或多个特征提取层,诸如图14的示例中所示。图14是根据本公开的实施方式的用于模式决策的cnn1400的第三示例的框图。图14的cnn1400包括特征提取层1404和分类器1406。特征提取层1404包括一个或多个公共特征提取层1408和附加特征提取层1410、1412、1414。具体地,公共特征提取层1408提供特征映射以教导附加64×64特征提取层1410、附加32×32特征提取层1412和附加16×16特征提取层1414。以此方式,通过分类器1406中的一个或多个共享公共特征提取层1408。在cnn1400中,公共特征提取层1408由64×64分类器层1416、32×32分类器层1418和16×16分类器层1420中的每一个共享。不共享公共特征提取层的优点是,这种cnn可以通过为每个分类器设计特定提取层来使推断准确度最大化。然而,在不同分类器之间共享公共特征提取层的优点在于,共享可以有效地减小模型大小。共享公共特征提取层可以在图15的示例中更详细地看到。

图15是根据本公开的实施方式的用于模式决策的cnn1500的第四示例的框图。图15的cnn1500通过迫使三个分类器1306共享一些特征提取层来修改cnn1300的架构。cnn1500中的分类器1306(即,分类器1306的层)与图13的cnn1300中的分类器相同。输入1502包括呈输入65×65×1形式的亮度数据和呈输入33×33×2形式的色度数据。三个分类器1320-a、1320-b、1320-c中的每一者分别共享大小为8×8×16和4×4×8的第一/初始特征提取层1510、1512。后续层从其分支。针对64×64块和32×32块的分类器1320-a、1320-b分别共享大小为4×4×32的后续特征提取层1514。如在图13中更一般地指示的,cnn1500还包括特定于分类器1306中的每一者的附加特征提取层。例如,针对16×16块的分类器1320-c通过大小为4×4×64的附加特征提取层1516接收输入。类似地,针对32×32块的分类器1320-b通过大小为2×2×64的附加特征提取层1518接收输入。针对64×64块的分类器1320-a通过大小分别为2×2×32和1×1×64的两个附加特征提取层1520和1522接收输入。如所提及的,共享公共特征提取层可以减小模型大小。另外,共享公共特征提取层可以增强模型对噪声的稳健性。

由上文针对块(例如超级块)所描述的cnn推断的模式决策是块分割。然而,现有视频编解码器还使用蛮力方法来决定最佳预测模式和用于块的压缩的变换单元大小。这些模式决策在其都使用基于原始图像内容和块的量化值的特征的意义上与块分割的模式决策类似。另外,对于块/子块级别上的预测模式(pm)和变换单元(tu)大小和/或类型的决策,应遵循相同的感受野一致原理。因此,本文中的教导可以扩展为包括这些模式决策。

图16是根据本公开的实施方式的用于模式决策的cnn1600的第五示例的框图。cnn1600扩展了先前所描述的架构,以推断预测(例如帧内预测)模式和变换单元大小。如在图16中可看出,用于每个子块大小的pm和tu的分类器可以与针对分割决策(诸如关于图10至图13所描述的分割决策)的分类器共享公共特征提取层1602。更具体地,cnn1600指示针对64×64块、32×32块和16×16块的分割决策中的每一者的分类器包括单独的分类器层0至m,其中,m是正整数。这些层符合上文关于内核大小与步幅值的乘法所描述的规则以及感受野一致性。在此示例中,用于每个子块大小的pm和tu的分类器还分别与其对应的块分割分类器共享第一/初始分类层1604、1606、1608。初始分类层1604、1606、1608向用于每个子块大小的pm和tu的附加分类器(分别为分类器1610、1612、1614)提供相应输入(例如特征映射)。分类器1610、1612、1614可均包括一个或多个分类器层。因为块分割和tu/pm确定可以使用类似图像特征来推断决策,所以这种布置可能是期望的。更期望地,用于tu/pm的模式决策具有其自身的分类层,以实施对于那些模式决策而言独特的分类规则。

为了简单起见,描述了cnn1000、1300、1400、1500、1600,以确定来自64×64分割的64×64块到是否应将每个16×16子块进一步分割成8×8块的分割。然而,本文中的公开内容不限于此。根据本公开的实施方式的cnn架构可以概括如下。

用于确定视频代码化中的模式决策的cnn(其中,块的大小为n×n(例如64×64、128×128),且其中,由cnn确定的最小分割的大小为s×s(例如4×4、8×8))可以包括特征提取层(可选地为级联层)和分类器。分类器包括全卷积层。n和s的其它值可以是可能的。在一些示例中,n可以是32、64或128,且s可以是4、8或16。

当包括级联层(如在cnn1000中)时,层可以从特征提取层接收块的特征映射。每个特征映射可以具有限定大小,诸如8×8。

无论是否包括级联层,分类器中的每一者都包括一个或多个分类层。每个分类层接收具有相应特征尺寸的特征映射。例如,且参照图10,分类器1018包括5个分类层(由表示每一层的特征映射的5个正方形表示),分类器1020包括4个分类层,并且分类器1022包括3个分类层。例如,且参照图13至图15,分类器1320-a、1320-b、1320-c中的每一个均包括3个分类层(由表示每一层的特征映射的3个正方形表示)。

分类器中的每一个可以配置为针对特定大小的子块推断分割决策。也就是说,分类器可以配置为针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2、……、n/s。因而,当n=64且s=8时,α可以具有值2、4和8中的任一者。例如,相对于分类器1018、1320-c,α=2,且分类器1018、1320-c针对大小为(2×8)×(2×8)=16×16的块推断分割决策;相对于分类器1020、1320-b,α=4,且分类器1020、1320-b针对大小为(4×8)×(4×8)=32×32的块推断分割决策;且相对于分类器1022、1320-a,α=8,且分类器1022、1320-a针对大小为(8×8)×(8×8)=64×64的块推断分割决策。

分类器可以通过指令针对块中的大小为(αs)×(αs)的子块推断分割决策,该指令包括:在分类层的每个连续分类层处应用大小为1×1的内核,以将相应特征尺寸至少减小一半;以及通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出。将分类器1022用作α=8的示例,分类器1022使特征映射1023与大小均为1×1的32个内核卷积,从而产生特征映射1031,该特征映射具有1×1×32的尺寸。特征映射1029(其大小为n/(αs)×n/(αs)×1=64/(8×8)×64/(8×8)×1=1×1×1)对应于是否应拆分大小为n×n的块的决策。如从图13和图15中可看出,分类器可以使先前层的特征映射与不同数目的内核卷积,以将相应特征尺寸减小一半以上(在此减小了23)。

在图10的示例中,第一分类器1018可以通过级联层(例如级联层1016)接收第一特征映射作为特征提取层中的最终特征提取层的输出,其中,应用使用第一2×2内核的第一非重叠卷积运算,以将第一特征映射减小到(s/2)×(s/2)的大小。例如,如相对于分类器1018所描述的,分类器1018的第一层从级联层1016接收8×8特征映射并且将其减小到4×4的大小(即,特征映射1019)。在分类器1018的示例中,将特征映射1019示出为具有256的尺寸。然而,在此示例中,只要分类器中的每一个的最终层的尺寸为n/(αs)×n/(αs)×1,就不需如此。cnn还可以包括第二分类器1022,该第二分类器针对大小为(βs)×(βs)的子块推断分割决策。在示例中,β=8。第二分类器可以从第三分类器接收大小均为m×m的第三特征映射。第三分类器可以是分类器1020。因而,m=2,并且第三特征映射可以是特征映射1021。第二分类器可以应用使用第二2×2内核的第二非重叠卷积运算,以将第三特征映射减小到(m/2)×(m/2)的大小。例如,分类器1022从分类器1020接收特征映射1021,并且应用使用第二2×2内核的第二非重叠卷积运算,以生成特征映射1023。

相比之下,在cnn1300及其不包括级联层的变型中,每个分类器的初始分类层直接从最终特征提取层接收特征映射作为特征提取层中的最终特征提取层的输出。

出于说明性目的,在初始分类层处接收到的特征映射包括特定特征维度。在每个分类器的第一层处接收到的特征映射的数目或基数可以是可配置的。在一些示例中,对于某些k,可以使用遵循规则内核=步幅大小=(2k,2k)的内核大小。

在(多个)第一特征提取层的输入中包括v个邻近行和v个邻近列使得输入块的大小为(64+v)×(64×v)、(128+v×128+v)等的情况下,大小为(2k+v,2k+v)且步幅大小为(2k,2k)的内核可以用于传播v个左侧/顶部信息并且遵循(例如保持)感知场。

虽然将分类层的输出描述为形式为b×b×1(例如4×4×1、2×2×1或1×1×1)的矩阵,但应理解,分类层输出b*b=b2值,以使得输出b2中的每一个对应于矩阵中的笛卡尔位置。输出值中的每一个对应于块位置,并且可以是指示是否应当对该位置处的子块进行分割的值。例如,值0可以指示不对子块进行分割,且值1可以指示对子块进行分割。当前,其它值也是可能的。

第一/初始特征提取层可以将非重叠卷积滤波器应用于块来为下一个特征提取层生成块的特征映射。在初始特征提取层之后的每个连续特征提取层可以将非重叠卷积滤波器应用于来自先前层的特征映射。通过设置等于内核大小的步幅值来对特征提取层中的至少一者处的输入执行非重叠卷积运算。

例如,第一特征提取层可以将(n/s)×(n/s)非重叠卷积滤波器应用于块,以生成块的特征映射的第一子集(例如基数)。这可以通过示例来进行说明,在示例中,特征提取层1003-a将(64/8)×(64/8)=8×8非重叠卷积滤波器应用于块1002以生成特征映射1004。第二特征提取层可以将m×m非重叠卷积滤波器应用于块以生成大小均为(n/m)×(n/m)的映射,其中,m小于s,大于1,并且是2的幂;并且将非重叠2×2卷积滤波器连续地应用于映射以生成块的特征映射的第二子集(例如基数)。特征提取层1003-b和1003-c可以是第二特征提取层的示例。

如上文所描述,可以将量化参数(qp)的非线性值用作cnn的输入。在图10中,将qp的非线性值示出为级联层1016的输入。然而,不需如此,并且可以将qp的非线性值用作cnn的其它层的输入。例如,可以将qp的非线性值用作分类层中的至少一个的输入。

如上文所述配置的cnn可以由编码器(诸如图4的编码器400)使用,以推断包括块分割的模式决策和可选地其它模式决策。因而,模式决策不是通过本领域中已知的蛮力方法导出的。在示例中,可以通过帧内/帧间预测级402来使用本文中所描述的cnn。在推断块分割之后,编码器可以使用已知预测技术(诸如帧间预测、帧内预测、其它技术或其组合)来预测分割的块,或可以从cnn获得预测模式。可以如关于图4所述(可选地在还通过cnn提供变换类型/大小的情况下)对所得残差进行编码。

图17是根据本公开的实施方式的用于通过编码器对图像块进行编码的过程1700的流程图。过程1700使用输入数据来训练机器学习模型,以推断一个或多个模式决策。过程1700随后使用经训练机器学习模型来针对要编码的图像块推断模式决策。在示例中,模式决策可以是图像块的四叉树分割决策。图像块可以是使用帧内预测进行编码的图像(例如视频帧)的块。在另一示例中,模式决策可以是分割,其包括相对于下文所描述的图20所描述的分割。如下文进一步描述的,图20的一些分割包括正方形和非正方形子分割;且正方形子分割中的每一个可以根据图20的分割中的一个进行进一步分割。

在1702中,过程1700训练机器学习(ml)模型。可以使用训练数据1712来训练ml模型。训练数据1712中的每个训练数据可以包括通过传统编码方法(例如通过诸如相对于图4和图6至图8所描述的编码器)编码的视频块;由编码器使用的qp;零个或多个附加输入,其对应于由编码器在确定用于对视频块进行编码的模式决策(例如块分割且可选地预测模式和/或变换单元大小)时使用的输入;以及由编码器确定的所得模式决策。在训练阶段,生成ml模型的参数,以使得对于至少一些训练数据,ml模型可以针对训练数据推断用于包括视频块、与量化参数对应的值以及训练数据的零个或多个附加输入的输入集合的训练数据的所得模式决策。

如上文所描述,对应于qp的值与qp具有非线性关系。也就是说,该值基于qp的非线性函数来从qp中导出。在示例中,非线性函数可以是qp的指数函数、二次函数或一些其它非线性函数。例如,可以使用非线性函数f(q)=cqp,其中,c是常数。在示例中,c=1/3。可以使用非线性函数f(qp)=qpα,其中,α是不等于0或1的整数(即,α≠0且α≠1)。在示例中,α=2。在一般情况下,如上文所描述,非线性函数与由编码器用于确定在速率失真运算中使用的乘数的函数具有相同类型。

在使用ml模型来推断块与块的相应四叉树分割之间的关系的情况下,由编码器确定的所得模式决策可以指示训练数据的训练块的四叉树分割。四叉树分割的许多指示(例如表示)是可能的。在示例中,可以使用如相对于四叉树704所描述的二进制标记的矢量(例如序列)。

在使用ml模型来推断帧内预测的块与块的相应分割之间的关系的情况下,与由第二编码器在确定用于对视频块进行编码的模式决策时使用的输入相对应的零个或多个附加输入可以包括顶部邻近块的至少一些样本(即,第一样本)、输入块的左侧邻近块的至少一些样本(即,第二样本)、左上角邻近块的至少一些样本或其组合。为了简洁并且在不失一般性的情况下,可以将左上角邻近块视为顶部邻近块或左侧邻近块中的任一个的一部分。因而,在示例中,可以将第一样本或第二样本视为包括来自左上角邻近块的样本。

在训练阶段期间(即,在1702中),ml模型学习(例如训练、构建、导出等)映射(即,函数),该映射接受块和量化参数的非线性值(例如图10中所示的qp2)作为输入并且至少输出块的分割。

在训练阶段期间,为了使已学习函数尽可能地有用,优选地,使用大范围的输入块和大范围的可能qp值(诸如用于表示现实应用的qp值)来训练ml模型。

相对于输入块,如果训练数据集仅包括暗(例如具有低强度值的像素)训练块,那么ml模型可以良好地学习如何确定暗块的模式决策,但是当在推断阶段期间用非暗块呈现时提供不可靠输出。如果编码器使用一组离散的qp值,那么优选的是,在训练数据集中良好地表示qp值中的每一个。例如,如果qp值可以在0到1之间变化,那么优选的是,训练数据包括在0到1范围内的变化的qp值。如果在训练数据中不使用qp值(例如丢失的qp值),那么当在推断阶段期间将丢失的qp值提供给ml模型时,ml模型可以发生故障(例如提供错误输出)。在另一示例中,如果在推断阶段期间使用了丢失的qp值(即,在训练阶段期间不使用的qp值),那么可以从在训练阶段期间使用的qp值内插丢失的qp,随后可以在推断阶段期间使用内插的qp值。

ml模型随后可以由过程1700在推断阶段期间使用。推断阶段包括操作1704和1706。分隔1710指示训练阶段和推断阶段可以在时间上分离。因而,推理阶段可以由第一编码器执行,并且训练数据1712可以由第二编码器生成。在示例中,第一编码器和第二编码器是相同编码器。也就是说,训练数据1712可以由执行推断阶段的相同编码器生成。在任一种情况下,推断阶段使用如相对于1702所述训练的机器学习模型。

在1704中,将输入呈现给ml模块。也就是说,将输入呈现给包含、包括、执行、实施等ml模型的模块。输入包括图像块,并且可选地包括对应于qp的值的非线性函数。如上文所描述,将qp用作非线性函数的输入从非线性函数中导出(即,产生)第一值。如相对于零个或多个附加输入所描述,输入还可以包括附加输入。

在示例中,非线性函数可以由线性段逼近。相对于图18图示了通过分段线性段逼近非线性函数。

图18是根据本公开的实施方式的使用线性段来逼近量化参数的非线性函数的示例1800。二次函数用于描述非线性函数。然而,其它非线性函数类型也是可能的。示例1800以虚线形式示出了量化参数的非线性函数1802。非线性函数1802是qp2。在示例1800中,qp值在0到1的范围内。示例1800图示了将0到1的范围拆分成若干段;即,段1804、1806和1808。虽然图示了三个段,但可以使用更多或更少但多于1的段。

可以将0到1的范围拆分成包括0到0.25的qp值的第一范围、包括0.25到0.75的qp值的第二范围和包括0.75到1的qp值的第三范围。段1804对应于函数qp1=0.25qp;段1806对应于函数qp2=qp-0.1875;且段1808对应于函数qp3=1.75qp-0.75。因而,根据相应qp值,使用函数qp1、qp2或qp3中的哪一者来导出在训练阶段期间使用的第二值和在推断阶段期间使用的第一值。例如,如果第一量化参数为0.8,那么使用函数qp3。例如,如果第二量化参数是0.2,那么使用函数qp1。

通过参考图19可以看到使用非线性qp函数的益处,图19是使用非线性qp函数作为输入的第一机器学习模型1916和使用线性qp函数的第二机器学习模型1926的速率失真性能比较的示例1900。将峰值信噪比(psnr)用作失真度量。也就是说,在曲线图1910和1920中,x轴指示用于对以kbps为单位测量的样本视频序列进行编码的数据速率,而y轴指示以分贝(db)为单位测量的psnr质量。曲线图1910和1920的结果是通过如下文所描述的实验获得的。

作为示例,第一机器学习模型1916是cnn的模型,该cnn具有如相对于图10所描述的架构。尽管第二机器学习模型1926的完全连接层具有120万个参数,但第一机器学习模型1916(其为全卷积模型并且不包括完全连接分类层)要小得多,仅有300,000个参数(使用0.5的特征压缩率)。因此,并且至少部分地由于较小模型大小,能够使用第一机器学习模型1916对功率和/或容量受限平台(例如移动装置)执行推断。减小的模型大小部分地由于使用qp的非线性值(在此示例中为qp2)与cnn架构中的每一个或两者的组合,该cnn架构具有本文中所描述的感受野一致特性。

将第一机器学习模型1916和第二机器学习模型1926描绘为具有输入层、内部层和输出层的通用机器学习模型。仅描绘第一机器学习模型1916和第二机器学习模型1926,以说明第一机器学习模型1916使用qp的非线性函数,即,qp2,而第二机器学习模型1926使用qp的线性函数,即,qp值本身。

曲线图1910和1920的曲线1912描绘了(例如vp9)编码器的速率失真性能,如相对于图4所描述的。也就是说,曲线1912是基于蛮力编码(即,不基于机器学习模型的编码)生成的。曲线图1910的曲线1914描绘了由于使用第一机器学习模型1916推断要在vp9软件编码器中使用的块分割而产生的速率失真性能。曲线图1920的曲线1924描绘了由于使用第二机器学习模型1926推断要在vp9软件编码器中使用的块分割而产生的速率失真性能。

应注意,在曲线图1910和1920中,较高qp值通常对应于较低数据速率。曲线图1920示出了当使用qp的线性函数时,psnr性能随着qp值的增加而降低。然而,当使用qp2时,如曲线图1910中所示,获得了在各个qp值间的更一致的速率失真性能。

曲线图示出,平均而言,在使用qp2时可以实现更高的速率失真性能。当使用qp2时,在rd速率下的性能比蛮力编码差了约1.78%;而当使用qp时,其性能比蛮力编码差了约3.6%。

再次参照图17,在1706中,过程1700从机器学习模型获得一个或多个模式决策。在示例中,过程1700获得如相对于图10和图13至图16所描述的模式决策。也就是说,例如,cnn可以提供指示图像块的四叉树分割的输出。

在1708中,过程1700使用一个或多个模式决策来对图像块进行编码。也就是说,并且继续参照推断块分割的示例,对于子块中的每一个(即,根据指示四叉树分割的输出),过程2000可以对如相对于图4的帧内/帧间预测级402所描述的块进行帧内预测(或帧间预测),并且根据图4的描述,如相对于熵编码级408所描述的,最终对压缩比特流(诸如图4比特流420)中的图像块进行熵编码。

使用机器学习模型(诸如本文中所描述的ml模型中的一个)来推断图像块的模式决策参数的编码器可以在压缩比特流(诸如图4的比特流420)中对模式决策进行编码。如上文所提及,图像块可以是超级块,并且模式决策可以指示超级块的四叉树分割。

因而,解码器(诸如图5的解码器500)可以使用在压缩比特流中接收的模式决策来对图像块进行解码。对图像块进行解码的过程可以包括:在压缩比特流(诸如图5的压缩比特流420)中接收对将图像块分割成子块的指示;并且使用对分割的指示以及可选地图像块的预测模式和变换单元大小(或类型)来对图像块进行解码。

如本领域中已知的,可以在压缩比特流(诸如图4的比特流420)中输出诸如相对于图7所描述的四叉树。解码器(诸如图5的解码器500)可以在对块(即,超级块)进行解码的过程中从压缩比特流对四叉树进行解码。可以使用如上文所述配置的cnn在编码器中确定(例如推断)四叉树,并且在压缩比特流中输出四叉树。因而,解码器从压缩比特流中对由cnn推断的四叉树进行解码,该cnn如相对于图10、13、14、15或16中的任一个所述进行配置。

虽然描述了推断块的四叉树分割,但根据本公开的实施方式的cnn可以用于推断可以或可以不由四叉树表示的非正方形分割。也就是说,例如,非正方形分割可以对应于四叉树的内部节点,该内部节点具有大于或等于两个子节点的子节点的数目或基数。图20是块的非正方形分割的示例2000。一些编码器可以将超级块(诸如大小为64×64、128×128的超级块或超级块的任何其它大小的正方形子块)分割成示例2000的分割中的一者。

分割类型2002(其可以被称为partition_vert_a)将n×n代码化块拆分成大小均为n/2×n/2的两个水平相邻的正方形块2002a、2002b和大小为n×n/2的矩形预测单元。分割类型2008(其可以被称为partition_vert_b)将n×n代码化块拆分成大小为n×n/2的矩形预测单元和大小均为n/2×n/2的两个水平相邻的正方形块2008a、2008b。

分割类型2004(其可以被称为partition_horz_a)将n×n代码化块拆分成大小均为n/2×n/2的两个垂直相邻的正方形块2004a、2004b和大小为n/2×n的矩形预测单元。分割类型2010(其可以被称为partition_horz_b)将n×n代码化块拆分成大小为n/2×n的矩形预测单元和大小均为n/2×n/2的两个垂直相邻的正方形块2010a、2010b。

分割类型2006(其可以被称为partition_vert_4)将n×n代码化块拆分成大小均为n×n/4的四个垂直相邻的矩形块。分割类型2012(其可以被称为partition_horz_4)将n×n代码化块拆分成大小均为n/4×n的四个水平相邻的矩形块。

众所周知,其它分割类型可以由编解码器使用。示例2000图示了在编码器处可用的四种分割类型。分割类型2014(在本文中也被称为partition_split分割类型和分割拆分分割类型)将n×n代码化块拆分成四个大小相等的正方形子块。例如,如果代码化块2014的大小为n×n,那么partition_split分割类型的四个子块中的每一个(诸如子块2014a)的大小为n/4×n/4。

分割类型2016(在本文中也被称为partition_vert分割类型)将代码化块拆分成大小均为n×n/2的两个相邻的矩形预测单元2016a、2016b。分割类型2018(在本文中也被称为partition_horz分割类型)将代码化块拆分成大小均为n/2×n的两个相邻的矩形预测单元。分割类型2020(在本文中也被称为partition_none分割类型和无分割的分割类型)针对代码化块使用一个预测单元,以使得预测单元具有与代码化块相同的大小(即,n×n)。

分割类型2014至2020在本文中被称为基本分割类型,且分割2002至2012在本文中被称为扩展分割类型。

分割可以由树表示。树可以由矢量表示。让p表示所有有效分割的集合(或等效地,表示分割的相应表示)。因此,可以训练cnn以推断到集合p中的映射。配置cnn以推断相对于图20所描述的分割包括:限定适合的集合p并且使用适合的训练数据。

假设存在n个可能结果,那么为了简单起见,存在n*m个可能决策(在示例中,m=21且n=4),并且每个p(n,j)可以由softmax函数组合,使得对于某些j,sum(范围(n)内的n)p(n,j)==1。

例如,在使用64×64的代码化单元大小和四种基本分割类型的vp9的情况下,仅针对四叉树分割,存在对应于一个64×64、四个32×32和16个16×16决策的21个决策(即,1+4+16=21个决策)。在cnn还用于确定非四叉树分割的情况下,则存在21*4=84个可能决策,其中,21对应于四叉树分割,且四对应于基本分割类型;即,partition_split、partition_vert、partition_horz和partition_none。

例如,在使用128×128的代码化单元大小以及基本和扩展分割类型(总共10种分割类型)的av1的情况下,仅针对四叉树分割,每分割类型存在85个决策(对应于一个128×128、四个64×64、16个32×32和64个16×16决策)。在cnn还用于确定非四叉树分割的情况下,则存在850个决策(对应于85个决策乘以10个分割类型=850个决策)。

更一般而言,非正方形分割可以由较小正方形分组构成。因此,本文中所描述的技术可以概括为诸如图20中所示的非正方形分割。

出于简单说明起见,将本文中所描绘和描述的过程示出为一系列框、步骤或操作。然而,根据本公开的框、步骤或操作可以以各种顺序和/或同时发生。另外,可以使用本文中未提出和描述的其它步骤或操作。此外,要实现根据所公开的主题的技术可能不需要所有图示的步骤或操作。

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

词语“示例”或“实施方式”在本文中用来表示充当示例、实例或说明。本文中作为“示例”或“实施方式”描述的任何方面或设计不必理解为比其它方面或设计更优选或有利。相反,词语“示例”或“实施方式”的使用旨在以具体方式呈现构思。如本申请中所使用的,术语“或”旨在表示包括性的“或”而不是排它性的“或”。也就是说,除非另有说明或通过上下文另外清楚地指示,“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。

另外,本公开的全部或部分实施方式可以采取可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是例如可以有形地包含、存储、通信或传输程序以供任何处理器使用或与其结合使用的任何装置。介质可以是例如电子、磁性、光学、电磁或半导体装置。其它合适的介质也是可用的。

在以下示例中概述了其它实施方式:

示例1:一种用于确定视频代码化时的块分割的卷积神经网络(cnn),块具有n×n大小和由cnn确定的大小为s×s的最小分割,该cnn包括:特征提取层;级联层,该级联层从特征提取层接收块的第一特征映射,其中,每个第一特征映射的大小为s×s;以及分类器,每个分类器包括分类层,其中,每个分类层接收具有相应特征尺寸的第二特征映射,每个分类器配置为通过以下操作来针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2、……、n/s:在分类层中的一些连续分类层处应用大小为1×1的内核,以将相应特征尺寸减小一半;并且通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出。

示例2:根据示例1的cnn,其中,分类器包括针对大小为(2s)×(2s)的子块推断分割决策的第一分类器,该第一分类器配置为:从级联层接收第一特征映射;并且使用第一2×2内核来应用第一非重叠卷积运算,以将第一特征映射减小到(s/2)×(s/2)的大小。

示例3:根据示例2的cnn,其中,分类器包括针对大小为(βs)×(βs)的子块推断分割决策的第二分类器,该第二分类器与第一分类器不同并且配置为:从第三分类器接收第三特征映射,该第三特征映射的大小均为m×m;并且使用第二2×2内核来应用第二非重叠卷积运算,以将第三特征映射减小到(m/2)×(m/2)的大小。

示例4:根据示例1至3中任一个的方法,其中,特征提取层包括:第一特征提取层,该第一特征提取层将(n/s)×(n/s)非重叠卷积滤波器应用于块,以生成块的第一特征映射的第一子集。

示例5:根据示例4的cnn,其中,特征提取层进一步包括:第二特征提取层,该第二特征提取层配置为:将m×m非重叠卷积滤波器应用于块,以生成大小均为(n/m)×(n/m)的映射,其中,m小于s,大于1并且是2的幂;并且将非重叠2×2卷积滤波器连续地应用于映射,以生成块的第一特征映射的第二子集。

示例6:根据示例1至5中任一个的cnn,其中,n是64且s是8。

示例7:根据示例1至5中任一个的cnn,其中,n是128且s是8。

示例8:根据示例1至7中任一个的cnn,其中,将量化参数(qp)的非线性值用作cnn的输入。

示例9:根据示例8的cnn,其中,将qp的非线性值用作级联层的输入。

示例10:根据示例8的cnn,其中,将qp的非线性值用作分类层中的至少一个的输入。

示例11:一种使用卷积神经网络(cnn)来确定视频代码化时的块分割的方法,块具有n×n大小和由cnn确定的大小为s×s的最小分割,该方法包括:使用cnn的特征提取层来提取块的第一特征映射,其中,每个第一特征映射的大小为s×s;使用cnn的级联层来级联块的第一特征映射;以及通过cnn的其中每一个均包括分类层的分类器通过以下操作来推断块分割:通过每个分类层接收具有相应特征尺寸的第二特征映射;通过每个分类器通过以下操作来针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2,……,n/s:在分类层中的一些连续分类层处应用大小为1×1的内核,以将相应特征尺寸减小一半;并且通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出。

示例12:根据示例11的方法,其中,分类器包括针对大小为(2s)×(2s)的子块推断分割决策的第一分类器,并且其中,通过每个分类器来针对块中的大小为n/(αs)×n/(αs)的子块推断分割决策进一步包括:通过第一分类器从级联层接收第一特征映射;并且通过第一分类器使用第一2×2内核来应用第一非重叠卷积运算,以将第一特征映射减小到(s/2)×(s/2)的大小。

示例13:根据示例12的方法,其中,分类器包括针对大小为n/(βs)×n/(βs)的子块推断分割决策的第二分类器,该第二分类器与第一分类器不同,并且进一步包括:通过第二分类器从第三分类器接收第三特征映射,该第三特征映射的大小均为m×m;并且通过第二分类器使用第二2×2内核来应用第二非重叠卷积运算,以将第三特征映射减小到(m/2)×(m/2)的大小。

示例14:根据示例11至13中任一个的方法,其包括:通过特征提取层中的第一特征提取层将(n/s)×(n/s)非重叠卷积滤波器应用于块,以生成块的第一特征映射的第一子集。

示例15:根据示例14的方法,其中,特征提取层进一步包括第二特征提取层,进一步包括:通过第二特征提取层将m×m非重叠卷积滤波器应用于块,以生成大小均为(n/m)×(n/m)的映射,其中,m小于s,大于1并且是2的幂;并且将非重叠2×2卷积滤波器连续地应用于映射,以生成块的第一特征映射的第二子集。

示例16:根据示例11至15中任一个的方法,其中,n是64且s是8。

示例17:根据示例11至15中任一个的方法,其中,n是128且s是8。

示例18:根据示例11至17中任一个的方法,其进一步包括:将量化参数(qp)的非线性值用作级联层的输入。

示例19:一种用于对图像块进行解码的设备,其包括:处理器,该处理器:在压缩比特流中接收将图像块四叉树分割成子块的指示,其中,编码器使用卷积神经网络(cnn)来确定图像块的四叉树分割,该卷积神经网络包括:特征提取层;级联层,该级联层从特征提取层接收块的第一特征映射,其中,每个第一特征映射的大小为s×s;以及分类器,每个分类器包括分类层,其中,每个分类层接收具有相应特征尺寸的第二特征映射,每个分类器配置为通过以下操作来针对块中的大小为(αs)×(αs)的子块推断分割决策,其中,α是2的幂,且α=2,……,n/s:在分类层中的一些连续分类层处应用大小为1×1的内核,以将相应特征尺寸减小一半;并且通过分类层中的最终层来输出与n/(αs)×n/(αs)×1输出映射对应的输出;并且使用图像块的四叉树分割的指示来对图像块进行解码。

示例20:根据示例19的设备,其中,将量化参数(qp)的非线性值用作cnn的输入。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1