1.本技术涉及人工智能
技术领域:
:,尤其涉及编解码方法和装置。
背景技术:
::2.随着科技的进步,图像的数量和分辨率的不断增加,大量的图像不仅需要更大容量的存储媒介,还需要更宽的传输频带和更长的传输时间,这也成为图像处理中的最基本的问题。为了提高图片的存储效率和传输效率,就需要对数据量大的图像进行编码以压缩图像。3.基于神经网络对图像进行压缩可以提高图像压缩的效率,现有基于神经网络的图像压缩方法主要分为需要在线训练的神经网络图像压缩方法(简称方式一)和无需在线训练的神经网络图像压缩方法(简称方式二),方式一的率失真性能较好,但因需要在线训练导致图像压缩速度慢,方式二的率失真性能较差但图像压缩速度快。技术实现要素:4.本技术提供了编解码方法和装置,能够提升数据编解码方法的率失真性能且无需在线训练。为达到上述目的,本技术采用如下技术方案:5.第一方面,本技术了一种编码方法,该方法包括:首先获取待编码数据,然后将所述待编码数据输入第一编码网络以得到目标参数;之后根据所述目标参数构建第二编码网络;接着将所述待编码数据输入所述第二编码网络以得到第一特征;最后对所述第一特征进行编码以得到编码码流。6.现有编码方法中编码网络(即第二编码网络)采用固定的参数权重提取待编码数据的内容特征(即第一特征),然后将内容特征编码为码流(即编码码流)发送至解码端,解码端对码流进行解码重构得到解码数据。可以看出,现有技术中编码网络的参数权重与待编码数据不相关。而本技术提供的编码方法中,先将待编码数据输入到第一编码网络,然后第一编码网络根据待编码数据生成第二编码网络的参数权重,然后根据得到的权重动态调整第二编码网络的参数权重,使第二编码网络的参数权重与待编码数据相关,增加了第二编码网络的表达能力,使解码端通过第一特征编码得到码流解码重构出的解码数据与待编码数据更加接近,从而提升了编解码网络的率失真性能。7.可选地,所述目标参数为所述第二编码网络的全部卷积或部分卷积和非线性激活的参数权重。8.在一种可能的实现方式中,所述对所述第一特征进行编码以得到编码码流,包括:对所述第一特征进行取整以得到第一特征的取整值;对所述第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布;根据所述第一特征的取整值的估计概率分布对所述第一特征的取整值进行熵编码以得所述编码码流。9.通过第一特征的取整值的估计概率分布将第一特征的取整值进行熵编码,形成码流,可以降低输出第一特征的编码冗余,进一步降低数据编解码(压缩)过程中的数据传输量。10.在一种可能的实现方式中,所述对所述第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,包括:根据第一信息对所述第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。11.通过上下文信息和边信息进行估计概率分布,能够提高得到的估计概率分布的准确性,从而减小熵编码过程中的码率,实现减小熵编码开销。12.第二方面,本技术了一种解码方法,该方法包括:首先获取待解码码流;然后对所述待解码码流进行解码以得到第一特征的取整值和第二特征的取整值;再然后将所述第二特征的取整值输入第一解码网络以得到所述目标参数;接着根据所述目标参数构建第二解码网络;最后将所述第一特征的取整值输入所述第二解码网络以得到解码数据。其中,所述第一特征的取整值用于获得解码数据,所述第二特征的取整值用于获得目标参数。13.现有解码方法中解码网络(即第二解码网络)采用固定的参数权重对待编码数据的内容取值特征(即第一特征的取整值)进行解码重构得到解码数据。可以看出,现有技术中解码网络的参数权重与待解码数据不相关。而本技术中将待解码数据的内容特征和模型特征(即第一特征和第二特征)编成待解码码流,然后解码端通过解码待解码码流得到第二特征的取整值,通过将第二特征的取整值输入第一解码网络以得到第二解码网络的参数权重,然后根据该参数权重动态调整第二解码网络的参数权重,使第二解码网络的参数权重与待解码数据相关,提升了第二解码网络的表达能力,使第二解码网络解码重构得到的解码数据与待编码数据更加接近,从而提升了编解码网络的率失真性能。14.可选地,所述目标参数为所述第二解码网络的全部卷积或部分卷积和非线性激活的参数权重。15.可选地,待解码码流可以包括第一待解码码流和第二待解码码流。16.在一种可能的实现方式中,所述对所述待解码码流进行解码以得到第一特征的取整值和第二特征的取整值,包括:对所述第一待解码码流进行解码以得到所述第一特征的取整值;对所述第二待解码码流进行解码以得到所述第二特征的取整值。17.在一种可能的实现方式中,所述对所述第一待解码码流进行解码以得到所述第一特征的取整值,包括:对所述第一待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布;根据所述第一特征的取整值的估计概率分布对所述第一待解码码流进行熵解码以得到所述第一特征的取整值。18.在一种可能的实现方式中,所述对所述第一待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,包括:根据第一信息对所述第一待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。19.在一种可能的实现方式中,所述对所述第二待解码码流进行解码以得到所述第二特征的取整值,包括:对所述第二待解码码流中的第二特征的取整值进行概率估计以得到所述第二特征的取整值的估计概率分布;根据所述第二特征的取整值的估计概率分布对所述第二待解码码流进行熵解码以得到所述第二特征的取整值。20.在一种可能的实现方式中,所述对所述第二待解码码流中的第二特征的取整值进行概率估计以得到所述第二特征的取整值的估计概率分布,包括:根据第一信息对所述第二待解码码流中的第二特征的取整值进行概率估计以得到所述第二特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。21.第三方面,本技术了一种解码方法,该方法包括:首先获取待解码码流;然后对所述待解码码流进行解码以得到所述第一特征的取整值;之后将所述第一特征的取整值输入第三解码网络以得到目标参数;接着根据所述目标参数构建第二解码网络;最后将所述第一特征的取整值输入到所述第二解码网络以得到解码数据。其中,所述第一特征用于获得解码数据和目标参数。22.现有解码方法中解码网络(即第二解码网络)采用固定的参数权重对待编码数据的内容取值特征(即第一特征的取整值)进行解码重构得到解码数据。可以看出,现有技术中解码网络的参数权重与待解码数据不相关。而本技术中通过解码待解码数据的特征(即第一特征)编码成的待解码码流得到第一特征的取整值,通过将第一特征的取整值输入第一解码网络以得到第二解码网络的参数权重,然后根据该参数权重动态调整第二解码网络的参数权重,使第二解码网络的参数权重与待解码数据相关,提升了第二解码网络的表达能力,使第二解码网络解码重构得到的解码数据与待编码数据更加接近,从而提升了编解码网络的率失真性能。23.可选地,所述目标参数为所述第二解码网络的全部卷积或部分卷积和非线性激活的参数权重。24.在一种可能的实现方式中,所述对所述待解码码流进行解码以得到所述第一特征的取整值,包括:对所述待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布;根据所述第一特征的取整值的估计概率分布对所述待解码码流进行熵解码以得到所述第一特征的取整值。25.在一种可能的实现方式中,所述对所述待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,包括:根据第一信息对所述待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。26.第四方面,本技术了一种编码装置,该编码装置包括处理电路,所述处理电路用于:获取待编码数据;将所述待编码数据输入第一编码网络以得到目标参数;根据所述目标参数构建第二编码网络;将所述待编码数据输入所述第二编码网络以得到第一特征;对所述第一特征进行编码以得到编码码流。27.可选地,所述目标参数为所述第二编码网络的全部卷积或部分卷积和非线性激活的参数权重。28.在一种可能的实现方式中,所述处理电路具体用于:对所述第一特征进行取整以得到第一特征的取整值;对所述第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布;根据所述第一特征的取整值的估计概率分布对所述第一特征的取整值进行熵编码以得所述编码码流。29.在一种可能的实现方式中,所述处理电路具体用于:根据第一信息对所述第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。30.第五方面,本技术了一种解码装置,该解码装置包括处理电路,所述处理电路用于:获取待解码码流;对所述待解码码流进行解码以得到第一特征的取整值和第二特征的取整值,所述第一特征的取整值用于获得解码数据,所述第二特征的取整值用于获得目标参数;将所述第二特征的取整值输入第一解码网络以得到所述目标参数;根据所述目标参数构建第二解码网络;将所述第一特征的取整值输入所述第二解码网络以得到解码数据。31.可选地,所述目标参数为所述第二解码网络的全部卷积或部分卷积和非线性激活的参数权重。32.可选地,所述待解码码流包括第一待解码码流和第二待解码码流。33.在一种可能的实现方式中,所述处理电路具体用于:对所述第一待解码码流进行解码以得到所述第一特征的取整值;对所述第二待解码码流进行解码以得到所述第二特征的取整值。34.在一种可能的实现方式中,所述处理电路具体用于:对所述第一待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布;根据所述第一特征的取整值的估计概率分布对所述第一待解码码流进行熵解码以得到所述第一特征的取整值。35.在一种可能的实现方式中,所述处理电路具体用于:根据第一信息对所述第一待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。36.在一种可能的实现方式中,所述处理电路具体用于:对所述第二待解码码流中的第二特征的取整值进行概率估计以得到所述第二特征的取整值的估计概率分布;根据所述第二特征的取整值的估计概率分布对所述第二待解码码流进行熵解码以得到所述第二特征的取整值。37.在一种可能的实现方式中,所述处理电路具体用于:根据第一信息对所述第二待解码码流中的第二特征的取整值进行概率估计以得到所述第二特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。38.第六方面,本技术了一种解码装置,该解码装置包括处理电路,所述处理电路用于:获取待解码码流;对所述待解码码流进行解码以得到第一特征的取整值,所述第一特征的取整值用于获得解码数据和目标参数;将所述第一特征的取整值输入第一解码网络以得到目标参数;根据所述目标参数构建第二解码网络;将所述第一特征的取整值输入到所述第二解码网络以得到解码数据。39.可选地,所述目标参数为所述第二解码网络的全部卷积或部分卷积和非线性激活的参数权重。40.在一种可能的实现方式中,所述处理电路具体用于:对所述待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布;根据所述第一特征的取整值的估计概率分布对所述待解码码流进行熵解码以得到所述第一特征的取整值。41.在一种可能的实现方式中,所述处理电路具体用于:根据第一信息对所述待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。42.第七方面,本技术实施例还提供一种编码器,该编码器包括:至少一个处理器,当所述至少一个处理器执行程序代码或指令时,实现上述第一方面或其任意可能的实现方式中所述的方法。43.可选地,该编码器还可以包括至少一个存储器,该至少一个存储器用于存储该程序代码或指令。44.第八方面,本技术实施例还提供一种解码器,该解码器包括:至少一个处理器,当所述至少一个处理器执行程序代码或指令时,实现上述第二方面或其任意可能的实现方式中所述的方法。45.可选地,该解码器还可以包括至少一个存储器,该至少一个存储器用于存储该程序代码或指令。46.第九方面,本技术实施例还提供一种芯片,包括:输入接口、输出接口、至少一个处理器。可选地,该芯片还包括存储器。该至少一个处理器用于执行该存储器中的代码,当该至少一个处理器执行该代码时,该芯片实现上述第一方面或其任意可能的实现方式中所述的方法。47.可选地,上述芯片还可以为集成电路。48.第十方面,本技术实施例还提供一种终端,该终端包括上述编码装置、解码装置、编码器、解码器或上述芯片。49.第十一方面,本技术还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于实现上述第一方面或其任意可能的实现方式中所述的方法。50.第十二方面,本技术实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机实现上述第一方面或其任意可能的实现方式中所述的方法。51.本实施例提供的编码装置、解码装置、编码器、解码器、计算机存储介质、计算机程序产品和芯片均用于执行上文所提供的方法,因此,其所能达到的有益效果可参考上文所提供的方法中的有益效果,此处不再赘述。附图说明52.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。53.图1a为本技术实施例提供的译码系统的一种示例性框图;54.图1b为本技术实施例提供的视频译码系统的一种示例性框图;55.图2为本技术实施例提供的视频编码器的一种示例性框图;56.图3为本技术实施例提供的视频解码器的一种示例性框图;57.图4为本技术实施例提供的候选图像块的一种示例性的示意图;58.图5为本技术实施例提供的视频译码设备的一种示例性框图;59.图6为本技术实施例提供的装置的一种示例性框图;60.图7a为本技术实施例提供的一个应用场景的示意图;61.图7b为本技术实施例提供的一个应用场景的示意图;62.图8为本技术实施例提供的一种编解码方法的流程示意图;63.图9为本技术实施例提供的一种编解码系统的结构示意图;64.图10为本技术实施例提供的另一种编解码方法的流程示意图;65.图11为本技术实施例提供的另一种编解码系统的结构示意图;66.图12为本技术实施例提供的又一种编解码系统的结构示意图;67.图13为本技术实施例提供的又一种编解码方法的流程示意图;68.图14为本技术实施例提供的又一种编解码系统的结构示意图;69.图15为本技术实施例提供的编解码方法的性能的示意图;70.图16为本技术实施例提供的一个应用场景的示意图;71.图17为本技术实施例提供的另一个应用场景的示意图;72.图18为本技术实施例提供的一种编解码装置的结构示意图;73.图19为本技术实施例提供的另一种编解码装置的结构示意图;74.图20为本技术实施例提供的一种芯片的结构示意图。具体实施方式75.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。76.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。77.本技术的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。78.此外,本技术的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括其他没有列出的步骤或单元,或可选的还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。79.需要说明的是,本技术实施例的描述中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。80.在本技术的描述中,除非另有说明,“多个”的含义是指两个或两个以上。81.本技术实施例提供一种基于ai的数据压缩/解压缩技术,尤其是提供一种基于神经网络的数据压缩/解压缩技术,具体提供一种编解码技术,以改进传统的混合数据编解码系统。82.数据编解码包括数据编码和数据解码两部分。数据编码在源侧(或通常称为编码器侧)执行,通常包括处理(例如,压缩)原始数据以减少表示该原始数据所需的数据量(从而更高效存储和/或传输)。数据解码在目的地侧(或通常称为解码器侧)执行,通常包括相对于编码器侧作逆处理,以重建原始数据。本技术实施例涉及的数据的“编解码”应理解为数据的“编码”或“解码”。编码部分和解码部分也合称为编解码(编码和解码,codec)。83.在无损数据编码情况下,可以重建原始数据,即重建的原始数据与原始数据具有相同的质量(假设存储或传输期间没有传输损耗或其它数据丢失)。在有损数据编码情况下,通过量化等执行进一步压缩,来减少表示原始数据所需的数据量,而解码器侧无法完全重建原始数据,即重建的原始数据的质量比原始数据的质量低或差。84.本技术实施例可以应用于对视频数据、图像数据、音频数据、整数型数据以及其他具有压缩/解压缩需求的数据等。以下以视频数据的编码(简称视频编码)为例对本技术实施例进行说明,其他类型的数据(例如图像数据、音频数据、整数型数据以及其他具有压缩/解压缩需求的数据)可以参考以下描述,本技术实施例对此不再赘述。需要说明的是,相对于视频编码,音频数据以及整数型数据等数据的编码过程中无需将数据分割为块,而是可以直接对数据进行编码。85.视频编码通常是指处理形成视频或视频序列的图像序列。在视频编码领域,术语“图像(picture)”、“帧(frame)”或“图片(image)”可以用作同义词。86.几个视频编码标准属于“有损混合型视频编解码”(即,将像素域中的空间和时间预测与变换域中用于应用量化的2d变换编码结合)。视频序列中的每个图像通常分割成不重叠的块集合,通常在块级上进行编码。换句话说,编码器通常在块(视频块)级处理即编码视频,例如,通过空间(帧内)预测和时间(帧间)预测来产生预测块;从当前块(当前处理/待处理的块)中减去预测块,得到残差块;在变换域中变换残差块并量化残差块,以减少待传输(压缩)的数据量,而解码器侧将相对于编码器的逆处理部分应用于编码或压缩的块,以重建用于表示的当前块。另外,编码器需要重复解码器的处理步骤,使得编码器和解码器生成相同的预测(例如,帧内预测和帧间预测)和/或重建像素,用于处理,即编码后续块。87.在以下译码系统10的实施例中,编码器20和解码器30根据图1a至图3进行描述。88.图1a为本技术实施例提供的译码系统10的一种示例性框图,例如可以利用本技术技术的视频译码系统10(或简称为译码系统10)。视频译码系统10中的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)代表可用于根据本技术中描述的各种示例执行各技术的设备等。89.如图1a所示,译码系统10包括源设备12,源设备12用于将编码图像等编码图像数据21提供给用于对编码图像数据21进行解码的目的设备14。90.源设备12包括编码器20,另外即可选地,可包括图像源16、图像预处理器等预处理器(或预处理单元)18、通信接口(或通信单元)22。91.图像源16可包括或可以为任意类型的用于捕获现实世界图像等的图像捕获设备,和/或任意类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器或任意类型的用于获取和/或提供现实世界图像、计算机生成图像(例如,屏幕内容、虚拟现实(virtualreality,vr)图像和/或其任意组合(例如增强现实(augmentedreality,ar)图像)的设备。所述图像源可以为存储上述图像中的任意图像的任意类型的内存或存储器。92.为了区分预处理器(或预处理单元)18执行的处理,图像(或图像数据)17也可称为原始图像(或原始图像数据)17。93.预处理器18用于接收原始图像数据17,并对原始图像数据17进行预处理,得到预处理图像(或预处理图像数据)19。例如,预处理器18执行的预处理可包括修剪、颜色格式转换(例如从rgb转换为ycbcr)、调色或去噪。可以理解的是,预处理单元18可以为可选组件。94.视频编码器(或编码器)20用于接收预处理图像数据19并提供编码图像数据21(下面将根据图2等进一步描述)。95.源设备12中的通信接口22可用于:接收编码图像数据21并通过通信信道13向目的设备14等另一设备或任何其它设备发送编码图像数据21(或其它任意处理后的版本),以便存储或直接重建。96.目的设备14包括解码器30,另外即可选地,可包括通信接口(或通信单元)28、后处理器(或后处理单元)32和显示设备34。97.目的设备14中的通信接口28用于直接从源设备12或从存储设备等任意其它源设备接收编码图像数据21(或其它任意处理后的版本),例如,存储设备为编码图像数据存储设备,并将编码图像数据21提供给解码器30。98.通信接口22和通信接口28可用于通过源设备12与目的设备14之间的直连通信链路,例如直接有线或无线连接等,或者通过任意类型的网络,例如有线网络、无线网络或其任意组合、任意类型的私网和公网或其任意类型的组合,发送或接收编码图像数据(或编码数据)21。99.例如,通信接口22可用于将编码图像数据21封装为报文等合适的格式,和/或使用任意类型的传输编码或处理来处理所述编码后的图像数据,以便在通信链路或通信网络上进行传输。100.通信接口28与通信接口22对应,例如,可用于接收传输数据,并使用任意类型的对应传输解码或处理和/或解封装对传输数据进行处理,得到编码图像数据21。101.通信接口22和通信接口28均可配置为如图1a中从源设备12指向目的设备14的对应通信信道13的箭头所指示的单向通信接口,或双向通信接口,并且可用于发送和接收消息等,以建立连接,确认并交换与通信链路和/或例如编码后的图像数据传输等数据传输相关的任何其它信息,等等。102.视频解码器(或解码器)30用于接收编码图像数据21并提供解码图像数据(或解码图像数据)31(下面将根据图3等进一步描述)。103.后处理器32用于对解码后的图像等解码图像数据31(也称为重建后的图像数据)进行后处理,得到后处理后的图像等后处理图像数据33。后处理单元32执行的后处理可以包括例如颜色格式转换(例如从ycbcr转换为rgb)、调色、修剪或重采样,或者用于产生供显示设备34等显示的解码图像数据31等任何其它处理。104.显示设备34用于接收后处理图像数据33,以向用户或观看者等显示图像。显示设备34可以为或包括任意类型的用于表示重建后图像的显示器,例如,集成或外部显示屏或显示器。例如,显示屏可包括液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclightemittingdiode,oled)显示器、等离子显示器、投影仪、微型led显示器、硅基液晶显示器(liquidcrystalonsilicon,lcos)、数字光处理器(digitallightprocessor,dlp)或任意类型的其它显示屏。105.译码系统10还包括训练引擎25,训练引擎25用于训练编码器20(尤其是编码器20中的熵编码单元270)或解码器30(尤其是解码器30中的熵解码单元304),以根据估计得到的估计概率分布对待编码图像块进行熵编码,训练引擎25的详细说明请参考下述方法测实施例。106.尽管图1a示出了源设备12和目的设备14作为独立的设备,但设备实施例也可以同时包括源设备12和目的设备14或同时包括源设备12和目的设备14的功能,即同时包括源设备12或对应功能和目的设备14或对应功能。在这些实施例中,源设备12或对应功能和目的设备14或对应功能可以使用相同硬件和/或软件或通过单独的硬件和/或软件或其任意组合来实现。107.根据描述,图1a所示的源设备12和/或目的设备14中的不同单元或功能的存在和(准确)划分可能根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。108.请参考图1b,图1b为本技术实施例提供的视频译码系统40的一种示例性框图,编码器20(例如视频编码器20)或解码器30(例如视频解码器30)或两者都可通过如图1b所示的视频译码系统40中的处理电路实现,例如一个或多个微处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(application-specificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)、离散逻辑、硬件、视频编码专用处理器或其任意组合。请参考图2和图3,图2为本技术实施例提供的视频编码器的一种示例性框图,图3为本技术实施例提供的视频解码器的一种示例性框图。编码器20可以通过处理电路46实现,以包含参照图2编码器20论述的各种模块和/或本文描述的任何其它编码器系统或子系统。解码器30可以通过处理电路46实现,以包含参照图3解码器30论述的各种模块和/或本文描述的任何其它解码器系统或子系统。所述处理电路46可用于执行下文论述的各种操作。如图5所示,如果部分技术在软件中实施,则设备可以将软件的指令存储在合适的非瞬时性计算机可读存储介质中,并且使用一个或多个处理器在硬件中执行指令,从而执行本技术技术。视频编码器20和视频解码器30中的其中一个可作为组合编解码器(encoder/decoder,codec)的一部分集成在单个设备中,如图1b所示。109.源设备12和目的设备14可包括各种设备中的任一种,包括任意类型的手持设备或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板或平板电脑、相机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(例如,内容业务服务器或内容分发服务器)、广播接收设备、广播发射设备以及监控设备等等,并可以不使用或使用任意类型的操作系统。源设备12和目的设备14也可以是云计算场景中的设备,例如云计算场景中的虚拟机等。在一些情况下,源设备12和目的设备14可配备用于无线通信的组件。因此,源设备12和目的设备14可以是无线通信设备。110.源设备12和目的设备14可以安装虚拟现实(virtualreality,vr)应用、增强现实(augmentedreality,ar)应用或者混合现实(mixedreality,mr)应用等虚拟场景应用程序(application,app),并可以基于用户的操作(例如点击、触摸、滑动、抖动、声控等)运行vr应用、ar应用或者mr应用。源设备12和目的设备14可以通过摄像头和/或传感器采集环境中任意物体的图像/视频,再根据采集的图像/视频在显示设备上显示虚拟物体,该虚拟物体可以是vr场景、ar场景或mr场景中的虚拟物体(即虚拟环境中的物体)。111.需要说明的是,本技术实施例中,源设备12和目的设备14中的虚拟场景应用程序可以是源设备12和目的设备14自身内置的应用程序,也可以是用户自行安装的第三方服务商提供的应用程序,对此不做具体限定。112.此外,源设备12和目的设备14可以安装实时视频传输应用,例如直播应用。源设备12和目的设备14可以通过摄像头采集图像/视频,再将采集的图像/视频在显示设备上显示。113.在一些情况下,图1a所示的视频译码系统10仅仅是示例性的,本技术提供的技术可适用于视频编码设置(例如,视频编码或视频解码),这些设置不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据从本地存储器中检索,通过网络发送,等等。视频编码设备可以对数据进行编码并将数据存储到存储器中,和/或视频解码设备可以从存储器中检索数据并对数据进行解码。在一些示例中,编码和解码由相互不通信而只是编码数据到存储器和/或从存储器中检索并解码数据的设备来执行。114.请参考图1b,图1b为本技术实施例提供的视频译码系统40的一种示例性框图,如图1b所示,视频译码系统40可以包含成像设备41、视频编码器20、视频解码器30(和/或藉由处理电路46实施的视频编/解码器)、天线42、一个或多个处理器43、一个或多个内存存储器44和/或显示设备45。115.如图1b所示,成像设备41、天线42、处理电路46、视频编码器20、视频解码器30、处理器43、内存存储器44和/或显示设备45能够互相通信。在不同实例中,视频译码系统40可以只包含视频编码器20或只包含视频解码器30。116.在一些实例中,天线42可以用于传输或接收视频数据的经编码比特流。另外,在一些实例中,显示设备45可以用于呈现视频数据。处理电路46可以包含专用集成电路(application-specificintegratedcircuit,asic)逻辑、图形处理器、通用处理器等。视频译码系统40也可以包含可选的处理器43,该可选处理器43类似地可以包含专用集成电路(application-specificintegratedcircuit,asic)逻辑、图形处理器、通用处理器等。另外,内存存储器44可以是任何类型的存储器,例如易失性存储器(例如,静态随机存取存储器(staticrandomaccessmemory,sram)、动态随机存储器(dynamicrandomaccessmemory,dram)等)或非易失性存储器(例如,闪存等)等。在非限制性实例中,内存存储器44可以由超速缓存内存实施。在其它实例中,处理电路46可以包含存储器(例如,缓存等)用于实施图像缓冲器等。117.在一些实例中,通过逻辑电路实施的视频编码器20可以包含(例如,通过处理电路46或内存存储器44实施的)图像缓冲器和(例如,通过处理电路46实施的)图形处理单元。图形处理单元可以通信耦合至图像缓冲器。图形处理单元可以包含通过处理电路46实施的视频编码器20,以实施参照图2和/或本文中所描述的任何其它编码器系统或子系统所论述的各种模块。逻辑电路可以用于执行本文所论述的各种操作。118.在一些实例中,视频解码器30可以以类似方式通过处理电路46实施,以实施参照图3的视频解码器30和/或本文中所描述的任何其它解码器系统或子系统所论述的各种模块。在一些实例中,逻辑电路实施的视频解码器30可以包含(通过处理电路46或内存存储器44实施的)图像缓冲器和(例如,通过处理电路46实施的)图形处理单元。图形处理单元可以通信耦合至图像缓冲器。图形处理单元可以包含通过处理电路46实施的视频解码器30,以实施参照图3和/或本文中所描述的任何其它解码器系统或子系统所论述的各种模块。119.在一些实例中,天线42可以用于接收视频数据的经编码比特流。如所论述,经编码比特流可以包含本文所论述的与编码视频帧相关的数据、指示符、索引值、模式选择数据等,例如与编码分割相关的数据(例如,变换系数或经量化变换系数,(如所论述的)可选指示符,和/或定义编码分割的数据)。视频译码系统40还可包含耦合至天线42并用于解码经编码比特流的视频解码器30。显示设备45用于呈现视频帧。120.应理解,本技术实施例中对于参考视频编码器20所描述的实例,视频解码器30可以用于执行相反过程。关于信令语法元素,视频解码器30可以用于接收并解析这种语法元素,相应地解码相关视频数据。在一些例子中,视频编码器20可以将语法元素熵编码成经编码视频比特流。在此类实例中,视频解码器30可以解析这种语法元素,并相应地解码相关视频数据。121.为便于描述,参考通用视频编码(versatilevideocoding,vvc)参考软件或由itu-t视频编码专家组(videocodingexpertsgroup,vceg)和iso/iec运动图像专家组(motionpictureexpertsgroup,mpeg)的视频编码联合工作组(jointcollaborationteamonvideocoding,jct-vc)开发的高性能视频编码(high-efficiencyvideocoding,hevc)描述本技术实施例。本领域普通技术人员理解本技术实施例不限于hevc或vvc。122.编码器和编码方法123.如图2所示,视频编码器20包括输入端(或输入接口)201、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decodedpicturebuffer,dpb)230、模式选择单元260、熵编码单元270和输出端(或输出接口)272。模式选择单元260可包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可包括运动估计单元和运动补偿单元(未示出)。图2所示的视频编码器20也可称为混合型视频编码器或基于混合型视频编解码器的视频编码器。124.参见图2,帧间预测单元为经过训练的目标模型(亦称为神经网络),该神经网络用于处理输入图像或图像区域或图像块,以生成输入图像块的预测值。例如,用于帧间预测的神经网络用于接收输入的图像或图像区域或图像块,并且生成输入的图像或图像区域或图像块的预测值。125.残差计算单元204、变换处理单元206、量化单元208和模式选择单元260组成编码器20的前向信号路径,而反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲器(decodedpicturebuffer,dpb)230、帧间预测单元244和帧内预测单元254组成编码器的后向信号路径,其中编码器20的后向信号路径对应于解码器的信号路径(参见图3中的解码器30)。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。126.图像和图像分割(图像和块)127.编码器20可用于通过输入端201等接收图像(或图像数据)17,例如,形成视频或视频序列的图像序列中的图像。接收的图像或图像数据也可以是预处理后的图像(或预处理后的图像数据)19。为简单起见,以下描述使用图像17。图像17也可称为当前图像或待编码的图像(尤其是在视频编码中将当前图像与其它图像区分开时,其它图像例如同一视频序列,即也包括当前图像的视频序列,中的之前编码后图像和/或解码后图像)。128.(数字)图像为或可以视为具有强度值的像素点组成的二维阵列或矩阵。阵列中的像素点也可以称为像素(pixel或pel)(图像元素的简称)。阵列或图像在水平方向和垂直方向(或轴线)上的像素点数量决定了图像的大小和/或分辨率。为了表示颜色,通常采用三个颜色分量,即图像可以表示为或包括三个像素点阵列。在rbg格式或颜色空间中,图像包括对应的红色、绿色和蓝色像素点阵列。但是,在视频编码中,每个像素通常以亮度/色度格式或颜色空间表示,例如ycbcr,包括y指示的亮度分量(有时也用l表示)以及cb、cr表示的两个色度分量。亮度(luma)分量y表示亮度或灰度水平强度(例如,在灰度等级图像中两者相同),而两个色度(chrominance,简写为chroma)分量cb和cr表示色度或颜色信息分量。相应地,ycbcr格式的图像包括亮度像素点值(y)的亮度像素点阵列和色度值(cb和cr)的两个色度像素点阵列。rgb格式的图像可以转换或变换为ycbcr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是黑白的,则该图像可以只包括亮度像素点阵列。相应地,图像可以为例如单色格式的亮度像素点阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度像素点阵列和两个相应的色度像素点阵列。129.在一个实施例中,视频编码器20的实施例可包括图像分割单元(图2中未示出),用于将图像17分割成多个(通常不重叠)图像块203。这些块在h.265/hevc和vvc标准中也可以称为根块、宏块(h.264/avc)或编码树块(codingtreeblock,ctb),或编码树单元(codingtreeunit,ctu)。分割单元可用于对视频序列中的所有图像使用相同的块大小和使用限定块大小的对应网格,或在图像或图像子集或图像组之间改变块大小,并将每个图像分割成对应块。130.在其它实施例中,视频编码器可用于直接接收图像17的块203,例如,组成所述图像17的一个、几个或所有块。图像块203也可以称为当前图像块或待编码图像块。131.与图像17一样,图像块203同样是或可认为是具有强度值(像素点值)的像素点组成的二维阵列或矩阵,但是图像块203的比图像17的小。换句话说,块203可包括一个像素点阵列(例如,单色图像17情况下的亮度阵列或彩色图像情况下的亮度阵列或色度阵列)或三个像素点阵列(例如,彩色图像17情况下的一个亮度阵列和两个色度阵列)或根据所采用的颜色格式的任何其它数量和/或类型的阵列。块203的水平方向和垂直方向(或轴线)上的像素点数量限定了块203的大小。相应地,块可以为m×n(m列×n行)个像素点阵列,或m×n个变换系数阵列等。132.在一个实施例中,图2所示的视频编码器20用于逐块对图像17进行编码,例如,对每个块203执行编码和预测。133.在一个实施例中,图2所示的视频编码器20还可以用于使用片(也称为视频片)分割和/或编码图像,其中图像可以使用一个或多个片(通常为不重叠的)进行分割或编码。每个片可包括一个或多个块(例如,编码树单元ctu)或一个或多个块组(例如h.265/hevc/vvc标准中的编码区块(tile)和vvc标准中的砖(brick)。134.在一个实施例中,图2所示的视频编码器20还可以用于使用片/编码区块组(也称为视频编码区块组)和/或编码区块(也称为视频编码区块)对图像进行分割和/或编码,其中图像可以使用一个或多个片/编码区块组(通常为不重叠的)进行分割或编码,每个片/编码区块组可包括一个或多个块(例如ctu)或一个或多个编码区块等,其中每个编码区块可以为矩形等形状,可包括一个或多个完整或部分块(例如ctu)。135.残差计算136.残差计算单元204用于通过如下方式根据图像块(或原始块)203和预测块265来计算残差块205(后续详细介绍了预测块265):例如,逐个像素点(逐个像素)从图像块203的像素点值中减去预测块265的像素点值,得到像素域中的残差块205。137.变换138.变换处理单元206用于对残差块205的像素点值执行离散余弦变换(discretecosinetransform,dct)或离散正弦变换(discretesinetransform,dst)等,得到变换域中的变换系数207。变换系数207也可称为变换残差系数,表示变换域中的残差块205。139.变换处理单元206可用于应用dct/dst的整数化近似,例如为h.265/hevc指定的变换。与正交dct变换相比,这种整数化近似通常由某一因子按比例缩放。为了维持经过正变换和逆变换处理的残差块的范数,使用其它比例缩放因子作为变换过程的一部分。比例缩放因子通常是根据某些约束条件来选择的,例如比例缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实施成本之间的权衡等。例如,在编码器20侧通过逆变换处理单元212为逆变换(以及在解码器30侧通过例如逆变换处理单元312为对应逆变换)指定具体的比例缩放因子,以及相应地,可以在编码器20侧通过变换处理单元206为正变换指定对应比例缩放因子。140.在一个实施例中,视频编码器20(对应地,变换处理单元206)可用于输出一种或多种变换的类型等变换参数,例如,直接输出或由熵编码单元270进行编码或压缩后输出,例如使得视频解码器30可接收并使用变换参数进行解码。141.量化142.量化单元208用于通过例如标量量化或矢量量化对变换系数207进行量化,得到量化变换系数209。量化变换系数209也可称为量化残差系数209。143.量化过程可减少与部分或全部变换系数207有关的位深度。例如,可在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m。可通过调整量化参数(quantizationparameter,qp)修改量化程度。例如,对于标量量化,可以应用不同程度的比例来实现较细或较粗的量化。较小量化步长对应较细量化,而较大量化步长对应较粗量化。可通过量化参数(quantizationparameter,qp)指示合适的量化步长。例如,量化参数可以为合适的量化步长的预定义集合的索引。例如,较小的量化参数可对应精细量化(较小量化步长),较大的量化参数可对应粗糙量化(较大量化步长),反之亦然。量化可包括除以量化步长,而反量化单元210等执行的对应或逆解量化可包括乘以量化步长。根据例如hevc一些标准的实施例可用于使用量化参数来确定量化步长。一般而言,可以根据量化参数使用包含除法的等式的定点近似来计算量化步长。可以引入其它比例缩放因子来进行量化和解量化,以恢复可能由于在用于量化步长和量化参数的等式的定点近似中使用的比例而修改的残差块的范数。在一种示例性实现方式中,可以合并逆变换和解量化的比例。或者,可以使用自定义量化表并在比特流中等将其从编码器向解码器指示。量化是有损操作,其中量化步长越大,损耗越大。144.在一个实施例中,视频编码器20(对应地,量化单元208)可用于输出量化参数(quantizationparameter,qp),例如,直接输出或由熵编码单元270进行编码或压缩后输出,例如使得视频解码器30可接收并使用量化参数进行解码。145.反量化146.反量化单元210用于对量化系数执行量化单元208的反量化,得到解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可称为解量化残差系数211,对应于变换系数207,但是由于量化造成损耗,反量化系数211通常与变换系数不完全相同。147.逆变换148.逆变换处理单元212用于执行变换处理单元206执行的变换的逆变换,例如,逆离散余弦变换(discretecosinetransform,dct)或逆离散正弦变换(discretesinetransform,dst),以在像素域中得到重建残差块213(或对应的解量化系数213)。重建残差块213也可称为变换块213。149.重建150.重建单元214(例如,求和器214)用于将变换块213(即重建残差块213)添加到预测块265,以在像素域中得到重建块215,例如,将重建残差块213的像素点值和预测块265的像素点值相加。151.滤波152.环路滤波器单元220(或简称“环路滤波器”220)用于对重建块215进行滤波,得到滤波块221,或通常用于对重建像素点进行滤波以得到滤波像素点值。例如,环路滤波器单元用于顺利进行像素转变或提高视频质量。环路滤波器单元220可包括一个或多个环路滤波器,例如去块滤波器、像素点自适应偏移(sample-adaptiveoffset,sao)滤波器或一个或多个其它滤波器,例如自适应环路滤波器(adaptiveloopfilter,alf)、噪声抑制滤波器(noisesuppressionfilter,nsf)或任意组合。例如,环路滤波器单元220可以包括去块滤波器、sao滤波器和alf滤波器。滤波过程的顺序可以是去块滤波器、sao滤波器和alf滤波器。再例如,增加一个称为具有色度缩放的亮度映射(lumamappingwithchromascaling,lmcs)(即自适应环内整形器)的过程。该过程在去块之前执行。再例如,去块滤波过程也可以应用于内部子块边缘,例如仿射子块边缘、atmvp子块边缘、子块变换(sub-blocktransform,sbt)边缘和内子部分(intrasub-partition,isp)边缘。尽管环路滤波器单元220在图2中示为环路滤波器,但在其它配置中,环路滤波器单元220可以实现为环后滤波器。滤波块221也可称为滤波重建块221。153.在一个实施例中,视频编码器20(对应地,环路滤波器单元220)可用于输出环路滤波器参数(例如sao滤波参数、alf滤波参数或lmcs参数),例如,直接输出或由熵编码单元270进行熵编码后输出,例如使得解码器30可接收并使用相同或不同的环路滤波器参数进行解码。154.解码图像缓冲器155.解码图像缓冲器(decodedpicturebuffer,dpb)230可以是存储参考图像数据以供视频编码器20在编码视频数据时使用的参考图像存储器。dpb230可以由多种存储器设备中的任一种形成,例如动态随机存取存储器(dynamicrandomaccessmemory,dram),包括同步dram(synchronousdram,sdram)、磁阻ram(magnetoresistiveram,mram)、电阻ram(resistiveram,rram)或其它类型的存储设备。解码图像缓冲器230可用于存储一个或多个滤波块221。解码图像缓冲器230还可用于存储同一当前图像或例如之前的重建图像等不同图像的其它之前的滤波块,例如之前重建和滤波的块221,并可提供完整的之前重建即解码图像(和对应参考块和像素点)和/或部分重建的当前图像(和对应参考块和像素点),例如用于帧间预测。解码图像缓冲器230还可用于存储一个或多个未经滤波的重建块215,或一般存储未经滤波的重建像素点,例如,未被环路滤波单元220滤波的重建块215,或未进行任何其它处理的重建块或重建像素点。156.模式选择(分割和预测)157.模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,用于从解码图像缓冲器230或其它缓冲器(例如,列缓冲器,图2中未显示)接收或获得原始块203(当前图像17的当前块203)和重建图像数据等原始图像数据,例如,同一(当前)图像和/或一个或多个之前解码图像的滤波和/或未经滤波的重建像素点或重建块。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,以得到预测块265或预测值265。158.模式选择单元260可用于为当前块(包括不分割)和预测模式(例如帧内或帧间预测模式)确定或选择一种分割,生成对应的预测块265,以对残差块205进行计算和对重建块215进行重建。159.在一个实施例中,模式选择单元260可用于选择分割和预测模式(例如,从模式选择单元260支持的或可用的预测模式中),所述预测模式提供最佳匹配或者说最小残差(最小残差是指传输或存储中更好的压缩),或者提供最小信令开销(最小信令开销是指传输或存储中更好的压缩),或者同时考虑或平衡以上两者。模式选择单元260可用于根据码率失真优化(ratedistortionoptimization,rdo)确定分割和预测模式,即选择提供最小码率失真优化的预测模式。本文“最佳”、“最低”、“最优”等术语不一定指总体上“最佳”、“最低”、“最优”的,但也可以指满足终止或选择标准的情况,例如,超过或低于阈值的值或其他限制可能导致“次优选择”,但会降低复杂度和处理时间。160.换言之,分割单元262可用于将视频序列中的图像分割为编码树单元(codingtreeunit,ctu)序列,ctu203可进一步被分割成较小的块部分或子块(再次形成块),例如,通过迭代使用四叉树(quad-treepartitioning,qt)分割、二叉树(binary-treepartitioning,bt)分割或三叉树(triple-treepartitioning,tt)分割或其任意组合,并且用于例如对块部分或子块中的每一个执行预测,其中模式选择包括选择分割块203的树结构和选择应用于块部分或子块中的每一个的预测模式。161.下文将详细地描述由视频编码器20执行的分割(例如,由分割单元262执行)和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。162.分割163.分割单元262可将一个图像块(或ctu)203分割(或划分)为较小的部分,例如正方形或矩形形状的小块。对于具有三个像素点阵列的图像,一个ctu由n×n个亮度像素点块和两个对应的色度像素点块组成。ctu中亮度块的最大允许大小在正在开发的通用视频编码(versatilevideocoding,vvc)标准中被指定为128×128,但是将来可指定为不同于128×128的值,例如256×256。图像的ctu可以集中/分组为片/编码区块组、编码区块或砖。一个编码区块覆盖着一个图像的矩形区域,一个编码区块可以分成一个或多个砖。一个砖由一个编码区块内的多个ctu行组成。没有分割为多个砖的编码区块可以称为砖。但是,砖是编码区块的真正子集,因此不称为编码区块。vvc支持两种编码区块组模式,分别为光栅扫描片/编码区块组模式和矩形片模式。在光栅扫描编码区块组模式,一个片/编码区块组包含一个图像的编码区块光栅扫描中的编码区块序列。在矩形片模式中,片包含一个图像的多个砖,这些砖共同组成图像的矩形区域。矩形片内的砖按照片的砖光栅扫描顺序排列。这些较小块(也可称为子块)可进一步分割为更小的部分。这也称为树分割或分层树分割,其中在根树级别0(层次级别0、深度0)等的根块可以递归地分割为两个或两个以上下一个较低树级别的块,例如树级别1(层次级别1、深度1)的节点。这些块可以又分割为两个或两个以上下一个较低级别的块,例如树级别2(层次级别2、深度2)等,直到分割结束(因为满足结束标准,例如达到最大树深度或最小块大小)。未进一步分割的块也称为树的叶块或叶节点。分割为两个部分的树称为二叉树(binary-tree,bt),分割为三个部分的树称为三叉树(ternary-tree,tt),分割为四个部分的树称为四叉树(quad-tree,qt)。164.例如,编码树单元(ctu)可以为或包括亮度像素点的ctb、具有三个像素点阵列的图像的色度像素点的两个对应ctb、或单色图像的像素点的ctb或使用三个独立颜色平面和语法结构(用于编码像素点)编码的图像的像素点的ctb。相应地,编码树块(ctb)可以为n×n个像素点块,其中n可以设为某个值使得分量划分为ctb,这就是分割。编码单元(codingunit,cu)可以为或包括亮度像素点的编码块、具有三个像素点阵列的图像的色度像素点的两个对应编码块、或单色图像的像素点的编码块或使用三个独立颜色平面和语法结构(用于编码像素点)编码的图像的像素点的编码块。相应地,编码块(cb)可以为m×n个像素点块,其中m和n可以设为某个值使得ctb划分为编码块,这就是分割。165.例如,在实施例中,根据hevc可通过使用表示为编码树的四叉树结构将编码树单元(ctu)划分为多个cu。在叶cu级作出是否使用帧间(时间)预测或帧内(空间)预测对图像区域进行编码的决定。每个叶cu可以根据pu划分类型进一步划分为一个、两个或四个pu。一个pu内使用相同的预测过程,并以pu为单位向解码器传输相关信息。在根据pu划分类型应用预测过程得到残差块之后,可以根据类似于用于cu的编码树的其它四叉树结构将叶cu分割为变换单元(tu)。166.例如,在实施例中,根据当前正在开发的最新视频编码标准(称为通用视频编码(vvc),使用嵌套多类型树(例如二叉树和三叉树)的组合四叉树来划分用于分割编码树单元的分段结构。在编码树单元内的编码树结构中,cu可以为正方形或矩形。例如,编码树单元(ctu)首先由四叉树结构进行分割。四叉树叶节点进一步由多类型树结构分割。多类型树形结构有四种划分类型:垂直二叉树划分(split_bt_ver)、水平二叉树划分(split_bt_hor)、垂直三叉树划分(split_tt_ver)和水平三叉树划分(split_tt_hor)。多类型树叶节点称为编码单元(cu),除非cu对于最大变换长度而言太大,这样的分段用于预测和变换处理,无需其它任何分割。在大多数情况下,这表示cu、pu和tu在四叉树嵌套多类型树的编码块结构中的块大小相同。当最大支持变换长度小于cu的彩色分量的宽度或高度时,就会出现该异常。vvc制定了具有四叉树嵌套多类型树的编码结构中的分割划分信息的唯一信令机制。在信令机制中,编码树单元(ctu)作为四叉树的根首先被四叉树结构分割。然后每个四叉树叶节点(当足够大可以被)被进一步分割为一个多类型树结构。在多类型树结构中,通过第一标识(mtt_split_cu_flag)指示节点是否进一步分割,当对节点进一步分割时,先用第二标识(mtt_split_cu_vertical_flag)指示划分方向,再用第三标识(mtt_split_cu_binary_flag)指示划分是二叉树划分或三叉树划分。根据mtt_split_cu_vertical_flag和mtt_split_cu_binary_flag的值,解码器可以基于预定义规则或表格推导出cu的多类型树划分模式(mttsplitmode)。需要说明的是,对于某种设计,例如vvc硬件解码器中的64×64的亮度块和32×32的色度流水线设计,当亮度编码块的宽度或高度大于64时,不允许进行tt划分。当色度编码块的宽度或高度大于32时,也不允许tt划分。流水线设计将图像分为多个虚拟流水线数据单元(virtualpipelinedataunit,vpdu),每个vpdu在图像中定义为互不重叠的单元。在硬件解码器中,连续的vpdu在多个流水线阶段同时处理。在大多数流水线阶段,vpdu大小与缓冲器大小大致成正比,因此需要保持较小的vpdu。在大多数硬件解码器中,vpdu大小可以设置为最大变换块(transformblock,tb)大小。但是,在vvc中,三叉树(tt)和二叉树(bt)的分割可能会增加vpdu的大小。167.另外,需要说明的是,当树节点块的一部分超出底部或图像右边界时,强制对该树节点块进行划分,直到每个编码cu的所有像素点都位于图像边界内。168.例如,所述帧内子分割(intrasub-partitions,isp)工具可以根据块大小将亮度帧内预测块垂直或水平地分为两个或四个子部分。169.在一个示例中,视频编码器20的模式选择单元260可以用于执行上文描述的分割技术的任意组合。170.如上所述,视频编码器20用于从(预定的)预测模式集合中确定或选择最好或最优的预测模式。预测模式集合可包括例如帧内预测模式和/或帧间预测模式。171.帧内预测172.帧内预测模式集合可包括35种不同的帧内预测模式,例如,像dc(或均值)模式和平面模式的非方向性模式,或如hevc定义的方向性模式,或者可包括67种不同的帧内预测模式,例如,像dc(或均值)模式和平面模式的非方向性模式,或如vvc中定义的方向性模式。例如,若干传统角度帧内预测模式自适应地替换为vvc中定义的非正方形块的广角帧内预测模式。又例如,为了避免dc预测的除法运算,仅使用较长边来计算非正方形块的平均值。并且,平面模式的帧内预测结果还可以使用位置决定的帧内预测组合(positiondependentintrapredictioncombination,pdpc)方法修改。173.帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式使用同一当前图像的相邻块的重建像素点来生成帧内预测块265。174.帧内预测单元254(或通常为模式选择单元260)还用于输出帧内预测参数(或通常为指示块的选定帧内预测模式的信息)以语法元素266的形式发送到熵编码单元270,以包含到编码图像数据21中,从而视频解码器30可执行操作,例如接收并使用用于解码的预测参数。175.hevc中的帧内预测模式包括直流预测模式,平面预测模式和33种角度预测模式,共计35个候选预测模式。当前块可以使用左侧和上方已重建图像块的像素作为参考进行帧内预测。当前块的周边区域中用来对当前块进行帧内预测的图像块成为参考块,参考块中的像素称为参考像素。35个候选预测模式中,直流预测模式适用于当前块中纹理平坦的区域,该区域中所有像素均使用参考块中的参考像素的平均值作为预测;平面预测模式适用于纹理平滑变化的图像块,符合该条件的当前块使用参考块中的参考像素进行双线性插值作为当前块中的所有像素的预测;角度预测模式利用当前块的纹理与相邻已重建图像块的纹理高度相关的特性,沿某一角度复制对应的参考块中的参考像素的值作为当前块中的所有像素的预测。176.hevc编码器给当前块从35个候选预测模式中选择一个最优帧内预测模式,并将该最优帧内预测模式写入视频码流。为提升帧内预测的编码效率,编码器/解码器会从周边区域中、采用帧内预测的已重建图像块各自的最优帧内预测模式中推导出3个最可能模式,如果给当前块选择的最优帧内预测模式是这3个最可能模式的其中之一,则编码一个第一索引指示所选择的最优帧内预测模式是这3个最可能模式的其中之一;如果选中的最优帧内预测模式不是这3个最可能模式,则编码一个第二索引指示所选择的最优帧内预测模式是其他32个模式(35个候选预测模式中除前述3个最可能模式外的其他模式)的其中之一。hevc标准使用5比特的定长码作为前述第二索引。177.hevc编码器推导出3个最可能模式的方法包括:选取当前块的左相邻图像块和上相邻图像块的最优帧内预测模式放入集合,如果这两个最优帧内预测模式相同,则集合中只保留一个即可。如果这两个最优帧内预测模式相同且均为角度预测模式,则再选取与该角度方向邻近的两个角度预测模式加入集合;否则,依次选择平面预测模式、直流模式模式和竖直预测模式加入集合,直到集合中的模式数量达到3。178.hevc解码器对码流做熵解码后,获得当前块的模式信息,该模式信息包括指示当前块的最优帧内预测模式是否在3个最可能模式中的指示标识,以及当前块的最优帧内预测模式在3个最可能模式中的索引或者当前块的最优帧内预测模式在其他32个模式中的索引。179.帧间预测180.在可能的实现中,帧间预测模式集合取决于可用参考图像(即,例如前述存储在dbp230中的至少部分之前解码的图像)和其它帧间预测参数,例如取决于是否使用整个参考图像或只使用参考图像的一部分,例如当前块的区域附近的搜索窗口区域,来搜索最佳匹配参考块,和/或例如取决于是否执行半像素、四分之一像素和/或16分之一内插的像素内插。181.除上述预测模式外,还可以采用跳过模式和/或直接模式。182.例如,扩展合并预测,这个模式的合并候选列表由以下五个候选类型按顺序组成:来自空间相邻cu的空间mvp、来自并置cu的时间mvp、来自fifo表的基于历史的mvp、成对平均mvp和零mv。可以使用基于双边匹配的解码器侧运动矢量修正(decodersidemotionvectorrefinement,dmvr)来增加合并模式的mv的准确度。带有mvd的合并模式(mergemodewithmvd,mmvd)来自有运动矢量差异的合并模式。在发送跳过标志和合并标志之后立即发送mmvd标志,以指定cu是否使用mmvd模式。可以使用cu级自适应运动矢量分辨率(adaptivemotionvectorresolution,amvr)方案。amvr支持cu的mvd以不同的精度进行编码。根据当前cu的预测模式,自适应地选择当前cu的mvd。当cu以合并模式进行编码时,可以将合并的帧间/帧内预测(combinedinter/intraprediction,ciip)模式应用于当前cu。对帧间和帧内预测信号进行加权平均,得到ciip预测。对于仿射运动补偿预测,通过2个控制点(4参数)或3个控制点(6参数)运动矢量的运动信息来描述块的仿射运动场。基于子块的时间运动矢量预测(subblock-basedtemporalmotionvectorprediction,sbtmvp),与hevc中的时间运动矢量预测(temporalmotionvectorprediction,tmvp)类似,但预测的是当前cu内的子cu的运动矢量。双向光流(bi-directionalopticalflow,bdof)以前称为bio,是一种减少计算的简化版本,特别是在乘法次数和乘数大小方面的计算。在三角形分割模式中,cu以对角线划分和反对角线划分两种划分方式被均匀划分为两个三角形部分。此外,双向预测模式在简单平均的基础上进行了扩展,以支持两个预测信号的加权平均。183.帧间预测单元244可包括运动估计(motionestimation,me)单元和运动补偿(motioncompensation,mc)单元(两者在图2中未示出)。运动估计单元可用于接收或获取图像块203(当前图像17的当前图像块203)和解码图像231,或至少一个或多个之前重建块,例如,一个或多个其它/不同之前解码图像231的重建块,来进行运动估计。例如,视频序列可包括当前图像和之前的解码图像231,或换句话说,当前图像和之前的解码图像231可以为形成视频序列的图像序列的一部分或形成该图像序列。184.例如,编码器20可用于从多个其它图像中的同一或不同图像的多个参考块中选择参考块,并将参考图像(或参考图像索引)和/或参考块的位置(x、y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元。该偏移也称为运动矢量(motionvector,mv)。185.运动补偿单元用于获取,例如接收,帧间预测参数,并根据或使用该帧间预测参数执行帧间预测,得到帧间预测块246。由运动补偿单元执行的运动补偿可能包含根据通过运动估计确定的运动/块矢量来提取或生成预测块,还可能包括对子像素精度执行内插。内插滤波可从已知像素的像素点中产生其它像素的像素点,从而潜在地增加可用于对图像块进行编码的候选预测块的数量。一旦接收到当前图像块的pu对应的运动矢量时,运动补偿单元可在其中一个参考图像列表中定位运动矢量指向的预测块。186.运动补偿单元还可以生成与块和视频片相关的语法元素,以供视频解码器30在解码视频片的图像块时使用。此外,或者作为片和相应语法元素的替代,可以生成或使用编码区块组和/或编码区块以及相应语法元素。187.在获取先进的运动矢量预测(advancedmotionvectorprediction,amvp)模式中的候选运动矢量列表的过程中,作为备选可以加入候选运动矢量列表的运动矢量(motionvector,mv)包括当前块的空域相邻和时域相邻的图像块的mv,其中空域相邻的图像块的mv又可以包括位于当前块左侧的左方候选图像块的mv和位于当前块上方的上方候选图像块的mv。示例性的,请参考图4,图4为本技术实施例提供的候选图像块的一种示例性的示意图,如图4所示,左方候选图像块的集合包括{a0,a1},上方候选图像块的集合包括{b0,b1,b2},时域相邻的候选图像块的集合包括{c,t},这三个集合均可以作为备选被加入到候选运动矢量列表中,但是根据现有编码标准,amvp的候选运动矢量列表的最大长度为2,因此需要根据规定的顺序从三个集合中确定在候选运动矢量列表中加入最多两个图像块的mv。该顺序可以是优先考虑当前块的左方候选图像块的集合{a0,a1}(先考虑a0,a0不可得再考虑a1),其次考虑当前块的上方候选图像块的集合{b0,b1,b2}(先考虑b0,b0不可得再考虑b1,b1不可得再考虑b2),最后考虑当前块的时域相邻的候选图像块的集合{c,t}(先考虑t,t不可得再考虑c)。188.得到上述候选运动矢量列表后,通过率失真代价(ratedistortioncost,rdcost)从候选运动矢量列表中确定最优的mv,将rdcost最小的候选运动矢量作为当前块的运动矢量预测值(motionvectorpredictor,mvp)。率失真代价由以下公式计算获得:189.j=sad+λr190.其中,j表示rdcost,sad为使用候选运动矢量进行运动估计后得到的预测块的像素值与当前块的像素值之间的绝对误差和(sumofabsolutedifferences,sad),r表示码率,λ表示拉格朗日乘子。191.编码端将确定出的mvp在候选运动矢量列表中的索引传递到解码端。进一步地,可以在mvp为中心的邻域内进行运动搜索获得当前块实际的运动矢量,编码端计算mvp与实际的运动矢量之间的运动矢量差值(motionvectordifference,mvd),并将mvd也传递到解码端。解码端解析索引,根据该索引在候选运动矢量列表中找到对应的mvp,解析mvd,将mvd与mvp相加得到当前块实际的运动矢量。192.在获取融合(merge)模式中的候选运动信息列表的过程中,作为备选可以加入候选运动信息列表的运动信息包括当前块的空域相邻或时域相邻的图像块的运动信息,其中空域相邻的图像块和时域相邻的图像块可参照图4,候选运动信息列表中对应于空域的候选运动信息来自于空间相邻的5个块(a0、a1、b0、b1和b2),若空域相邻块不可得或者为帧内预测,则其运动信息不加入候选运动信息列表。当前块的时域的候选运动信息根据参考帧和当前帧的图序计数(pictureordercount,poc)对参考帧中对应位置块的mv进行缩放后获得,先判断参考帧中位置为t的块是否可得,若不可得则选择位置为c的块。得到上述候选运动信息列表后,通过rdcost从候选运动信息列表中确定最优的运动信息作为当前块的运动信息。编码端将最优的运动信息在候选运动信息列表中位置的索引值(记为mergeindex)传递到解码端。193.熵编码194.熵编码单元270用于将熵编码算法或方案(例如,可变长度编码(variablelengthcoding,vlc)方案、上下文自适应vlc方案(contextadaptivevlc,calvc)、算术编码方案、二值化算法、上下文自适应二进制算术编码(contextadaptivebinaryarithmeticcoding,cabac)、基于语法的上下文自适应二进制算术编码(syntax-basedcontext-adaptivebinaryarithmeticcoding,sbac)、概率区间分割熵(probabilityintervalpartitioningentropy,pipe)编码或其它熵编码方法或技术)应用于量化残差系数209、帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素,得到可以通过输出端272以编码比特流21等形式输出的编码图像数据21,使得视频解码器30等可以接收并使用用于解码的参数。可将编码比特流21传输到视频解码器30,或将其保存在存储器中稍后由视频解码器30传输或检索。195.视频编码器20的其它结构变体可用于对视频流进行编码。例如,基于非变换的编码器20可以在某些块或帧没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以具有组合成单个单元的量化单元208和反量化单元210。196.解码器和解码方法197.如图3所示,视频解码器30用于接收例如由编码器20编码的编码图像数据21(例如编码比特流21),得到解码图像331。编码图像数据或比特流包括用于解码所述编码图像数据的信息,例如表示编码视频片(和/或编码区块组或编码区块)的图像块的数据和相关的语法元素。198.在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320、解码图像缓冲器(dbp)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以为或包括运动补偿单元。在一些示例中,视频解码器30可执行大体上与参照图2的视频编码器100描述的编码过程相反的解码过程。199.如编码器20所述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器dpb230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。相应地,反量化单元310在功能上可与反量化单元110相同,逆变换处理单元312在功能上可与逆变换处理单元122相同,重建单元314在功能上可与重建单元214相同,环路滤波器320在功能上可与环路滤波器220相同,解码图像缓冲器330在功能上可与解码图像缓冲器230相同。因此,视频编码器20的相应单元和功能的解释相应地适用于视频解码器30的相应单元和功能。200.熵解码201.熵解码单元304用于解析比特流21(或一般为编码图像数据21)并对编码图像数据21执行熵解码,得到量化系数309和/或解码后的编码参数(图3中未示出)等,例如帧间预测参数(例如参考图像索引和运动矢量)、帧内预测参数(例如帧内预测模式或索引)、变换参数、量化参数、环路滤波器参数和/或其它语法元素等中的任一个或全部。熵解码单元304可用于应用编码器20的熵编码单元270的编码方案对应的解码算法或方案。熵解码单元304还可用于向模式应用单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,以及向解码器30的其它单元提供其它参数。视频解码器30可以接收视频片和/或视频块级的语法元素。此外,或者作为片和相应语法元素的替代,可以接收或使用编码区块组和/或编码区块以及相应语法元素。202.反量化203.反量化单元310可用于从编码图像数据21(例如通过熵解码单元304解析和/或解码)接收量化参数(quantizationparameter,qp)(或一般为与反量化相关的信息)和量化系数,并基于所述量化参数对所述解码的量化系数309进行反量化以获得反量化系数311,所述反量化系数311也可以称为变换系数311。反量化过程可包括使用视频编码器20为视频片中的每个视频块计算的量化参数来确定量化程度,同样也确定需要执行的反量化的程度。204.逆变换205.逆变换处理单元312可用于接收解量化系数311,也称为变换系数311,并对解量化系数311应用变换以得到像素域中的重建残差块213。重建残差块213也可称为变换块313。变换可以为逆变换,例如逆dct、逆dst、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从编码图像数据21(例如通过熵解码单元304解析和/或解码)接收变换参数或相应信息,以确定应用于解量化系数311的变换。206.重建207.重建单元314(例如,求和器314)用于将重建残差块313添加到预测块365,以在像素域中得到重建块315,例如,将重建残差块313的像素点值和预测块365的像素点值相加。208.滤波209.环路滤波器单元320(在编码环路中或之后)用于对重建块315进行滤波,得到滤波块321,从而顺利进行像素转变或提高视频质量等。环路滤波器单元320可包括一个或多个环路滤波器,例如去块滤波器、像素点自适应偏移(sample-adaptiveoffset,sao)滤波器或一个或多个其它滤波器,例如自适应环路滤波器(adaptiveloopfilter,alf)、噪声抑制滤波器(noisesuppressionfilter,nsf)或任意组合。例如,环路滤波器单元220可以包括去块滤波器、sao滤波器和alf滤波器。滤波过程的顺序可以是去块滤波器、sao滤波器和alf滤波器。再例如,增加一个称为具有色度缩放的亮度映射(lumamappingwithchromascaling,lmcs)(即自适应环内整形器)的过程。该过程在去块之前执行。再例如,去块滤波过程也可以应用于内部子块边缘,例如仿射子块边缘、atmvp子块边缘、子块变换(sub-blocktransform,sbt)边缘和内子部分(intrasub-partition,isp)边缘。尽管环路滤波器单元320在图3中示为环路滤波器,但在其它配置中,环路滤波器单元320可以实现为环后滤波器。210.解码图像缓冲器211.随后将一个图像中的解码视频块321存储在解码图像缓冲器330中,解码图像缓冲器330存储作为参考图像的解码图像331,参考图像用于其它图像和/或分别输出显示的后续运动补偿。212.解码器30用于通过输出端312等输出解码图像311,向用户显示或供用户查看。213.预测214.帧间预测单元344在功能上可与帧间预测单元244(特别是运动补偿单元)相同,帧内预测单元354在功能上可与帧间预测单元254相同,并基于从编码图像数据21(例如通过熵解码单元304解析和/或解码)接收的分割和/或预测参数或相应信息决定划分或分割和执行预测。模式应用单元360可用于根据重建图像、块或相应的像素点(已滤波或未滤波)执行每个块的预测(帧内或帧间预测),得到预测块365。215.当将视频片编码为帧内编码(intracoded,i)片时,模式应用单元360中的帧内预测单元354用于根据指示的帧内预测模式和来自当前图像的之前解码块的数据生成用于当前视频片的图像块的预测块365。当视频图像编码为帧间编码(即,b或p)片时,模式应用单元360中的帧间预测单元344(例如运动补偿单元)用于根据运动矢量和从熵解码单元304接收的其它语法元素生成用于当前视频片的视频块的预测块365。对于帧间预测,可从其中一个参考图像列表中的其中一个参考图像产生这些预测块。视频解码器30可以根据存储在dpb330中的参考图像,使用默认构建技术来构建参考帧列表0和列表1。除了片(例如视频片)或作为片的替代,相同或类似的过程可应用于编码区块组(例如视频编码区块组)和/或编码区块(例如视频编码区块)的实施例,例如视频可以使用i、p或b编码区块组和/或编码区块进行编码。216.模式应用单元360用于通过解析运动矢量和其它语法元素,确定用于当前视频片的视频块的预测信息,并使用预测信息产生用于正在解码的当前视频块的预测块。例如,模式应用单元360使用接收到的一些语法元素确定用于编码视频片的视频块的预测模式(例如帧内预测或帧间预测)、帧间预测片类型(例如b片、p片或gpb片)、用于片的一个或多个参考图像列表的构建信息、用于片的每个帧间编码视频块的运动矢量、用于片的每个帧间编码视频块的帧间预测状态、其它信息,以解码当前视频片内的视频块。除了片(例如视频片)或作为片的替代,相同或类似的过程可应用于编码区块组(例如视频编码区块组)和/或编码区块(例如视频编码区块)的实施例,例如视频可以使用i、p或b编码区块组和/或编码区块进行编码。217.在一个实施例中,图3的视频编码器30还可以用于使用片(也称为视频片)分割和/或解码图像,其中图像可以使用一个或多个片(通常为不重叠的)进行分割或解码。每个片可包括一个或多个块(例如ctu)或一个或多个块组(例如h.265/hevc/vvc标准中的编码区块和vvc标准中的砖。218.在一个实施例中,图3所示的视频解码器30还可以用于使用片/编码区块组(也称为视频编码区块组)和/或编码区块(也称为视频编码区块)对图像进行分割和/或解码,其中图像可以使用一个或多个片/编码区块组(通常为不重叠的)进行分割或解码,每个片/编码区块组可包括一个或多个块(例如ctu)或一个或多个编码区块等,其中每个编码区块可以为矩形等形状,可包括一个或多个完整或部分块(例如ctu)。219.视频解码器30的其它变型可用于对编码图像数据21进行解码。例如,解码器30可以在没有环路滤波器单元320的情况下产生输出视频流。例如,基于非变换的解码器30可以在某些块或帧没有逆变换处理单元312的情况下直接反量化残差信号。在另一种实现方式中,视频解码器30可以具有组合成单个单元的反量化单元310和逆变换处理单元312。220.应理解,在编码器20和解码器30中,可以对当前步骤的处理结果进一步处理,然后输出到下一步骤。例如,在插值滤波、运动矢量推导或环路滤波之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进行进一步的运算,例如裁剪(clip)或移位(shift)运算。221.应该注意的是,可以对当前块的推导运动矢量(包括但不限于仿射模式的控制点运动矢量、仿射、平面、atmvp模式的子块运动矢量、时间运动矢量等)进行进一步运算。例如,根据运动矢量的表示位将运动矢量的值限制在预定义范围。如果运动矢量的表示位为bitdepth,则范围为-2^(bitdepth-1)至2^(bitdepth-1)-1,其中“^”表示幂次方。例如,如果bitdepth设置为16,则范围为-32768~32767;如果bitdepth设置为18,则范围为-131072~131071。例如,推导运动矢量的值(例如一个8×8块中的4个4×4子块的mv)被限制,使得所述4个4×4子块mv的整数部分之间的最大差值不超过n个像素,例如不超过1个像素。这里提供了两种根据bitdepth限制运动矢量的方法。222.尽管上述实施例主要描述了视频编解码,但应注意的是,译码系统10、编码器20和解码器30的实施例以及本文描述的其它实施例也可以用于静止图像处理或编解码,即视频编解码中独立于任何先前或连续图像的单个图像的处理或编解码。一般情况下,如果图像处理仅限于单个图像17,帧间预测单元244(编码器)和帧间预测单元344(解码器)可能不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)同样可用于静态图像处理,例如残差计算204/304、变换206、量化208、反量化210/310、(逆)变换212/312、分割262/362、帧内预测254/354和/或环路滤波220/320、熵编码270和熵解码304。223.请参考图5,图5为本技术实施例提供的视频译码设备500的一种示例性框图。视频译码设备500适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备500可以是解码器,例如图1a中的视频解码器30,也可以是编码器,例如图1a中的视频编码器20。224.视频译码设备500包括:用于接收数据的入端口510(或输入端口510)和接收单元(receiverunit,rx)520;用于处理数据的处理器、逻辑单元或中央处理器(centralprocessingunit,cpu)530;例如,这里的处理器530可以是神经网络处理器530;用于传输数据的发送单元(transmitterunit,tx)540和出端口550(或输出端口550);用于存储数据的存储器560。视频译码设备500还可包括耦合到入端口510、接收单元520、发送单元540和出端口550的光电(optical-to-electrical,oe)组件和电光(electrical-to-optical,eo)组件,用于光信号或电信号的出口或入口。225.处理器530通过硬件和软件实现。处理器530可实现为一个或多个处理器芯片、核(例如,多核处理器)、fpga、asic和dsp。处理器530与入端口510、接收单元520、发送单元540、出端口550和存储器560通信。处理器530包括译码模块570(例如,基于神经网络的译码模块570)。译码模块570实施上文所公开的实施例。例如,译码模块570执行、处理、准备或提供各种编码操作。因此,通过译码模块570为视频译码设备500的功能提供了实质性的改进,并且影响了视频译码设备500到不同状态的切换。或者,以存储在存储器560中并由处理器530执行的指令来实现译码模块570。226.存储器560包括一个或多个磁盘、磁带机和固态硬盘,可以用作溢出数据存储设备,用于在选择执行程序时存储此类程序,并且存储在程序执行过程中读取的指令和数据。存储器560可以是易失性和/或非易失性的,可以是只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、三态内容寻址存储器(ternarycontent-addressablememory,tcam)和/或静态随机存取存储器(staticrandom-accessmemory,sram)。227.请参考图6,图6为本技术实施例提供的装置600的一种示例性框图,装置600可用作图1a中的源设备12和目的设备14中的任一个或两个。228.装置600中的处理器602可以是中央处理器。或者,处理器602可以是现有的或今后将研发出的能够操控或处理信息的任何其它类型设备或多个设备。虽然可以使用如图所示的处理器602等单个处理器来实施已公开的实现方式,但使用一个以上的处理器速度更快和效率更高。229.在一种实现方式中,装置600中的存储器604可以是只读存储器(rom)设备或随机存取存储器(ram)设备。任何其它合适类型的存储设备都可以用作存储器604。存储器604可以包括处理器602通过总线612访问的代码和数据606。存储器604还可包括操作系统608和应用程序610,应用程序610包括允许处理器602执行本文所述方法的至少一个程序。例如,应用程序610可以包括应用1至n,还包括执行本文所述方法的视频译码应用。230.装置600还可以包括一个或多个输出设备,例如显示器618。在一个示例中,显示器618可以是将显示器与可用于感测触摸输入的触敏元件组合的触敏显示器。显示器618可以通过总线612耦合到处理器602。231.虽然装置600中的总线612在本文中描述为单个总线,但是总线612可以包括多个总线。此外,辅助储存器可以直接耦合到装置600的其它组件或通过网络访问,并且可以包括存储卡等单个集成单元或多个存储卡等多个单元。因此,装置600可以具有各种各样的配置。232.由于本技术实施例涉及神经网络的应用,为了便于理解,下面先对本技术实施例所使用到的一些名词或术语进行解释说明,该名词或术语也作为
发明内容的一部分。233.(1)神经网络234.神经网络(neuralnetwork,nn)是机器学习模型,神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以为:[0235][0236]其中,s=1、2、......n,n为大于1的自然数,ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activationfunctions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入。激活函数可以是sigmoid函数。神经网络是将许多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。[0237](2)深度神经网络[0238]深度神经网络(deepneuralnetwork,dnn),也称多层神经网络,可以理解为具有很多层隐含层的神经网络,这里的“很多”并没有特别的度量标准。从dnn按不同层的位置划分,dnn内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然dnn看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,是输入向量,是输出向量,是偏移向量,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量由于dnn层数多,则系数w和偏移向量的数量也就很多了。这些参数在dnn中的定义如下所述:以系数w为例:假设在一个三层的dnn中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。总结就是:第l-1层的第k个神经元到第l层的第j个神经元的系数定义为需要注意的是,输入层是没有w参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。[0239](3)卷积神经网络[0240]卷积神经网络(convolutionalneuronnetwork,cnn)是一种带有卷积结构的深度神经网络,是一种深度学习(deeplearning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,cnn是一种前馈(feed-fbrward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像作出响应。卷积神经网络包含了一个由卷积层和池化层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者卷积特征平面(featuremap)做卷积。[0241]卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。卷积层可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素......这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depthdimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行×列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行×列)相同,经过该多个尺寸相同的权重矩阵提取后的特征图的尺寸也相同,再将提取到的多个尺寸相同的特征图合并形成卷积运算的输出。这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得卷积神经网络进行正确的预测。当卷积神经网络有多个卷积层的时候,初始的卷积层往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络深度的加深,越往后的卷积层提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。[0242]由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值作为平均池化的结果。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像尺寸相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。[0243]在经过卷积层/池化层的处理后,卷积神经网络还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络需要利用神经网络层来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层中可以包括多层隐含层,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。[0244]可选的,在神经网络层中的多层隐含层之后,还包括整个卷积神经网络的输出层,该输出层具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络的前向传播完成,反向传播就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络的损失,及卷积神经网络通过输出层输出的结果和理想结果之间的误差。[0245](4)循环神经网络[0246]循环神经网络(recurrentneuralnetworks,rnn)是用来处理序列数据的。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,而对于每一层层内之间的各个节点是无连接的。这种普通的神经网络虽然解决了很多难题,但是却仍然对很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。rnn之所以称为循环神经网络,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐含层本层之间的节点不再无连接而是有连接的,并且隐含层的输入不仅包括输入层的输出还包括上一时刻隐含层的输出。理论上,rnn能够对任何长度的序列数据进行处理。对于rnn的训练和对传统的cnn或dnn的训练一样。同样使用误差反向传播算法,不过有一点区别:即,如果将rnn进行网络展开,那么其中的参数,如w,是共享的;而如上举例上述的传统神经网络却不是这样。并且在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,还依赖前面若干步网络的状态。该学习算法称为基于时间的反向传播算法(backpropagationthroughtime,bptt)。[0247]既然已经有了卷积神经网络,为什么还要循环神经网络?原因很简单,在卷积神经网络中,有一个前提假设是:元素之间是相互独立的,输入与输出也是独立的,比如猫和狗。但现实世界中,很多元素都是相互连接的,比如股票随时间的变化,再比如一个人说了:我喜欢旅游,其中最喜欢的地方是云南,以后有机会一定要去。这里填空,人类应该都知道是填“云南”。因为人类会根据上下文的内容进行推断,但如何让机器做到这一步?rnn就应运而生了。rnn旨在让机器像人一样拥有记忆的能力。因此,rnn的输出就需要依赖当前的输入信息和历史的记忆信息。[0248](5)损失函数[0249]在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(lossfunction)或目标函数(objectivefunction),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。[0250](6)反向传播算法[0251]卷积神经网络可以采用误差反向传播(backpropagation,bp)算法在训练过程中修正初始的超分辨率模型中参数的大小,使得超分辨率模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的超分辨率模型的参数,例如权重矩阵。[0252](7)生成式对抗网络[0253]生成式对抗网络(generativeadversarialnetworks,gan)是一种深度学习模型。该模型中至少包括两个模块:一个模块是生成模型(generativemodel),另一个模块是判别模型(discriminativemodel),通过这两个模块互相博弈学习,从而产生更好的输出。生成模型和判别模型都可以是神经网络,具体可以是深度神经网络,或者卷积神经网络。gan的基本原理如下:以生成图片的gan为例,假设有两个网络,g(generator)和d(discriminator),其中g是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做g(z);d是一个判别网络,用于判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出d(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,如果为0,就代表不可能是真实的图片。在对该生成式对抗网络进行训练的过程中,生成网络g的目标就是尽可能生成真实的图片去欺骗判别网络d,而判别网络d的目标就是尽量把g生成的图片和真实的图片区分开来。这样,g和d就构成了一个动态的“博弈”过程,也即“生成式对抗网络”中的“对抗”。最后博弈的结果,在理想的状态下,g可以生成足以“以假乱真”的图片g(z),而d难以判定g生成的图片究竟是不是真实的,即d(g(z))=0.5。这样就得到了一个优异的生成模型g,它可以用来生成图片。[0254]图7a为本技术实施例提供的一个应用场景的示意图,如图7a所示,该应用场景是设备获取数据,对获取到的数据进行压缩处理,之后存储压缩数据。该设备可以集成有前述源设备和目的设备的功能。[0255]1、设备获取数据。[0256]2、设备对数据进行压缩处理得到压缩数据。[0257]3、设备存储压缩数据。[0258]应当理解的,设备对数据进行压缩处理是为了节省存储空间。可选地,设备可以将压缩数据存储在相册或云相册。[0259]4、设备对压缩数据进行解压缩以得到数据。[0260]图7b为本技术实施例提供的一个应用场景的示意图,如图7b所示,该应用场景是源设备获取数据,对获取到的数据进行压缩处理得到压缩数据,之后向目的设备发送压缩数据。[0261]本技术实施例中,源设备可以对获取到的数据进行压缩处理后传输给目的设备,这样可以减少传输带宽。[0262]1、源设备获取数据。[0263]2、源设备对数据进行压缩处理得到压缩数据。[0264]3、源设备向目的设备发送压缩数据。[0265]源设备对数据进行压缩处理后再传输,可以减少传输带宽,提高传输效率。[0266]4、目的设备对压缩数据进行解压缩以得到数据。[0267]请参考图8,图8为本技术实施例提供的编解码方法800的流程图。编解码方法800可由编码器和解码器执行。编解码方法800描述为一系列的步骤或操作,应当理解的是,编解码方法800可以以各种顺序执行和/或同时发生,不限于图8所示的执行顺序。如图8所示,编解码方法800可以包括:[0268]步骤801、编码器获取待编码数据。[0269]示例性地,编码器获取待编码数据x。[0270]步骤802、编码器将待编码数据输入第一编码网络以得到目标参数。[0271]其中,目标参数可以为第二编码网络的全部或部分卷积和非线性激活的参数权重。[0272]可选地,第一编码网络可以包括卷积核生成器(卷积或者全连接组),卷积核生成器用于根据待编码数据生成目标参数。[0273]示例性地,编码器将待编码数据x输入第一编码网络以得到目标参数θg。[0274]步骤803、编码器根据目标参数构建第二编码网络。[0275]示例性地,编码器根据目标参数θg构建第二编码网络ga(x;θg)。[0276]步骤804、编码器将待编码数据输入第二编码网络以得到第一特征。[0277]其中,第一特征用于重构待编码数据,第一特征也可以称为内容特征。例如,第一特征可以为待编码数据x的三维特征图。[0278]示例性地,编码器将待编码数据x输入第二编码网络ga(x;θg)以得到第一特征y。其中,y满足y=ga(x;θg)。[0279]步骤805、编码器对第一特征进行编码得到编码码流(即待解码码流)。[0280]在一种可能的实现方式中,编码器对第一特征进行编码得到编码码流,可以包括:编码器先对第一特征进行取整以得到第一特征的取整值;然后编码器对第一特征的取整值进行概率估计以得到第一特征的取整值的估计概率分布;接着编码器根据第一特征的取整值的估计概率分布对第一特征的取整值进行熵编码以得到编码码流。其中,第一特征的取整值可以称为第一取值特征或内容取整特征。[0281]示例性地,编码器先对第一特征y进行取整以得到第一特征的取整值然后编码器对第一特征的取整值进行概率估计以得到第一特征的取整值的估计概率分布接着编码器根据第一特征的取整值的估计概率分布对第一特征的取整值进行熵编码以得到编码码流。[0282]其中,满足round为取整。[0283]满足满足为熵估计网络。[0284]可选地,编码器对第一特征的取整值进行概率估计以得到第一特征的取整值的估计概率分布,可以包括:编码器根据第一信息对第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布。其中,第一信息包括上下文信息和边信息中的至少一项。[0285]值得一提的是,通过上下文信息和边信息进行估计概率分布,能够提高得到的估计概率分布的准确性,从而减小熵编码过程中的码率,实现减小熵编码开销。[0286]步骤806、编码器向解码器发送编码码流。[0287]步骤807、解码器对编码码流进行解码得到第一特征的取整值。[0288]在一种可能的实现方式中,解码器对编码码流进行解码得到第一特征的取整值,可以包括:解码器先对编码码流中的第一特征的取整值进行概率估计以得到第一特征的取整值的估计概率分布;然后解码器根据第一特征的取整值的估计概率分布对编码码流进行熵解码以得到第一特征的取整值。[0289]步骤808、解码器将第一特征的取整值输入解码网络以得到解码数据。[0290]示例性地,解码器将第一特征的取整值输入解码网络得到解码数据其中,解码数据满足满足为解码网络的全部卷积或部分卷积和非线性激活的参数权重。[0291]现有编码方法中编码网络(即第二编码网络)采用固定的参数权重提取待编码数据的内容特征(即第一特征),然后将内容特征编码为码流(即编码码流)发送至解码端,解码端对码流进行解码重构得到解码数据。可以看出,现有技术中编码网络的参数权重与待编码数据不相关。而本技术实施例提供的编码方法中,先将待编码数据输入到第一编码网络,然后第一编码网络根据待编码数据生成第二编码网络的参数权重,然后根据得到的权重动态调整第二编码网络的参数权重,使第二编码网络的参数权重与待编码数据相关,增加了第二编码网络的表达能力,使解码端通过第一特征编码得到码流解码重构出的解码数据与待编码数据更加接近,从而提升了编解码网络的率失真性能。[0292]本技术实施例提供的编解码方法800可适用于图9所示的编解码系统。如图9所示,该编解码系统包括第一编码网络901、第二编码网络902、取整模块903、熵估计网络904、熵编码模块905、熵解码模块906、解码网络907。[0293]如图9所示,待编码数据先输入到第一编码网络901中以得到目标参数,然后通过目标参数调整第二编码网络902的参数(即通过目标参数调整第二编码网络902的全部卷积或部分卷积和非线性激活的参数权重)。[0294]待编码数据输入到第二编码网络902中以得到第一特征。[0295]取整模块903对第一特征进行取整得到第一特征的取整值。[0296]熵估计网络904对第一特征的取整值进行概率估计以得到第一特征的取整值的估计概率分布。[0297]熵编码模块905根据第一特征的取整值的估计概率分布对第一特征的取整值进行熵编码以得到编码码流。[0298]熵解码模块906根据第一特征的取整值的估计概率分布对编码码流进行熵解码以得到第一特征的取整值。[0299]将第一特征的取整值输入解码网络907以得到解码数据。[0300]请参考图10,图10为本技术实施例提供的编解码方法1000的流程图。编解码方法1000可由编码器和解码器执行。编解码方法1000描述为一系列的步骤或操作,应当理解的是,编解码方法1000可以以各种顺序执行和/或同时发生,不限于图10所示的执行顺序。如图10所示,编解码方法1000可以包括:[0301]步骤1001、编码器获取待编码数据。[0302]步骤1002、编码器将待编码数据输入第二编码网络以得到第一特征。[0303]其中,第一特征用于重构待编码数据。[0304]步骤1003、编码器将待编码数据输入第一编码网络以得到第二特征。[0305]其中,第二特征用于重构目标参数,第二特征也可称为模型特征,目标参数为第二解码网络的全部卷积或部分卷积和非线性激活的参数权重。[0306]在一种可能的实现方式中,编码器也先可以将第一特征从通道维度上分为两部分(第一子特征和第二子特征),一部分用于重构待编码数据(第一子特征),另一部分用于重构目标参数(第二子特征)。然后编码器将第二子特征输入第一编码网络以得到第二特征。[0307]可选地,为了使得第二特征能够以较小的码流压缩,在将第二子特征输入第三编码网络之前还可以对通过卷积和全连接网络对第二子特征进行转换。其中,转换前的第二子特征可称为初始模型特征,转换后的第二子特征可称为模型特征。[0308]步骤1004、编码器对第一特征进行编码得到第一待解码码流。[0309]步骤1005、编码器对第二特征进行编码得到第二待解码码流。[0310]在一种可能的实现方式中,编码器可以对第一特征和第二特征进行编码得到待解码码流。[0311]步骤1006、编码器向解码器发送第一待解码码流和第二待解码码流。[0312]步骤1007、解码器对第一待解码码流进行解码得到第一特征的取整值。[0313]在一种可能的实现方式中,解码器对第一待解码码流进行解码得到第一特征的取整值可以包括:解码器对第一待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布;根据所述待第一特征的取整值的估计概率分布对所述待解码码流进行熵解码以得到所述第一特征的取整值。[0314]在一种可能的实现方式中,上述对所述第一待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,包括:根据第一信息对所述第一待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。[0315]步骤1008、解码器对第二待解码码流进行解码得到第二特征的取整值。[0316]其中,第二特征的取整值也可称为模型取整特征。[0317]在一种可能的实现方式中,解码器对第二待解码码流进行解码得到第二特征的取整值,包括:解码器对所述第二待解码码流中的第二特征的取整值进行概率估计以得到所述第二特征的取整值的估计概率分布;根据所述第二特征的取整值的估计概率分布对所述第二待解码码流进行熵解码以得到所述第二特征的取整值。[0318]在一种可能的实现方式中,上述对所述第二待解码码流中的第二特征的取整值进行概率估计以得到所述第二特征的取整值的估计概率分布,包括:根据第一信息对所述第二待解码码流中的第二特征的取整值进行概率估计以得到所述第二特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。[0319]步骤1009、解码器将第二特征的取整值输入第一解码网络以得到目标参数。[0320]步骤1010、解码器根据目标参数构建第二解码网络。[0321]步骤1011、解码器将第一特征的取整值输入第二解码网络以得到解码数据。[0322]现有解码方法中解码网络(即第二解码网络)采用固定的参数权重对待编码数据的内容取值特征(即第一特征的取整值)进行解码重构得到解码数据。可以看出,现有技术中解码网络的参数权重与待解码数据不相关。而本技术实施例中将待解码数据的内容特征和模型特征(即第一特征和第二特征)编成待解码码流,然后解码端通过解码待解码码流得到第二特征的取整值,通过将第二特征的取整值输入第一解码网络以得到第二解码网络的参数权重,然后根据该参数权重动态调整第二解码网络的参数权重,使第二解码网络的参数权重与待解码数据相关,提升了第二解码网络的表达能力,使第二解码网络解码重构得到的解码数据与待编码数据更加接近,从而提升了编解码网络的率失真性能。[0323]本技术实施例提供的编解码方法1000可适用于图11所述的编解码系统。如图11所示,该编解码系统包括第一编码网络1101、第二编码网络1102、第一取整模块1103、第二取整模块1104、熵估计网络1105、第一熵编码模块1106、第二熵编码模块1107、第一熵解码模块1108、第二熵解码模块1109、第一解码网络1110、第二解码网络1111。[0324]如11所示,待编码数据先输入到第二编码网络1102中以得到第一特征,然后待编码数据输入到第一编码网络1101中以得到第二特征。[0325]第一取整模块1103对第一特征进行取整得到第一特征的取整值。[0326]第二取整模块1104对第二特征进行取整得到第二特征的取整值。[0327]熵估计网络1105先对第一特征的取整值进行概率估计以得到第一特征的取整值的估计概率分布,然后对第二特征的取整值进行概率估计以得到第二特征的取整值的估计概率分布。[0328]第一熵编码模块1106根据第一特征的取整值的估计概率分布对第一特征的取整值进行熵编码以得到第一待解码码流。[0329]第二熵编码模块1107根据第二特征的取整值的估计概率分布对第二特征的取整值进行熵编码以得到第二待解码码流。[0330]第一熵解码模块1108根据第一特征的取整值的估计概率分布对第一待解码码流进行熵解码以得到第一特征的取整值。[0331]第二熵解码模块1109根据第二特征的取整值的估计概率分布对第二待解码码流进行熵解码以得到第二特征的取整值。[0332]第二特征的取整值先输入第一解码网络1110中以得到目标参数,然后根据目标参数调整第二解码网络1111的参数(即通过目标参数调整第二解码网络1111的全部卷积或部分卷积和非线性激活的参数权重)。[0333]第一特征的取整值输入到第二解码网络1111中以得到解码数据。[0334]本技术实施例提供的编解码方法1000也可适用于图12所述的编解码系统。如图12所示,该编解码系统包括第一编码网络1201、第二编码网络1202、分通道模块1203、第一取整模块1204、第二取整模块1205、熵估计网络1206、第一熵编码模块1207、第二熵编码模块1208、第一熵解码模块1209、第二熵解码模块1210、第一解码网络1211、第二解码网络1212。[0335]如图12所示,待编码数据先输入到第二编码网络1102中以得到第一特征。[0336]第一特征输入到分通道模块1203中在通道维度上分为第一子特征和第二子特征。[0337]第二子特征输入到第一编码网络1201中以得到第二特征。[0338]第一取整模块1204对第一子特征进行取整得到第一特征的取整值。[0339]第二取整模块1205对第二特征进行取整得到第二特征的取整值。[0340]熵估计网络1206先对第一特征的取整值进行概率估计以得到第一特征的取整值的估计概率分布,然后对第二特征的取整值进行概率估计以得到第二特征的取整值的估计概率分布。[0341]第一熵编码模块1207根据第一特征的取整值的估计概率分布对第一特征的取整值进行熵编码以得到第一待解码码流。[0342]第二熵编码模块1208根据第二特征的取整值的估计概率分布对第二特征的取整值进行熵编码以得到第二待解码码流。[0343]第一熵解码模块1209根据第一特征的取整值的估计概率分布对第一待解码码流进行熵解码以得到第一特征的取整值。[0344]第二熵解码模块1210根据第二特征的取整值的估计概率分布对第二待解码码流进行熵解码以得到第二特征的取整值。[0345]第二特征的取整值先输入第一解码网络1211中以得到目标参数,然后根据目标参数调整第二解码网络1212的参数(即通过目标参数调整第二解码网络1212的全部卷积或部分卷积和非线性激活的参数权重)。[0346]第一特征的取整值输入到第二解码网络1212中以得到解码数据。[0347]请参考图13,图13为本技术实施例提供的编解码方法1300的流程图。编解码方法1300可由编码器和解码器执行。编解码方法1300描述为一系列的步骤或操作,应当理解的是,编解码方法1300可以以各种顺序执行和/或同时发生,不限于图13所示的执行顺序。如图13所示,编解码方法1300可以包括:[0348]步骤1301、编码器获取待编码数据。[0349]步骤1302、编码器将待编码数据输入编码网络以得到第一特征。[0350]步骤1303、编码器对第一特征进行编码得到待解码码流。[0351]步骤1304、编码器向解码器发送待解码码流。[0352]步骤1305、解码器对待解码码流进行解码得到第一特征的取整值。[0353]在一种可能的实现方式中,解码器对待解码码流进行解码得到第一特征的取整值可以包括:解码器对所述待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布;根据所述待第一特征的取整值的估计概率分布对所述待解码码流进行熵解码以得到所述第一特征的取整值。[0354]在一种可能的实现方式中,对所述待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,包括:根据第一信息对所述待解码码流中的第一特征的取整值进行概率估计以得到所述第一特征的取整值的估计概率分布,所述第一信息包括上下文信息和边信息中的至少一项。[0355]步骤1306、解码器将第一特征的取整值输入第一解码网络以得到目标参数。[0356]可选地,第一解码网络可以包括卷积核生成器(卷积或者全连接组),卷积核生成器用于根据待编码数据的第一特征的取整值生成目标参数。[0357]步骤1307、解码器根据目标参数构建第二解码网络。[0358]步骤1308、解码器将第一特征的取整值输入第二解码网络以得到解码数据。[0359]现有解码方法中解码网络(即第二解码网络)采用固定的参数权重对待编码数据的内容取值特征(即第一特征的取整值)进行解码重构得到解码数据。可以看出,现有技术中解码网络的参数权重与待解码数据不相关。而本技术实施例中通过解码待解码数据的特征(即第一特征)编码成的待解码码流得到第一特征的取整值,通过将第一特征的取整值输入第一解码网络以得到第二解码网络的参数权重,然后根据该参数权重动态调整第二解码网络的参数权重,使第二解码网络的参数权重与待解码数据相关,提升了第二解码网络的表达能力,使第二解码网络解码重构得到的解码数据与待编码数据更加接近,从而提升了编解码网络的率失真性能。[0360]本技术实施例提供的编解码方法1300可适用于图14所述的编解码系统。如图14所示,该编解码系统包括编码网络1401、取整模块1402、熵估计网络1403、熵编码模块1404、熵解码模块1405、第一解码网络1406、第二解码网络1407。[0361]如图14所示,待编码数据先输入到编码网络1401中以得到第一特征。[0362]取整模块1402对第一特征进行取整得到第一特征的取整值。[0363]熵估计网络1403对第一特征的取整值进行概率估计以得到第一特征的取整值的估计概率分布。[0364]熵编码模块1404根据第一特征的取整值的估计概率分布对第一特征的取整值进行熵编码以得到待解码码流。[0365]熵解码模块1405根据第一特征的取整值的估计概率分布对待解码码流进行熵解码以得到第一特征的取整值。[0366]将第一特征的取整值输入第一解码网络1406以得到目标参数,然后根据目标参数调整第二解码网络1406的参数(即通过目标参数调整第二解码网络1407的全部卷积或部分卷积和非线性激活的参数权重)。[0367]将第一特征的取整值输入第二解码网络1407以得到解码数据。[0368]请参考图15,图15为本技术实施例提供的编解码方法的性能的一种示意图,图15中的坐标系示出了在峰值信噪比(peaksignaltonoiseratio,psnr)指标下采用本技术实施例以及相关技术分别对测试集进行编解码的性能。测试集为柯达(kodak)测试集,kodak测试集包括24张便携式网络图形(portablenetworkgraphics,png)格式的图像。该24张图像的分辨率可以为768×512或512×768。图15的坐标系中,横坐标为比特率(bitsperpixel,bpp),纵坐标为psnr。bpp为存储每个像素所用的位数,越小代表压缩码率越小。psnr是一种评价图像的客观标准,越高代表图像质量越好。[0369]图15所示的坐标系中的线段a表示本技术实施例,线段b表示相关技术。由图15可以看出,在bpp指标相同的情况下本技术实施例的psnr指标均高于相关技术,在图片压缩质量相同(即psnr指标)相同的情况下本技术实施例的bpp指标均小于相关技术,由此可知本技术实施例的率失真性能高于相关技术,本技术实施例能够提高数据编解码方法的率失真性能。[0370]本技术实施例提供的编解码方法可应用的场景包括但不限于:电子设备、云服务、视频监控中涉及图像、视频、语音等数据的采集、存储、传输的所有业务。(如电子设备拍照视频语音、相册、云相册、视频监控、视频会议、模型压缩等)。[0371]图16为本技术实施例提供的一个应用场景的示意图,如图16所示,该应用场景中电子设备拍摄得到图像数据(待压缩数据)后,将拍摄得到的图像数据(如raw、yuv格式、rgb格式的图像数据)输入电子设备的ai编码单元中。电子设备的ai编码单元调用第一编码网络、第二编码网络和熵估计网络将图像数据变换成冗余度更低的输出特征且产生输出特征的估计概率分布。电子设备的算术编码单元调用熵编码模块根据输出特征的估计概率分布将输出特征编码为数据文件。保存文件单元将熵编码模块生成的数据文件保存至电子设备的对应存储位置。电子设备在需要使用该数据文件时,通过加载文件单元从电子设备的对应存储位置加载数据文件,并输入到算术解码单元中,算术解码单元调用熵解码模块解码数据文件得到输出特征,并将输出特征输入到ai解码单元,ai解码单元调用第一解码网络、第二解码网络和第三解码网络对输出特征进行反变换,将输出特征解析为图像数据(如rgb图像数据)即压缩数据。其中,ai编码单元和ai解码单元可以部署在电子设备的神经网络处理器(neuralnetworkprocessingunit,npu或图形处理器(graphicsprocessingunit,gpu)中。算术编码单元、保存文件单元、加载文件单元、算术解码单元可以部署在电子设备的cpu中。[0372]图17为本技术实施例提供的另一个应用场景的示意图,如图17所示,该应用场景中电子设备将存储的图片数据(待压缩数据)直接上传或编码(如jpeg编码)后上传至云侧(如服务器),云侧将收到的图片数据直接输入或解码(如jpeg解码)后输入云侧的ai编码单元中云侧的ai编码单元调用第一编码网络、第二编码网络和熵估计网络将图像数据变换成冗余度更低的输出特征且产生输出特征的估计概率分布。云侧的算术编码单元调用熵编码模块根据输出特征的估计概率分布将输出特征编码为数据文件。保存文件单元将熵编码模块生成的数据文件保存至云侧的对应存储位置。电子设备在需要使用该数据文件时向云侧发送下载请求,云侧在收到下载请求后,通过加载文件单元从云侧的对应存储位置加载数据文件,并输入到算术解码单元中,算术解码单元调用熵解码模块解码数据文件得到输出特征,并将输出特征输入到ai解码单元,ai解码单元调用第一解码网络、第二解码网络和第三解码网络对输出特征进行反变换,将输出特征解析为图像数据。云端将该图像数据(压缩数据)直接发送或编码后发送至电子设备。[0373]下面将结合图18和图19介绍用于执行上述编解码方法的编解码装置。[0374]可以理解的是,编解码装置为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0375]本技术实施例可以根据上述方法示例对编解码装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。[0376]在采用对应各个功能划分各个功能模块的情况下,图18示出了上述实施例中涉及的编解码装置的一种可能的组成示意图,如图18所示,该装置1800可以包括:收发单元1801和处理单元1802,该处理单元1802可以实现上述方法实施例中由编码装置、解码装置、编码器或解码器所执行的方法,和/或用于本文所描述的技术的其他过程。[0377]需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。[0378]在采用集成的单元的情况下,装置1800可以包括处理单元、存储单元和通信单元。其中,处理单元可以用于对装置1800的动作进行控制管理,例如,可以用于支持装置1800执行上述各个单元执行的步骤。存储单元可以用于支持装置1800执行存储程序代码、和/或数据等。通信单元可以用于支持装置1800与其他设备的通信。[0379]其中,处理单元可以是处理器或控制器。其可以实现或执行结合本技术公开内容所描述的各种示例性地逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digitalsignalprocessing,dsp)和微处理器的组合等等。存储单元可以是存储器。通信单元具体可以为射频电路、蓝牙芯片、wi-fi芯片等与其他电子设备交互的设备。[0380]在一种可能的实现方式中,本技术实施例所涉及的编解码装置可以为具有图19所示结构的装置1900,该装置1900包括处理器1901和收发器1902。图18中的收发单元1801和处理单元1802所实现的相关功能可以由处理器1901来实现。[0381]可选地,该装置1900还可以包括存储器1903,该处理器1901和该存储器1903通过内部连接通路互相通信。图18中的存储单元所实现的相关功能可以由存储器1903来实现。[0382]本技术实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的编解码方法。[0383]本技术实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的编解码方法。[0384]本技术实施例还提供一种编解码装置,这个装置具体可以是芯片、集成电路、组件或模块。具体的,该装置可包括相连的处理器和用于存储指令的存储器,或者该装置包括至少一个处理器,用于从外部存储器获取指令。当装置运行时,处理器可执行指令,以使芯片执行上述各方法实施例中的编解码方法。[0385]图20示出了一种芯片2000的结构示意图。芯片2000包括一个或多个处理器2001以及接口电路2002。可选的,上述芯片2000还可以包含总线2003。[0386]处理器2001可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述编码方法的各步骤可以通过处理器2001中的硬件的集成逻辑电路或者软件形式的指令完成。[0387]可选地,上述的处理器2001可以是通用处理器、数字信号处理(digitalsignalprocessing,dsp)器、集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。[0388]接口电路2002可以用于数据、指令或者信息的发送或者接收,处理器2001可以利用接口电路2002接收的数据、指令或者其他信息,进行加工,可以将加工完成信息通过接口电路2002发送出去。[0389]可选的,芯片还包括存储器,存储器可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(non-volatilerandomaccessmemory,nvram)。[0390]可选的,存储器存储了可执行软件模块或者数据结构,处理器可以通过调用存储器存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。[0391]可选的,芯片可以使用在本技术实施例涉及的电子设备或dop中。可选的,接口电路2002可用于输出处理器2001的执行结果。关于本技术的一个或多个实施例提供的编码方法可参考前述各个实施例,这里不再赘述。[0392]需要说明的,处理器2001、接口电路2002各自对应的功能既可以通过硬件设计实现,也可以通过软件设计来实现,还可以通过软硬件结合的方式来实现,这里不作限制。[0393]其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。[0394]应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。[0395]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0396]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0397]在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。[0398]上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0399]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0400]上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0401]以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域:
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。当前第1页12当前第1页12