用于视频编码和解码的装置、方法和计算机程序

文档序号:1895381 发布日期:2021-11-26 浏览:8次 >En<

阅读说明:本技术 用于视频编码和解码的装置、方法和计算机程序 (Apparatus, method and computer program for video encoding and decoding ) 是由 F·克里克里 C·艾特金 M·汉努卡塞拉 X·倪 于 2020-01-29 设计创作,主要内容包括:一种方法包括:获得包括多个帧内预测模式不可知层和一个或多个帧内预测模式特定层的至少一个神经网络的配置,一个或多个帧内预测模式特定层对应于不同的帧内预测模式;获得包括多个块的至少一个输入视频帧;确定使用帧内预测来编码一个或多个块;确定用于一个或多个块中的每一块的帧内预测模式;将具有相同帧内预测模式的块分组成组,每个组被分配有在多个帧内预测模式不可知层和一个或多个帧内预测模式特定层之中的计算路径;基于神经网络的与块组有关的输出与标注块之间的训练损失来训练神经网络的多个帧内预测模式不可知层和/或一个或多个帧内预测模式特定层,其中,标注块是输入视频帧的块或者是重建块;以及使用被分配给块的帧内预测模式的计算路径来对该块进行编码。(One method comprises the following steps: obtaining a configuration of at least one neural network comprising a plurality of intra-prediction mode agnostic layers and one or more intra-prediction mode specific layers, the one or more intra-prediction mode specific layers corresponding to different intra-prediction modes; obtaining at least one input video frame comprising a plurality of blocks; determining to encode one or more blocks using intra prediction; determining an intra prediction mode for each of the one or more blocks; grouping blocks having the same intra prediction mode into groups, each group being allocated with a computation path among a plurality of intra prediction mode agnostic layers and one or more intra prediction mode specific layers; training a plurality of intra-prediction mode agnostic layers and/or one or more intra-prediction mode specific layers of a neural network based on training losses between block group related outputs of the neural network and labeled blocks, wherein the labeled blocks are blocks of an input video frame or reconstructed blocks; and encoding the block using a calculation path allocated to an intra prediction mode of the block.)

用于视频编码和解码的装置、方法和计算机程序

技术领域

本发明涉及用于视频编码和解码的装置、方法和计算机程序。

背景技术

所谓的混合视频压缩是基于执行帧内预测和帧间预测、然后对残差或预测误差进行变换编码。在帧内模式中,视频帧的块从同一帧的空间相邻块来预测。然后,只有帧内预测块与原始块之间的预测误差或残差需要被编码。不仅在解码器处,而且在编码器中,更具体地在编码器的“解码环路”中,执行帧内预测过程,以便计算残差。

通常使用算法方法(即,不使用学习方法)来执行帧内预测过程。帧内预测通常涉及多个预定义预测模式,其中,在编码期间,对于待被预测的块,尝试所有或若干预测模式,并且针对所述块的最适合的预测模式是例如基于预测块与真实块之间的均方误差(MSE)来选择的。

帧内预测过程的目标是获得最小可能预测误差或残差,因此,要求更少的比特来对消耗整个视频的比特流的很大一部分的帧内帧进行编码。然而,上述的算法方法已受限于在预测准确度方面已经饱和的这种最终研究和开发。因此,可以使用学习方法实现进一步的开发。

发明内容

现在为了至少减轻以上问题,在此引入一种增强型编码方法。

根据第一方面的方法包括:获得包括多个帧内预测模式不可知层和一个或多个帧内预测模式特定层的至少一个神经网络的配置,一个或多个帧内预测模式特定层对应于不同的帧内预测模式;获得包括多个块的至少一个输入视频帧;确定使用帧内预测来编码一个或多个块;确定用于所述一个或多个块中的每一块的帧内预测模式;将具有相同帧内预测模式的块分组成组,每个组被分配有在多个帧内预测模式不可知层和一个或多个帧内预测模式特定层之中的计算路径;基于神经网络的与块组有关的输出与标注(ground-truth)块之间的训练损失来训练神经网络的多个帧内预测模式不可知层和/或一个或多个帧内预测模式特定层,其中,标注块是输入视频帧的块或者是重建块;以及使用被分配给用于块的帧内预测模式的计算路径来对块进行编码。

第二方面涉及一种装置,其包括:用于获得包括多个帧内预测模式不可知层和一个或多个帧内预测模式特定层的至少一个神经网络的配置的部件,一个或多个帧内预测模式特定层对应于不同的帧内预测模式;用于获得包括多个块的至少一个输入视频帧的部件;用于确定使用帧内预测来编码一个或多个块的部件;用于确定用于所述一个或多个块中的每一块的帧内预测模式的装置;用于将具有相同帧内预测模式的块分组成组的部件,每个组被分配有在多个帧内预测模式不可知层和一个或多个帧内预测模式特定层之中的计算路径;用于基于神经网络的与块组有关的输出与标注块之间的训练损失来训练神经网络的多个帧内预测模式不可知层和/或一个或多个帧内预测模式特定层的部件,其中,标注块是输入视频帧的块或者是重建块;以及用于使用被分配给用于块的帧内预测模式的计算路径来对块进行编码的部件。

根据实施例,至少一个神经网络的配置包括预先训练的神经网络,并且该装置还包括用于使用输入视频帧的块作为标注块的部件。

根据实施例,该装置还包括用于在包括编码块组的比特流中或沿着该比特流指示指明被定义为训练块的块组的信息的部件。

根据实施例,神经网络的配置包括(一个或多个)层的模式不可知区和(一个或多个)层的模式特定区。

根据实施例,神经网络的配置包括:针对多个帧内预测模式所训练的初始层的初始区,以及特定于每个帧内预测模式的多个最终层。

根据实施例,神经网络的配置包括用于不同的帧内预测模式的多个不同的神经网络。

根据实施例,第一学习率被用于训练帧内预测模式不可知层,第二学习率被用于训练帧内预测模式特定层,并且其中,第二学习率小于第一学习率。

根据实施例,指示被定义为训练块的块组的信息包括量化参数,其中,如果量化参数小于或等于阈值,则块组被定义为训练块。

根据实施例,神经网络的输入包括输入视频帧的多个重建块。

根据实施例,训练多个帧内预测模式不可知层和/或一个或多个帧内预测模式特定层的时期(epoch)或迭代(iteration)是基于与多个帧内预测模式相关联的块。

第三方面涉及一种方法,其包括:获得包括多个帧内预测模式不可知层和与不同的帧内预测模式对应的一个或多个帧内预测模式特定层的至少一个神经网络的配置;获得包括编码视频帧的比特流,其中,编码视频帧包括多个块;从比特流或沿着比特流对指示被定义为训练块的块组的信息进行解码;将训练块解码为重建块;基于神经网络的与块组有关的输出与重建块之间的训练损失来训练神经网络的多个帧内预测模式不可知层和/或一个或多个帧内预测模式特定层;以及使用被分配给编码块的帧内预测模式的计算路径来对编码块进行解码。

第四方面涉及一种装置,其包括:用于获得包括多个帧内预测模式不可知层和与不同的帧内预测模式对应的一个或多个帧内预测模式特定层的至少一个神经网络的配置的部件;用于获得包括编码视频帧的比特流的部件,其中,编码视频帧包括多个块;用于从比特流或沿着比特流对指示被定义为训练块的块组的信息进行解码的部件;用于将训练块解码为重建块的部件;用于基于神经网络的与块组有关的输出与重建块之间的训练损失来训练神经网络的多个帧内预测模式不可知层和/或一个或多个帧内预测模式特定层的部件;以及用于使用被分配给编码块的帧内预测模式的计算路径来对编码块进行解码的部件。

根据第五和第六方面的装置包括至少一个处理器和至少一个存储器,在所述至少一个存储器上存储有代码,至少一个存储器和计算机程序代码被配置为与至少一个处理器一起使该装置执行方法。

根据再一方面,提供了一种在其上存储有用于由装置使用的代码的计算机可读非暂态存储介质,该代码在由处理器执行时使得该装置执行方法。

因此,如上文所描述的装置和在其上存储有代码的计算机可读存储介质被布置为执行上述的方法以及与其有关的实施例中的一个或多个。

进一步的方面涉及包括用于执行上述的方法以及与其有关的实施例中的一个或多个的部件的装置。

附图说明

为了更好地理解本发明,现在将通过示例的方式参考附图,其中:

图1示意性地示出采用本发明的实施例的电子设备;

图2示意性地示出适合于采用本发明的实施例的用户设备;

图3进一步示意性地示出使用无线和无线网络连接而被连接的采用本发明的实施例的电子设备;

图4示意性地示出一般的编码器的框图;

图5示出用于待被预测的块的帧内预测过程的示例;

图6示出根据本发明的实施例的编码方法的流程图;

图7示出根据本发明的实施例的解码方法的流程图;

图8示出根据本发明的实施例的用于帧内预测的神经网络的示意图;

图9示出根据本发明的实施例的确定用于帧的块的标注计算路径标签的示例;

图10示出根据本发明的实施例的对具有相同标注计算路径标签的块进行分组的示例;以及

图11示出在其内可以实现各种实施例的示例多媒体通信系统的示意图。

具体实施方式

以下更详细地描述了用于基于神经网络的视频/图像编码的适合装置和可能机制。在这方面,首先参考图1和图2,其中,图1示出根据示例实施例的视频编码系统的框图,作为可包含根据本发明的实施例的编解码器的示例性装置或电子设备50的示意性框图。图2示出根据示例实施例的装置的布局。然后将说明图1和图2的元件。

电子设备50可以例如是无线通信系统的移动终端或用户设备。然而,应理解,本发明的实施例可以在可要求编码并解码或者编码或解码视频图像的任何电子设备或装置内实现。

装置50可包括用于包含并保护设备的壳体30。装置50还可包括采用液晶显示器形式的显示器32。在本发明的其他实施例中,显示器可以是适合于显示图像或视频的任何适合的显示技术。装置50还可包括小键盘34。在本发明的其他实施例中,可以采用任何适合的数据或用户接口机制。例如,用户接口可以被实现为虚拟键盘或数据输入系统,作为触敏显示器的一部分。

装置可包括麦克风36或可以是数字或模拟信号输入的任何适合的音频输入。装置50还可包括音频输出设备,在本发明的实施例中,音频输出设备可以是以下任一项:耳机38,扬声器,或模拟音频或数字音频输出连接。装置50还可包括电池(或在本发明的其他实施例中,设备可以由任何适合的移动能量设备(诸如太阳能电池、燃料电池、或发条发电机)供电)。装置还可包括能够记录或捕获图像和/或视频的相机。装置50还可包括用于与其他设备进行短距离视线通信的红外端口。在其他实施例中,装置50还可包括任何适合的短距离通信解决方案,诸如例如蓝牙无线连接或USB/火线有线连接。

装置50可包括用于控制装置50的控制器56、处理器或处理器电路。控制器56可被连接到存储器58,在本发明的实施例中,存储器58可存储采用图像和音频数据形式的数据和/或还可存储用于在控制器56上实现的指令。控制器56还可被连接到编解码器电路54,该编解码器电路54适合于执行音频和/或视频数据的编码和/或解码或者辅助由控制器执行的编码和解码。

装置50还可包括读卡器48和智能卡46,例如UICC和UICC读取器,用于提供用户信息并适合于提供用于在网络处认证和授权用户的认证信息。

装置50可包括无线电接口电路52,该无线电接口电路52被连接到控制器并适合于产生例如用于与蜂窝通信网络、无线通信系统或无线局域网进行通信的无线通信信号。装置50还可包括被连接到无线电接口电路52的天线44,用于向其他(一个或多个)装置发送在无线电接口电路52处产生的射频信号和用于从其他(一个或多个)装置接收射频信号。

装置50可包括能够记录或检测单独帧的相机,然后这些帧被传递到编解码器54或控制器以用于处理。装置可以在传输和/或存储之前从另一设备接收用于处理的视频图像数据。装置50还可以无线地或通过有线连接来接收图像以用于编码/解码。上文所描述的装置50的结构元件表示用于执行对应功能的部件的示例。应理解,尽管已经使用编解码器54作为示例描述了一些实施例,但是,根据实施例的视频编码装置可包括(一个或多个)编码器或(一个或多个)解码器、或者它们两者。

关于图3,示出了可以在其中利用本发明的实施例的系统的示例。系统10包括可通过一个或多个网络进行通信的多个通信设备。系统10可包括有线或无线网络中的任一个或组合,包括但不限于无线蜂窝电话网络(诸如GSM、UMTS、CDMA网络等)、诸如由IEEE 802.x标准中的任一个定义的无线局域网(WLAN)、蓝牙个域网、以太网局域网、令牌环局域网、广域网、广播网络、和互联网。

系统10可包括有线和无线通信设备两者和/或适合于实现本发明的实施例的装置50。

例如,图3所示的系统示出了移动电话网络11和互联网28的表示。与互联网28的连接可以包括但不限于长距离无线连接、短距离无线连接、和各种有线连接(包括但不限于电话线、电缆线、电源线、和类似的通信路径)。

系统10中所示的示例通信设备可以包括但不限于电子设备或装置50、个人数字助理(PDA)和移动电话14的组合、PDA 16、集成消息传递设备(IMD)18、台式计算机20、笔记本计算机22。装置50在由正在移动的个人携带时可以是固定的或移动的。装置50也可以位于运输模式中,包括但不限于汽车、卡车、出租车、公共汽车、火车、船、飞机、自行车、摩托车或任何类似适合的运输模式。

实施例也可以被实现在机顶盒(即,数字TV接收器,其可以/可以不具有显示器或无线能力)中、在平板计算机或(膝上型)个人计算机(PC)(其具有编码器/解码器实现的硬件或软件或组合)中、在各种操作系统中、以及在提供基于硬件/软件的编码的芯片集、处理器、DSP和/或嵌入式系统中。

一些或进一步的装置可以通过到基站24的无线连接25来发送和接收呼叫和消息并与服务提供商进行通信。基站24可以被连接到允许移动电话网络11与互联网28之间的通信的网络服务器26。系统可包括附加通信设备和各种类型的通信设备。

通信设备可使用各种传输技术进行通信,包括但不限于码分多址(CDMA)、全球移动通信系统(GSM)、通用移动通信系统(UMTS)、时分多址(TDMA)、频分多址(FDMA)、传输控制协议-网际协议(TCP-IP)、短消息服务(SMS)、多媒体消息服务(MMS)、电子邮件、即时消息服务(IMS)、蓝牙、IEEE 802.11和任何类似的无线通信技术。在实现本发明的各种实施例中涉及的通信设备可以使用各种介质来进行通信,包括但不限于无线电、红外线、激光、电缆连接和任何适合的连接。

在电信和数据网络中,信道可以是指物理信道或逻辑信道。物理信道可以是指诸如电线的物理传输介质,而逻辑信道可以是指在能够传送若干逻辑信道的复用介质上的逻辑连接。信道可以用于从一个或若干发送器(或发射器)向一个或若干接收器传送信息信号,例如比特流。

在ISO/IEC 13818-1中或等效地在ITU-T建议H.222.0中规定的MPEG-2传输流(TS)是用于在复用流中携带音频、视频和其他媒体以及程序元数据或其他元数据的格式。分组标识符(PID)用于标识在TS内的基本码流(也称为分组化基本码流)。因此,在MPEG-2TS内的逻辑信道可以被认为是对应于特定PID值。

可用的媒体文件格式标准包括ISO基本媒体文件格式(ISO/IEC 14496-12,其可以缩写为ISOBMFF)和源自ISOBMFF的用于NAL单元结构化视频的文件格式(ISO/IEC 14496-15)。

视频编解码器可包括:编码器,其将输入视频变换成适合于存储/传输的压缩表示;以及解码器,其可以将压缩视频表示解压缩回成可视形式。视频编码器和/或视频解码器也可以彼此分离,即,不需要形成编解码器。通常,编码器丢弃原始视频序列中的一些信息以便以更紧凑的形式(即,以较低的比特率)表示视频。

典型的混合视频编码器,例如ITU-T H.263和H.264的许多编码器实现,在两个阶段中对视频信息进行编码。首先,例如由运动补偿部件(在一个先前编码的视频帧中找到并指示紧密对应于正被编码的块的区域)或由空间部件(使用在要以指定方式被编码的块周围的像素值)预测特定图片区域(或“块”)中的像素值。其次,对预测误差(即,预测的像素块与原始像素块之间的差异)进行编码。这通常通过如下操作来完成:使用指定变换(例如离散余弦变换(DCT)或其变型)来变换像素值的差异,对系数进行量化,并对量化后系数进行熵编码。通过改变量化过程的保真度,编码器可以控制像素表示的准确度(图片质量)与所产生的编码视频表示的尺寸(文件尺寸或传输比特率)之间的平衡。

在时间预测中,预测源是先前被解码的图片(也称为参考图片)。在块内复制(IBC;也称为块内复制预测)中,预测被类似地应用于时间预测,但是参考图片是当前图片,并且在预测过程中仅可以参考先前被解码的样本。层间或视图间预测可以被类似地应用于时间预测,但是参考图片是分别从另一个可伸缩层或从另一个视图解码的图片。在一些情况下,帧间预测可以是指仅时间预测,而在其他情况下,帧间预测可以共同是指时间预测和以下任意一个:块内复制,层间预测,和视图间预测,假如它们用与时间预测相同或类似的过程来执行。帧间预测或时间预测有时可被称为运动补偿或运动补偿预测。

帧间预测(也可被称为时间预测、运动补偿、或运动补偿预测)减少时间冗余度。在帧间预测中,预测源是先前被解码的图片。帧内预测利用在同一图片内的相邻像素很可能相关的事实。可以在空间域或变换域中执行帧内预测,即可以预测样本值或变换系数。通常在帧内编码中利用帧内预测,其中,不应用帧间预测。

编码过程的一个结果是一组编码参数,诸如运动矢量和量化后变换系数。如果首先从在空间或时间上相邻的参数预测许多参数,则可以更有效地对这些参数进行熵编码。例如,可以从空间相邻的运动矢量预测运动矢量,并且可以仅对相对于运动矢量预测器的差异进行编码。编码参数的预测和帧内预测可以被统称为图片内预测。

图4示出视频编码器的一般结构的框图。图4呈现了两层的编码器,但是将理解,所呈现的编码器可以被类似地扩展以对超过两层进行编码或者对单个层进行编码。图4示出的视频编码器包括用于基础层的第一编码器部分500和用于增强层的第二编码器部分502。第一编码器部分500和第二编码器部分502中的每一个可包括用于编码进入图片的类似元件。编码器部分500、502可包括像素预测器302、402、预测误差编码器303、403和预测误差解码器304、404。图4还示出像素预测器302、402的实施例包括帧间预测器306、406、帧内预测器308、408、模式选择器310、410、滤波器316、416、和参考帧存储器318、418。第一编码器部分500的像素预测器302在帧间预测器306(其确定图像与运动补偿参考帧318之间的差异)和帧内预测器308(其仅基于当前帧或图片的已处理部分来确定对图像块的预测)处都接收要被编码的视频流的基础层图像300。帧间预测器和帧内预测器的输出都被传递到模式选择器310。帧内预测器308可以具有超过一个帧内预测模式。因此,每个模式可以执行帧内预测,并向模式选择器310提供预测信号。模式选择器310还接收基础层图片300的副本。相应地,第二编码器部分502的像素预测器402在帧间预测器406(其确定图像与运动补偿参考帧418之间的差异)和帧内预测器408(其仅基于当前帧或图片的已处理部分来确定对图像块的预测)处都接收要被编码的视频流的增强层图像400。帧间预测器和帧内预测器的输出都被传递到模式选择器410。帧内预测器408可以具有超过一个帧内预测模式。因此,每个模式可以执行帧内预测,并向模式选择器410提供预测信号。模式选择器410还接收增强层图片400的副本。

取决于选择哪个编码模式来编码当前块,帧间预测器306、406的输出或者可选的帧内预测器模式之一的输出或者在模式选择器内的表面编码器的输出被传递到模式选择器310、410的输出。模式选择器的输出被传递到第一求和设备321、421。第一求和设备可以从基础层图片300/增强层图片400减去像素预测器302、402的输出以产生第一预测误差信号320、420,其被输入到预测误差编码器303、403。

像素预测器302、402进一步从初步重建器339、439接收图像块312、412的预测表示和预测误差解码器304、404的输出338、438的组合。初步重建图像314、414可以被传递到帧内预测器308、408和滤波器316、416。接收初步表示的滤波器316、416可以对初步表示进行滤波,并输出可被保存在参考帧存储器318、418中的最终重建图像340、440。参考帧存储器318可以被连接到帧间预测器306以用作在帧间预测操作中与未来基础层图片300相比较的参考图像。根据一些实施例,受限于基础层被选择并被指示为用于增强层的层间样本预测和/或层间运动信息预测的源,参考帧存储器318也可以被连接到帧间预测器406以用作在帧间预测操作中与未来增强层图片400相比较的参考图像。另外,参考帧存储器418可以被连接到帧间预测器406以用作在帧间预测操作中与未来增强层图片400相比较的参考图像。

根据一些实施例,受限于基础层被选择并被指示为用于预测增强层的滤波参数的源,来自第一编码器部分500的滤波器316的滤波参数可以被提供给第二编码器部分502。

预测误差编码器303、403包括变换单元342、442和量化器344、444。变换单元342、442将第一预测误差信号320、420变换到变换域。变换例如是DCT变换。量化器344、444对变换域信号(例如DCT系数)进行量化以形成量化后系数。

预测误差解码器304、404接收来自预测误差编码器303、403的输出,并执行预测误差编码器303、403的相反过程以产生解码的预测误差信号338、438,该解码的预测误差信号338、438当在第二求和设备339、439处与图像块312、412的预测表示相组合时产生初步重建图像314、414。预测误差解码器可以被认为包括:去量化器361、461,其对量化后系数值(例如DCT系数)进行去量化以重建变换信号;以及逆变换单元363、463,其对重建变换信号执行逆变换,其中,逆变换单元363、463的输出包含(一个或多个)重建块。预测误差解码器还可包括块滤波器,其可以根据进一步的解码信息和滤波器参数来对(一个或多个)重建块进行滤波。

熵编码器330、430接收预测误差编码器303、403的输出,并可对信号执行适合的熵编码/可变长度编码以提供误差检测和纠错能力。熵编码器330、430的输出可以例如通过复用器508被插入到比特流中。

可以以许多方式执行熵编码/解码。例如,可以应用基于上下文的编码/解码,其中,编码器和解码器两者基于先前被编码/解码的编码参数来修改编码参数的上下文状态。基于上下文的编码可以例如是上下文自适应二进制算术编码(CABAC)或基于上下文的可变长度编码(CAVLC)或任何类似熵编码。可替代地或附加地,熵编码/解码可以使用可变长度编码方案来执行,诸如霍夫曼编码/解码或Exp-Golomb编码/解码。从熵编码比特流或码字解码编码参数可以被称为解析。

H.264/AVC标准由国际电信联盟的电信标准化部门(ITU-T)的视频编码专家组(VCEG)的联合视频组(JVT)和国际标准化组织(ISO)/国际电工委员会(IEC)的运动图像专家组(MPEG)开发。H.264/AVC标准由这两个上代标准化组织发布,并且被称为ITU-T建议H.264和ISO/IEC国际标准14496-10,也称为MPEG-4Part 10高级视频编码(AVC)。已经存在H.264/AVC标准的多个版本,其将新的扩展或特征集成到规范中。这些扩展包括可伸缩视频编码(SVC)和多视图视频编码(MVC)。

高效率视频编码(H.265/HEVC,也称为HEVC)标准的版本1由VCEG和MPEG的联合协作团队-视频编码(JCT-VC)开发。该标准由这两个上代标准化组织发布,并且被称为ITU-T建议H.265和ISO/IEC国际标准23008-2,也称为MPEG-H Part 2高效率视频编码(HEVC)。H.265/HEVC的后续版本包括可伸缩、多视图、保真度范围扩展、三维和屏幕内容编码扩展,其可以被分别缩写为SHVC、MV-HEVC、REXT、3D-HEVC和SCC。

SHVC、MV-HEVC和3D-HEVC使用在HEVC标准的版本2的附录F中指定的公共基础规范。该公共基础包括例如高级语法和语义,其例如指定比特流的层的一些特性(诸如层间相关性)以及解码过程(诸如参考图片列表构建,其包括用于多层比特流的层间参考图片和图片顺序计数推导)。附录F也可用于HEVC的潜在后续多层扩展。应理解,即使可以在以下参考特定扩展(诸如SHVC和/或MV-HEVC)来描述视频编码器、视频解码器、编码方法、解码方法、比特流结构、和/或实施例,但是它们一般适用于HEVC的任何多层扩展,并且更一般地适用于任何多层视频编码方案。

H.264/AVC和HEVC的一些关键定义、比特流和编码结构、以及概念在本章节中被描述为视频编码器、解码器、编码方法、解码方法和比特流结构的示例,其中可以实现实施例。H.264/AVC的关键定义、比特流和编码结构、以及概念中的一些与HEVC中的相同,因此,在下面联合描述它们。本发明的方面不限于H.264/AVC或HEVC,而是针对一种可能的基础给出描述,本发明可以在该基础上被部分或完全实现。

类似于许多早期的视频编码标准,在H.264/AVC和HEVC中指定了比特流语法和语义以及用于无差错比特流的解码过程。未指定编码过程,但是编码器必须产生符合的比特流。比特流和解码器的符合性可以用假想参考解码器(HRD)来验证。标准包含有助于处理传输错误和损失的编码工具,但是工具在编码中的使用工具是可选的,并且还没有针对错误比特流指定解码过程。

分别用于H.264/AVC或HEVC编码器的输入和H.264/AVC或HEVC解码器的输出的基本单元是图片。作为编码器的输入给定的图片也可以被称为源图片,并且被解码器解码的图片可以被称为解码图片。

源图片和解码图片各自包括一个或多个样本阵列,诸如以下样本阵列集合中的一个:

-仅亮度(Y)(单色),

-亮度和两个色度(YCbCr或YCgCo),

-绿色、蓝色和红色(GBR,也称为RGB),

-表示其他未指定的单色或三色(tri-stimulus)颜色采样的阵列(例如,YZX,也称为XYZ)。

在下面,这些阵列可以被称为亮度(或L或Y)和色度,其中,两个色度阵列可以被称为Cb和Cr;不管使用的实际颜色表示法。使用的实际颜色表示法可以例如使用H.264/AVC和/或HEVC的视频可用性信息(VUI)语法例如在编码比特流中被指示。分量可以被定义为来自三个样本阵列(亮度和两个色度)之一的阵列或单个样本或者构成单色格式的图片的阵列或阵列的单个样本。

在H.264/AVC和HEVC中,图片可以是帧或者场。帧包括亮度样本和可能的对应色度样本的矩阵。当源信号被隔行扫描时,场是帧的一组交替样本行,并可被用作编码器输入。当与亮度样本阵列相比较时,色度样本阵列可以不存在(并且因此,可以使用单色采样)或者色度样本阵列可以被二次采样。色度格式可以总结如下:

-在单色采样中,仅存在一个样本阵列,其可以在名义上被认为是亮度阵列;

-在4:2:0采样中,两个色度阵列中的每一个具有亮度阵列的一半高度和一半宽度;

-在4:2:2采样中,两个色度阵列中的每一个具有亮度阵列的相同高度和一半宽度;

-在4:4:4采样中,当没有使用单独的颜色平面时,两个色度阵列中的每一个具有与亮度阵列相同的高度和宽度。

在H.264/AVC和HEVC中,可以将样本阵列作为单独的颜色平面编码到比特流中,并从比特流中分别解码被单独编码的颜色平面。当在使用单独的颜色平面时,每一个颜色平面被(编码器和/或解码器)单独处理成具有单色采样的图片。

分区可以被定义为将集合划分成子集,以使得集合中的每个元素恰好在一个子集中。

当描述HEVC编码和/或解码的操作时,可以使用以下术语。编码块可以被定义为对于某个N值的N×N样本块,以使得将编码树块划分成编码块是分区。编码树块(CTB)可以被定义为对于某个N值的N×N样本块,以使得将分量划分成编码树块是分区。编码树单元(CTU)可以被定义为亮度样本的编码树块、具有三个样本阵列的图片的色度样本的两个对应编码树块、或者单色图片或使用三个单独的颜色平面和用于对样本编码的语法结构来编码的图片的样本的编码树块。编码单元(CU)可以被定义为亮度样本的编码块、具有三个样本阵列的图片的色度样本的两个对应编码块、或者单色图片或使用三个单独的颜色平面和用于对样本编码的语法结构来编码的图片的样本的编码块。具有最大允许尺寸的CU可以被命名为LCU(最大编码单元)或编码树单元(CTU),并且视频图片被划分成不重叠的LCU。

CU包括定义用于CU内的样本的预测过程的一个或多个预测单元(PU)和定义用于所述CU中的样本的预测误差编码过程的一个或多个变换单元(TU)。通常,CU包括具有可从预定义的可能CU尺寸集合选择的尺寸的方形样本块。每个PU和TU可以被进一步分割成更小的PU和TU,以便分别增加预测和预测误差编码过程的粒度。每个PU具有与其相关联的预测信息,该预测信息定义要对该PU内的像素应用什么种类的预测(例如,用于帧间预测的PU的运动矢量信息和用于帧内预测的PU的帧内预测方向信息)。

每个TU可以与描述用于所述TU内的样本的预测误差解码过程的信息(包括例如DCT系数信息)相关联。通常,在CU级别处用信号发送预测误差编码是否被应用于每个CU。在不存在与CU相关联的预测误差残差的情况下,可以认为对于所述CU不存在TU。将图像划分成CU以及将CU划分成PU和TU通常在比特流中用信号发送,该比特流允许解码器再现这些单元的预期结构。

在一些编码系统中,例如HEVC,可以将图片分成区块(tile),这些区块是矩形的并且包含整数个块,诸如HEVC中的LCU。在HEVC中,划分成区块形成了可由区块列宽度列表和区块行高度列表表征的规则网格。区块在比特流中按区块网格的光栅扫描顺序被连续地排序。区块可包含整数个条带(slice),或者条带可包含整数个区块。块(诸如HEVC中的CTU)可以按块的光栅扫描顺序在编码和解码中逐个区块地扫描,并且区块可以沿着区块网格按光栅扫描顺序来扫描。

视频编码标准和规范可允许编码器将编码图片划分成编码条带等。图片内预测通常不能跨条带边界进行。因此,条带可被认为是将编码图片分割成独立可解码片(piece)的方式。因此,条带常常被认为是用于传输的基本单元。在许多情况下,编码器可以在比特流中指示跨条带边界关闭哪些类型的图片内预测,并且解码器操作例如在推断哪些预测源可用时考虑该信息。例如,如果相邻块驻留在不同条带中,则来自该相邻块的样本可被认为不可用于帧内预测。

在HEVC中,条带被定义为被包含在同一访问单元内的一个独立条带片段(segment)和在下一个独立条带片段(如果有的话)之前的所有后续依存(dependent)条带片段(如果有的话)中的整数个编码树单元。在HEVC中,条带片段被定义为在区块扫描中被连续排序并被包含在单个NAL单元中的整数个编码树单元。将每个图片划分成条带片段是分区。在HEVC中,独立条带片段被定义为条带片段头部的语法元素的值未从前一条带片段的值推断出的条带片段,并且依存条带片段被定义为条带片段头部的一些语法元素的值按解码顺序从前一独立条带片段的值推断出的条带片段。在HEVC中,条带头部被定义为独立条带片段的条带片段头部,其中该独立条带片段是当前条带片段或者是在当前依存条带片段之前的独立条带片段,并且条带片段头部被定义为是包含属于在条带片段中表示的第一个或所有编码树单元的数据元素的编码条带片段的一部分。如果区块没有使用,则在区块内或在图片内按LCU的光栅扫描顺序来扫描CU。在LCU内,CU具有特定扫描顺序。

在波前并行处理(WPP)中,条带的每个块行(例如HEVC中的CTU行)可以并行地被编码和解码。当使用WPP时,熵编解码器在块行的开始处的状态从在处理该行的第二个块之后在上面的块行的熵编解码器的状态获得。因此,块行可以以每一块行2个块的延迟来并行地处理。

运动约束区块集(MCTS)使得帧间预测过程在编码中被约束,以使得运动约束区块集以外的样本值和在使用运动约束区块集以外的一个或多个样本值来导出的分数样本位置处的样本值没有被用于在运动约束区块集内的任何样本的帧间预测。此外,MCTS的编码以不从MCTS以外的块导出运动矢量候选的方式来约束。这可通过关闭HEVC的时间运动矢量预测或者通过不允许编码器针对直接位于MCTS的右区块边界的左边但除了在MCTS的右下角的最后一个之外的PU使用合并或AMVP候选列表中的TMVP候选或在TMVP候选之后的任何运动矢量预测候选来强制执行。通常,MCTS可以被定义为是独立于在MCTS以外的任何样本值和编码数据(诸如运动矢量)的区块集。在一些情况下,MCTS可以被要求形成矩形区域。应当理解,取决于上下文,MCTS可以是指图片内的区块集或者是指图片序列中的相应区块集。相应区块集可以但通常不需要被并置在图片序列中。

注意,条带、波前和区块当被包括在MCTS中时也可以被用作使得能够并行运行若干编码和/或解码线程或进程的并行化工具。

注意,在帧间预测中使用的样本位置可通过编码和/或解码过程来饱和,以使得会在图片以外的位置以其他方式被饱和以指向图片的对应的边界样本。因此,如果区块边界也是图片边界,则在一些用例中,编码器可以允许运动矢量有效地跨越该边界或允许运动矢量有效地引起会参考在该边界以外的位置的分数样本内插,因为样本位置被饱和到边界上。在其他用例中,具体如果编码区块可以从其位于邻近图片边界的位置的比特流被提取到区块位于不邻近图片边界的位置的另一比特流,则编码器可以在图片边界上对运动矢量进行约束,类似于任何MCTS边界。

HEVC的时间运动约束区块集SEI消息可以被用于指示在比特流中存在运动约束区块集。

解码器通过类似于编码器地应用预测部件以形成像素块的预测表示(使用由编码器创建并以压缩表示被存储的运动或空间信息)和预测误差解码(在空间像素域中恢复量化后预测误差信号的预测误差编码的逆运算)来重建输出视频。在应用了预测部件和预测误差解码部件之后,解码器将预测信号和预测误差信号(像素值)相加以形成输出视频帧。解码器(和编码器)也可以应用附加的滤波部件以改善输出视频的质量,然后传递视频以用于显示和/或将视频存储为用于视频序列中的即将到来的帧的预测参考。

滤波可以例如包括以下中的一个或多个:解块,样本自适应偏移(SAO),和/或自适应环路滤波(ALF)。H.264/AVC包括解块,而HEVC包括解块和SAO两者。

解块环路滤波器可以包括多个滤波模式或强度,其可以基于邻近边界的块的特征(诸如量化参数值)和/或由编码器包括在比特流中的信令而被自适应地选择。例如,解块环路滤波器可包括正常滤波模式和强滤波模式,这两种模式可以在滤波器抽头的数量(即,在边界的两侧被滤波的样本数量)和/或滤波器抽头值方面不同。例如,在忽略削波操作的潜在影响时,可以用具有(3 7 9-3)/16的脉冲响应的滤波器来执行沿着边界的两侧的两个样本的滤波。

接下来参考HEVC给出SAO的示例;然而,SAO也可以类似地被应用于其他编码方案。在SAO中,图片被划分为区域,其中,针对每个区域做出单独的SAO决策。在HEVC中,用于适配SAO参数的基本单元是CTU(因此,SAO区域是由对应的CTU覆盖的块)。

在SAO算法中,根据一组规则来对CTU中的样本进行分类,并且通过添加偏移值来增强每个被分类的样本集合。偏移值在比特流中用信号发送。存在两种类型的偏移:1)频带偏移,2)边缘偏移。针对CTU,不采用SAO或频带偏移或边缘偏移。是否不使用SAO或频带或边缘偏移的选择可由编码器用例如率失真优化(RDO)来决定并被信号发送到解码器。

在频带偏移中,样本值的整个范围在一些实施例中被分成32个等宽频带。例如,对于8位样本,频带的宽度是8(=256/32)。从32个频带中,选择其中的4个,并且对于所选择的频带中的每一个,用信号发送不同的偏移。选择决策由编码器做出并且可以如下被信号发送:用信号发送第一个频带的索引,然后,推断随后的四个频带是所选择的频带。频带偏移在校正平滑区域中的误差时可以是有用的。

在边缘偏移类型中,边缘偏移(EO)类型可以从四种可能的类型(或边缘分类)中选择,其中,每种类型与一个方向相关联:1)垂直,2)水平,3)135度对角线,以及4)45度对角线。方向的选择由编码器做出并用信号发送到解码器。每种类型基于角度来定义给定样本的两个相邻样本的位置。然后,基于样本值与两个相邻样本的值的比较,CTU中的每个样本被分类为五个类别中的一个。在边缘偏移类型CTU中的每个样本被分类为五个类别中的一个之后,确定用于前四个类别中的每一个的偏移值,并将其用信号发送到解码器。用于每个类别的偏移被添加到与对应的类别相关联的样本值。边缘偏移可以在校正振铃效应中是有效的。

自适应环路滤波器(ALF)是增强重建样本的质量的另一种方法。这可以通过对环路中的样本值进行滤波来实现。在一些实施例中,编码器基于例如RDO来确定图片的哪个区域要被滤波以及滤波器系数,并且该信息被信号发送到解码器。

在典型的视频编解码器中,用与每个运动补偿图像块(诸如预测单元)相关联的运动矢量来指示运动信息。这些运动矢量中的每一个表示在要被编码(在编码器侧)或解码(在解码器侧)的图片中的图像块和在先前被编码或解码的图片中的一个图片中的预测源块的位移。为了有效地表示运动矢量,这些运动矢量通常相对于块特定预测运动矢量进行差分编码。在典型的视频编解码器中,以预定义的方式创建预测运动矢量,例如计算相邻块的已编码或解码运动矢量的中值。创建运动矢量预测的另一方式是根据时间参考图片中的相邻块和/或共位块(co-located block)产生候选预测的列表,并且将所选择的候选作为运动矢量预测器用信号发送。除了预测运动矢量值之外,可以预测哪个(哪些)参考图片被用于运动补偿预测,并且该预测信息可以例如由先前被编码/解码图片的参考索引来表示。参考索引通常根据时间参考图片中的相邻块和/或共位块来预测。而且,典型的高效率视频编解码器采用附加的运动信息编码/解码机制(通常被称为合并/合并模式),其中,对包括用于每个可用参考图片列表的运动矢量和对应的参考图片索引的所有运动场信息进行预测并在没有任何修改/校正的情况下来使用。类似地,使用时间参考图片中的相邻块和/或共位块的运动场信息来执行预测运动场信息,并且在被填充有可用相邻/共位块的运动场信息的运动场候选列表的列表之中用信号发送所使用的运动场信息。

在典型的视频编解码器中,在运动补偿之后的预测残差首先用变换内核(类似DCT)来进行变换,然后被编码。这样做的原因是在残差中间常常仍然存在某种相关性,并且在许多情况下变换可以帮助减少该相关性并提供更有效的编码。

典型的视频编码器利用拉格朗日成本函数来寻找最佳编码模式,例如用于块和相关联的运动矢量的期望编码模式。这种成本函数使用权重因子λ来将由于有损编码方法而导致的(精确或估计的)图像失真和表示图像区域中的像素值所需要的(精确或估计的)信息量连接在一起:

C=D+λR (1)

其中,C是要被最小化的拉格朗日成本,D是考虑了模式和运动矢量的图像失真(例如均方误差),R是表示在解码器中重建图像块的所需数据所需要的比特数(包括表示候选运动矢量的数据量)。

视频编码标准和规范可允许编码器将编码图片划分为编码条带等。图片内预测通常不能跨条带边界进行。因此,条带可被认为是将编码图片分割成独立可解码片的方式。在H.264/AVC和HEVC中,图片内预测不能跨条带边界进行。因此,条带可以被认为是将编码图片分割为独立可解码片的方式,并且因此,条带常常被认为是用于传输的基本单元。在许多情况下,编码器可以在比特流中指示跨条带边界关闭哪些类型的图片内预测,并且解码器操作例如在推断哪些预测源可用时考虑该信息。例如,如果相邻CU驻留在不同的条带中,则来自相邻CU的样本可以被认为不可用于帧内预测。

分别用于H.264/AVC或HEVC编码器的输出和H.264/AVC或HEVC解码器的输入的基本单元是网络抽象层(NAL)单元。为了在面向分组的网络上传输或存储到结构化文件中,NAL单元可以被封装到分组或类似结构中。字节流格式已经在H.264/AVC和HEVC中被规定以用于不提供帧结构的传输或存储环境。字节流格式通过将起始码附接在每个NAL单元前面来将NAL单元彼此分离。为了避免对NAL单元边界的错误检测,编码器运行面向字节的起始码仿真预防算法,如果起始码会以其他方式发生,则该算法将仿真预防字节添加到NAL单元有效载荷。为了在面向分组和面向流的系统之间启用直接网关操作,无论是否使用字节流格式,可以始终执行起始码仿真预防。NAL单元可以被定义为包含要跟随的数据类型的指示和采用RBSP形式的包含该数据的字节并且根据需要被点缀有仿真预防字节的语法结构。原始字节序列有效载荷(RBSP)可以被定义为被封装在NAL单元中的包含整数个字节的语法结构。RBSP是空的或者具有包含跟随有RBSP停止位并跟随有等于0的零个或更多个后续位的语法元素的数据位串的形式。

NAL包括头部和有效载荷。在H.264/AVC和HEVC中,NAL单元头部指示NAL单元的类型。

在HEVC中,两字节NAL单元头部被用于所有指定的NAL单元类型。NAL单元头部包含一个保留位、六位NAL单元类型指示、用于时间级别的三位nuh_temporal_id_plus1指示(可被要求大于或等于1)和六位nuh_layer_id语法元素。temporal_id_plus1语法元素可以被认为是用于NAL单元的时间标识符,并且基于零的TemporalId变量可以如下被导出:TemporalId=temporal_id_plus1-1。缩写TID可以与TemporalId变量互换使用。等于0的TemporalId对应于最低时间级别。temporal_id_plus1的值被要求为非零,以便避免起始码仿真涉及两个NAL单元头部字节。通过排除具有大于或等于选择值的TemporalId的所有VCLNAL单元并且包括所有其他VCL NAL单元而创建的比特流保持一致。因此,TemporalId等于tid_value的图片不使用TemporalId大于tid_value的任何图片作为帧间预测参考。子层或时间子层可以被定义为时间可伸缩比特流的时间可伸缩层(或时间层TL),其包括TemporalId变量具有特定值的VCL NAL单元和相关联的非VCL NAL单元。在TemporalId等于N的时间子层处的图片可以根据在TemporalId小于或等于N的时间子层处的参考图片来预测(除非进一步由图片类型来约束,如下文所解释的),并且不被允许或禁止根据在TemporalId大于N的时间子层处的参考图片来预测。nuh_layer_id可以被理解为可伸缩层标识符。

NAL单元可以被分类成视频编码层(VCL)NAL单元和非VCL NAL单元。VCL NAL单元通常是编码条带NAL单元。在HEVC中,VCL NAL单元包含表示一个或多个CU的语法元素。

在HEVC中,用于图片类型的缩写可以被如下定义:拖尾(TRAIL)图片、时间子层访问(TSA)、逐步时间子层访问(STSA)、随机访问可解码前导(RADL)图片、随机访问跳过前导(RASL)图片、断链访问(BLA)图片、瞬时解码刷新(IDR)图片、干净随机访问(CRA)图片。

随机接入点(RAP)图片(其在独立层中也可被称为帧内随机接入点(IRAP)图片)仅包含帧内编码条带。属于预测层的IRAP图片可包含P、B和I条带,不能使用来自相同预测层中的其他图片的帧间预测,并且可使用来自其直接参考层的层间预测。在HEVC的当前版本中,IRAP图片可以是BLA图片、CRA图片或IDR图片。在包含基础层的比特流中的第一图片是在基础层的IRAP图片。假如必要的参数集在其需要被激活时可用,在独立层的IRAP图片和在该独立层按解码顺序的所有后续非RASL图片可以被正确解码,而不执行按解码顺序在IRAP图片之前的任何图片的解码过程。当必要的参数集在其需要被激活时并且在预测层的每个直接参考层的解码已经被初始化时可用时,属于预测层的IRAP图片和在同一预测层内按解码顺序的所有后续非RASL图片可以被正确解码,而不执行按解码顺序在IRAP图片之前的同一预测层的任何图片的解码过程。在比特流中可存在仅包含帧内编码条带的图片,这些图片是非IRAP图片。

在HEVC中存在可用于指示时间子层切换点的两种图片类型,TSA和STAT图片类型。如果TemporalId高达N的时间子层已经被解码,直到TSA或STSA图片(排除)和TSA或STSA图片具有等于N+1的TemporalId,TSA或STSA图片使得能够对TemporalId等于N+1的(按解码顺序的)所有后续图片进行解码。TSA图片类型可以对TSA图片本身以及按解码顺序在TSA图片之后的同一子层中的所有图片施加限制。这些图片均不被允许使用来自按解码顺序在TSA图片之前的同一子层中的任何图片的帧间预测。TSA定义可以进一步对按解码顺序在TSA图片之后的较高子层中的图片施加限制。这些图片均不被允许参考按解码顺序在TSA图片之前的图片,如果该图片属于与TSA图片相同或更高的子层。TSA图片具有大于0的TemporalId。STSA类似于TSA图片,但是不对按解码顺序在STSA图片之后的更高子层中的图片施加限制,因此,使得能够仅向上切换到STSA图片驻留的子层。

非VCL NAL单元可以例如是以下类型中的一种:序列参数集,图片参数集,补充增强信息(SEI)NAL单元,访问单元定界符,序列结束NAL单元,比特流结束NAL单元,或填充数据NAL单元。参数集对于解码图片的重建可能是需要的,而许多其他非VCL NAL单元对于解码样本值的重建是不必要的。

通过编码视频序列保持不变的参数可以被包括在序列参数集中。除了解码过程可能需要的参数之外,序列参数集可以可选地包含视频可用性信息(VUI),该视频可用性信息(VUI)包括对于缓冲、图片输出定时、渲染、和资源预留可能是重要的参数。在HEVC中,序列参数集RBSP包括可由包含缓冲周期SEI消息的一个或多个图片参数集RBSP或一个或多个SEI NAL单元参考的参数。图片参数集包含可能在若干编码图片中保持不变的这种参数。图片参数集RBSP可包括可由一个或多个编码图片的编码条带NAL单元参考的参数。

在HEVC中,视频参数集(VPS)可以被定义为包含应用于零个或更多个完整编码视频序列的语法元素的语法结构,这些语法元素如由在SPS中找到的语法元素的内容所确定的,在SPS中找到的语法元素由在PPS中找到的语法元素参考,而在PPS中找到的语法元素由在每个条带片段头部中找到的语法元素参考。

视频参数集RBSP可包括可由一个或多个序列参数集RBSP参考的参数。

视频参数集(VPS)、序列参数集(SPS)和图片参数集(PPS)之间的关系和层次结构可以如下描述。VPS在参数集层次结构中驻留在SPS上面一层并驻留在可伸缩性和/或3D视频的上下文中。VPS可以包括对于完整编码视频序列中跨所有(可伸缩性或视图)层的所有条带共用的参数。SPS包括对于完整编码视频序列中的特定(可伸缩性或视图)层中的所有条带共用的参数,并且可由多个(可伸缩性或视图)层共享。PPS包括对于特定层表示(一个访问单元中的一个可伸缩性或视图层的表示)中的所有条带共用的参数,并且可能由多个层表示中的所有条带共享。

VPS可以提供关于比特流中的层的依存关系的信息以及可适用于完整编码视频序列中跨所有(可伸缩性或视图)层的所有条带的许多其他信息。VPS可以被认为包括两个部分,即基本VPS和VPS扩展,其中,VPS扩展可以可选地存在。

附加地或可替代地,带外传输、信令或存储可以用于除了对传输错误的容忍之外的其他目的,诸如易于访问或会话协商。例如,在符合ISO基本媒体文件格式的文件中的轨道的样本条目可以包括参数集,而比特流中的编码数据被存储在文件中的其他地方或在另一文件中。短语“沿着比特流(例如,沿着比特流指示)”或“沿着比特流的编码单元(例如,沿着编码区块指示)”可以在权利要求和所描述的实施例中被用于分别是指以带外数据与比特流或编码单元相关联的方式的带外传输、信令或存储。短语“沿着比特流或沿着比特流的编码单元等解码”可以分别是指对所指代的与比特流或编码单元相关联的带外数据(其可以从带外传输、信令或存储获得)进行解码。例如,当比特流被包含在文件(诸如符合ISO基本媒体文件格式的文件)中时,可以使用短语“沿着比特流”,并且某些文件元数据以将元数据关联到比特流的方式被存储在文件中,诸如在包含比特流的轨道的样本条目、包含比特流的轨道的样本组、或与包含比特流的轨道相关联的定时元数据轨道中的框(box)。

SEI NAL单元可以包含一个或多个SEI消息,这些消息对于输出图片的解码是不需要的,但是可以辅助相关的过程,诸如图片输出定时、渲染、错误检测、错误隐藏、和资源预留。在H.264/AVC和HEVC中规定了若干SEI消息,并且用户数据SEI消息使得组织和公司能够指定SEI消息以供他们自己使用。H.264/AVC和HEVC包含用于所指定的SEI消息的语法和语义,但是没有定义用于在接收方的处理消息的过程。因此,编码器在创建SEI消息时需要遵循H.264/AVC标准或HEVC标准,并且分别符合H.264/AVC标准或HEVC标准的解码器不需要处理SEI消息以用于输出顺序一致性。在H.264/AVC和HEVC中包括SEI消息的语法和语义的原因之一是允许不同的系统规范相同地解释补充信息并因此互操作。预期系统规范可要求在编码端和在解码端都使用特定SEI消息,此外,可以指定用于在接收方中处理特定SEI消息的过程。

在HEVC中,存在两种类型的SEI NAL单元,即后缀SEI NAL单元和前缀SEI NAL单元,其具有彼此不同的nal_unit_type值。在后缀SEI NAL单元中包含的(一个或多个)SEI消息与按解码顺序在后缀SEI NAL单元之前的VCL NAL单元相关联。在前缀SEI NAL单元中包含的(一个或多个)SEI消息与按解码顺序在前缀SEI NAL单元之后的VCL NAL单元相关联。

编码图片是图片的编码表示。

在HEVC中,编码图片可以被定义为包含图片的所有编码树单元的图片的编码表示。在HEVC中,访问单元(AU)可以被定义为一组NAL单元,其中的NAL单元根据所指定的分类规则而彼此相关联,按解码顺序是连续的,并且包含至多一个具有nuh_layer_id的任何特定值的图片。除了包含编码图片的VCL NAL单元之外,访问单元也可包含非VCL NAL单元。所述的所指定的分类规则可以例如将具有相同输出时间或图片输出计数值的图片关联到同一访问单元中。

比特流可以被定义为采用NAL单元流或字节流形式的比特序列,其形成编码图片的表示和形成一个或多个编码视频序列的关联数据。在相同的逻辑信道中,诸如在相同的文件中或在通信协议的相同连接中,第一比特流可后面跟随有第二比特流。基本流(在视频编码的上下文中)可以被定义为一个或多个比特流的序列。第一比特流的结束可由特定NAL单元(其可以被称为比特流结束(EOB)NAL单元并且是比特流的最后一个NAL单元)指示。在HEVC及其当前草案扩展中,EOB NAL单元被要求具有等于0的nuh_layer_id。

在H.264/AVC中,编码视频序列被定义为按解码顺序从IDR访问单元(包含)到下一个IDR访问单元(排除)或者到比特流结束(无论哪个更早出现)的连续访问单元的序列。

在HEVC中,编码视频序列(CVS)可以例如被定义为访问单元的序列,其按解码顺序包括NoRaslOutputFlag等于1的IRAP访问单元,后面跟随有零个或多个不是NoRaslOutputFlag等于1的IRAP访问单元的访问单元,包括所有后续访问单元直到但不包括是NoRaslOutputFlag等于1的IRAP访问单元的任何后续访问单元。IRAP访问单元可以被定义为基础层图片是IRAP图片的访问单元。针对每个IDR图片,NoRaslOutputFlag的值等于1,每个BLA图片和每个IRAP图片(其是按解码顺序在比特流中的该特定层中的第一个图片)是按解码顺序在具有nuh_layer_id的相同值的序列结束NAL单元之后的第一个IRAP图片。可能存在从可控制解码器的外部实体(例如播放器或接收器)向解码器提供HandleCraAsBlaFlag的值的方法。HandleCraAsBlaFlag可以例如由播放器设置为1,其在比特流中寻求新的位置或调到广播并开始解码,然后从CRA图片开始解码。当对于CRA图片HandleCraAsBlaFlag等于1时,CRA图片被处理和解码,好像它是BLA图片一样。

在HEVC中,附加地或可替代地(对于以上的说明),当特定NAL单元(其可以被称为序列结束(EOS)NAL单元)出现在比特流中并且具有等于0的nuh_layer_id时,编码视频序列可被指定为结束。

图片组(GOP)及其特性可以被如下定义。不管任何先前图片是否被解码,GOP可以被解码。开放GOP是这样一组图片,其中当解码从开放GOP的初始帧内图片开始时,按输出顺序在初始帧内图片之前的图片可能无法正确解码。换句话说,开放GOP中的图片可以(在帧间预测中)参考属于前一GOP的图片。HEVC解码器可以识别开始开放GOP的帧内图片,因为特定NAL单元类型、CRA NAL单元类型可被用于它的编码条带。封闭GOP是这样一组图片,其中当解码从封闭GOP的初始帧内图片开始时,所有图片可被正确解码。换句话说,封闭GOP中没有图片参考先前GOP中的任何图片。在H.264/AVC和HEVC中,封闭GOP可以从IDR图片开始。在HEVC中,封闭GOP也可以从BLA_W_RADL或BLA_N_LP图片开始。由于参考图片的选择的更大灵活性,与封闭GOP编码结构相比,开放GOP编码结构在压缩方面潜在地更有效。

解码图片缓冲器(DPB)可以在编码器和/或解码器中使用。缓冲解码图片有两个原因,用于帧间预测中的参考和用于将解码图片重新排序为输出顺序。由于H.264/AVC和HEVC对参考图片标记和输出重新排序都提供很大的灵活性,因此,用于参考图片缓冲和输出图片缓冲的单独的缓冲区可浪费存储器资源。因此,DPB可包括用于参考图片和输出重新排序的统一解码图片缓冲过程。当解码图片不再被用作参考并且不需要用于输出时,可以将其从DPB移除。

在H.264/AVC和HEVC的许多编码模式中,用于帧间预测的参考图片用对参考图片列表的索引来指示。该索引可以用可变长度编码来编码,这通常使较小的索引具有用于对应语法元素的较短值。在H.264/AVC和HEVC中,对于每个双向预测(B)条带生成两个参考图片列表(参考图片列表0和参考图片列表1),并且对于每个帧内编码(P)条带形成一个参考图片列表(参考图片列表0)。

许多编码标准(包括H.264/AVC和HEVC)可具有解码过程以导出对参考图片列表的参考图片索引,该索引可用于指示多个参考图片中的哪一个被用于对特定块的帧间预测。参考图片索引可以在一些帧间编码模式下被编码器编码到比特流中,或者它可以例如在一些其他帧间编码模式中(由编码器和解码器)使用相邻块来导出。

对于单个预测单元,可以导出多个候选运动矢量。例如,运动矢量预测HEVC包括两个运动矢量预测方案,即高级运动矢量预测(AMVP)和合并模式。在AMVP或合并模式中,针对PU导出运动矢量候选列表。存在两种候选:空间候选和时间候选,其中时间候选也可以被称为TMVP候选。

候选列表推导可以例如如下被执行,然而应当理解,对于候选列表推导可存在其他可能性。如果候选列表的占用不在最大值,则空间候选首先被包括在候选列表中,如果这些空间候选可用并且尚未在候选列表中存在。之后,如果候选列表的占用尚未在最大值,则时间候选被包括在候选列表中。如果候选的数量仍然未达到最大允许数量,则组合的双向预测候选(用于B条带)和零运动矢量被加入。在候选列表已经被构建之后,编码器例如基于率失真优化(RDO)决策来从候选中决定最终运动信息,并将所选择的候选的索引编码到比特流中。同样地,解码器从比特流中解码所选择的候选的索引,构建候选列表,并使用所解码的索引来从候选列表中选择运动矢量预测器。

在HEVC中,AMVP和合并模式可以被如下表征。在AMVP中,编码器指示使用单向预测还是双向预测以及使用哪些参考图片,以及对运动矢量差进行编码。在合并模式中,仅将从候选列表中选择的候选编码到比特流中,这指示当前预测单元具有与所指示的预测器的运动信息相同的运动信息。因此,合并模式创建由共享相同的运动信息的相邻预测块组成的区域,该运动信息对于每个区域仅用信号发送一次。

下面提供高级运动矢量预测的操作的示例,而高级运动矢量预测的其他类似实现也是可能的,例如具有不同的候选位置集和具有候选位置集的候选位置。还需要理解,其他预测模式(例如合并模式)可以类似地操作。可以导出两个空间运动矢量预测器(MVP),并且可以导出时间运动矢量预测器(TMVP)。它们可以在以下位置之中选择:位于当前预测块之上的三个空间运动矢量预测器候选位置(B0,B1,B2)和左边的两个(A0,A1)。按每个候选位置集的预定义顺序可用(例如,驻留在相同条带中,被帧内编码等)的第一运动矢量预测器(B0,B1,B2)或(A0,A1)可以被选择以表示运动矢量竞争中的预测方向(向上或向左)。用于时间运动矢量预测器的参考索引可以由编码器在条带头部中指示(例如,作为collocated_ref_idx语法元素)。按潜在时间候选位置的预定义顺序(例如按顺序(C0,C1))可用(例如,被帧间编码)的第一运动矢量预测器可以被选择为用于时间运动矢量预测器的源。可以根据时间运动矢量预测器的参考图片、共位图片和当前图片的图片顺序计数差的比例,对从共位图片中的第一个可用候选位置获得的运动矢量进行缩放。而且,可以在候选之中执行冗余校验以移除相同的候选,这可导致将零运动矢量包括在候选列表中。可以例如通过指示空间运动矢量预测器的方向(向上或向左)或时间运动矢量预测器候选的选择来在比特流中指示运动矢量预测器。共位图片也可以被称为并置图片、用于运动矢量预测的源或用于运动矢量预测的源图片。

运动参数类型或者运动信息可包括但不限于以下类型中的一种或多种:

-预测类型(例如,帧内预测、单向预测、双向预测)的指示和/或参考图片数量;

-预测方向的指示,诸如帧间(也称为时间)预测、层间预测、视图间预测、视图合成预测(VSP)、和分量间预测(其可以按参考图片和/或按预测类型指示,并且在一些实施例中,视图间预测和视图合成预测可以联合被认为是一个预测方向),和/或

-参考图片类型的指示,诸如短期参考图片和/或长期参考图片和/或层间参考图片(其可以例如按参考图片指示);

-对参考图片列表的参考索引和/或参考图片的任何其他标识符(其可以例如按参考图片指示,并且其类型可以取决于预测方向和/或参考图片类型,并且其可以伴随有其他相关信息,诸如参考索引适用的参考图片列表或类似信息);

-水平运动矢量分量(其可以例如按预测块或按参考索引等指示);

-垂直运动矢量分量(其可以例如按预测块或按参考索引等指示);

-一个或多个参数,例如包含运动参数或与运动参数相关联的图片与其参考图片之间的图片顺序计数差和/或相对相机分离,其可以在一个或多个运动矢量预测过程中被用于水平运动矢量分量和/或垂直运动矢量分量的缩放(其中,所述一个或多个参数可以例如按每个参考图片或每个参考索引等指示);

-运动参数和/或运动信息适用的块的坐标,例如,以亮度样本为单位的块的左上角样本的坐标;

-运动参数和/或运动信息适用的块的范围(例如,宽度和高度)。

通常,运动矢量预测机制(诸如在上面作为示例呈现的那些运动矢量预测机制)可包括某些预定义或所指示的运动参数的预测或继承。

与图片相关联的运动场可以被认为包括针对图片的每个编码块而产生的一组运动信息。例如,运动场可以通过块的坐标来访问。运动场可以例如被用在TMVP或任何其他运动预测机制中,其中使用除了当前被(解)编码图片之外的用于预测的源或参考。

不同的空间粒度或单元可以被应用以表示和/或存储运动场。例如,可以使用空间单元的规则网格。例如,图片可以被划分为特定尺寸的矩形块(可例外的是在图片的边缘处的块,诸如在右边缘和下边缘)。例如,空间单元的尺寸可以等于不同的运动可在比特流中由编码器指示的最小尺寸,诸如以亮度样本为单位的4×4块。例如,可以使用所谓的压缩运动场,其中,空间单元可以等于预定义或所指示的尺寸,诸如以亮度样本为单位的16×16块,该尺寸可以大于用于指示不同运动的最小尺寸。例如,HEVC编码器和/或解码器可以以针对每个解码运动场(在使用运动场以用于图片之间的任何预测之前)执行运动数据存储缩减(MDSR)或运动场压缩的方式来实现。在HEVC实现方式中,MDSR可以通过保持运动压缩运动场中可适用于16×16块的左上角样本来将运动数据的粒度降低到以亮度样本为单位的16×16块。编码器可以将与压缩运动场的空间单元有关的(一个或多个)指示编码为例如在序列级别语法结构(诸如视频参数集或序列参数集)中的一个或多个语法元素和/或语法元素值。在一些(解)编码方法和/或设备中,可以根据运动预测的块分区(例如,根据HEVC标准的预测单元)来表示和/或存储运动场。在一些(解)编码方法和/或设备中,可以应用规则网格和块分区的组合,以使得与大于预定义或所指示的空间单元尺寸的分区相关联的运动与那些分区相关联地表示和/或存储,而与小于或与预定义或所指示的空间单元尺寸或网格对齐的分区相关联的运动被表示和/或存储用于预定义或所指示的单元。

可伸缩视频编码可以是指其中一个比特流可包含内容的多个表示(例如,以不同的比特率、分辨率或帧速率)的编码结构。在这些情况下,接收器可以取决于其特性(例如,与显示设备最佳匹配的分辨率)来提取期望表示。可替代地,服务器或网络元件可以取决于例如接收器的网络特性或处理能力来提取要被发送到接收器的比特流的部分。可以通过仅解码可伸缩比特流的某些部分来产生有意义的解码表示。可伸缩比特流通常包括提供最低质量可用视频的“基础层”和在与较低层一起被接收和解码时增强视频质量的一个或多个增强层。为了改进针对增强层的编码效率,该层的编码表示通常取决于较低层。例如,增强层的运动和模式信息可以从较低层预测。类似地,较低层的像素数据可被用于创建用于增强层的预测。

在一些可伸缩视频编码方案中,视频信号可以被编码为基础层和一个或多个增强层。增强层可以增强例如时间分辨率(即,帧速率)、空间分辨率、或仅仅地由另一层或其一部分表示的视频内容的质量。每一层连同其所有依存层一起是视频信号的一种表示,例如以特定空间分辨率、时间分辨率和质量级别。在本文中,将可伸缩层连同所有它的相关层一起称为“可伸缩层表示”。与可伸缩层表示对应的可伸缩比特流的部分可以被提取和解码以产生在特定保真度的原始信号的表示。

可伸缩性模式或者可伸缩性尺寸可包括但不限于以下各项:

-质量可伸缩性:基础层图片以比增强层图片更低的质量来编码,这可以例如在基础层中使用比在增强层中更大的量化参数值(即,用于变换系数量化的更大量化步长)来实现。质量可伸缩性可以进一步被分类为细粒度或细粒度可伸缩性(FGS)、中等粒度或中等粒度可伸缩性(MGS)、和/或粗粒度或粗粒度可伸缩性(CGS),如下文所描述的。

-空间可伸缩性:基础层图片以比增强层图片更低的分辨率(即,具有更少的样本)来编码。空间可伸缩性和质量可伸缩性(特别地它的粗粒度可伸缩性类型)有时可以被认为是相同的可伸缩性类型。

-比特深度可伸缩性:基础层图片以比增强层图片(例如10或12比特)更低的比特深度(例如8比特)来编码。

-动态范围可伸缩性:可伸缩层表示使用不同的色调映射函数和/或不同的光学传递函数而获得的不同的动态范围和/或图像。

-色度格式可伸缩性:基础层图片在色度样本阵列(例如,以4:2:0色度格式被编码的)中提供比增强层图片(例如4:4:4格式)更低的空间分辨率。

-色域可伸缩性:增强层图片具有比基础层图片的颜色表示范围更丰富/更宽的颜色表示范围;例如,增强层可具有UHDTV(ITU-R BT.2020)色域,而基础层可具有ITU-RBT.709色域。

-视图可伸缩性,其也可被称为多视图编码。基础层表示第一视图,而增强层表示第二视图。视图可以被定义为表示一个相机或视点的图片序列。可以认为在立体或双视图视频中,针对左眼呈现一个视频序列或视图,而针对右眼呈现平行视图。

-深度可伸缩性,其也可被称为深度增强编码。比特流的一个或一些层可表示(一个或多个)纹理视图,而其他一层或多层可表示(一个或多个)深度视图。

-感兴趣区域可伸缩性(如下文所描述的)。

-隔行扫描到逐行扫描可伸缩性(也称为场到帧可伸缩性):用增强层增强基础层的已编码的隔行扫描源内容材料以表示逐行扫描源内容。基础层中的已编码的隔行扫描源内容可包括编码场、表示场对的编码帧、或它们的混合。在隔行扫描到逐行扫描可伸缩性中,基础层图片可被重新采样,以使得它变成适合用于一个或多个增强层图片的参考图片。

-混合编解码器可伸缩性(也称为编码标准可伸缩性):在混合编解码器可伸缩性中,基础层和增强层的比特流语法、语义和解码过程在不同的视频编码标准中规定。因此,基础层图片根据与增强层图片不同的编码标准或格式来进行编码。例如,基础层可以用H.264/AVC来编码,并且增强层可以用HEVC多层扩展来编码。

应当理解,许多可伸缩性类型可以被组合并一起应用。例如,可以将色域可伸缩性和比特深度可伸缩性相组合。

术语“层”可被用在包括视图可伸缩性和深度增强的任何可伸缩性类型的上下文中。增强层可以是指任何类型的增强,诸如SNR、空间、多视图、深度、比特深度、色度格式、和/或色域增强。基础层可以是指任何类型的基础视频序列,诸如基础视图、用于SNR/空间可伸缩性的基础层、或用于深度增强视频编码的纹理基础视图。

一些可伸缩视频编码方案可要求IRAP图片以访问单元中的所有图片是IRAP图片或者访问单元中没有图片是IRAP图片的方式来被跨层对齐。其他可伸缩视频编码方案(诸如HEVC的多层扩展)可允许未被对齐的IRAP图片,即访问单元中的一个或多个图片是IRAP图片,而访问单元中的一个或多个其他图片不是IRAP图片。具有未被跨层对齐的IRAP图片或类似物的可伸缩比特流可被用于例如在基础层中提供更频繁的IRAP图片,其中它们可以由于例如较小的空间分辨率而具有较小的编码尺寸。用于逐层启动解码的过程或机制可以被包括在视频解码方案中。因此,解码器可以在基础层包含IRAP图片时启动比特流的解码,并在其他层包含IRAP图片时逐步启动解码其他层。换句话说,在逐层启动解码的机制或过程中,解码器逐渐增加解码层的数量(其中,层可以表示对空间分辨率、质量级别、视图、附加分量(诸如深度)、或组合的增强),因为来自附加增强层的后续图片在解码过程中被解码。解码层的数量的逐渐增加可以被感知为例如图片质量的逐渐提高(在质量和空间可伸缩性的情况下)。

发送器、网关、客户端或另一实体可以选择可伸缩视频比特流的发送层和/或子层。术语“层提取”、“层的提取”或“层向下切换”可以是指发送比发送器、网关、客户端或另一实体所接收的比特流中可用的层更少的层。层向上切换可以是指与由发送器、网关、客户端或另一实体在层向上切换之前发送的那些层相比发送(一个或多个)额外的层,即重新启动其传输在层向下切换中较早停止的一个或多个层的传输。类似于层向下切换和/或向上切换,发送器、网关、客户端或另一实体可以执行时间子层的向下和/或向上切换。发送器、网关、客户端或另一实体也可以执行层和子层向下切换和/或向上切换。层和子层向下切换和/或向上切换可以在相同的访问单元等中被执行(即,实际上同时)或者可以在不同的访问单元等中执行(即,实际上在不同的时间)。

可以以两种基本方式来启用可伸缩性。通过引入新的编码模式以用于执行从可伸缩表示的较低层预测像素值或语法,或者通过将较低层图片放置到较高层的参考图片缓冲器(例如解码图片缓冲器,DPB)中。第一种方法可能更灵活,因此在大多数情况下可以提供更好的编码效率。然而,第二种基于参考帧的可伸缩性的方法可以以对单层编解码器的改变最小而同时仍然实现大部分的可用编码效率增益来有效地实现。基本上,可以通过对所有层使用相同的硬件或软件实现来实现基于参考帧的可伸缩性编解码器,仅通过外部方式处理DPB管理。

用于质量可伸缩性(也称为信噪比或SNR)和/或空间可伸缩性的可伸缩视频编码器可以如下实现。对于基础层,可以使用非可伸缩视频编码器和解码器。基础层的重建/解码图片被包括在用于增强层的参考图片缓冲器和/或参考图片列表中。在空间可伸缩性的情况下,被重建/解码的基础层图片可以在它插入到用于增强层图片的参考图片列表之前被上采样。类似于增强层的解码参考图片,基础层解码图片可被插入(一个或多个)参考图片列表中以用于增强层图片的编码/解码。因此,编码器可以选择基础层参考图片作为帧间预测参考,并用编码比特流中的参考图片索引来指示它的使用。解码器从比特流(例如从参考图片索引)中解码出基础层图片被用作用于增强层的帧间预测参考。当被解码的基础层图片被用作用于增强层的预测参考时,它被称为层间参考图片。

尽管先前的段落描述了具有两个可伸缩性层(增强层和基础层)的可伸缩视频编解码器,但是需要理解的是,该描述可以被一般化到具有超过两层的可伸缩性层次结构中的任何两层。在这种情况下,第二增强层在编码和/或解码过程中可以依赖第一增强层,因此,第一增强层可以被认为是用于第二增强层的编码和/或解码的基础层。此外,需要理解的是,在增强层的参考图片缓冲器或参考图片列表中可存在来自超过一层的层间参考图片,并且这些层间参考图片中的每一个可以被认为驻留在用于正被编码和/或解码的增强层的基础层或参考层中。此外,需要理解的是,可以替代或附加地进行除了参考层图片上采样之外的其他类型的层间处理。例如,参考层图片的样本的比特深度可以被转换为增强层的比特深度,和/或样本值可以经历从参考层的颜色空间到增强层的颜色空间的映射。

层间预测可以被定义为采用依赖于来自与当前图片的层(正被编码或解码的)不同的层的参考图片的数据元素(例如,样本值或运动矢量)的方式的预测。存在许多类型的层间预测并可以被应用在可伸缩视频编码器/解码器中。可用的层间预测类型可以例如取决于比特流或比特流内的特定层正被编码所根据的编码简档,或者在解码时比特流或比特流内的特定层被指示要符合的编码简档。可替代地或附加地,可用的层间预测类型可以取决于正使用的可伸缩性类型或可伸缩性编解码器的类型或视频编码标准修正(例如,SHVC、MV-HEVC、或3D-HEVC)。

直接参考层可以被定义为可用于另一个层的层间预测的层,其中对于另一个层,该层是直接参考层。直接预测层可以被定义为一种层,对于该层,另一个层是直接参考层。间接参考层可以被定义为一种层,该层不是第二层的直接参考层而是第三层的直接参考层,第三层是第二层的直接参考层的直接参考层或间接参考层,对于第二层,该层是间接参考层。间接预测层可以被定义为一种层,对于该层,另一个层是间接参考层。独立层可以被定义为不具有直接参考层的层。换句话说,独立层不使用层间预测来预测。非基础层可以被定义为除了基础层之外的任何其他层,并且基础层可以被定义为比特流中的最低层。独立的非基础层可以被定义为既是独立层又是非基础层的层。

神经网络(NN)是包括若干计算层的计算图。每个层包括一个或多个单元,其中每个单元执行基本计算。单元被连接到一个或多个其他单元,并且连接可以具有相关联的权重。权重可以用于缩放经过相关联的连接的信号。权重通常是可学习的参数,即可以从训练数据学习的值。可存在其他可学习的参数,诸如,批标准化(batch-normalization)层的参数。

用于神经网络的两个示例架构是前馈架构和递归架构。前馈神经网络使得不存在反馈环路:每个层从先前层中的一个或多个取得输入,并提供其输出作为后续层中的一个或多个的输入。而且,在特定层内的单元从先前层中的一个或多个中的单元取得输入,并且将输出提供给后续层中的一个或多个。

初始层(接近输入数据的层)提取语义低级特征,诸如图像中的边缘和纹理,并且中间层和最终层提取更多高级特征。在特征提取层之后,可以存在执行特定任务(诸如分类、语义分割、对象检测、去噪、风格迁移、超分辨率等)的一个或多个层。在递归神经网络中,存在反馈环路,以使得网络变成有状态的,即它能够记住信息或状态。

神经网络正被用在用于许多不同类型的设备(诸如移动电话)的数量不断增加的应用中。示例包括图像和视频分析和处理、社交媒体数据分析、设备使用数据分析等。

神经网络(和其他机器学习工具)的特性在于,它们能够从输入数据学习特性,例如以监督方式或以无监督方式。这种学习可以是训练算法的结果,或者是提供训练信号的meta级神经网络的结果。

通常,训练算法可包括改变神经网络的一些特性,以使得它的输出尽可能接近期望输出。例如,在对图像中的对象的分类的情况下,神经网络的输出可以用于导出指示输入图像中的对象属于的类或类别的类或类别索引。训练可包括最小化或降低输出的误差(也称为损失)。损失的示例是均方误差、交叉熵等。在深度学习技术中,训练可以是迭代的过程,在每次迭代时,算法修改神经网络的权重以对网络的输出进行逐步改进,即逐渐降低损失。

在训练神经网络的上下文中,“时期(epoch)”是指在所有训练数据上使用神经网络的时间,并且它可包括多次迭代。“迭代”是指在整个训练数据的子集上使用神经网络的时间,通常被称为数据的批次(batch)或小批次(mini-batch)。通常,在每次迭代时执行对神经网络的权重的更新。特别地,一批数据被输入到网络,从网络获得输出,根据输出来计算损失,计算损失相对于权重的梯度,并且基于所计算的梯度来确定权重更新。

在本文中,术语“模型”、“神经网络”、“神经网”和“网络”可以互换使用,并且神经网络的权重有时也被称为可学习参数或简称为参数。

训练神经网络是优化过程,但是最终目标与典型的优化目标不同。在正常优化中,目标仅仅是使函数最小化。在机器学习中,优化或训练过程的目标是使模型从有限的训练数据集学习数据分布的特性。换句话说,目标是学习使用有限的训练数据集以便学习泛化到先前未被发现的数据,即未被用于训练模型的数据。这通常被称为泛化(generalization)。实际上,数据可以被分成至少两个集合,训练集合和验证集合。训练集合被用于训练网络,即修改它的可学习参数以便最小化损失。验证集合可被用于检查网络对未被用于最小化损失的数据的性能,作为模型的最终性能的指示。特别地,在训练过程期间监控训练集合和验证集合上的误差以理解以下事项:

-如果网络完全在学习-在这种情况下,训练集合误差应当减少,否则模型处于欠拟合机制。

-如果网络在学习泛化-在这种情况下,验证集合误差也需要减少,并需要不比训练集合误差高太多。如果训练集合误差低,但验证集合误差比训练集合误差高得多,或者它不减少,或者它甚至增加,则模型处于过拟合机制。这意味着模型刚刚记住了训练集合的特性并且仅在该集合上表现良好,但是在未被用于调谐其参数的集合上表现不佳。

返回到参考上文所描述的混合视频压缩,已描述了不仅在解码器处而且在编码器中(更具体地在编码器的“解码环路”中)如何执行帧内(即空间)和帧间(例如时间)预测过程以便计算残差。解码以特定扫描顺序来执行,例如,编码单元可以在编码树单元内按光栅扫描顺序来编码,并且编码树单元可以在区块内按光栅扫描顺序来编码。因此,对于要被预测的每个块,已经重建的像素可以是在块的上面和左边的那些像素。在要被预测的块的上面和左边的所有已经重建的像素中,只有一些(诸如2或4个)行和列可以被用于预测。

因此,帧内预测可以涉及使用在要被预测的块的上面和左边的所述一些行和列的像素以推导该块可能看起来如何。块可以是相对小的,例如8乘8的像素,因此,帧内预测过程可以减少以预测小图像模式,诸如边缘或纹理细节或者甚至恒定/同质区域。图5示出了包括在要被预测的块的区域的上面和左边的所述一些行和列的像素的帧内预测输入和针对所述块的输出的示例。

通常使用算法方法(即不使用学习方法)来执行帧内预测过程。帧内预测通常涉及预定义的预测模式,其中,每个预测模式是指不同的图像模式,诸如同质内容(预测区域具有相同的常数值,该值可被导出为例如等于相邻块的所选样本的平均样本值或者作为左边和顶部已经重建的像素),导出平滑变化的预测块(例如,H.264/AVC或HEVC的平面模式),或方向模式。用于帧内预测的预测模式的方向,即要在特定预测模式中被应用的预测方向,可以是例如与不同的方向预测角度对应的垂直的、水平的、或所选择的对角线模式。方向预测模式可以被认为对应于具有不同角度/定向的边缘。在编码期间,尝试所有或若干预测模式,并且最好的预测模式是基于例如预测块与真实块之间的均方误差(MSE)来选择的。然后,预测模式用信号发送到解码器,例如通过将它包括在块的残差比特流中。

帧内预测过程的目标是获得最小可能预测误差或残差,因此要求更少的比特来对消耗整个视频的比特流的很大一部分的帧内帧进行编码。然而,上述的算法方法受限于在预测准确度方面已经饱和的这种最终研究和开发。因此,可以使用学习方法实现进一步的开发。

现在介绍用于使用神经网络以用于帧内预测过程的增强方法。

图6的流程图中描绘的方法包括:获得(600)包括多个初始帧内预测模式不可知层和一个或多个帧内预测模式特定层的至少一个神经网络的配置,一个或多个帧内预测模式特定层对应于不同的帧内预测模式;获得(602)包括多个块的至少一个输入视频帧;确定(604)使用帧内预测来编码一个或多个块;确定(606)用于所述一个或多个块中的每一块的帧内预测模式;将具有相同帧内预测模式的块分组(608)成组,每个组被分配有在多个帧内预测模式不可知层和一个或多个帧内预测模式特定层之中的计算路径;基于神经网络的与块组有关的输出与标注块之间的训练损失来训练(610)神经网络的多个帧内预测模式不可知层和/或一个或多个帧内预测模式特定层,其中,标注块是输入视频帧的块或者是重建块;以及使用被分配给用于块的帧内预测模式的计算路径来对块进行编码(612)。

根据实施例,该方法还包括:响应于至少一个神经网络的配置包括预先训练的神经网络,使用输入视频帧的块作为标注块。因此,当神经网络被预定义时,或者当神经网络由编码器预先训练并被发送到解码器时,输入视频帧的块可以被用作在训练阶段(610)中使用的标注块。

由于编码器和解码器中的帧内预测神经网络优选地是对齐的(即,用相同的参数操作),因此,编码器和解码器中的帧内预测神经网络可以以完全相同的方式或者至少基本上以相同的方式来训练。根据实施例,编码器在比特流中或沿着比特流指示指明哪些块将被用于训练的信息。在此,编码器可以以更高的质量来编码训练块(即,使用相同帧内预测模式的块组)。在一个实施例中,与编码训练块对应的解码或重建块被解码器用作标注数据以计算训练损失。同样地,在实施例中,编码器使用与这些编码训练块对应的解码或重建块而不是原始块作为标注。

在图7的流程图中描绘的相应的解码方法包括:获得(700)包括多个帧内预测模式不可知层和与不同的帧内预测模式对应的一个或多个帧内预测模式特定层的至少一个神经网络的配置;获得(702)包括编码视频帧的比特流,其中,编码视频帧包括多个块;从比特流或沿着比特流解码(704)指示被定义为训练块的块组的信息;将训练块解码(706)为重建块;基于神经网络的与块组有关的输出与重建块之间的训练损失来训练(708)神经网络的多个帧内预测模式不可知层和/或一个或多个帧内预测模式特定层;以及使用被分配给编码块的帧内预测模式的计算路径来对编码块进行解码(710)。

因此,该方法涉及使用用于帧内预测过程的神经网络作为视频编解码器的一个组件的视频压缩。因此,利用神经网络的学习能力来执行视频压缩中的帧内预测过程,其中,利用预测模式以便以最有效的方式使神经网络适配于特定内容。换句话说,神经网络适于推理阶段的预测模式信息。

需要理解的是,尽管参考块或图片来描述附图和实施例,但是实施例可以在范围从块到图片的任何空间单元的基础上应用。例如,针对条带可以类似地实现实施例。实施例也可以被应用于多个帧内帧。例如,可以从多个帧内帧(例如从可属于相同场景的多个连续的帧内帧)收集用于特定帧内预测类型的训练块。

神经网络可以例如以以下方式中的一个被交付到编码器和解码器:

-神经网络可以是例如在编码标准中预定义的,并且因此被编码器和解码器都已知。

-神经网络可以是预先训练的。预先训练可以由编码器和解码器外部的实体执行,并且在编码或解码比特流之前被交付给编码器和解码器两者。

-预先训练可以由编码器执行。解码器可以具有获得预先训练的网络的装置。例如,网络可以被包括在比特流中或沿着比特流,解码器可从比特流中解码神经网络。例如,特定参数集(例如被称为神经网络参数集)可以被指定用于在比特流中或沿着比特流交付神经网络。特定神经网络参数集的使用可以例如在序列、图片、或条带级别中被指示,例如分别在序列参数集、图片参数集、或条带头部中被指示。

当神经网络被交付到编码器和/或解码器时,实施例不限于任何特定的神经网络表示语法。神经网络类型(例如完全卷积神经网络)、基本参数(例如层数)和神经网络的参数或权重可以被包括在神经网络表示中。

实施例都不限于任何特定类型的神经网络。

在下面更详细地描述了图6和图7所示的方法的步骤及其相关的实施例。

包括多个预测模式不可知层和与不同的帧内预测模式对应的多个预测模式相关 层的神经网络的预先训练的配置(600,700)

在此,术语“预测模式不可知层”是指包括可属于任何帧内预测模式的数据块的帧内预测神经网络的层集合。术语“预测模式相关层”是指处理属于特定帧内预测模式的块的帧内预测神经网络的层集合。例如,响应于编码器或解码器确定针对块组使用第一帧内预测模式,帧内预测神经网络可使用(一个或多个)帧内预测模式不可知层和基于第一帧内预测模式而确定的第一帧内预测模式相关层集合。响应于确定使用第二帧内预测模式,帧内预测神经网络可使用帧内预测模式不可知层和基于第二帧内预测模式而确定的第二帧内预测模式相关层集合。在一个实施例中,帧内预测模式不可知层集合包括网络的一个或多个初始层,例如,在网络的输入处的层1至层N,其中,N是初始层的数量。在一个实施例中,帧内预测模式特定层集合包括一个或多个最终层,例如,在神经网络的输出处的层K-M+1到层K,其中,M K是特定预测模式的总层数。分区成帧内预测模式不可知部分和帧内预测模式特定部分可以并不总是基于层,可以应用许多不同级别的分区,例如在一些实施例中,分区可以在滤波器级别或甚至在单个神经元级别。通常,可以存在神经网络的帧内预测模式不可知部分和网络的一个或多个帧内预测模式特定部分。

在帧内预测过程中,视频帧可以被划分为一组块。每个块可以被单独编码。编码器可以确定或可以被配置为将特定帧编码为帧内编码帧。例如,比特流中的第一个帧通常是帧内编码帧。帧内编码帧可被用于促进随机访问比特流,因此,它们可被编码并且以周期性的方式被插入到比特流中。此外,可以针对场景剪切位置来对帧内编码帧进行编码,因为帧间预测在不同内容的场景之间不可能是有益的。在一些情况下,编码器可以确定或可以被配置为执行逐渐解码刷新,其中,图片内容以如下方式在多个图片上被刷新:刷新区域按图片的解码顺序增长,并且刷新区域内的编码块用帧内模式编码或从多个图片之中按解码顺序较早的图片的刷新区域预测。对于帧间编码帧,视频编解码器决定块是以帧内模式还是以帧间模式被编码,例如通过首先检查帧间预测是否满足由用户对要被压缩的视频施加的比特率和峰值信号噪声(PSNR)要求。如果没有满足,则块以帧内模式被编码,即仅使用当前帧中的已经被解码和重建的像素。由于解码中的典型光栅扫描顺序,被解码和重建的像素通常相对于要被预测的块位于顶行和左列。

编解码器可以考虑N个帧内预测模式,诸如N=35,其中,模式可以对应于方向或边缘的某个角度,例如,水平、垂直或任何其他角度。

为了对不同的帧内预测模式提供(一个或多个)神经网络的配置,神经网络架构可以在离线阶段在某个训练数据集上被预先训练,该训练数据集可不一定包括要被编码的视频。神经网络可以具有更好地利用关于帧内预测模式的信息的可用性的架构。

根据实施例,神经网络的配置可包括(一个或多个)层的模式不可知部分和(一个或多个)层的模式相关或模式特定部分。在一个实施例中,可以存在针对所有预测模式被执行或训练的初始层的初始部分以及特定于每个预测模式的若干最终层。

根据另一个实施例,神经网络的配置可包括用于不同的预测模式的多个不同的神经网络。例如,可以存在与预测模型一样多的神经网络,并且每个块组可以被用于训练这些神经网络中的一个。这可以添加预测能力,但是也可能增加整个系统的存储器占用和计算复杂度。

图8示出了根据第一选项的神经网络的配置:由所有或多个预测模式共享的初始层的单个初始部分,以及特定于或取决于对应预测模式的N个最终层。

网络可以以与执行推理阶段细调过程类似的方式进行离线训练。假定图像或帧的训练数据集是可用的。训练图像可以被输入到传统的编解码器,例如HEVC,其使用传统的帧内预测算法来生成输入块、帧内预测块和预测模式。输入块可以包括先前重建的像素和要被预测的缺失像素。因此,训练数据可以包括一组样本,其中每个样本是标注块(即,要被预测的标注数据)、帧内预测的输入块、由传统算法预测的输出块、以及由传统算法在所有或一些可用预测模式中选择为最佳预测模式的预测模式。

确定用于每个块的帧内预测模式(606)

对于(一个或多个)当前帧,可以例如使用由视频编码标准(例如HEVC)提供的(一个或多个)(算法)方法来确定用于每个块的帧内预测模式。这可涉及尝试多个不同的模式(诸如预定义的预测模式、平滑变化的预测模式或方向模式),并例如基于预测块与真实块之间模式的MSE来选择最适合的模式。所选择的预测模式表示标注模式。

标注计算路径标签(608)

当帧将被编码为帧内帧时,可以运行传统的帧内预测过程(例如,根据HEVC标准)以便确定用于不同的帧内预测模式的计算路径。计算路径可以包括不同的模式不可知层或模式相关层之间的关系的信息。例如,应当向哪个模式相关层提供模式不可知层的输出。计算路径可以用“计算路径标注标签”或简单地“计算路径标签”来表示。例如,计算路径标注标签对应于帧内预测模式,然后可以在神经网络优化过程中用于决定对应块要采用的计算路径。换句话说,在神经网络优化过程中,针对特定输入块,通过在(一个或多个)模式不可知层和(一个或多个)模式相关层之中选择最适合的计算路径(例如,从多个模式不可知层到特定模式相关层)来选择帧内预测模型。在此,可以对于每个块并通过考虑所有可能的预测模式来运行传统的帧内预测过程。因此,针对每个输入块,可以存在N个输出预测块。在输入块与N个输出预测块中的每一个之间计算选择参数,诸如MSE。选择具有选择参数的最佳值(诸如最低MSE值)的输出预测块,并且与所选择的块的帧内预测模式对应的计算路径标签(例如,标注计算路径(GT-CP标签))可以被分配给特定输入块。

图9示出了计算路径(例如GT-CP标签)的确定。在左边所示的输入帧被划分成输入块。执行上文所描述的选择最适合的帧内预测模式并且从而在(一个或多个)模式不可知层和模式相关层之中选择最适合的计算路径(例如从一个或多个初始层到特定最终层)的过程,其中,可以应用传统的帧内预测过程,诸如HEVC帧内预测。在右边的输出帧示出了针对帧内帧的所有块而生成的标注计算路径(GT-CP)标签。在一些实施例中,(一个或多个)帧内帧的所有块可毅不被分配帧内预测模式或计算路径。例如,编码器可以确定不对这种块进行编码或通过其他方式对它们进行编码,因此,不分配帧内预测模式或计算路径。例如,编码器可以指示图片的哪些图像片段(例如,条带或区块组)被帧内编码,并且可以附加指示哪些被帧内编码的图像片段被分配了计算路径。

将具有相同帧内预测模式的块分组成组(608)

编码器通过将被分配给相同预测模式的块一起分组在相同的预测模式标签下来继续进行。换句话说,当前帧内帧中的已经被分配了相同计算路径(例如,相同标注计算路径标签)的块被包括在公共组中。然后,这些组将表示用于优化的训练数据集,其中,属于同一组的块被用于训练模式不可知层和模式相关层两者,例如与特定GT-CP标签相关联的初始层和最终层。

图10示出了分组过程,其中图9的输出帧中的具有GT-CP标签值1(参考帧内预测模式1)的块被分组在一起。然后,这些块或其子集被用作用于优化(一个或多个)模式不可知层和(一个或多个)模式1相关层之中的计算路径(例如从多个初始层到模式1特定最终层)的训练数据集。

根据实施例,在多个帧内帧上而不是在单个帧内帧上执行根据GT-CP标签的块的分组。因此,可以从多个附近的帧内帧导出训练块,从而对每种类型的块提供更多的训练数据。

上面已经关于(一个或多个)帧内帧描述了实施例。需要理解的是,实施例通常适用于任何类型的图片的帧内编码块或图像片段(诸如条带或区块组)。此外,实施例通常适用于任何数量的帧,即可以从多个帧执行训练。例如,可以在帧的逐渐解码刷新周期的刷新区域的帧内编码块的基础上执行训练。

训练神经网络的多个初始层和特定最终层(610)

根据实施例,训练包括使用相对于要被预测的区域在顶行和左列上的重建像素作为输入,并且使用要被预测的区域的原始内容作为用于预测训练损失的标注。例如,训练损失可以是神经网络的输出(即,预测)与标注块内容之间的MSE。注意在本文中,标注块内容和标注计算路径标签表示不同的事项:标注块内容被用于计算训练损失,而标注计算路径标签被用于决定计算路径;换句话说,在训练期间要使用哪个最终层。

根据实施例,执行初始层和特定最终层的训练循环,特别地作为帧内预测模式。例如,首先模式1的块被用于训练模式不可知层和模式1特定层,然后,模式2的块被用于训练模式不可知层和模式2特定层,以此类推,直到已经考虑了所有的模式或模式的预定子集。这可在一个训练循环内发生,即,直到使用了所有的训练数据,然后可以执行新的训练循环。

根据另一个实施例,模式不可知层和特定模式相关最终层的训练同时涉及多个帧内预测模式。因此,可以打乱训练数据,以使得在每次训练迭代时可以考虑多种模式来用于训练神经网络。换句话说,训练批次可包含来自不同模式的数据。

根据实施例,训练包括相对于在离线预先训练阶段中使用的学习率,针对模式不可知层和模式相关层使用较低的学习率。在此针对多个初始模式不可知层和模式特定最终层描述该方法的示例。用于模式特定最终层的学习率可以与用于初始层的学习率不同。例如,在预先训练期间,可以使用0.1的初始学习率,其中,初始学习率在预先训练期间可以例如使用任何已知的学习率衰减技术来最终被降低。此后,在初始层的训练期间,可以使用0.001的初始学习率,并且在模式特定层的训练期间,可以使用0.0001的初始学习率。

根据实施例,训练包括使用所有重建像素或重建像素的子集。当使用所有重建像素时,神经网络还可包括递归层,其允许可变尺寸的输入数据。使用所有重建像素可以是有益的,因为它会向神经网络提供预测所基于的更多上下文。

根据实施例,训练包括使用被填充有值(诸如零)的要被预测的区域。这对于包括卷积层的神经网络可以是有益的,因为重建像素与要被预测的像素之间的空间关系会被保留。

根据实施例,训练包括使用已被填充有另一个算法所输出的(一个或多个)值(诸如来自另一个非学习算法(例如,由HEVC或其他编解码器执行的传统的帧内预测)或学习算法(例如,神经网络)的预测)的要被预测的区域。这尤其对于其最后的层中不具有的大的感受场的模型可以是有益的。在要被预测的区域被填充有来自传统的编解码器的帧内预测的(一个或多个)值的情况下,这可容易地从计算路径的标记可得。换句话说,传统的编解码器的帧内预测可以仅针对某个块执行一次,然后它可被用于获得GT-CP标签和用于使用预测作为帧内预测神经网络的附加输入。特别地,神经网络的附加输入可以是由传统的编解码器使用与先前确定的GT-CP标签对应的模式而输出的预测。

根据实施例,如果在单个帧内帧上执行根据GT-CP标签的块的分组和适配,则使用先前适配的神经网络对随后的帧内帧进行帧内预测。

根据实施例,如果在多个帧内帧上而不是在单个帧内帧上执行根据GT-CP标签的块的分组和适配,则使用适配的网络执行针对所述多个帧的帧内预测。

根据实施例,以预定数量的连续帧内帧的间隔对帧内帧执行训练。因此,神经网络适配过程仅需要每隔几个帧内帧进行一次,因为假定每个块的图像内容在短时间内将不改变很多。

根据实施例,针对每个帧内帧执行训练,其中,如果实现预定的准确度改进,则将训练数据发送到解码器。因此,如果适配的神经网络相对于比特率开销提供了足够的准确度增益,则编码器可以连续地执行适配,并决定发送(更高质量的)训练块。因此,如果增益在速率-失真权衡方面是足够的,则编码器接受网络适配过程。当网络适配过程被接受时,编码器将用于训练的高质量块编码到比特流中,以使得解码器也可以适配他的网络并与编码器对齐。如果网络适配过程被拒绝,则编码器将返回到在适配过程之前的神经网络的版本。

根据实施例,训练包括使用当前帧内帧的块的子集来用于适配。例如,编码器可以被配置为仅使用当前帧内帧的块的子集以保持类(即,模式)平衡,即对于每个模式具有相似数量的块。

根据实施例,训练包括使用块的子集以用于训练(一个或多个)帧内预测模式不可知层和(一个或多个)帧内预测模式相关层(例如所有的初始层和所有的最终层),而不使用任何标注计算路径标签。在所述子集中的块会经过初始层,然后经过所有最终层,并且从最终层计算损失,相对于网络的参数进行区分,最后根据所计算出的梯度来更新网络参数。在计算路径的标记太昂贵而不能对(在当前帧中或在多个帧中的,取决于选择哪个选项)所有块进行的情况下,该实施例是有益的。因此,块的子集被标记并用于适配初始层和模式特定最终层,而块的另一个子集不被标记并用于适配初始层和最终层。用于这两个子集的学习率可以是不同的,并且用于训练(一个或多个)初始层和(一个或多个)最终层的学习率也可以是不同的。例如,对于未被标记的块的子集,(一个或多个)初始层的训练可以具有比在块被标记时所使用的学习率更小的学习率(例如,小10倍),并且(一个或多个)最终层的训练可以具有甚至更小的学习率(例如,比用于同一训练过程的初始层的学习率小10倍)。

根据实施例,训练包括使用当前帧中的模式的子集以用于适配。此后,模式的另一个子集可在后续帧中使用。这例如在某些模式在某个帧中丢失但在未来的帧中存在时可以是有益的。

指示被定义为训练块的块组的信息(704)

编码器在比特流中或沿着比特流指示指明哪些块是训练块的信息。解码器从比特流中或沿着比特流解码指示哪些块是训练块的信息,并相应执行神经网络的细调。根据实施例,指示哪些块是训练块的信息可以包括但不限于以下的一项或多项:

-用于每个块的标志,其通知解码器该块是训练块。该标志可以被算术编码,并且算术编码可以是上下文自适应的(例如,基于用于相邻块的标志的值和/或该块的量化参数值)。因此,标志可以在比特流中由小数比特表示。例如,标志(其可以被算术编码)可以被包括在编码树单元语法结构中,其在语法定义中可例如被称为coding_tree_unit()。

-用于图像片段(诸如条带或区块组)的标志,其可以被包括在用于该图像片段的头部语法结构中。当被设置时,标志可以指示图像片段的帧内编码块是训练块。在一些情况下,只有当图像片段被指示为被帧内编码或帧内预测时,标志才可以有条件地存在。

-阈值量化参数(QP)值,其指示有资格作为训练块的块的最大QP。

-图片内的区域被指示为包括训练块,而图片的其他区域可不包含训练块。区域可以例如被指示为从图片的左上角开始的以块为单位的宽度和高度,或者通过任何其他适合的方式来指示。

如果块是训练块,则解码器可以使用它以用于适配帧内预测神经网络。在一些情况下,解码器可以通过检查质量级别(量化参数)并且通过将该质量级别与所指示或推断的阈值相比较来确定块是否是“训练块”。阈值例如可以通过计算平均质量级别来推断,该平均质量级别可对于所有预测模式是通用的或者对于每个预测模式是特定的。然后,阈值会是所计算的平均值,或者是所计算的平均值加上预定义值(或所计算平均值的百分比)。

根据实施例,该方法还包括在编码器和解码器中使用要被预测的块的解码版本作为标注数据。为了保持帧内预测神经网络在编码器和解码器中被对齐并且具有相同的参数值,它们需要使用相同的输入和相同的标注数据来进行训练。输入可以被认为是在要被预测的块的上面和左边的重建数据,而标注数据是要被预测的块的真实内容。然而,解码器未被提供要被预测的块的确切真实内容,但是块的数据在解码器侧可用,仅具有一些编码伪影(例如,量化误差)。因此,编码器需要使用相同的数据,即解码块。可以例如通过使用传统的预测(例如,HEVC)和高编码质量(例如,设置低量化参数以用于对残差进行编码)在帧内模式下对块进行编码和解码来获得块。可替代地,神经网络的当前版本可被用于帧内预测,其中应用了高编码质量(例如,设置低量化参数以用于对残差进行编码)。

在上面,实施例被描述为逐块的操作,但是需要理解的是,可以针对其他单元(诸如(一个或多个)完整图片或单独像素)执行所有操作或操作的子集。因此,应进一步注意,块(诸如输入块、预测块、预测误差块和重建的预测误差块)在说明书和权利要求中也可以被称为信号(诸如输入信号、预测信号、预测误差信号和重建的预测误差信号)。

图11是在其中可实现各种实施例的示例多媒体通信系统的图形表示。数据源1510提供采用模拟、未压缩数字、或压缩数字格式或这些格式的任何组合的源信号。编码器1520可以包括或被连接有预处理,诸如源信号的数据格式转换和/或滤波。编码器1520将源信号编码成编码媒体比特流。应当注意,要被解码的比特流可以直接或间接地从位于实际上任何类型的网络内的远程设备接收。此外,可以从本地硬件或软件接收比特流。编码器1520可以能够编码超过一种媒体类型,诸如音频和视频,或者超过一个编码器1520可以被要求对不同媒体类型的源信号进行编码。编码器1520还可以得到合成产生的输入,诸如图形和文本,或者它可以能够产生合成媒体的编码比特流。在下面仅考虑一种媒体类型的一个编码媒体比特流的处理以简化说明。然而,应当注意,通常实时广播服务包括若干流(通常至少一个音频、视频和文本字幕流)。还应当注意,系统可包括许多编码器,但是在图中仅呈现一个编码器1520以简化描述而不失一般性。应当进一步理解,虽然本文中包含的文本和示例可以具体地描述编码过程,但是本领域的技术人员将理解,相同的概念和原理也适用于对应的解码过程,反之亦然。

编码媒体比特流可以被传送到存储设备1530。存储设备1530可包括任何类型的大容量存储器以存储编码媒体比特流。编码媒体比特流在存储设备1530中的格式可以是基本自包含比特流格式,或者一个或多个编码媒体比特流可被封装成容器文件,或者编码媒体比特流可被封装成适合于DASH(或类似流传输系统)的Segment格式并被存储为Segment序列。如果一个或多个媒体比特流被封装在容器文件中,则文件生成器(在图中未示出)可以用于将一个或多个媒体比特流存储在文件中并且创建文件格式元数据,该元数据也可以被存储在文件中。编码器1520或存储设备1530可以包括文件生成器,或者文件生成器可操作地附接到编码器1520或存储设备1530。一些系统“实况”操作,即省略存储设备,并将编码媒体比特流从编码器1520直接传送到发送器1540。然后,根据需要,编码媒体比特流可被传送到发送器1540(也被称为服务器)。在传输中使用的格式可以是基本自包含比特流格式、分组流格式、适合于DASH(或类似流传输系统)的Segment格式,或者一个或多个编码媒体比特流可被封装到容器文件中。编码器1520、存储设备1530和服务器1540可以驻留在相同的物理设备中,或者它们可以被包括在不同的设备中。编码器1520和服务器1540可以操作实时内容,在这种情况下,编码媒体比特流通常不被永久存储,而是在内容编码器1520和/或服务器1540中被缓冲一小段时间以消除处理延迟、传送延迟、和编码媒体比特率的变化。

服务器1540使用通信协议栈来发送编码媒体比特流。该栈可包括但不限于以下的一项或多项:实时传输协议(RTP),用户数据报协议(UDP),超文本传输协议(HTTP),传输控制协议(TCP),以及网际协议(IP)。当通信协议栈是面向分组时,服务器1540将编码媒体比特流封装到分组中。例如,当使用RTP时,服务器1540根据RTP有效载荷格式来将编码媒体比特流封装到RTP分组中。通常,每个媒体类型具有专用的RTP有效载荷格式。应再次注意,系统可包含超过一个服务器1540,但是出于简单的缘故,以下描述仅考虑一个服务器1540。

如果媒体内容被封装在容器文件中以用于存储设备1530或用于将数据输入到发送器1540,则发送器1540可以包括或可操作地附接到“发送文件解析器”(图中未示出)。特别地,如果容器文件不被这样发送而是所包含的编码媒体比特流中的至少一个被封装用于通过通信协议传输,则发送文件解析器定位要通过通信协议被传送的编码媒体比特流的适当部分。发送文件解析器还可以帮助针对通信协议创建正确的格式,诸如分组头部和有效载荷。多媒体容器文件可以包含封装指令(诸如ISOBMFF中的提示轨道)以用于在通信协议上封装所包含的媒体比特流中的至少一个。

服务器1540可以或可以不通过通信网络被连接到网关1550,该通信网络可以例如是CDN、互联网和/或一个或多个接入网络的组合。网关也可以或可替代地被称为中间盒。对于DASH,网关可以是(CDN的)边缘服务器或网络代理。注意,系统通常可以包括任何数量的网关等,但是出于简单的缘故,以下描述仅考虑一个网关1550。网关1550可以执行不同类型的功能,诸如根据一个通信协议栈的分组流转换到另一个通信协议栈、数据流的合并和分叉、以及根据下行链路和/或接收器能力来操纵数据流(诸如根据主要下行链路网络状况来控制转发流的比特率)。在各种实施例中,网关1550可以是服务器实体。

系统包括一个或多个接收器1560,其通常能够接收、解调所发送的信号并将其解封装成编码媒体比特流。编码媒体比特流可以被传送到记录存储设备1570。记录存储设备1570可包括任何类型的大容量存储器以存储编码媒体比特流。记录存储设备1570可以可替代地或附加地包括计算存储器,诸如随机存取存储器。编码媒体比特流在记录存储设备1570中的格式可以是基本自包含比特流格式,或者一个或多个编码媒体比特流可被封装到容器文件中。如果存在彼此相关联的多个编码媒体比特流(诸如音频流和视频流),则通常使用容器文件,并且接收器1560包括或被附接到容器文件生成器,该容器文件生成器从输入流产生容器文件。一些系统“实况”操作,即省略记录存储设备1570,并将编码媒体比特流从接收器1560直接传送到解码器1580。在一些系统中,在记录存储设备1570中仅维持所记录的流的最新部分,例如所记录的流的最近10分钟的摘录,而任何较早记录的数据从记录存储设备1570中丢弃。

编码媒体比特流可以从记录存储设备1570被传送到解码器1580。如果存在彼此相关联并被封装到容器文件中的多个编码媒体比特流(诸如音频流和视频流),或者单个媒体比特流被封装在容器文件中以例如用于更容易访问,则文件解析器(在图中未示出)用于从容器文件中解封装每个编码媒体比特流。记录存储设备1570或解码器1580可包括文件解析器,或者文件解析器被附接到记录存储设备1570或解码器1580。还应当注意,系统可以包括许多解码器,但是在此仅讨论一个解码器1570以简化描述而不失一般性。

编码媒体比特流可以进一步由解码器1570处理,解码器1570的输出是一个或多个解压缩媒体流。最后,渲染器1590可以用例如扬声器或显示器再现解压缩媒体流。接收器1560、记录存储设备1570、解码器1580和渲染器1590可以驻留在相同的物理设备中,或者它们可以被包括在不同的设备中。

发送器1540和/或网关1550可以被配置为在不同的表示之间执行切换,例如用于在360度视频内容的不同视口之间切换、视图切换、比特率适配和/或快速启动,和/或发送器1540和/或网关1550可以被配置为选择所发送的(一个或多个)表示。在不同的表示之间的切换可以出于多种原因而发生,诸如响应于接收器1560的请求或者在其上传送比特流的网络的主要条件(诸如吞吐量)。换句话说,接收器1560可以发起表示之间的切换。来自接收器的请求可以是例如对来自与之前不同的表示的Segment或Subsegment的请求、对所发送的可伸缩性层和/或子层的改变的请求、或者与先前能力相比具有不同能力的渲染设备的改变。对Segment的请求可以是HTTP GET请求。对Subsegment的请求可以是具有字节范围的HTTP GET请求。附加地或可替代地,比特率调整或比特率适配可以被用于例如在流传输服务中提供所谓的快速启动,其中所发送的流的比特率在启动或随机访问流传输之后低于信道比特率,以便立即开始播放并达到允许偶尔的分组延迟和/或重传的缓冲器占用水平。比特率适配可包括以各种顺序发生的多个表示或层向上切换操作以及表示或层向下切换操作。

解码器1580可以被配置为在不同的表示之间执行切换,例如用于在360度视频内容的不同视口之间切换、视图切换、比特率适配和/或快速启动,和/或解码器1580可以被配置为选择所发送的(一个或多个)表示。不同的表示之间的切换可以出于多种原因而发生,诸如实现更快的解码操作或者将所发送的比特流例如在比特率方面适配于在其上传送达比特流的网络的主要条件(诸如吞吐量)。例如,如果包括解码器1580的设备是多任务的并将计算资源用于除了解码视频比特流之外的其他目的,则可能需要更快的解码操作。在另一个示例中,当内容以比正常回放速度更快的速度(例如比传统的实时播放速率快两倍或三倍)被回放时,可能需要更快的解码操作。

在上文中,已经参考MSE(例如作为预测模式的选择标准的示例)描述了一些实施例。需要理解的是,可以类似地使用其他度量,例如绝对差之和(SAD)、平方差之和(SSD)、绝对变换差之和(SATD)。类似地,可以类似地使用拉格朗日成本函数组合率和任何失真度量。

在上文中,已经参考和/或使用HEVC的术语描述了一些实施例。需要理解的是,实施例可以用任何视频编码器和/或视频解码器来类似地实现。

上文所描述的本发明的实施例在单独的编码器装置和解码器装置方面描述了编解码器,以帮助理解所涉及的过程。然而,将理解,装置、结构和操作可以被实现为单个编码器-解码器装置/结构/操作。此外,编码器和解码器可以共享一些或所有公共元素。

尽管以上示例描述了在电子设备内的编解码器内操作的本发明的实施例,但是将理解,如权利要求中所限定的本发明可以被实现为任何视频编解码器的一部分。因此,例如,本发明的实施例可以在视频编解码器中实现,该视频编解码器可以通过固定或有线通信路径来实现视频编码。

因此,用户设备可包括视频编解码器,例如在以上本发明的实施例中描述的视频编解码器。应当理解,术语“用户设备”旨在涵盖任何适合类型的无线用户设备,诸如移动电话、便携式数据处理设备或便携式网络浏览器。

此外,公共陆地移动网络(PLMN)的元件也可包括如上文所描述的视频编解码器。

通常,本发明的各种实施例可以以硬件或者专用电路、软件、逻辑或其任何组合来实现。例如,一些方面可以以硬件实现,而其他方面可以以可由控制器、微处理器或其他计算设备执行的固件或者软件来实现,但是本发明不限于此。虽然本发明的各方面可以被图示并且描述为框图、流程图、或者使用某个其他图形表示,但是应理解,作为非限制性示例,本文所描述的这些块、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备、或者其某种组合实现。

本发明的实施例可以通过移动设备的数据处理器(诸如在处理器实体中)可执行的计算机软件来实现,或者通过硬件来实现,或者通过软件和硬件的组合来实现。进一步地,在这方面,应当注意,如图中的逻辑流程的任何方框可以表示程序步骤、或者互连的逻辑电路、块和功能、或者程序步骤和逻辑电路、块和功能的组合。软件可以被存储在诸如存储器芯片或在处理器内实现的存储块的物理介质、诸如硬盘或软盘的磁介质、以及诸如例如DVD及其数据变体CD的光学介质上。

存储器可以是适合于本地技术环境的任何类型,并可使用任何适合的数据存储技术来实现,诸如基于半导体的存储器设备、磁存储器设备和系统、光存储器设备和系统、固定存储器和可移除存储器。数据处理器可以是适合于本地技术环境的任何类型,并可包括通用计算机、专用计算机、微处理器、数字信号处理器(DSP)和基于多核处理器架构的处理器中的一个或多个,作为非限制性示例。

本发明的实施例可以在诸如集成电路模块的各种组件中实践。集成电路的设计大体上是高度自动化的过程。复杂而强大的软件工具可用于将逻辑级别的设计转换成准备在半导体衬底上被蚀刻和形成的半导体电路设计。

诸如由加利福尼亚州山景城的Synopsys公司和加利福尼亚州圣何塞的CadenceDesign提供的程序的程序使用完善的设计规则以及预先存储的设计模块库来自动布线导体并在半导体芯片上定位组件。一旦用于半导体电路的设计已经完成,采用标准化电子格式(例如,Opus、GDSII等)的最终设计被发送到半导体制造设施或“晶圆厂”以用于制造。

前面的描述已经通过示例性和非限制性示例的方式提供了对本发明的示例性实施例的完整和信息性描述。然而,当结合附图和随附的权利要求阅读时,鉴于前面的描述,各种修改和适配对于相关领域的技术人员可以变得明显。然而,本发明的教导的所有这样的和类似的修改仍将落入本发明的范围内。

42页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:图像信号编码/解码方法及其装置

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类