CN116114248A - 神经图像压缩中具有特征替换的内容自适应在线训练 - Google Patents

神经图像压缩中具有特征替换的内容自适应在线训练 Download PDF

Info

Publication number
CN116114248A
CN116114248A CN202280005727.1A CN202280005727A CN116114248A CN 116114248 A CN116114248 A CN 116114248A CN 202280005727 A CN202280005727 A CN 202280005727A CN 116114248 A CN116114248 A CN 116114248A
Authority
CN
China
Prior art keywords
representation
encoded
feature representation
final feature
training
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202280005727.1A
Other languages
English (en)
Other versions
CN116114248B (zh
Inventor
丁鼎
林晟
蒋薇
王炜
刘杉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent America LLC
Original Assignee
Tencent America LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent America LLC filed Critical Tencent America LLC
Priority to CN202411164002.4A priority Critical patent/CN118784841A/zh
Publication of CN116114248A publication Critical patent/CN116114248A/zh
Application granted granted Critical
Publication of CN116114248B publication Critical patent/CN116114248B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开的各方面提供了一种用于视频编码的方法和设备。设备包括处理电路,处理电路被配置为从待编码的输入图像生成初始特征表示,并且对初始特征表示中的多个元素的值执行迭代更新。迭代更新包括基于已经通过迭代更新的多次迭代从初始特征表示更新的最终特征表示,生成与最终特征表示对应的编码表示。基于编码表示生成对应于最终特征表示的重构图像。生成与具有多个元素的更新值的最终特征表示对应的编码图像。(i)与最终特征表示对应的率失真损耗或(ii)迭代更新的迭代次数二者中的一个满足预定条件。

Description

神经图像压缩中具有特征替换的内容自适应在线训练
相关申请
本申请要求2022年4月26日提交的题为“神经图像压缩中具有特征替换的内容自适应在线训练”的美国专利申请号17/730,026的优先权权益,该申请要求2021年4月30日提交的题为“神经图像压缩中具有特征替换的内容自适应在线训练”的美国临时申请号63/182,476的优先权权益。在先申请的公开内容全部通过引用结合于此。
技术领域
本公开描述了总体上涉及视频编码的实施例。
背景技术
这里提供的背景描述是为了总体呈现本公开的上下文。在该背景技术部分中所描述的工作的程度上,目前署名的发明人的工作以及在申请时可能不符合现有技术的描述的方面,既不暗示地承认为本公开的现有技术。
可以使用具有运动补偿的帧间图片预测来执行图像和/或视频编码和解码。未压缩的数字图像和/或视频可以包括一系列图片,每个图片具有例如1920×1080亮度样本和相关色度样本的空间维度。该系列图片可以具有固定或可变的图像速率(非正式地也称为帧速率),例如,每秒60幅图片或60Hz。未压缩的图像和/或视频有特定的比特率要求。例如,每样本8比特的1080p60 4:2:0视频(60Hz帧速率的1920x1080亮度样本分辨率)需要接近1.5Gbit/s的带宽。一小时这样的视频需要超过600G字节的存储空间。
视频编码和解码的一个目的是通过压缩来减少输入图像和/或视频信号中的冗余。压缩有助于降低上述带宽和/或存储空间需求,在某些情况下可降低两个数量级或更多。尽管本文这里描述所使用的视频编码/解码是作为说明性示例,但是在不脱离本公开的精神的情况下,相同的技术可以以类似的方式应用于图像编码/解码。可以采用无损压缩和有损压缩及其组合。无损压缩是指可以从压缩的原始信号中重构出原始信号的精确副本的技术。当使用有损压缩时,重构信号可能与原始信号不相同,但是原始信号和重构信号之间的失真足够小,使得重构信号对预期应用有用。对于视频来说,广泛采用的是有损压缩。被容许的失真量取决于应用;例如,某些消费者流应用的用户可能比电视分发应用的用户容忍更高的失真。可实现的压缩比可以反映出:更高的容许/可容忍失真可以产生更高的压缩比。
视频编码器和解码器可以利用几大类技术,包括例如运动补偿、变换、量化和熵编码。
视频编解码器技术可以包括称为帧内编码的技术。在帧内编码中,样本值是在不参考来自先前重构的参考图片的样本或其他数据的情况下表示的。在某些视频编解码器中,图片在空间上被细分为样本块。当所有样本块都以帧内模式编码时,该图片可以是帧内图片。帧内图片及其派生图片(例如,独立的解码器刷新图片)可以用于重置解码器状态,因此可以用作编码视频比特流和视频会话中的第一图片,或者用作静止图像。帧内块的样本可以被变换,并且在熵编码之前可以对变换系数进行量化。帧内预测可以是一种在预变换域中最小化样本值的技术。在一些情况下,变换后的DC值越小,AC系数越小,在给定量化步长下表示熵编码后的块所需的比特就越少。
例如,从MPEG-2代编码技术中已知的传统帧内编码不使用帧内预测。然而,一些较新的视频压缩技术包括诸如尝试从相邻的空间中且在解码顺序上在前的数据块的编码和/或解码期间获得的周围样本数据和/或元数据的技术。这种技术此后被称为“帧内预测”技术。注意,至少在一些情况下,帧内预测所使用的参考数据仅来自重构中的当前图片,而不是来自参考图片。
可以有许多不同形式的帧内预测。当在给定的视频编码技术中可以使用多于一种这样的技术时,所使用的技术可以在帧内预测模式中被编码。在某些情况下,模式可以有子模式和/或参数,这些子模式和/或参数可以被单独编码或包含在模式码字中。对于给定的模式、子模式和/或参数组合,使用哪个码字会对通过帧内预测的编码效率增益产生影响,因此,对于将码字转换成比特流的熵编码技术也会产生影响。
H.264引入了特定的帧内预测模式,在H.265中进行了改进,并在更新的编码技术中进一步改进,例如,共同探索模型(Joint Exploration Model,简称JEM)、通用视频编码(Versatile Video Coding,简称VVC)和基准集(Benchmark Set,简称BMS)。使用属于已经是可用样本的相邻样本值来形成预测块。根据方向将相邻样本的样本值复制到预测块中。对使用中的方向的参考可以被编码进比特流中,或者可以被其本身预测出。
参考图1A,右下方描绘了从H.265的33个可能的预测方向(对应于35个帧内模式的33个角度模式)中已知的9个预测方向的子集。箭头会聚的点(101)表示被预测的样本。箭头表示的是来自哪个被预测的样本的方向。例如,箭头(102)指示样本(101)是从与水平线成45°角的右上方的一个或多个样本预测到的。类似地,箭头(103)指示样本(101)是从与水平线成22.5°角的样本(101)左下方的一个或多个样本预测到的。
仍然参考图1A,在左上方描绘了4×4样本的正方形块(104)(由粗虚线表示)。正方形块(104)包括16个样本,每个样本标有“S”,其在Y维度上的位置(例如,行索引)和其在X维度上的位置(例如,列索引)。例如,样本S21是Y维度中的第二个样本(从顶部算起)和X维度中的第一个样本(从左侧算起)。类似地,样本S44在Y和X维度上都是块(104)中的第四个样本。由于该块的大小为4×4个样本,所以S44位于右下角。还显示了遵循类似编号方案的参考样本。用R标记的参考样本、其相对于块的Y位置(例如,行索引)和X位置(列索引)来标记(104)。在H.264和H.265中,预测样本与重构中的块相邻;因此,不需要使用负值。
帧内图片预测可以通过从合适的信号预测方向的相邻样本中复制参考样本值来工作。例如,假设已编码的视频比特流包含针对此块的信号,其指示与箭头(102)一致的预测方向——即,从与水平成45°角的右上方的一个或多个预测样本来预测出的样本。在这种情况下,从相同的参考样本R05预测样本S41、S32、S23和S14。然后从参考样本R08预测样本S44。
在某些情况下,多个参考样本的值可以组合,例如,通过插值,以便计算参考样本;尤其是当方向不能被45°整除时。
随着视频编码技术的发展,可能的方向的数量已经增加。在H.264(2003年)中,可以表示九个不同方向。这在H.265(2013年)中增加到33个,而JEM/VVC/BMS在披露时可以支持多达65个方向。已经通过实验来识别最可能的方向,并且熵编码中的某些技术用于以少量比特来表示那些可能的方向,对于不太可能的方向接受一定的惩罚。此外,方向本身有时可以从相邻的已经解码的块中使用的相邻方向来预测。
图1B示出了示意图(110),描绘了根据JEM的65个帧内预测方向,以说明预测方向的数量随着时间的推移而增加。
编码视频比特流中帧内预测方向比特的映射所代表的方向可以根据视频编码技术的不同而不同;例如从预测方向到帧内预测模式的简单直接映射,其范围可以覆盖到码字,到涉及最可能模式的复杂自适应方案,以及类似的技术。然而,在所有情况下,与某些其他方向相比,某些方向在统计上不太可能出现在视频内容中。由于视频压缩的目标是减少冗余,在较好的视频编码技术中,那些不太可能的方向将由更多的比特来表示,相对那更可能的方向。
运动补偿可以是有损压缩技术,并且可以涉及这样的技术,其中,来自先前重构的图片或其一部分(参考图片)的样本数据块在运动矢量(此后称为MV)指示的方向上进行空间移位之后,可以用于预测新重构的图片或图片部分。在某些情况下,参考图片可以与当前正在重构的图片相同。MV可以具有两个维度X和Y,或者三个维度,第三个维度是使用中的参考图片的指示(参考图片间接可以是时间维度)。
在一些视频压缩技术中,可应用于样本数据的某个区域的MV可以从其他MV中预测,例如,从与空间上邻近正在重构的区域的并且在解码顺序上在该MV之前的样本数据的另一个区域相关的MV中预测。这样做可以大大减少编码MV所需的数据量,从而消除冗余并提高压缩率。MV预测可以有效地工作,例如,因为当对从相机导出的输入视频信号(称为自然视频)进行编码时,存在统计可能性,即比单个MV可应用的区域大的区域在相似的方向上移动,因此,在某些情况下,可以使用从相邻区域的MV导出的相似运动矢量来预测。这使得给定区域发现的MV与从周围MV预测出的MV相似或相同,并且在熵编码之后,这又可以用比直接编码MV时所使用的更少的比特数来表示。在某些情况下,MV预测可以是从原始信号(即:样本流)导出的信号(即:MV)的无损压缩的示例。在其他情况下,MV预测本身可能是有损耗的,例如,当从几个周围的MV计算预测值时,会出现舍入误差。
在H.265/HEVC(ITU-TRec.H.265,“High Efficiency Video Coding”,2016年12月)中描述各种MV预测机制。在H.265提供的许多MV预测机制中,此处描述了一种此后被称为“空间合并”的技术。
参考图2,当前块(201)包括由编码器在运动搜索过程中发现的样本,以便从已经被空间移位的相同大小的先前块中预测。并非直接编码该MV,可以使用与五个周围样本(表示为A0、A1和B0、B1、B2(分别为202至206))中的任一个相关联的MV,从与一个或多个参考图片相关联的元数据中导出该MV,例如,从最近的(按照解码顺序)参考图片中导出。在H.265中,MV预测可以使用来自相邻块正在使用的相同参考图片的预测器。
发明内容
本公开的各方面提供了用于视频编码和解码的方法和设备。在一些示例中,一种用于视频编码的设备包括处理电路。处理电路被配置为从待编码的输入图像生成初始特征表示。处理电路被配置为对初始特征表示中的多个元素的值执行迭代更新。上述迭代更新包括基于最终特征表示,生成与最终特征表示对应的编码表示,该最终特征表示是通过迭代更新的多次迭代对初始特征表示进行更新后得到。迭代更新包括基于编码表示生成与最终特征表示对应的重构图像。处理电路被配置为生成与具有多个元素的更新值的最终特征表示对应的编码图像。(i)与最终特征表示对应的率失真损耗或(ii)迭代更新的迭代次数,二者中的一个满足预定条件,其中,基于与最终特征表示对应的编码表示的比特消耗以及输入图像和与最终特征表示对应的重构图像之间的差异来确定率失真损耗。
在一个实施例中,处理电路被配置为向最终特征表示添加噪声,以生成与最终特征表示对应的第一表示,并基于第一表示的模拟熵编码来生成编码表示。处理电路被配置为对编码表示执行模拟熵解码。
在一个实施例中,处理电路被配置为基于最终特征表示来确定上下文模型,并且基于具有确定的上下文模型的第一表示的模拟熵编码来生成编码表示。
在一个示例中,处理电路被配置为将最终特征表示量化为量化表示,其中,基于量化表示生成编码图像。
在一个示例中,处理电路被配置为将量化表示熵编码成编码图像。
在一个示例中,处理电路被配置为将量化表示算术编码成编码图像。
在一个示例中,处理电路被配置为基于最终特征表示来确定上下文模型,并且基于确定的上下文模型,将量化表示熵编码成编码图像。
在一个实施例中,处理电路被配置为对(i)初始特征表示中的多个元素的值的和(ii)用于基于最终特征表示生成编码表示的神经网络NN中的预训练参数执行迭代更新。处理电路可以通过由替换参数替换预训练参数进行更新后的NN,基于最终特征表示生成与最终特征表示对应的编码表示。该替换参数已经通过迭代更新的迭代次数从预训练参数确定。处理电路可以基于由替换参数更新后的NN,从最终特征表示生成编码图像。
在一个实施例中,处理电路被配置为对(i)初始特征表示中的多个元素的值的和(ii)用于基于编码表示生成重构图像的神经网络NN中的预训练参数执行迭代更新。处理电路可以通过由替换参数替换预训练参数进行更新后的NN,基于与最终特征表示对应的编码表示,生成与最终特征表示对应的重构图像。该替换参数已经通过迭代更新的迭代次数从预训练参数确定。处理电路可以生成包括在编码比特流中的神经网络更新信息,其中,该神经网络更新信息用于指示替换参数。处理电路可以在编码比特流中传输编码图像和神经网络更新信息。
在一个示例中,处理电路在编码比特流中传输编码图像。
本公开的各方面还提供了一种非暂时性计算机可读存储介质,存储至少一个处理器能够执行的程序,以执行用于视频编码和解码的方法。
附图说明
从以下详细描述和附图中,所公开主题的进一步特征、性质和各种优点将变得更加明显,其中:
图1A是帧内预测模式的示示例集的示意图;
图1B是示例性帧内预测方向的图示;
图2示出了根据一个实施例的当前块(201)和周围样本;
图3是根据一个实施例的通信系统(300)的简化框图的示意图;
图4是根据一个实施例的通信系统(400)的简化框图的示意图;
图5是根据一个实施例的解码器的简化框图的示意图;
图6是根据一个实施例的编码器的简化框图的示意图;
图7示出了根据另一实施例的编码器的框图;
图8示出了根据另一实施例的解码器的框图;
图9示出了根据本公开实施例的示例性神经图像压缩(NIC)框架;
图10示出了根据本公开实施例的主编码器网络的示例性卷积神经网络(CNN);
图11示出了根据本公开实施例的主解码器网络的示例性CNN;
图12示出了根据本公开实施例的超级编码器的示例性CNN;
图13示出了根据本公开实施例的超级解码器的示例性CNN;
图14示出了根据本公开实施例的上下文模型网络的示例性CNN;
图15示出了根据本公开实施例的熵参数网络的示例性CNN;
图16A示出了根据本公开实施例的示例性视频编码器;
图16B示出了根据本公开实施例的示例性视频解码器;
图17示出了根据本公开实施例的示例性视频编码器;
图18示出了根据本公开实施例的示例性视频解码器;
图19A示出了根据本公开实施例的基于学习的图像编码过程的示例;
图19B示出了根据本公开实施例的示例性NIC框架;
图19C示出了根据本公开实施例的基于NIC框架的示例性编码过程;
图20示出了根据本公开实施例的概述过程的流程图;
图21是根据一个实施例的计算机系统的示意图。
具体实施方式
图3示出了根据本公开实施例的通信系统(300)的简化框图。通信系统(300)包括能够经由例如网络(350)相互通信的多个终端装置。例如,通信系统(300)包括经由网络(350)互连的第一对终端装置(310)和(320)。在图3的示例中,第一对终端装置(310)和(320)执行数据的单向传输。例如,终端装置(310)可以对视频数据(例如,由终端装置(310)捕捉的视频图片流)进行编码,以便经由网络(350)传输到另一个终端装置(320)。编码视频数据可以以一个或多个编码视频比特流的形式传输。终端装置(320)可以从网络(350)接收编码视频数据,解码上述编码视频数据,以恢复视频图片,并根据恢复的视频数据显示视频图片。单向数据传输在媒体服务应用等中是常见的。
在另一个示例中,通信系统(300)包括第二对终端装置(330)和(340),其执行编码视频数据的双向传输,例如对于在视频会议期间产生的编码视频数据。对于数据的双向传输,在一个示例中,终端装置(330)和(340)的每个终端装置可以对视频数据(例如,由终端装置捕捉的视频图片流)进行编码,以便经由网络(350)传输到终端装置(330)和(340)的另一个终端装置。终端装置(330)和(340)的每个终端装置还可以接收由终端装置(330)和(340)的另一个终端装置传输的编码视频数据,并且可以解码已编码的视频数据,以恢复视频图片,并且可以根据恢复的视频数据在可访问的显示装置上显示视频图片。
在图3的示例中,终端装置(310)、(320)、(330)和(340)可以被示为服务器、个人计算机和智能电话,但是本公开的原理可以不限于此。本公开的实施例适用于膝上型计算机、平板计算机、媒体播放器和/或专用视频会议设备。网络(350)表示在终端装置(310)、(320)、(330)和(340)之间传送编码视频数据的任意数量的网络,包括例如线路(有线)和/或无线通信网络。通信网络(350)可以在电路交换和/或分组交换信道中交换数据。代表性的网络包括电信网络、局域网、广域网和/或互联网。出于当前讨论的目的,网络(350)的架构和拓扑对于本公开的操作可能是不重要的,除非在下文中解释。
作为所公开的主题的应用的示例,图4示出了视频编码器和视频解码器在流环境中的放置。所公开的主题同样可应用于其他支持视频的应用,包括例如视频会议、数字电视、在包括CD、DVD、记忆棒等的数字媒体上存储压缩视频等。
流式传输系统可以包括:捕捉子系统(413),其可以包括视频源(401),例如,数码相机;创建例如未压缩的视频图片流(402)。在一个示例中,视频图片流(402)包括由数码相机拍摄的样本。当与编码视频数据(404)(或编码视频比特流)相比时,视频图片流(402)被描绘为强调高数据量的粗线,可以由包括耦合到视频源(401)的视频编码器(403)的电子装置(420)来处理。视频编码器(403)可以包括硬件、软件或其组合,以实现或实施如下面更详细描述的所公开的主题的各方面。编码视频数据(404)(或编码视频比特流(404))被描绘为细线,以强调当与视频图片流(402)相比时其为较低的数据量,可以存储在流服务器(405)上,以供将来使用。一个或多个流客户端子系统(例如,图4中的客户端子系统(406)和(408))可以访问流服务器(405),以检索编码视频数据(404)的副本(407)和(409)。客户端子系统(406)可以包括例如电子装置(430)中的视频解码器(410)。视频解码器(410)对编码视频数据的输入副本(407)进行解码,并创建可以在显示器(412)(例如,显示屏)或其他渲染装置(未示出)上渲染的输出视频图片流(411)。在一些流系统中,编码视频数据(404)、(407)和(409)(例如,视频比特流)可以根据某些视频编码/压缩标准来编码。这些标准的示例包括ITU-T建议H.265。在一个示例中,正在开发的视频编码标准被非正式地称为通用视频编码(VVC)。所公开的主题可以在VVC的环境中使用。
需要注意的是,电子装置(420)和(430)可以包括其他组件(未示出)。例如,电子装置(420)可以包括视频解码器(未示出),并且电子装置(430)也可以包括视频编码器(未示出)。
图5示出了根据本公开实施例的视频解码器(510)的框图。视频解码器(510)可以包括在电子装置(530)中。电子装置(530)可以包括接收机(531)(例如,接收电路)。视频解码器(510)可以用来代替图4示例中的视频解码器(410)。
接收机(531)可以接收将由视频解码器(510)解码的一个或多个编码视频序列;在同一个或另一个实施例中,一次一个编码视频序列,其中,每个编码视频序列的解码独立于其他编码视频序列。可以从信道(501)接收编码视频序列,该信道可以是到存储编码视频数据的存储装置的硬件/软件链接。接收机(531)可以接收编码视频数据和其他数据,例如,编码的音频数据和/或辅助数据流,这些数据可以被转发到其相应的使用实体(未示出)。接收机(531)可以将编码视频序列与其他数据分离。为了对抗网络抖动,缓冲存储器(515)可以耦合在接收机(531)和熵解码器/解析器(520)(以下称为“解析器(520)”)之间。在某些应用中,缓冲存储器(515)是视频解码器(510)的一部分。在其他情况下,可以在视频解码器(510)之外(未示出)。在其他情况下,在视频解码器(510)之外可以有缓冲存储器(未示出),例如,用于对抗网络抖动,此外,在视频解码器(510)内部可以有另一个缓冲存储器(515),例如,用于处理播放定时。当接收机(531)从具有足够带宽和可控性的存储/转发装置或者从等同步网络中接收数据时,缓冲存储器(515)可以是不需要的,或者可以是小的。为了在诸如因特网之类的尽力而为的分组网络上使用,可能需要缓冲存储器(515),该缓冲存储器可以相对较大,并且可以有利地具有自适应大小,并且可以至少部分地在视频解码器(510)外部的操作系统或类似元件(未示出)中实现。
视频解码器(510)可以包括解析器(520),以从编码视频序列中重构符号(521)。这些符号的类别包括用于管理视频解码器(510)的操作的信息以及潜在地控制诸如渲染装置(512)(例如,显示屏)等渲染装置的信息,该渲染装置(512)并不是电子装置(530)的组成部分,但是可以耦合到电子装置(530),如图5所示。用于渲染装置的控制信息可以是补充增强信息(Supplemental Enhancement Information,简称SEI消息)或视频可用性信息(VideoUsability Information,简称VUI)参数集片段(未示出)的形式。解析器(520)可以对接收到的编码视频序列进行解析/熵解码。编码视频序列的编码可以根据视频编码技术或标准,并且可以遵循各种原理,包括可变长度编码、霍夫曼编码、具有或不具有上下文敏感性的算术编码等。解析器(520)可以基于对应于该组的至少一个参数,从编码视频序列中提取视频解码器中的至少一个像素子组的一组子组参数。子组可以包括图片组(Groups ofPictures,简称GOP)、图片、瓦片、切片、宏块、编码单元(Coding Units,简称CU)、块、变换单元(Transform Units,简称TU)、预测单元(Prediction Units,简称PU)等。解析器(520)还可以从编码视频序列中提取信息,例如,变换系数、量化器参数值、运动矢量等。
解析器(520)可以对从缓冲存储器(515)接收的视频序列执行熵解码/解析操作,以便创建符号(521)。
根据编码视频图片或其部分的类型(例如:帧间和帧内图片、帧间和帧内块)以及其他因素,符号(521)的重构可以涉及多个不同的单元。可以通过由解析器(520)从编码视频序列中解析的子组控制信息来控制涉及哪些单元以及如何涉及。为了清楚起见,没有描述解析器(520)和下面的多个单元之间的这种子组控制信息流。
除了已经提到的功能块之外,视频解码器(510)可以在概念上细分成如下所述的多个功能单元。在商业限制下操作的实际实现中,许多这些单元彼此紧密交互,并且可以至少部分地彼此集成。然而,为了描述所公开的主题,在概念上细分成以下功能单元是合适的。
第一单元是定标器/逆变换单元(551)。定标器/逆变换单元(551)接收量化的变换系数以及控制信息,包括使用哪个变换、块大小、量化因子、量化缩放矩阵等,作为来自解析器(520)的符号(521)。定标器/逆变换单元(551)可以输出包括样本值的块,这些块可以被输入到聚集器(555)中。
在一些情况下,定标器/逆变换(551)的输出样本可以属于帧内编码块;即:没有使用来自先前重构图片的预测信息,但是可以使用来自当前图片的先前重构部分的预测信息的块。这种预测信息可以由帧内图片预测单元(552)提供。在一些情况下,帧内图片预测单元(552)使用从当前图片缓冲器(558)获取的周围已经重构的信息,生成与重构中的块具有相同大小和形状的块。当前图片缓冲器(558)缓冲例如部分重构的当前图片和/或完全重构的当前图片。在一些情况下,聚集器(555)基于每个样本将帧内预测单元(552)已经生成的预测信息添加到由定标器/逆变换单元(551)提供的输出样本信息。
在其他情况下,定标器/逆变换单元(551)的输出样本可以属于帧间编码的并且可能是运动补偿的块。在这种情况下,运动补偿预测单元(553)可以访问参考图片存储器(557),以获取用于预测的样本。在根据与该块有关的符号(521)对获取的样本进行运动补偿之后,这些样本可以由聚集器(555)添加到定标器/逆变换单元(551)的输出(在这种情况下称为残差样本或残差信号),以便生成输出样本信息。运动补偿预测单元(553)从中获取预测样本的参考图片存储器(557)内的地址可以由运动向量来控制,对于运动补偿预测单元(553)可行的是,以符号(521)的形式获得这些地址,这些符号可以具有例如X、Y和参考图片组件。当使用子采样精确运动矢量时,运动补偿还可以包括从参考图片存储器(557)获取的样本值的插值、运动矢量预测机制等。
聚集器(555)的输出样本可以在环路滤波器单元(556)中经受各种环路滤波技术。视频压缩技术可以包括环路滤波技术,该技术由编码视频序列(也称为编码视频比特流)中包含的参数控制,并且该参数可以作为来自解析器(520)的符号(521)用于环路滤波单元(556)中,而且也可以对在编码视频序列或编码图像的先前(按照解码顺序)部分的解码期间获得的元信息进行响应,以及对先前的重构和环路滤波的样本值进行响应。
环路滤波器单元(556)的输出可以是样本流,该样本流可以输出到渲染装置(512)以及存储在用于将来的帧间图片预测的参考图片存储器(557)中。
一旦完全重构,某些编码图片可以用作未来预测的参考图片。例如,一旦完全重构与当前图片对应的编码图片,并且该编码图片已经被识别为参考图片(例如,通过解析器(520)),则当前图片缓冲器(558)可以成为参考图片存储器(557)的一部分,并且在开始对接下来的编码图片的重构之前,可以重新分配新的当前图片缓冲器。
视频解码器(510)可以根据诸如ITU-T Rec.H.265等标准中的预定视频压缩技术来执行解码操作。在编码视频序列符合视频压缩技术或标准的语法以及视频压缩技术或标准中记载的简介的意义上,编码视频序列可以符合由所使用的视频压缩技术或标准规定的语法。具体地,简介可以从视频压缩技术或标准中所有可用的工具中选择某些工具,作为在该简介下唯一可用的工具。符合标准还需要编码视频序列的复杂度在视频压缩技术或标准的级别所定义的范围内。在某些情况下,级别限制了最大图片尺寸、最大帧速率、最大重构采样率(例如,以每秒兆样本为单位测量)、最大参考图片尺寸等。在某些情况下,由级别设置的限制可以通过假设参考解码器(Hypothetical Reference Decoder,简称HRD)规范和用于编码视频序列中信令的HRD缓冲器管理的元数据来进一步限制。
在一个实施例中,接收机(531)可以接收具有编码视频的额外(冗余)数据。该额外数据可以作为一部分包括在编码视频序列中。视频解码器(510)可以使用额外数据来正确解码数据和/或更准确地重构原始视频数据。额外数据可以是例如时间、空间或信噪比(SNR)增强层、冗余切片、冗余图片、前向纠错码等形式。
图6示出了根据本公开实施例的视频编码器(603)的框图。视频编码器(603)包括在电子装置(620)中。电子装置(620)包括发射机(640)(例如,发射电路)。视频编码器(603)可以用来代替图4示例中的视频编码器(403)。
视频编码器(603)可以从视频源(601)(其不是图6示例中的电子装置(620)的一部分)接收视频样本,该视频源可以捕捉要由视频编码器(603)编码的视频图片。在另一个示例中,视频源(601)是电子装置(620)的一部分。
视频源(601)可以以数字视频样本流的形式提供由视频编码器(603)编码的源视频序列,该数字视频样本流可以具有任何合适的比特深度(例如:8比特、10比特、12比特、…)、任何颜色空间(例如,BT.601Y CrCB、RGB、…)和任何合适的采样结构(例如,Y CrCb4:2:0、Y CrCb 4:4:4)。在媒体服务系统中,视频源(601)可以是存储先前准备的视频的存储装置。在视频会议系统中,视频源(601)可以是捕捉本地图像信息作为视频序列的相机。视频数据可以被以多个单独的图片的形式提供,当按顺序观看时,这些图片赋予运动。这些图片本身可以被组织为像素的空间阵列,其中,每个像素可以包括一个或多个样本,这取决于使用中的采样结构、颜色空间等。本领域技术人员可以容易地理解像素和样本之间的关系。下面的描述集中在样本上。
根据一个实施例,视频编码器(603)可以实时地或者在应用所需的任何其他时间约束下,将源视频序列的图片编码和压缩成编码视频序列(643)。实施适当的编码速度是控制器(650)的一个功能。在一些实施例中,控制器(650)控制如下所述的其他功能单元,并且在功能上耦合到其他功能单元。为了清楚起见,没有描述耦合。控制器(650)设置的参数可以包括速率控制相关参数(图片跳过、量化器、率失真优化技术的λ值、…)、图片大小、图片组(GOP)布局、最大运动矢量搜索范围等。控制器(650)可以被配置为具有针对特定系统设计而优化的与视频编码器(603)相关的其他合适的功能。
在一些实施例中,视频编码器(603)被配置为在编码循环中操作。作为过于简化的描述,在一个示例中,编码环路可以包括源编码器(630)(例如,用于基于待编码的输入图片和参考图片来创建符号,例如,符号流)以及嵌入在视频编码器(603)中的(本地)解码器(633)。解码器(633)以类似于(远程)解码器也将创建的方式重构符号,以创建样本数据(因为在所公开的主题中考虑的视频压缩技术中,符号和编码视频比特流之间的任何压缩都是无损的)。重构的样本流(样本数据)被输入到参考图片存储器(634)。由于符号流的解码导致位精确结果独立于解码器位置(本地或远程),所以参考图片存储器(634)中的内容在本地编码器和远程编码器之间也是位精确的。换言之,当在解码期间使用预测时,编码器的预测部分作为参考图片样本“看到”与解码器“看到”的样本值完全相同的样本值。也在一些相关技术中使用参考图片同步性(以及如果不能保持同步性,而由此产生的漂移,例如,由于信道误差)的基本原理。
“本地”解码器(633)的操作可以与诸如视频解码器(510)之类的“远程”解码器的操作相同,上面已经结合图5对其进行了详细描述。然而,简要地参考图5,由于符号是可用的,并且熵编码器(645)和解析器(520)对编码视频序列的符号编码/解码可以是无损的,所以可以不完全在本地解码器(633)中实现视频解码器(510)的熵解码部分,包括缓冲存储器(515)和解析器(520)。
在一个实施例中,除了解码器中存在的解析/熵解码之外,解码器技术以相同或基本相同的功能形式存在于相应的编码器中。因此,所公开的主题集中于解码器操作。编码器技术的描述可以简化,因为这些技术是全面描述的解码器技术的逆。在某些领域,下面提供了更详细的描述。
在操作期间,在一些示例中,源编码器(630)可以执行运动补偿预测编码,其参考来自视频序列的被指定为“参考图片”的一个或多个先前已编码的图片来预测性地编码输入图片。以这种方式,编码引擎(632)对输入图片的像素块和可被选为输入图片的预测参考的参考图片的像素块之间的差异进行编码。
本地视频解码器(633)可以基于由源编码器(630)创建的符号,对可以被指定为参考图片的图片的编码视频数据进行解码。编码引擎(632)的操作可以是有利地有损过程。当已编码的视频数据可以在视频解码器(图6中未示出)处被解码时,重构的视频序列通常可以是具有一些误差的源视频序列的副本。本地视频解码器(633)可以复制由视频解码器对参考图片执行的解码过程,并且可以使得重构的参考图片存储在参考图片缓存(634)中。以这种方式,视频编码器(603)可以本地存储重构的参考图片的副本,这些副本具有与由远端视频解码器获得的重构的参考图片相同的内容(不存在传输误差)。
预测器(635)可以对编码引擎(632)执行预测搜索。也就是说,对于待编码的新图片,预测器(635)可以在参考图片存储器(634)中搜索样本数据(作为候选参考像素块)或某些元数据,例如,参考图片运动矢量、块形状等,其可以用作新图片的适当预测参考。预测器(635)可以在逐个样本块-像素块的基础上操作,以找到合适的预测参考。在一些情况下,如由预测器(635)获得的搜索结果所确定的,输入图片可以具有从存储在参考图片存储器(634)中的多个参考图片中提取的预测参考。
控制器(650)可以管理源编码器(630)的编码操作,包括例如用于编码视频数据的参数和子组参数的设置。
所有前述功能单元的输出可以在熵编码器中经历熵编码(645)。熵编码器(645)通过根据诸如Huffman编码、可变长度编码、算术编码等技术无损压缩符号,将由各种功能单元生成的符号转换成编码的视频序列。
发射机(640)可以缓冲由熵编码器(645)创建的编码视频序列,以准备经由通信信道(660)传输,通信信道可以是到将存储编码视频数据的存储装置的硬件/软件链接。发射机(640)可以将来自视频编码器(603)的编码视频数据与待传输的其他数据合并,例如,编码音频数据和/或辅助数据流(源未示出)。
控制器(650)可以管理视频编码器(603)的操作。在编码期间,控制器(650)可以向每个编码图片分配特定的编码图片类型,这可以影响可以应用于相应图片的编码技术。例如,图片通常可以被分配为以下图片类型之一:
帧内图片(I图片)可以是不使用序列中的任何其他图片作为预测源而被编码和解码的图片。一些视频编解码器允许不同类型的帧内图片,包括例如独立解码器刷新(“IDR”)图片。本领域技术人员知道I图片的那些变体以及其相应的应用和特征。
预测图片(P图片)可以是使用帧内预测或帧间预测来编码和解码的图片,该预测使用了最多一个运动矢量和参考索引来预测每个块的样本值。
双向预测图片(B图片)可以是使用帧内预测或帧间预测来编码和解码的图片,该预测使用最多两个运动矢量和参考索引来预测每个块的样本值。类似地,多预测图片可以使用两个以上的参考图片和相关元数据来重构单个块。
源图片通常可以在空间上被细分成多个样本块(例如,每个样本块为4×4、8×8、4×8或16×16个样本块),并且在逐块的基础上编码。参考其他(已经编码的)块来对块进行预测性地编码块,这里其他块是由应用于块的相应图片的编码分配来确定的。例如,I图片的块可以被非预测性地编码,或者可以参考同一图片的已经编码的块被预测性地编码(空间预测或帧内预测)。参考一个先前编码的参考图片,经由空间预测或经由时间预测,对P图片的像素块进行预测性地编码。参考一个或两个先前编码的参考图片,经由空间预测或经由时间预测,可以对B图片的块进行预测性地编码。
视频编码器(603)可以根据预定的视频编码技术或标准(例如,ITU-TRec.H.265)来执行编码操作。在其操作中,视频编码器(603)可以执行各种压缩操作,包括利用输入视频序列中的时间和空间冗余的预测编码操作。因此,编码的视频数据可以符合由正在使用的视频编码技术或标准指定的语法。
在一个实施例中,发射机(640)可以与编码视频一起传输额外数据。源编码器(630)可以包括作为编码视频序列的一部分的数据。额外数据可以包括时间/空间/SNR增强层、其他形式的冗余数据(例如,冗余图片和切片)、SEI消息、VUI参数集片段等。
从视频中捕捉作为时间序列中的多个源图片(视频图片)。帧内图片预测(通常缩写为帧内预测)是利用给定图片中的空间相关性,而帧间图片预测利用图片之间的(时间或其他)相关性。在一个示例中,一个在编码/解码中的特定图片,被称为当前图片,被分割成块。在当前图片中的块类似于视频中先前编码且仍被缓冲的参考图片中的参考块时,当前图片中的块可以通过称为运动矢量的矢量来编码。在使用多个参考图片的情况下,运动矢量指向参考图片中的参考块,并且可以具有识别参考图片的第三维。
在一些实施例中,可以在帧间图片预测中使用双向预测技术。根据双向预测技术使用两个参考图片,例如,第一参考图片和第二参考图片,这两个参考图片在解码顺序上都在视频中的当前图片之前(但是在显示顺序上可以分别在过去和未来)。当前图片中的块可由指向第一参考图片中的第一参考块的第一运动向量和指向第二参考图片中的第二参考块的第二运动向量来编码。可以通过第一参考块和第二参考块的组合来预测该块。
此外,可以在帧间图片预测中使用合并模式技术来提高编码效率。
根据本公开的一些实施例,例如,帧间图片预测和帧内图片预测可以以块为单位执行预测。例如,根据HEVC标准,视频图片序列中的图片被分割成编码树单元(Coding TreeUnits,简称CTU),用于压缩,图片中的CTU具有相同的大小,例如,64×64像素、32×32像素或16×16像素。通常,CTU包括三个编码树块(Coding Tree Blocks,简称CTB),即一个亮度CTB和两个色度CTB。每个CTU可以被递归地四叉树分割成一个或多个编码单元(CU)。例如,64×64像素的CTU可以被分割成一个64×64像素的CU,或者4个32×32像素的CU,或者16个16×16像素的CU。在一示例中,分析每个CU,以确定CU的预测类型,例如,帧间预测类型或帧内预测类型。根据时间和/或空间可预测性,CU被分成一个或多个预测单元(PU)。通常,每个PU包括一个亮度预测块(PB)和两个色度PB。在实施例中,以预测块为单位执行编码(编码/解码)中的预测操作。使用亮度预测块作为预测块的示例,预测块包含像素的值(例如,亮度值)的矩阵,例如,8×8像素、16×16像素、8×16像素、16×8像素等。
图7示出了根据本公开的另一实施例的视频编码器(703)的示意图。视频编码器(703)被配置为接收视频图片序列中的当前视频图片内的样本值的处理块(例如,预测块),并将该处理块编码成作为编码视频序列的一部分的编码图像。在一个示例中,视频编码器(703)用于代替图4示例中的视频编码器(403)。
在HEVC示例中,视频编码器(703)接收处理块的样本值矩阵,例如,8×8样本的预测块等。视频编码器(703)确定使用帧内模式、帧间模式还是使用例如率失真优化的双向预测模式对处理块进行最佳编码。当要以帧内模式对处理块进行编码时,视频编码器(703)可以使用帧内预测技术将处理块编码成编码图片;并且当要以帧间模式或双向预测模式对处理块进行编码时,视频编码器(703)可以分别使用帧间预测或双向预测技术来将处理块编码成编码图片。在某些视频编码技术中,合并模式可以是帧间图片预测子模式,其中,从一个或多个运动向量预测器中导出运动向量,而不受益于预测器之外的编码运动向量组件。在某些其他视频编码技术中,可能存在适用于对象块的运动矢量组件。在一个示例中,视频编码器(703)包括其他组件,例如,用于确定处理块的模式的模式判定模块(未示出)。
在图7的示例中,视频编码器(703)包括如图7所示耦合在一起的帧间编码器(730)、帧内编码器(722)、残差计算器(723)、开关(726)、残差编码器(724)、通用控制器(721)和熵编码器(725)。
帧间编码器(730)被配置为接收当前块(例如,处理块)的样本,将该块与参考图片中的一个或多个参考块(例如,先前图片和后续图片中的块)进行比较,生成帧间预测信息(例如,根据帧间编码技术的冗余信息的描述、运动向量、合并模式信息),并且基于使用了任何合适的技术得到的帧间预测信息来计算帧间预测结果(例如,预测块)。在一些示例中,参考图片是基于编码视频信息解码的解码参考图片。
帧内编码器(722)被配置为接收当前块(例如,处理块)的样本,在一些情况下,将该块与已经在同一图片中编码的块进行比较,在变换后生成量化系数,并且在一些情况下,还生成帧内预测信息(例如,根据一种或多种帧内编码技术的帧内预测方向信息)。在一个示例中,帧内编码器(722)还基于同一图片中的帧内预测信息和参考块来计算帧内预测结果(例如,预测块)。
通用控制器(721)被配置为确定通用控制数据并基于通用控制数据控制视频编码器(703)的其他组件。在一个示例中,通用控制器(721)确定块的模式,并基于该模式向开关(726)提供控制信号。例如,当模式是帧内模式时,通用控制器(721)控制开关(726)选择帧内模式结果供残差计算器(723)使用,并控制熵编码器(725)选择帧内预测信息并将帧内预测信息包括在比特流中;当模式是帧间模式时,通用控制器(721)控制开关(726)选择帧间预测结果供残差计算器(723)使用,并控制熵编码器(725)选择帧间预测信息并将帧间预测信息包括在比特流中。
残差计算器(723)被配置为计算接收的块和从帧内编码器(722)或帧间编码器(730)选择的预测结果之间的差(残差数据)。残差编码器(724)被配置为基于残差数据进行操作,以编码残差数据,来生成变换系数。在一个示例中,残差编码器(724)被配置为将残差数据从空间域转换到频域,并生成变换系数。然后对变换系数进行量化处理,以获得量化的变换系数。在各种实施例中,视频编码器(703)还包括残差解码器(728)。残差解码器(728)被配置为执行逆变换,并生成解码后的残差数据。解码的残差数据可以被帧内编码器(722)和帧间编码器(730)适当地使用。例如,帧间编码器(730)可基于解码的残差数据和帧间预测信息生成解码的块,帧内编码器(722)可基于解码的残差数据和帧内预测信息生成解码的块。适当地处理被解码的块,以生成已解码的图片,并且已解码的图片可以缓存在存储器电路(未示出)中,并且在一些示例中用作参考图片。
熵编码器(725)被配置为格式化比特流,以包括编码块。熵编码器(725)被配置为根据合适的标准,例如,HEVC标准,包括各种信息。在一个示例中,熵编码器(725)被配置为包括通用控制数据、所选预测信息(例如,帧内预测信息或帧间预测信息)、残差信息和比特流中的其他合适的信息。注意,根据所公开的主题,当在帧间模式或双向预测模式的合并子模式中对块进行编码时,没有残差信息。
图8示出了根据本公开的另一实施例的视频解码器(810)的示意图。视频解码器(810)被配置为接收作为编码视频序列的一部分的编码图片,并对编码图片进行解码,以生成重构图片。在一个示例中,视频解码器(810)用于代替图4示例中的视频解码器(410)。
在图8的示例中,视频解码器(810)包括如图8所示耦合在一起的熵解码器(871)、帧间解码器(880)、残差解码器(873)、重构模块(874)和帧内解码器(872)。
熵解码器(871)可以被配置为从编码图像中重构某些符号,这些符号表示组成编码图像的语法元素。这种符号可以包括例如对块进行编码的模式(例如,帧内模式、帧间模式、双向预测模式、合并子模式或另一子模式中的后两种模式)、可以识别出分别由帧内解码器(872)或帧间解码器(880)进行预测的某些样本或元数据的预测信息(例如,帧内预测信息或帧间预测信息)、例如量化变换系数形式的残差信息等。在一个示例中,当预测模式是帧间或双向预测模式时,帧间预测信息被提供给帧间解码器(880);并且当预测类型是帧内预测类型时,帧内预测信息被提供给帧内解码器(872)。残差信息可以经历逆量化,并被提供给残差解码器(873)。
帧间解码器(880)被配置为接收帧间预测信息,并基于帧间预测信息生成帧间预测结果。
帧内解码器(872)被配置为接收帧内预测信息,并基于帧内预测信息生成预测结果。
残差解码器(873)被配置为执行逆量化,以提取去量化的变换系数,并处理去量化的变换系数,以将残差从频域转换到空间域。残差解码器(873)还可能需要某些控制信息(以包括量化参数(QP)),并且该信息可以由熵解码器(871)提供(数据路径未示出,因为这可能只是少量控制信息)。
重构模块(874)被配置为在空间域中组合由残差解码器(873)输出的残差和预测结果(由帧间或帧内预测模块输出,视情况而定),以形成重构块,该重构块可以是重构图片的一部分,该重构图片又可以是重构视频的一部分。注意,可以执行诸如去块操作等其他合适的操作来提高视觉质量。
注意,视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)可以使用任何合适的技术来实现。在一个实施例中,视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)可以使用一个或多个集成电路来实现。在另一个实施例中,视频编码器(403)、(603)和(603)以及视频解码器(410)、(510)和(810)可以使用执行软件指令的一个或多个处理器来实现。
本公开描述了与神经图像压缩技术和/或神经视频压缩技术相关的视频编码技术,例如,基于人工智能(Artificial Intelligence,简称AI)的神经图像压缩(NeuralImage Compression,简称NIC)。本公开的多个方面包括NIC中的内容自适应在线训练,例如,用于基于神经网络的端到端(End-to-End,简称E2E)优化图像编码框架的NIC方法。神经网络(Neural Network,简称NN)可以包括人工神经网络(Artificial Neural Network,简称ANN),例如,深度神经网络(Deep Neural Network,简称DNN)、卷积神经网络(Convolution Neural Network,简称CNN)等。
在一个实施例中,相关的混合视频编解码器很难被整体优化。例如,混合视频编解码器中单个模块(例如,编码器)的改进可能不会导致整体性能的编码增益。在基于NN的视频编码框架中,可以通过执行学习过程或训练过程(例如,机器学习过程)来从输入到输出共同优化不同的模块,以改善最终目标(例如,率失真性能,例如,本公开中描述的率失真损耗L),并因此产生E2E被优化的NIC。
示例性的NIC框架或系统可以描述如下。NIC框架可以使用输入图像x作为神经网络编码器(例如,基于神经网络(例如,DNN)的编码器)的输入,以计算压缩表示(例如,紧凑表示)
Figure BDA0004091162590000211
该压缩表示可以是紧凑的,例如,用于存储和传输目的。神经网络解码器(例如,基于神经网络(例如,DNN)的解码器)可以使用压缩表示
Figure BDA0004091162590000212
作为输入来重构输出图像(也称为重构图像)
Figure BDA0004091162590000213
在各种实施例中,输入图像x和重构图像
Figure BDA0004091162590000214
在空间域中,压缩表示
Figure BDA0004091162590000215
在不同于空间域的域中。在一些示例中,压缩表示
Figure BDA0004091162590000216
被量化和熵编码。
在一些示例中,NIC框架可以使用可变自动编码器(Variational AutoEncoder,简称VAE)结构。在VAE结构中,神经网络编码器可以直接使用整个输入图像x作为神经网络编码器的输入。整个输入图像x可以穿过一组作为黑盒工作的神经网络层,来计算压缩表示
Figure BDA0004091162590000217
压缩表示
Figure BDA0004091162590000218
是神经网络编码器的输出。神经网络解码器可以将整个压缩表示
Figure BDA0004091162590000221
作为输入。压缩表示
Figure BDA0004091162590000222
可以穿过另一组作为另一个黑盒工作的神经网络层,来计算重构图像
Figure BDA0004091162590000223
率失真(R-D)损耗
Figure BDA0004091162590000224
可以被优化,以利用折中超参数λ实现重构图像
Figure BDA0004091162590000228
的失真损耗
Figure BDA0004091162590000225
和紧凑表示
Figure BDA0004091162590000226
的比特消耗R之间的折中。
Figure BDA0004091162590000227
神经网络(例如,ANN)可以从示例中学习执行任务,而无需特定于任务特定的编程。ANN可以配置有连接的节点或人工神经元。节点之间的连接可以将信号从第一节点传输到第二节点(例如,接收节点),并且该信号可以通过权重来修改,该权重可以由该连接的权重系数来指示。接收节点可以处理来自向接收节点发送信号的节点的信号(即,接收节点的输入信号),然后通过对输入信号应用函数来生成输出信号。该函数可以是线性函数。在一个示例中,输出信号是输入信号的加权和。在一个示例中,输出信号被可以由偏置项指示的偏置进一步修改,因此输出信号是偏置和输入信号的加权和的和。该函数可以包括例如对输入信号的加权和或偏置和加权和的和的非线性运算。输出信号可以被发送到连接到接收节点的节点(连接到接收节点的下游节点)。ANN可以由参数(例如,连接和/或偏置的权重)来表示或配置。可以通过用可以迭代调整权重和/或偏置的示例训练ANN来获得权重和/或偏置。配置有所确定的权重和/或所确定的偏置的经训练的ANN可用于执行任务。
ANN中的节点可以用任何合适的架构来组织。在各种实施例中,ANN中的节点被组织成层,包括接收到ANN的输入信号的输入层和从ANN输出输出信号的输出层。在一个实施例中,ANN还包括输入层和输出层之间的层,例如,隐藏层。不同层可以对不同层的相应输入执行不同种类的变换。信号可以从输入层传输到输出层。
在输入层和输出层之间具有多层的ANN可以被称为DNN。在一个实施例中,DNN是前馈网络,其中,数据从输入层流向输出层,而没有环回。在一个示例中,DNN是全连接网络,其中,一层中的每个节点都连接到下一层中的所有节点。在一个实施例中,DNN是递归神经网络(Recurrent Neural Network,简称RNN),其中,数据可以向任何方向流动。在一个实施例中,DNN是CNN。
CNN可以包括输入层、输出层以及输入层和输出层之间的隐藏层。隐藏层可以包括执行卷积(例如,二维(2D)卷积)的卷积层(例如,用在编码器中)。在一个实施例中,在卷积层中执行的2D卷积是在卷积核(也称为滤波器或信道,例如,5×5矩阵)和卷积层的输入信号(例如,2D矩阵,例如,2D图像,256×256矩阵)之间。在各种示例中,卷积核的维度(例如,5×5)小于输入信号的维度(例如,256×256)。因此,输入信号(例如,256×256矩阵)中被卷积核覆盖的部分(例如,5×5区域)小于输入信号的区域(例如,256×256区域),因此可以被称为下一层中相应节点中的感受野。
在卷积期间,计算卷积核和输入信号中相应感受野的点积。因此,卷积核的每个元素是应用于感受野中相应样本的权重,因此卷积核包括权重。例如,由5×5矩阵表示的卷积核具有25个权重。在一些示例中,向卷积层的输出信号施加偏置,并且输出信号基于点积和偏置的和。
卷积核可以沿着输入信号(例如,2D矩阵)以被称为步幅的大小进行移动,因此卷积运算生成特征图或激活图(例如,另一个2D矩阵),这又有助于CNN中下一层的输入。例如,输入信号是具有256×256个样本的2D图像,步幅是2个样本(例如,步幅为2)。对于步幅2,卷积核沿着X方向(例如,水平方向)和/或Y方向(例如,垂直方向)移动2个样本。
多个卷积核可以在相同的卷积层中应用于输入信号,以分别生成多个特征图,其中,每个特征图可以表示输入信号的特定特征。一般来说,具有N个信道(即,N个卷积核)的卷积层(每个卷积核具有M×M个样本和步幅S)可以被指定为Conv:MxM cN sS。例如,具有192个信道的卷积层(每个卷积核具有5×5个样本,并且步幅为2)被指定为Conv:5x5c192s2。隐藏层可以包括执行去卷积(例如,2D去卷积)的去卷积层(例如,用在解码器中)。去卷积是卷积的逆运算。具有192个信道的去卷积层(每个去卷积核具有5×5个样本,并且步幅为2)被指定为DeConv:5x5c192 s2。
在各种实施例中,CNN具有以下好处。CNN中的多个可学习参数(即,待训练的参数)可以明显小于DNN(例如,前馈DNN)中的多个可学习参数。在CNN中,相对大量的节点可以共享相同的滤波器(例如,相同的权重)和相同的偏置(如果使用偏置的话),因此可以减少存储器占用,因为可以在共享相同滤波器的所有感受野上使用单个偏置和单个权重向量。例如,对于具有100×100个样本的输入信号,具有5×5个样本的卷积核的卷积层具有25个可学习的参数(例如,权重)。如果使用偏置,则一个信道使用26个可学习参数(例如,25个权重和一个偏置)。如果卷积层具有N个信道,则总的可学习参数为26xN。另一方面,对于DNN中全连接层,100x100(即10000)个权重用于下一层中的每个节点。如果下一层有L个节点,则总的可学习参数是10000xL。
CNN还可以包括一个或多个其他层,例如,池化层、可以将一层中的每个节点连接到另一层中的每个节点的全连接层、归一化层等。CNN中的层可以以任何合适的顺序和任何合适的架构(例如,前馈架构、递归架构)排列。在一个示例中,卷积层之后是其他层,例如,池化层、全连接层、归一化层等。
通过将来自一层的多个节点的输出组合到下一层的单个节点中,可以使用池化层来减少数据的维度。下面描述了将特征图作为输入的池化层的池化操作。该描述可以适当地适用于其他输入信号。特征图可以被分成子区域(例如,矩形子区域),并且相应子区域中的特征可以被独立地下采样(或池化)为单个值,例如,通过在平均池化中取平均值或在最大池化中取最大值。
池化层可以执行池化,例如,本地池化、全局池化、最大池化、平均池化等。池化是非线性下采样的一种形式。本地池化结合特征图中的少量节点(例如,本地节点集群,例如,2×2节点)。例如,全局池化可以结合特征图的所有节点。
池化层可以减少表示的大小,从而减少CNN中的参数数量、内存占用和计算量。在一个示例中,在CNN中的连续卷积层之间插入一个池化层。在一个示例中,池化层之后是激活函数,例如,校正线性单元(ReLU)层。在一个示例中,在CNN中的连续卷积层之间省略了池化层。
归一化层可以是ReLU、泄漏ReLU、广义除法归一化(Generalized DivisiveNormalization,简称GDN)、逆GDN(IGDN)等。ReLU可以应用非饱和激活函数,通过将负值设置为零来从输入信号(例如,特征图)中去除负值。对于负值,泄漏ReLU可以具有小斜率(例如,0.01),而不是平坦的斜率(例如,0)。因此,如果值x大于0,则来自泄漏ReLU的输出是x。否则,来自泄漏ReLU的输出是值x乘以小斜率(例如,0.01)。在一个示例中,斜率是在训练之前确定的,因此在训练期间不学习。
图9示出了根据本公开实施例的示例性NIC框架(900)(例如,NIC系统)。NIC框架(900)可以基于神经网络,例如,DNN和/或CNN。NIC框架(900)可用于压缩(例如,编码)图像和解压缩(例如,解码或重构)已压缩的图像(例如,编码图像)。NIC框架(900)可以包括使用神经网络来实现的两个子神经网络,即第一子神经网络(Neural Network,简称NN)(951)和第二子NN(952)。
第一子NN(951)可以类似于自动编码器,并且可以被训练,以生成输入图像x的已压缩图像
Figure BDA0004091162590000251
并且解压缩已压缩图像
Figure BDA0004091162590000252
以获得重构图像
Figure BDA0004091162590000253
第一子NN(951)可以包括多个组件(或模块),例如,主编码器神经网络(或主编码器网络)(911)、量化器(912)、熵编码器(913)、熵解码器(914)和主解码器神经网络(或主编码器网络)(915)。参考图9,主编码器网络(911)可以从输入图像x(例如,待压缩或编码的图像)生成潜在或潜在表示y。在一个示例中,主编码器网络(911)使用CNN来实现。潜在表示y和输入图像x之间的关系可以使用等式2来描述。
y=f1(x;θ1)  等式2
其中,参数θ1表示参数,例如,主编码器网络(911)中卷积核中使用的权重和偏置(如果在主编码器网络(911)中使用偏置)。
可以使用量化器(912)量化潜在表示y,以生成量化的潜在
Figure BDA0004091162590000254
该量化的潜在
Figure BDA0004091162590000255
可以被压缩,例如,熵编码器(913)使用无损压缩,来生成已压缩图像(例如,编码图像)
Figure BDA0004091162590000257
(931),该图像是输入图像x的压缩表示
Figure BDA0004091162590000256
熵编码器(913)可以使用熵编码技术,例如,Huffman编码、算术编码等。在一个示例中,熵编码器(913)使用算术编码,并且是算术编码器。在一个示例中,在编码比特流中传输编码图像(931)。
编码图像(931)可以由熵解码器(914)解压缩(例如,熵解码),以生成输出。熵解码器(914)可以使用与熵编码器(913)中使用的熵编码技术对应的熵编码技术,例如,Huffman编码、算术编码等。在一个示例中,熵解码器(914)使用算术解码,并且是算术解码器。在一个示例中,在熵编码器(913)中使用无损压缩,在熵解码器(914)中使用无损解压缩,并且可以忽略诸如由于编码图像(931)的传输而产生的噪声,来自熵解码器(914)的输出是量化的潜在
Figure BDA0004091162590000261
主解码器网络(915)可以解码量化的潜在
Figure BDA0004091162590000262
以生成重构图像
Figure BDA0004091162590000263
在一个示例中,主解码器网络(915)使用CNN来实现。重构的图像
Figure BDA0004091162590000264
(即,主解码器网络(915)的输出)和量化的潜在
Figure BDA0004091162590000265
(即,主解码器网络(915)的输入)之间的关系可以使用等式3来描述。
Figure BDA0004091162590000266
其中,参数θ2表示参数,例如,在主解码器网络(915)中的卷积核中使用的权重和偏置(如果在主解码器网络(915)中使用偏置)。因此,第一子NN(951)可以压缩(例如,编码)输入图像x,以获得已编码图像(931)并且解压缩(例如,解码)已编码图像(931),以获得重构图像
Figure BDA0004091162590000267
由于量化器(912)引入的量化损耗,重构图像x的可能不同于输入图像x。
第二子NN(952)可以在用于熵编码的量化潜在
Figure BDA0004091162590000268
上学习熵模型(例如,先验概率模型)。因此,熵模型可以是条件熵模型,例如,高斯混合模型(Gaussian Mixture Model,简称GMM)、取决于输入图像x的高斯尺度模型(Gaussian Scale Model,简称GSM)。第二子NN(952)可以包括上下文模型NN(916)、熵参数NN(917)、超级编码器(921)、量化器(922)、熵编码器(923)、熵解码器(924)和超级解码器(925)。在上下文模型NN(916)中使用的熵模型可以是潜像的(例如,量化的潜在
Figure BDA0004091162590000269
)自回归模型。在一个示例中,超级编码器(921)、量化器(922)、熵编码器(923)、熵解码器(924)和超级解码器(925)形成超级神经网络(例如,超级NN)。超级神经网络可以表示对校正基于上下文的预测有用的信息。来自上下文模型NN(916)和超级神经网络的数据可以通过熵参数NN(917)来结合。熵参数NN(917)可以生成参数,例如,用于诸如条件高斯熵模型(例如,GMM)等熵模型的均值和尺度参数。
参考图9,在编码器侧,来自量化器(912)的量化的潜在
Figure BDA0004091162590000271
被反馈到上下文模型NN(916)。在解码器侧,来自熵解码器(914)的量化的潜在
Figure BDA0004091162590000272
被反馈到上下文模型NN(916)。上下文模型NN(916)可以使用诸如CNN之类的神经网络来实现。上下文模型NN(916)可以基于上下文
Figure BDA0004091162590000273
生成输出ocm,i,该输出是对上下文模型NN(916)可用的量化的潜在
Figure BDA0004091162590000274
上下文
Figure BDA0004091162590000275
可以包括编码器侧的先前量化的潜在或解码器侧的先前熵解码的量化的潜在。上下文模型NN(916)的输出ocm,i和输入(例如,
Figure BDA0004091162590000276
)之间的关系可以使用等式4来描述。
Figure BDA0004091162590000277
其中,参数θ3表示参数,例如,在上下文模型NN(916)中的卷积核中使用的权重和偏置(如果在上下文模型NN(916)中使用偏置)。
来自上下文模型NN(916)的输出ocm,i和来自超级解码器(925)的输出ohc被反馈至熵参数NN(917),以生成输出oep。熵参数NN(917)可以使用诸如CNN之类的神经网络来实现。熵参数NN(917)的输出oep和输入(例如,ocm,i和ohc)之间的关系可以使用等式5来描述。
oep=f4(ocm,i,ohc;θ4)等式5
其中,参数θ4表示参数,例如,熵参数NN(917)的卷积核中使用的权重和偏置(如果在熵参数NN(917)中使用偏置)。熵参数NN(917)的输出oep可以用于确定(例如,调节)熵模型,并且已调节的熵模型可以取决于输入图像x,例如,经由来自超级解码器(925)的输出ohc。在一个示例中,输出oep包括用于调节熵模型(例如,GMM)的参数,例如,均值和尺度参数。参考图9,熵编码器(913)和熵解码器(914)可以分别在熵编码和熵解码中使用熵模型(例如,条件熵模型)。
可以如下描述第二子NN(952)。潜在y可以被反馈到超级编码器(921)中,以生成超级潜在z。在一个示例中,超级编码器(921)是使用诸如CNN之类的神经网络来实现的。超级潜在z和潜在y之间的关系可以使用等式6来描述。
z=f5(y;θ5)  等式6
其中,参数θ5表示参数,例如,超级编码器(921)的卷积核中使用的权重和偏置(如果在超级编码器(921)中使用了偏置)。
量化器(922)对超级潜在z进行量化,以生成量化的潜在
Figure BDA0004091162590000291
可以压缩量化的潜在
Figure BDA0004091162590000292
例如,通过熵编码器(923)使用无损压缩,来生成边信息,例如,来自超级神经网络的编码比特(932)。熵编码器(923)可以使用熵编码技术,例如,Huffman编码、算术编码等。在一个示例中,熵编码器(923)使用算术编码,并且是算术编码器。在一个示例中,诸如编码比特(932)之类的边信息可以在编码比特流中被传输,例如与编码图像(931)一起传输。
诸如编码比特(932)的边信息可以由熵解码器(924)解压缩(例如,熵解码),以生成输出。熵解码器(924)可以使用熵编码技术,例如,Huffman编码、算术编码等。在一个示例中,熵解码器(924)使用算术解码,并且是算术解码器。在一个示例中,在熵编码器(923)中使用无损压缩,在熵解码器(924)中使用无损解压缩,并且可以忽略诸如由于边信息的传输而导致的噪声,来自熵解码器(924)的输出可以是量化的潜在
Figure BDA0004091162590000293
超级解码器(925)可以解码量化的潜在
Figure BDA0004091162590000294
以生成输出tohc。输出tohc和量化的潜在
Figure BDA0004091162590000295
之间的关系可以使用等式7来描述。
Figure BDA0004091162590000296
其中,参数θ6表示参数,例如,超级解码器(925)的卷积核中使用的权重和偏置(如果在超级解码器(925)中使用偏置)。
如上所述,压缩或编码的比特(932)可以作为边信息被添加到编码的比特流,这使得熵解码器(914)能够使用条件熵模型。因此,熵模型可以是依赖图像的且是空间自适应的,因此其可以比固定熵模型更精确。
可以适当地修改NIC框架(900),例如,省略图9中所示的一个或多个组件,修改图9中所示的一个或多个组件,和/或包括图9中未示出的一个或多个组件。在一个示例中,使用固定熵模型的NIC框架包括第一子NN(951),并且不包括第二子NN(952)。在一个示例中,NIC框架包括NIC框架(900)中除熵编码器(923)和熵解码器(924)之外的组件。
在一个实施例中,图9所示的NIC框架(900)中的一个或多个组件使用神经网络(例如,CNN)来实现。NIC框架(例如,NIC框架(900))中的每个基于NN的组件(例如,主编码器网络(911)、主解码器网络(915)、上下文模型NN(916)、熵参数NN(917)、超级编码器(921)或超级解码器(925))可以包括任何合适的架构(例如,具有任何合适的层的结合)、包括任何合适类型的参数(例如,权重、偏置、权重和偏置的组合和/或诸如此类),并且包括任何合适数量的参数。
在一个实施例中,主编码器网络(911)、主解码器网络(915)、上下文模型NN(916)、熵参数NN(917)、超级编码器(921)和超级解码器(925)使用相应的CNN来实现。
图10示出了根据本公开实施例的主编码器网络(911)的示例性CNN。例如,主编码器网络(911)包括四组层,其中,每组层包括一个卷积层5x5 c192 s2,其后是一个GDN层。可以修改和/或省略图10中所示的一层或多层。可以将额外层添加到主编码器网络(911)。
图11示出了根据本公开实施例的主解码器网络(915)的示例性CNN。例如,主解码器网络(915)包括三组层,其中,每组层包括去卷积层5x5c192 s2,随后是IGDN层。此外,三组层之后是去卷积层5x5 c3 s2,之后是IGDN层。可以修改和/或省略图11中所示的一层或多层。可以将额外层添加到主解码器网络(915)。
图12示出了根据本公开实施例的超级编码器(921)的示例性CNN。例如,超级编码器(921)包括卷积层3x3 c192 s1,随后是泄漏ReLU,卷积层5x5 c192 s2,随后是泄漏ReLU,以及卷积层5x5 c192 s2。可以修改和/或省略图12中所示的一层或多层。可以将额外层添加到超级编码器(921)。
图13示出了根据本公开实施例的超级解码器(925)的示例性CNN。例如,超级解码器(925)包括去卷积层5x5 c192 s2,随后是泄漏ReLU,卷积层5x5 c288 s2,随后是泄漏ReLU,以及卷积层3x3 c384 s1。可以修改和/或省略图13中所示的一层或多层。可以将额外层添加到超级编码器(925)。
图14示出了根据本公开实施例的上下文模型NN(916)的示例性CNN。例如,上下文模型NN(916)包括用于上下文预测的掩蔽卷积5x5c384 s1,因此等式4中的上下文
Figure BDA0004091162590000301
包括有限的上下文(例如,5×5卷积核)。可以修改图14中的卷积层。可以将额外层添加到上下文模型NN(916)。
图15示出了根据本公开实施例的熵参数NN(917)的示例性CNN。例如,熵参数NN(917)包括卷积层1x1 c640 s1,随后是泄漏ReLU,卷积层1x1 c512 s1,随后是泄漏ReLU,以及卷积层1x1 c384 s1。可以修改和/或省略图15中所示的一层或多层。可以将额外层添加到熵参数NN(917)。
NIC框架(900)可以使用CNN来实现,如参考图10-15所描述的。NIC框架(900)可以被适当地适配,使得NIC框架(900)中的一个或多个组件(例如,(911)、(915)、(916)、(917)、(921)和/或(925))使用任何适当类型的神经网络(例如,基于CNN或非CNN的神经网络)来实现。NIC框架(900)的一个或多个其他组件可以使用神经网络来实现。
可以训练包括神经网络(例如,CNN)的NIC框架(900)以学习神经网络中使用的参数。例如,当使用CNN时,可以分别在训练过程中学习由θ16表示的参数,例如,在主编码器网络(911)中的卷积核中使用的权重和偏置(如果在主编码器网络(911)中使用偏置)、在主解码器网络(915)中的卷积核中使用的权重和偏置(如果在主解码器网络(915)中使用偏置)、超级编码器(921)中的卷积核中使用的权重和偏置(如果在超级编码器(921)中使用偏置)、超级解码器(925)中的卷积核中使用的权重和偏置(如果在超级解码器(925)中使用偏置)、上下文模型NN(916)中的卷积核中使用的权重和偏置(如果在上下文模型NN(916)中使用偏置)以及在熵参数NN(917)中的卷积核中使用的权重和偏置(如果在熵参数NN(917)中使用了偏置)。
在一个示例中,参考图10,主编码器网络(911)包括四个卷积层,其中,每个卷积层具有5×5的卷积核和192个信道。因此,在主编码器网络(911)中的卷积核中使用的权重的数量是19200(即,4x5x5x192)。主编码器网络(911)中使用的参数包括19200权重和可选偏置。当在主编码器网络(911)中使用偏置和/或额外NN时,可以包括额外参数。
参考图9,NIC框架(900)包括至少一个建立在神经网络上的组件或模块。该至少一个组件可以包括主编码器网络(911)、主解码器网络(915)、超级编码器(921)、超级解码器(925)、上下文模型NN(916)和熵参数NN(917)中的一个或多个。可以单独训练该至少一个组件。在一个示例中,训练过程用于分别学习每个组件的参数。该至少一个组件可以作为一个组共同训练。在一个示例中,训练过程用于共同学习至少一个组件的子集的参数。在一个示例中,训练过程用于学习所有至少一个组件的参数,因此被称为E2E优化。
在NIC框架(900)中的一个或多个组件的训练过程中,可以初始化一个或多个组件的权重(或权重系数)。在一个示例中,基于预训练相应神经网络模型(例如,DNN模型、CNN模型)来初始化权重。在一个示例中,通过将权重设置为随机数来初始化权重。
例如,在初始化权重之后,可以采用一组训练图像来训练一个或多个组件。该组训练图像可以包括具有任何合适尺寸的任何合适的图像。在一些示例中,该组训练图像包括在空间域中的原始图像、自然图像、计算机生成的图像等。在一些示例中,该组训练图像包括在空间域中具有残差数据的残差图像。残差数据可以由残差计算器(例如,残差计算器(723))来计算。在一些示例中,该组训练图像中的训练图像(例如,原始图像和/或包括残差数据的残差图像)可以被分成具有合适大小的块,并且这些块和/或图像可以用于在NIC框架中训练神经网络。因此,原始图像、残差图像、来自原始图像的块和/或来自残差图像的块可以用于在NIC框架中训练神经网络。
为了简洁起见,下面使用训练图像作为示例来描述训练过程。该描述可以适当地适用于训练块。该组训练图像中的训练图像t可以通过图9中的编码过程,以生成压缩表示(例如,编码信息,例如,比特流)。编码信息可以通过图9中描述的解码过程来计算和重构该重构图像
Figure BDA0004091162590000321
对于NIC框架(900),两个竞争目标,例如,重构质量和比特消耗,可以被平衡。质量损失函数(例如,失真或失真损失)
Figure BDA0004091162590000322
可以用于指示重构质量,例如,重构(例如,重构图像
Figure BDA0004091162590000323
)和原始图像(例如,训练图像t)之间的差异。速率(或速率损失)R可以用于指示压缩表示的比特消耗。在一个示例中,速率损失R还包括边信息,例如其在确定上下文模型时使用。
对于神经图像压缩,可以在E2E优化中使用量化的可微分近似。在各种示例中,在基于神经网络的图像压缩的训练过程中,使用噪声注入来模拟量化,因此量化是通过噪声注入来模拟的,而不是由量化器(例如,量化器(912))来执行。因此,利用噪声注入的训练可以可变地逼近量化误差。每像素比特(BPP)估计器可用于模拟熵编码器,因此熵编码由BPP估计器模拟,而不是由熵编码器(例如,(913))和熵解码器(例如,(914))执行。因此,例如,在训练过程中等式1所示的损失函数L中的速率损失R,可以基于噪声注入和BPP估计器来进行估计。一般而言,较高的速率R可以允许较低的失真D,而较低的速率R会导致较高的失真D。等式1中的权衡超参数λ可用于优化共同R-D损失L,其中,L作为λD和R的总和,可被优化。训练过程可用于调整NIC框架(900)中的一个或多个组件(例如(911)、(915))的参数,使得共同R-D损失L被最小化或优化。
各种模型可以被用于确定失真损失D和速率损失R,从而确定等式1中的共同R-D损失L。在一个示例中,失真损失
Figure BDA0004091162590000331
被表示为峰值信噪比(Peak Signal-to-NoiseRatio,简称PSNR),其是基于均方误差、多尺度结构相似性(Multiscale StructuralSimilarity,简称MS-SSIM)质量指数及PSNR和MS-SSIM的加权结合等的度量。
在一个示例中,训练过程的目标是训练编码神经网络(例如,编码DNN),例如,要在编码器侧使用的视频编码器,以及训练解码神经网络(例如,解码DNN),例如,要在解码器侧使用的视频解码器。在一个示例中,参考图9,编码神经网络可以包括主编码器网络(911)、超级编码器(921)、超级解码器(925)、上下文模型NN(916)和熵参数NN(917)。解码神经网络可以包括主解码器网络(915)、超级解码器(925)、上下文模型NN(916)和熵参数NN(917)。视频编码器和/或视频解码器可以包括基于NN和/或不基于NN的其他组件。
可以以E2E方式训练NIC框架(例如,NIC框架(900))。在一个示例中,编码神经网络和解码神经网络在训练过程中基于反向传播梯度以E2E方式共同更新。
在NIC框架(900)的神经网络的参数被训练之后,NIC框架(900)中的一个或多个组件可以用于编码和/或解码图像。在一个实施例中,在编码器侧,视频编码器被配置为将输入图像x编码成要在比特流中传输的编码图像(931)。视频编码器可以包括NIC框架(900)中的多个组件。在一个实施例中,在解码器侧,对应的视频解码器被配置为将比特流中的编码图像(931)解码成重构图像
Figure BDA0004091162590000332
视频解码器可以包括NIC框架(900)中的多个组件。
在一个示例中,例如,当采用内容自适应在线训练时,视频编码器包括NIC框架(900)中的所有组件。
图16A示出了根据本公开实施例的示例性视频编码器(1600A)。视频编码器(1600A)包括参考图9描述的主编码器网络(911)、量化器(912)、熵编码器(913)和第二子NN(952),为了简洁起见,省略了详细描述。图16B示出了根据本公开实施例的示例性视频解码器(1600B)。视频解码器(1600B)可以对应于视频编码器(1600A)。视频解码器(1600B)可以包括主解码器网络(915)、熵解码器(914)、上下文模型NN(916)、熵参数NN(917)、熵解码器(924)和超级解码器(925)。参考图16A-16B,在编码器侧,视频编码器(1600A)可以生成要在比特流中传输的编码图像(931)和编码比特(932)。在解码器侧,视频解码器(1600B)可以接收和解码编码图像(931)和编码比特(932)。
图17-18分别示出了根据本公开的实施例的示例性视频编码器(1700)和相应的视频解码器(1800)。参考图17,编码器(1700)包括主编码器网络(911)、量化器(912)和熵编码器(913)。参考图9描述主编码器网络(911)、量化器(912)和熵编码器(913)的示例。参考图18,视频解码器(1800)包括主解码器网络(915)和熵解码器(914)。参考图9描述主解码器网络(915)和熵解码器(914)的示例。参考图17和18,视频编码器(1700)可以生成将在比特流中传输的编码图像(931)。视频解码器(1800)可以接收并解码编码图像(931)。
如上所述,包括视频编码器和视频解码器的NIC框架(900)可以基于该组训练图像中的图像和/或块来训练。在一些示例中,待压缩(例如,编码)和/或待传输的输入图像具有与该组训练图像显著不同的属性。因此,分别使用基于该组训练图像训练的视频编码器和视频解码器直接对输入图像进行编码和解码,会导致次优或相对较差的R-D损失L(例如,相对较大的失真和/或相对较大的比特率)。本公开的方面包括NIC中的内容自适应在线训练方法。各种内容自适应的在线训练过程可以用来改善R-D损失L。
由该组训练图像训练的NIC框架(900)、视频编码器和视频解码器可以分别称为预训练NIC框架(900)、预训练视频编码器和预训练视频解码器。预训练NIC框架(900)、预训练视频编码器和预训练视频解码器中的参数分别被称为NIC预训练参数、编码器预训练参数和解码器预训练参数。
在一个实施例中,基于NN的训练过程被应用于迭代地对输入图像(例如,待压缩和/或待传输的图像)的特征表示进行更新,而得到更新的特征表示,以改善R-D损失L。当更新的特征表示分别使用基于该组训练图像训练的预训练视频编码器和预训练视频解码器来编码和解码时,获得与更新的特征表示对应的最终R-D损失L,并且当分别使用预训练视频编码器和预训练视频解码器对特征表示进行编码和解码时,小于初始R-D损失L。更新特征表示而不是更新预训练NIC框架(900)中的NIC预训练参数中的一个或多个预训练参数,基于NN的训练过程可以被称为特征表示训练过程,例如,在线特征表示训练过程。因为特征表示指示输入图像的特征,所以特征表示训练过程可以被称为特征训练过程。特征训练过程是内容自适应的在线训练过程,其适应于要压缩的输入图像,并且是基于NN的基于学习的图像编码过程。
图19A示出了根据本公开的实施例的基于学习的图像编码过程(1900A)的示例。基于学习的图像压缩可以被描述为包括编码映射(或者编码过程和解码映射(或者解码过程)的两步映射过程。在编码器的编码映射中,原始空间(例如,高维空间)中的原始图像x0可以被映射到特征表示f0。特征表示f0可以被映射到具有码率损失R(x0)的编码表示(1910)。原始图像x0可以是待编码和/或待传输的输入图像,例如,原始图像或包括残差数据的图像。在解码器的解码映射中,编码表示(1910)可以被映射回原始空间中的重构图像
Figure BDA0004091162590000351
编码表示(1910)可以在比特流中传输,并且基于编码表示(1910)确定的速率损失R(x0)可以指示编码图像(1910)的比特消耗。如上所述,重构图像
Figure BDA0004091162590000352
的失真损失是
Figure BDA0004091162590000353
指示重构图像
Figure BDA0004091162590000354
和原始图像x0之间的差异,并且可以使用等式1获得相应的R-D损失L1,如
Figure BDA0004091162590000355
参考图19A,特征表示f′0(例如,替代特征表示)可以通过特征训练过程从特征表示f0中确定。使用相同的编码映射和解码映射,可以将替代特征表示f′0映射到重构图像
Figure BDA0004091162590000361
重构图像
Figure BDA0004091162590000362
的失真损失是
Figure BDA0004091162590000363
指示重构图像
Figure BDA0004091162590000364
和原始图像x0之间的差异,并且可以使用等式1获得相应的R-D损失L2,如
Figure BDA0004091162590000365
其中,R(x′0)是替代特征表示f′0的编码表示(1920)的速率损失。在一个实施例中,使用基于NN的训练过程来迭代地训练(例如,更新)特征表示f0,以获得特征表示f′0,使得L2减小并且小于L1,从而实现更好的视频编码性能。
当L2小于L1时,失真损失
Figure BDA0004091162590000366
可以小于失真损失
Figure BDA0004091162590000367
因此基于特征表示f′0获得的重构图像
Figure BDA0004091162590000368
比基于特征表示f0获得的重构图像
Figure BDA0004091162590000369
更精确。在一些示例中,失真损失
Figure BDA00040911625900003610
大于失真损失
Figure BDA00040911625900003611
然而,速率损失R(x′0)小于速率损失R(x0),其中,当L2小于L1时,可以实现R-D损失的全局最小值。
在一个实施例中,在从原始图像x0到编码表示(例如,(1910))的编码过程中,在一个或多个阶段中修改原始图像x0。在一些实施例中,可以在编码过程中生成中间表示,例如,原始图像x0的特征表示f0。可以对一个中间表示进行替换或更新,以减少R-D损失L,从而提高编码效率。在一个示例中,基于NN(例如,DNN、CNN)实现编码过程,并且在CNN中生成一个或多个特征图。特征表示f0可以包括一个特征图,并且可以更新,以减小R-D损失L。例如,一个特征图可以包括2D矩阵,并且更新2D矩阵中的多个元素的值,以更新一个特征图。多个元素可以包括整个2D矩阵、2D矩阵中的一行或多行、一列或多列或一个或多个元素。
返回参考图10,主编码器网络(911)包括归一化层(例如,GDN)和多个卷积层以及用于每个卷积层的多个(例如,192个)信道。在一个示例中,特征表示f0是主编码器网络(911)的输出。在一个示例中,特征表示f0是主编码器网络(911)中卷积层的输出。在一个示例中,特征表示f0是主编码器网络(911)中的GDN的输出。在一个示例中,主编码器网络(911)包括多个子NN,例如,第一子NN和第二子NN。特征表示f0可以是多个子NN之一的输出。
在预处理模块中,R-D损失L的梯度可以用于更新输入图像的特征表示f0。如上所述,模型(例如,包括速率损失R和失真损失D的R-D损失L)可以是可微分的,并且梯度可以反向传播,例如,通过用可微分的运算代替不可微分的运算(例如,用噪声注入代替量化)。因此,上述优化可以用梯度下降迭代求解。
为了区分特征训练过程之前的特征表示f0和特征训练过程之后的更新的特征表示f′0,特征训练过程之前的初始特征表示f0被称为初始特征表示f0。在特征训练过程之后更新的特征表示f′0被称为最终特征表示f′0
上述基于学习的图像编码过程(例如,特征训练过程)可以应用于对与待编码的输入图像对应的初始特征表示,以迭代地将初始特征表示更新为最终特征表示,从而减少共同R-D损失L。特征训练过程可以用作预处理步骤,用于提高预训练E2ENIC压缩方法的压缩性能。
特征训练过程可以包括多个时期(例如,迭代),其中,初始特征表示在迭代更新过程中更新。在一个实施例中,从待编码的输入图像中生成初始特征表示,并且在特征训练过程中执行对初始特征表示中一个或多个元素相应的一个或多个值的迭代更新,直到(i)与最终特征表示对应的训练损失(例如,R-D损失L)或(ii)迭代更新的迭代次数中的一个满足预定条件。如上所述,参考图19A,与最终特征表示(例如,f′0)对应的训练损失(例如,R-D损失L)可以基于最终特征表示的编码表示(例如,(1920))的比特消耗或速率损失(例如,R(x′0))以及输入图像(例如,x0)和最终特征表示的重构图像(例如,x′0)之间的差异
Figure BDA0004091162590000381
来确定。
当训练损失(例如,R-D损失L)已经变平或将要变平时,特征训练过程(例如,迭代更新)可以停止。在一个示例中,当训练损失低于第一阈值时,特征训练过程停止。在一个示例中,当两个连续训练损失之间的差低于第二阈值时,特征训练过程停止。
两个超参数(例如,步长和最大步数)可以与训练损失函数(例如,R-D损失L)一起用于特征训练过程。最大迭代次数可以用作终止特征训练过程的最大迭代次数的阈值。在一个示例中,当迭代次数达到最大迭代次数时,特征训练过程停止。
参考图19A,在特征训练过程的编码过程中,可以基于最终特征表示生成最终特征表示(例如,f′0)的编码表示(例如,(1920)),例如,通过编码NN和至少一个训练模块,其中,最终特征表示(例如,f′0)已经按照迭代更新的迭代次数对初始特征表示(例如,f0)进行了更新。在特征训练过程的解码过程中,可以通过解码NN基于最终特征表示的编码表示来生成最终特征表示的重构图像(例如,
Figure BDA0004091162590000391
例如,在特征训练过程之后,可以由视频编码器生成与具有一个或多个更新值的最终特征表示对应的编码图像。也可以生成包括编码图像的编码比特流。在一个示例中,在编码比特流中传输编码图像。
可以在下面详细描述特征训练过程。诸如图9中的NIC框架(900)之类的NIC框架可以用于执行迭代更新。图19B示出了根据本公开实施例的示例性NIC框架(1900B)。可以使用NIC框架(1900B)来实现特征训练过程。NIC框架(1900B)可以包括图9中描述的主编码器网络(911)、主解码器网络(915)、超级编码器(921)、超级解码器(925)、上下文模型NN(916)和熵参数NN(917)中的一个或多个。NIC框架(1900B)可以包括代替图9中的量化器(912)的噪声注入模块(1912)以及熵编码模拟器(1913),其可以模拟图9中由熵编码器(913)执行的熵编码和由熵解码器(914)执行的熵解码。NIC框架(1900B)可以包括特征更新模块(1950)。
待压缩的输入图像被反馈到主编码器网络(911),并将由主编码器网络(911)生成初始特征表示。
为了示出迭代更新,初始特征表示被标示为f0,最终特征表示被标示为f′0。迭代更新包括多次迭代,并且每次迭代被标示为第i次迭代,其中,i是从1到K的正整数,K表示迭代次数(例如,迭代更新停止之前的总迭代次数)。例如,最终特征表示是在第K次迭代中生成的。在第一次迭代中,第一个特征表示是初始特征表示f0
第i次迭代描述如下。在第i次迭代的编码过程中,噪声可以由噪声注入模块(1912)添加到第i个特征表示,以生成第i个第一表示。用于模拟熵编码的熵编码模拟器(1913)可以基于第i个第一表示生成第i个编码表示。
在第i次迭代的解码过程中,可以由模拟熵解码的熵编码模拟器(1913)从第i个编码表示生成第i个第二表示。基于第i个第二表示,可以由解码NN(例如,主解码器网络(915))生成第i个重构图像。
如上所述,在基于NN的图像压缩的训练过程中,可以使用噪声注入来模拟量化,以可变地逼近量化误差。熵编码模拟器(1913)(例如,BPP估计器)可以用于模拟熵编码器。因此,例如基于噪声注入和熵编码估计器来估计损失函数L中的速率损失R,如等式1所示的第i次迭代。在第i次迭代中,可以获得与第i个特征表示对应的训练损失(例如,R-D损失L),作为估计的速率损失R和失真损失D之和。可以确定与第i个特征表示对应的训练损失(例如,R-D损失L)或者(ii)迭代更新的迭代次数(例如,i)是否满足预定条件。如果与第i个特征表示对应的训练损失或者(ii)迭代更新的迭代次数(例如,i)满足预定条件,则迭代更新停止,并且将第i个特征表示确定为最终特征表示。迭代次数为i。
如果第i个特征表示的训练损失和(ii)迭代更新的迭代次数(例如,i)都不满足预定条件,则对第i个特征表示中的一个或多个值的调整,例如可以由特征更新模块(1950)基于梯度(例如,R-D损失L相对于第i个特征表示中的值的梯度)和步长来确定。如上所述,这里的一个或多个值对应于第i个特征表示中的一个或多个元素(例如,一行或多行、一列或多列、2D矩阵中元素的子集或全集)的值。第(i+1)个特征表示可以由特征更新模块(1950)基于梯度和步长来生成。迭代更新继续到第(i+1)次迭代等,直到与最终特征表示对应的训练损失或迭代更新的迭代次数满足预定条件。
根据本公开的实施例,在迭代更新中不直接更新输入图像。取而代之的是,输入图像的初始特征表示被更新为最终特征表示,并且基于最终特征表示生成编码表示。
在一些示例中,在第i次迭代中,将基于使用子网络(1952)的第i个特征表示所确定的熵模型作为上下文模型。如上所述,除了第二噪声注入模块(1922)代替了量化器(922)以及能够模拟熵编码和解码的第二熵编码模拟器(1923)代替了熵编码器(923)和熵解码器(924)之外,子网络(1952)与第二子网络(952)相同或相似。可以基于具有所确定的上下文模型的第i个第一表示来生成第i个编码表示。所确定的上下文模型取决于第i个特征表示,因此是特征相关的。因此,上下文模型可以比固定熵模型更准确。
参考图19B,在主编码器网络(911)和噪声注入模块(1912)之间的编码过程中可以使用额外组件,从而可以生成另一种类型的特征表示。可以对另一个特征表示执行迭代更新。
步长可以指示特征训练过程的学习速率。步长可用于梯度下降算法或在特征训练过程中执行的反向传播计算。可以使用任何合适的方法来确定步长。在一个实施例中,不同的步长用于具有不同类型内容的图像(或特征表示)中,以获得最佳结果。不同的类型可以指不同的方差。在一个示例中,基于特征表示的方差来确定步长。例如,具有高方差的特征表示的步长大于具有低方差的特征表示的步长,其中,高方差大于低方差。
在一个实施例中,第一步长可以用于运行一定数量(例如,100)的迭代。然后,第二步长(例如,第一步长加上或减去一个大小增量)可以用于运行一定数量的迭代。比较第一步长和第二步长的结果,以确定待使用的步长。可以测试两个以上的步长来确定最佳步长。
在特征训练过程中,步长可以变化。步长可以在特征训练过程开始时具有初始值,并且该初始值可以在特征训练过程的后续阶段减小(例如,减半),例如,在一定次数的迭代之后,以实现更精细的调谐。在迭代特征训练过程中,步长或学习速率可以由调度器来改变。调度器可以包括用于调整步长的参数调整方法。调度器可以确定步长的值,使得步长可以在多个间隔中增加、减小或保持恒定。在一个示例中,学习速率在每个步骤中由调度器改变。单个调度器或多个不同的调度器可用于不同的特征表示。因此,可以基于多个调度器生成多个最终特征表示,并且可以选择多个最终特征表示中具有更好压缩性能(例如,更小的R-D损失)的一个。
如上所述,与具有一个或多个更新值的最终特征表示f′0对应的编码图像可以由视频编码器生成,如图19C所示。图19C示出了根据本公开实施例的基于NIC框架(900)的示例性编码过程。参考图9描述NIC框架(900)中的组件。
在迭代更新之前,基于输入图像生成初始特征表示。因此,在基于迭代更新获得最终特征表示之后,某些编码组件(例如,主编码器网络(911)或主编码器网络(911)的一部分)可以不用于基于最终特征表示生成编码图像(931)。参考图19C,由迭代更新确定的最终特征表示可以由量化器量化为量化表示(912)。可以基于该量化表示来生成编码图像(例如(931))。在图19C所示的示例中,初始特征表示是主编码器网络(911)的输出,因此主编码器网络(911)不用于根据最终特征表示对编码图像(931)进行编码。在一些示例中,主编码器网络(911)可以包括多个子NN(例如,第一子NN后面是第二子NN)或多个卷积层。例如,初始特征表示是主编码器网络(911)中的第一子NN的输出。在一个示例中,第一子NN不用于生成编码图像(931)。第二子NN用于基于最终特征表示生成编码图像(931)。
量化表示可以由熵编码器(913)熵编码到编码图像(931)中。在一个示例中,在熵编码器(913)是算术编码器时,熵编码包括算术编码。
在一个示例中,如参考图9所述,基于使用第二子网络(952)的最终特征表示来确定上下文模型。可基于使用熵编码器(913)所确定的上下文模型,将量化表示熵编码到编码图像(931)中。所确定的上下文模型取决于最终的特征表示,因此是特征相关的。因此,上下文模型可以比固定熵模型更准确。
在一个示例中,在编码视频比特流中传输编码图像(931)。在解码器侧,视频解码器可以通过对编码图像(931)进行解码,来获得最终特征表示的重构图像。如上参考图9所述,可以在编码视频比特流中传输编码比特(932)。
迭代更新中使用的NIC框架可以包括任何类型的神经网络,并使用任何基于神经网络的图像压缩方法,例如,上下文超优编码器-解码器框架(例如,图9中所示的NIC框架)、尺度超优编码器-解码器框架、高斯混合似然框架和高斯混合似然框架的变体、基于RNN的递归压缩方法和基于RNN的递归压缩方法的变体等。
如上所述,各种内容自适应的在线训练过程可用于改善R-D损失L。例如,NIC框架中使用的一个或多个预训练参数,可基于待压缩(例如,编码)和/或待传输的一个或多个图像来训练,并且一个或多个预训练参数的内容自适应的在线训练可被称为参数训练过程(例如,在线参数训练过程)或微调过程,所述如下。
在一些示例中,待压缩(例如,编码)和/或待传输的一个或多个图像具有与该组训练图像显著不同的属性。因此,分别使用基于该组训练图像训练的视频编码器和视频解码器对一个或多个图像进行编码和解码,将导致相对较差的R-D损失L(例如,相对较大的失真和/或相对较大的比特率)。
为了区分基于该组训练图像的训练过程和基于待压缩(例如,编码)和/或待传输的一个或多个图像的一个或多个预训练参数的内容自适应的在线训练过程,由该组训练图像训练的NIC框架(900)、视频编码器和视频解码器分别被称为预训练NIC框架(900)、预训练视频编码器和预训练视频解码器。预训练NIC框架(900)、预训练视频编码器或预训练视频解码器中的参数分别被称为NIC预训练参数、编码器预训练参数和解码器预训练参数。在一个示例中,NIC预训练参数包括编码器预训练参数和解码器预训练参数。在一个示例中,编码器预训练参数和解码器预训练参数不重叠,其中,没有一个编码器预训练参数被包括在解码器预训练参数中。例如,(1700)中的编码器预训练参数(例如,主编码器网络(911)中的预训练参数)和(1800)中的解码器预训练参数(例如,主解码器网络(915)中的预训练参数)不重叠。在一个示例中,编码器预训练参数和解码器预训练参数重叠,其中,至少一个编码器预训练参数被包括在解码器预训练参数中。例如,(1600A)中的编码器预训练参数(例如,上下文模型NN(916)中的预训练参数)和(1600B)中的解码器预训练参数(例如,上下文模型NN(916)中的预训练参数)重叠。可以基于该组训练图像中的块和/或图像来获得NIC预训练参数。
可以基于待编码和/或传输的一个或多个图像进一步训练(例如,微调)预训练NIC框架(900)中的NIC预训练参数中的一个或多个预训练参数,其中,一个或多个图像可以不同于该组训练图像。NIC预训练参数中使用的一个或多个预训练参数可以通过基于一个或多个图像优化共同R-D损耗L来微调。已经由一个或多个图像微调的一个或多个预调整参数被称为一个或多个替换参数或一个或多个微调参数。在一个实施例中,在NIC预训练参数中的一个或多个预训练参数已经被一个或多个替换参数微调(例如,替换)之后,神经网络更新信息被编码到比特流中,以指示一个或多个替换参数或一个或多个替换参数的子集。在一个示例中,更新(或微调)NIC框架(900),其中,一个或多个预训练参数分别被一个或多个替换参数替换。
在第一种情况下,一个或多个预训练参数包括一个或多个预训练参数的第一子集和一个或多个预训练参数的第二子集。一个或多个替换参数包括一个或多个替换参数的第一子集和一个或多个替换参数的第二子集。
一个或多个预训练参数的第一子集在预训练视频编码器中使用,并且例如在训练过程中被一个或多个替换参数的第一子集替换。因此,通过训练过程,预训练视频编码器被更新为更新的视频编码器。神经网络更新信息可以指示一个或多个替换参数的第二子集,其将替换一个或多个替换参数的第二子集。可以使用更新的视频编码器对一个或多个图像进行编码,并在具有神经网络更新信息的比特流中传输。
在解码器侧,一个或多个预训练参数的第二子集用于预训练视频解码器中。在一个实施例中,预训练视频解码器接收并解码神经网络更新信息,以确定一个或多个替换参数的第二子集。当预训练视频解码器中的一个或多个预训练参数的第二子集被一个或多个替换参数的第二子集替换时,预训练视频解码器被更新为更新的视频解码器。可以使用更新的视频解码器来解码一个或多个编码图像。
图16A-16B示出了第一种情况的示例。例如,一个或多个预训练参数包括预训练上下文模型NN(916)中的N1预训练参数和预训练主解码器网络(915)中的N2预训练参数。因此,一个或多个预训练参数的第一子集包括N1预训练参数,并且一个或多个预训练参数的第二子集与一个或多个预训练参数相同。因此,预训练上下文模型NN(916)中的N1预训练参数可以被N1对应的替换参数替换,使得预训练视频编码器(1600A)可以被更新为已更新的视频编码器(1600A)。预训练上下文模型NN(916)也被更新为已更新的上下文模型NN(916)。在解码器侧,N1预训练参数可以由N1对应的替换参数替换,N2预训练参数可以由N2对应的替换参数替换,将预训练上下文模型NN(916)更新为更新上下文模型NN(916),并将预训练主解码器网络(915)更新为已更新的主解码器网络(915)。因此,预训练视频解码器(1600B)可以被更新为已更新的视频解码器(1600B)。
在第二种情况下,在编码器侧的预训练视频编码器中不使用一个或多个预训练参数。而在解码器侧的预训练视频解码器中使用一个或多个预训练参数。因此,预训练视频编码器不会被更新,并且在训练过程之后再继续是预训练视频编码器。在一个实施例中,神经网络更新信息指示一个或多个替换参数。可以使用预训练视频编码器对一个或多个图像进行编码,并在具有神经网络更新信息的比特流中传输。
在解码器侧,预训练视频解码器可以接收和解码神经网络更新信息,以确定一个或多个替换参数。当预训练视频解码器中的一个或多个预训练参数被一个或多个替换参数替换时,预训练视频解码器被更新为更新的视频解码器。可以使用更新的视频解码器来解码一个或多个编码图像。
图16A-16B示出了第二种情况的示例。例如,一个或多个预训练参数包括预训练主解码器网络(915)中的N2预训练参数。因此,在编码器侧的预训练视频编码器(例如,预训练视频编码器(1600A))中没有使用一个或多个预训练参数。因此,在训练过程之后,预训练视频编码器(1600A)继续是预训练视频编码器。在解码器侧,N2预训练参数可以被N2对应的替换参数替换,这将预训练主解码器网络(915)更新为已更新的主解码器网络(915)。因此,预训练视频解码器(1600B)可以被更新为已更新的视频解码器(1600B)。
在第三种情况下,在预训练视频编码器中使用一个或多个预训练参数,并且被一个或多个替换参数替换,例如在训练过程中。因此,通过训练过程,预训练视频编码器会被更新为更新的视频编码器。使用更新的视频编码器对一个或多个图像进行编码,并在比特流中传输。没有神经网络更新信息是在比特流中进行编码的。在解码器端,预训练视频解码器没有被更新,仍然是预训练视频解码器。可以使用预训练视频解码器来解码一个或多个编码图像。
图16A-16B示出了第三种情况的示例。例如,一个或多个预训练参数在预训练主编码器网络(911)中。因此,预训练主编码器网络(911)中的一个或多个预训练参数可以被一个或多个替换参数替换,使得预训练视频编码器(1600A)可以被更新为已更新的视频编码器(1600A)。预训练主编码器网络(911)也被更新为已更新的主编码器网络(911)。在解码器侧,不更新预训练视频解码器(1600B)。
在如第一、第二和第三场景中描述的各种示例中,视频解码可以由具有不同能力的预训练解码器来执行,包括具有和不具有更新预训练参数的能力的解码器。
在一个示例中,与用预训练视频编码器和预训练视频解码器对一个或多个图像进行编码相比,通过用更新的视频编码器和/或更新的视频解码器对一个或多个图像进行编码,可以提高压缩性能。因此,内容自适应的在线训练方法可以用于使预训练NIC框架(例如,预训练NIC框架(900))适应目标图像内容(例如,待传输的一个或多个图像),从而微调预训练NIC框架。因此,可以更新编码器侧的视频编码器和/或解码器侧的视频解码器。
内容自适应的在线训练方法可以用作预处理步骤(例如,预编码步骤),用于提高预训练E2E NIC压缩方法的压缩性能。
在一个实施例中,一个或多个图像包括单个输入图像,并且利用该单个输入图像执行微调过程。基于单个输入图像训练和更新(例如,微调)NIC框架(900)。编码器侧的更新的视频编码器和/或解码器侧的更新的视频解码器可以用于编码单个输入图像和可选的其他输入图像。神经网络更新信息可以与已编码的单个输入图像一起被编码到比特流中。
在一个实施例中,一个或多个图像包括多个输入图像,并且利用多个输入图像执行微调过程。基于多个输入图像训练和更新(例如,微调)NIC框架(900)。编码器侧的已更新的视频编码器和/或解码器侧的已更新的解码器可以用于编码多个输入图像和可选的其他输入图像。神经网络更新信息可以与已编码的多个输入图像一起被编码到比特流中。
速率损失R可以随着比特流中神经网络更新信息的信令的增加而增加。当一个或多个图像包括单个输入图像时,针对每个编码图像发出神经网络更新信息的信令,并且速率损失R的第一次增加用于指示由于发出每个图像的神经网络更新信息的信令而导致的速率损失R的增加。当一个或多个图像包括多个输入图像时,神经网络更新信息的信令会被发出并由多个输入图像共享,并且速率损失R的第二次增加用于指示由于发出每个图像的神经网络更新信息的信令而导致的速率损失R的增加。因为神经网络更新信息由多个输入图像共享,所以速率损失R的第二次增加可以小于速率损失R的第一次增加。因此,在一些示例中,使用多个输入图像来微调NIC框架是有利的。
在一个实施例中,待更新的一个或多个预训练参数在预训练NIC框架(900)的一个组件中。即,预训练NIC框架(900)的这一个组件是基于一个或多个替换参数来更新的,并且预训练NIC框架(900)的其他组件是不更新的。
这一个组件可以是预训练上下文模型NN(916)、预训练熵参数NN(917)、预训练主编码器网络(911)、预训练主解码器网络(915)、预训练超级编码器(921)或预训练超级解码器(925)。根据预训练NIC框架(900)中被更新的组件,可以更新预训练视频编码器和/或预训练视频解码器。
在一个示例中,待更新的一个或多个预训练参数在预训练上下文模型NN(916)中,更新预训练上下文模型NN(916),而不更新剩余的组件(911)、(915)、(921)、(917)和(925)。在一个示例中,编码器侧的预训练视频编码器和解码器侧的预训练视频解码器包括预训练上下文模型NN(916),即更新预训练视频编码器和预训练视频解码器。
在一个示例中,待更新的一个或多个预训练参数在预训练超级解码器(925)中,更新预训练超级解码器(925),而不更新剩余的组件(911)、(915)、(916)、(917)和(921)。因此,不更新预训练视频编码器,而更新预训练视频解码器。
在一个实施例中,待更新的一个或多个预训练参数在预训练NIC框架(900)的多个组件中。即,基于一个或多个替换参数来更新预训练NIC框架(900)的多个组件。在一个示例中,预训练NIC框架(900)的多个组件包括配置有神经网络(例如,DNN、CNN)的所有组件。在一个示例中,预训练NIC框架(900)的多个组件包括基于CNN的组件:预训练主编码器网络(911)、预训练主解码器网络(915)、预训练上下文模型NN(916)、预训练熵参数NN(917)、预训练超级编码器(921)和预训练超级解码器(925)。
如上所述,在一个示例中,待更新的一个或多个预训练参数在预训练NIC框架(900)的预训练视频编码器中。在一个示例中,待更新的一个或多个预训练参数在NIC框架(900)的预训练视频解码器中。在一个示例中,待更新的一个或多个预训练参数在预训练NIC框架(900)的预训练视频编码器和预训练视频解码器中。
NIC框架(900)可以基于神经网络,例如,NIC框架(900)中的一个或多个组件可以包括神经网络,例如,CNN、DNN等。如上所述,神经网络可以由不同类型的参数指定,例如,权重、偏置等。NIC框架(900)中的每个基于神经网络的组件(例如,上下文模型NN(916)、熵参数NN(917)、主编码器网络(911)、主解码器网络(915)、超级编码器(921)或超级解码器(925))可以配置有合适的参数,例如,相应的权重、偏置或权重和偏置的组合。当使用CNN时,权重可以包括卷积核中的元素。一种或多种类型的参数可用于指定神经网络。在一个实施例中,待更新的一个或多个预训练参数是偏置项,并且只有偏置项被一个或多个替换参数替换。在一个实施例中,待更新的一个或多个预训练参数是权重,并且只有权重被一个或多个替换参数替换。在一个实施例中,待更新的一个或多个预训练参数包括权重和偏置项,并且包括权重和偏置项的所有预训练参数被一个或多个替换参数替换。在一个实施例中,可以使用其他参数来指定神经网络,并且可以微调其他参数。
微调过程可以包括多次迭代,其中,在迭代微调过程中更新一个或多个预训练参数。当训练损失变平或即将变平时,微调过程可以停止。在一个示例中,当训练损失(例如,R-D损失L)低于第一阈值时,微调过程停止。在一个示例中,当两个连续训练损失之间的差低于第二阈值时,微调过程停止。
如上面特征训练过程中所述,两个超参数(例如,步长和最大步数)可以与损失函数(例如,R-D损耗L)一起用于微调过程。最大迭代次数可以用作终止微调过程的最大迭代次数的阈值。在一个示例中,当迭代次数达到最大迭代次数时,微调过程停止。上文描述了在特征训练过程中步长的选择,并且步长的选择可以适用于图像训练过程。例如,可以基于用于更新NIC框架的图像的方差来确定步长。在微调过程结束时,可以为相应的一个或多个替换参数计算一个或多个更新的参数。在一个实施例中,一个或多个更新的参数被计算为一个或多个替换参数和相应的一个或多个预训练参数之间的差。在一个实施例中,一个或多个更新的参数分别是一个或多个替换参数。
在一个实施例中,可以从一个或多个替换参数中生成一个或多个更新的参数,例如,使用某种性或非线性变换,并且一个或多个更新的参数是基于一个或多个替换参数生成的代表性参数。一个或多个替换参数被转换成一个或多个更新的参数,以进行更好的压缩。
一个或多个更新参数的第一子集对应于一个或多个替换参数的第一子集,一个或多个更新参数的第二子集对应于一个或多个替换参数的第二子集。
在一个示例中,可以压缩一个或多个更新的参数,例如,使用LZMA2,该LZMA2是Lempel–Ziv–Markov链算法(LZMA)、bzip2算法等的变体。在一个示例中,对于一个或多个更新的参数,压缩可以被省略。在一些实施例中,一个或多个更新参数或一个或多个更新参数的第二子集可以作为神经网络更新信息被编码到比特流中,其中,神经网络更新信息指示一个或多个替换参数或一个或多个替换参数的第二子集。
在微调过程之后,在一些示例中,可以基于(i)一个或多个替换参数的第一子集或(ii)一个或多个替换参数来更新或微调编码器侧的预训练视频编码器。可以使用更新的视频编码器将输入图像(例如,用于微调过程的一个或多个图像之一)编码到比特流中。因此,比特流包括编码图像和神经网络更新信息。
如果适用,在一个示例中,神经网络更新信息由预训练视频解码器解码(例如,解压缩),以获得一个或多个更新的参数或一个或多个更新的参数的第二子集。在一个示例中,可以基于一个或多个更新的参数和上述一个或多个替换参数之间的关系来获得一个或多个替换参数或一个或多个替换参数的第二子集。如上所述,可以微调预训练视频解码器,并且可以使用解码的更新视频来解码该编码图像。
NIC框架可以包括任何类型的神经网络,并且使用任何基于神经网络的图像压缩方法,例如,上下文超优编码器-解码器框架(例如,图9中所示的NIC框架)、尺度超优编码器-解码器框架、高斯混合似然框架和高斯混合似然框架的变体、基于RNN的递归压缩方法和基于RNN的递归压缩方法的变体等。
与相关的E2E图像压缩方法相比,本公开的内容自适应的在线训练方法和设备具有以下优点。利用自适应在线训练机制来提高NIC编码效率。使用灵活通用的框架可以适应各种类型的预训练框架和质量度量。例如,各种类型的预训练框架中的某些预训练参数可以通过使用对待编码和待传输的图像的在线训练来替换。
特征训练过程和参数训练过程可以以任何顺序结合。在一个实施例中,依次应用特征训练过程和参数训练过程。例如,应用参数训练过程来更新NIC框架中的一个或多个预训练参数,从而更新视频编码器和/或视频解码器。随后,应用特征训练过程,以使用更新的NIC框架、更新的视频编码器和/或更新的视频解码器来更新初始特征表示。
在一个实施例中,同时应用特征训练过程和参数训练过程。即,NIC框架中的一个或多个预训练参数和初始特征表示在同一迭代更新中更新。可以执行(i)初始特征表示中的一个或多个元素的一个或多个值和(ii)NIC框架中的一个或多个预训练参数的迭代更新,直到与最终特征表示对应的R-D损失L或迭代更新的迭代次数满足预定条件。
参考图19B,在一个示例中,对配置有一个或多个预训练参数的第一子集的NN(例如,主编码器网络(911)、上下文模型NN(916)和/或熵参数NN(917)的一部分)进行更新,其中,NN用于基于最终特征表示生成编码表示。在最后一次迭代中,与最终特征表示对应的编码表示可以基于最终特征表示通过用替换了一个或多个预训练参数的第一子集的替换参数更新的NN生成。替换参数已经基于一个或多个预训练参数的第一子集按照迭代更新的迭代次数进行了更新。
参考图19C,可以基于由替换参数更新的NN从最终特征表示生成编码图像(例如(931))。
在一个示例中,配置有一个或多个预训练参数的第二子集的解码NN(例如,主解码器网络(915))用替换参数进行更新。通过迭代更新的迭代次数,替换参数可以基于一个或多个预训练参数的第二子集进行确定。参考图19B,在最后一次迭代中,可以通过解码NN基于与最终特征表示对应的编码表示生成与最终特征表示对应的重构图像,用解码NN中的一个或多个预训练参数的第二子集的替换参数更新该解码NN。
参考图19C,可以生成用于指示一个或多个预训练参数的第二子集的替换参数的神经网络更新信息。神经网络更新信息可以包括在编码比特流中并传输。此外,在解码器侧,可以使用用解码NN中的一个或多个预训练参数的第二子集的替换参数更新的解码NN(例如,主解码器网络(915)),将编码图像(931)解码成重构图像。
当输入包括一个或多个块而不是图像时,也可以应用本公开中描述的特征训练过程和参数训练过程。当输入图像或块包括原始数据或残差数据时,本公开中描述的特征训练过程和参数训练过程是适用的。
图20示出了概述根据本公开实施例的过程(2000)的流程图。过程(2000)可用于编码图像,例如,原始图像或残差图像。在各种实施例中,过程(2000)由处理电路执行,例如,终端装置(310)、(320)、(330)和(340)中的处理电路、执行NIC框架(例如。NIC框架(900)、(1900B))的功能的处理电路、执行视频编码器(1600A)或(1700)的功能的处理电路。在一个示例中,处理电路执行(i)视频编码器(403)、(603)和(703)之一以及(ii)视频编码器(1600A)和视频编码器(1700)之一的功能的组合。在一些实施例中,过程(2000)在软件指令中实现,即当处理电路执行软件指令时,处理电路执行过程(2000)。该过程开始于(S2001)。在一个示例中,NIC框架基于神经网络。在一个示例中,NIC框架是参考图9描述的NIC框架(900)或框架(1900B)。NIC框架可以基于CNN,例如参考图10-15所描述的。如上所述,视频编码器(例如,(1600A)或(1700))可以在NIC框架中包括多个组件。对基于神经网络的NIC框架进行了预训练,从而对视频编码器进行了预训练。过程(2000)进行到(S2010)。
在(S2010),可以从待编码的输入图像中生成初始特征表示,如上文参考图19B所述。
在(S2020),可以执行初始特征表示中的多个元素的值的迭代更新,直到(i)最终特征表示的率失真损失或(ii)迭代更新的迭代次数中的一个满足预定条件,如以上参考图19A-19B所述。
迭代更新可以包括多次迭代。最终特征表示已基于初始特征表示难找迭代更新的迭代次数进行了更新。最终特征表示可以包括多个元素的更新值。
在最终迭代中,可以基于最终特征表示生成与最终特征表示对应的编码表示。基于与最终特征表示对应的编码表示,可以生成与最终特征表示对应的重构图像。与最终特征表示对应的率失真损失可以基于与最终特征表示对应的编码表示的比特消耗(例如,估计的比特消耗)以及输入图像和与最终特征表示对应的重构图像之间的差异来确定。
在(S2030),可以生成与最终特征表示对应的编码图像,例如,参考图19C所描述的。在一个示例中,可以生成编码比特流,以包括编码图像。
过程(2000)可以适合于各种情况,并且可以相应地调整过程(2000)中的步骤。可以修改、省略、重复和/或组合过程(2000)中的一个或多个步骤。可以使用任何合适的顺序来实现该过程(2000)。可以添加额外的步骤。
本公开中的实施例可以单独使用或者以任何顺序组合使用。此外,方法(或实施例)、编码器和解码器中的每一个可以由处理电路(例如,一个或多个处理器或一个或多个集成电路)来实现。在一个示例中,一个或多个处理器可以执行存储在非暂时性计算机可读介质中的程序。
本公开没有对用于编码器(例如,基于神经网络的编码器)、解码器(例如,基于神经网络的解码器)中的方法施加任何限制。编码器、解码器等中使用的神经网络可以是任何合适类型的神经网络,例如,DNN、CNN等。
即,本公开的内容自适应的在线训练方法可以适应不同类型的NIC框架,例如,不同类型的编码DNN、解码DNN、编码CNN、解码CNN等。
上述技术可以被实现为使用计算机可读指令的计算机软件,并且物理地存储在一个或多个计算机可读介质中。例如,图21示出了适于实现所公开主题的某些实施例的计算机系统(2100)。
计算机软件可以使用任何合适的机器代码或计算机语言来编码,其可以经受汇编、编译、链接或类似机制来创建包括指令的代码,这些指令可以由一个或多个计算机中央处理单元(CPU)、图形处理单元(GPU)等直接执行,或者通过解释、微代码执行等来执行。
指令可以在各种类型的计算机或其组件上执行,包括例如个人计算机、平板计算机、服务器、智能手机、游戏装置、物联网装置等。
图21中所示的计算机系统(2100)的组件本质上是示例性的,并且不旨在对实现本公开的实施例的计算机软件的使用范围或功能提出任何限制。组件的配置也不应被解释为对计算机系统(2100)的示例性实施例中所示的任何一个组件或组件组合有任何依赖性或要求。
计算机系统(2100)可以包括某些人机接口输入装置。这种人机接口输入装置可以响应一个或多个人类用户的输入,例如触觉输入(例如:击键、滑动、数据手套移动)、音频输入(例如:语音、鼓掌)、视觉输入(例如:手势)、嗅觉输入(未示出)进行的输入。人机接口装置还可以用于捕捉不一定与人的有意识输入直接相关的某些媒体,例如,音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静止图像相机获得的照片图像)、视频(例如,二维视频、包括立体视频的三维视频)。
输入人机接口装置可以包括以下一个或多个(每个仅描绘了一个):键盘(2101)、鼠标(2102)、轨迹板(2103)、触摸屏(2110)、数据手套(未示出)、操纵杆(2105)、麦克风(2106)、扫描仪(2107)、相机(2108)。
计算机系统(2100)还可以包括某些人机接口输出装置。这种人机接口输出装置可以刺激一个或多个人类用户的感觉,例如通过触觉输出、声音、光和气味/味道。这种人机接口输出装置可以包括触觉输出装置(例如,通过触摸屏(2110)、数据手套(未示出)或操纵杆(2105)的触觉反馈,但是也可以有不用作输入装置的触觉反馈装置)、音频输出装置(例如:扬声器(2109)、耳机(未示出))、视觉输出装置(例如,屏幕(2110),包括CRT屏幕、LCD屏幕、等离子屏幕、OLED屏幕,每个都具有或不具有触摸屏输入能力,每个都具有或不具有触觉反馈能力——其中一些能够输出二维视觉输出或多于三维的输出,通过诸如立体输出之类的方式;虚拟现实眼镜(未示出)、全息显示器和烟雾箱(未示出))以及打印机(未示出)。
计算机系统(2100)还可以包括人类可访问的存储装置及其相关联的介质,例如,包括具有CD/DVD或类似介质(2121)的CD/DVD ROM/RW(2120)的光学介质、拇指驱动器(2122)、可移动硬盘驱动器或固态驱动器(2123)、诸如磁带和软盘(未示出)之类的传统磁介质、诸如安全加密狗(未示出)之类的专用ROM/ASIC/PLD装置等。
本领域技术人员还应该理解,结合当前公开的主题使用的术语“计算机可读介质”不包括传输介质、载波或其他瞬时信号。
计算机系统(2100)还可以包括到一个或多个通信网络(2155)的接口(2154)。网络例如可以是无线的、有线的、光学的。网络还可以是局域的、广域的、大都市的、车辆的和工业的、实时的、延迟容忍的等。网络的示例包括诸如以太网、无线LAN之类的局域网、包括GSM、3G、4G、5G、LTE等的蜂窝网络、包括有线电视、卫星电视和地面广播电视的电视有线或无线广域数字网络、包括CANBus的车辆和工业网络等。某些网络通常需要连接到某些通用数据端口或外围总线(2149)(例如,计算机系统(2100)的USB端口)的外部网络接口适配器;其他的通常通过连接到如下所述的系统总线而集成到计算机系统(2100)的核心中(例如,PC计算机系统中的以太网接口或智能电话计算机系统中的蜂窝网络接口)。使用这些网络中的任何一个,计算机系统(2100)可以与其他实体通信。这种通信可以是单向的、只接收的(例如,广播电视)、单向的、只发送的(例如,到某些CANbus装置的CANbus),或者是双向的,例如,到使用局域或广域数字网络的其他计算机系统。如上所述,某些协议和协议栈可以用在这些网络和网络接口的每一个上。
前述人机接口装置、人类可访问的存储装置和网络接口可以附接到计算机系统(2100)的核心(2140)。
核心(2140)可以包括一个或多个中央处理单元(Central Processing Units,简称CPU)(2141)、图形处理单元(Graphics Processing Units,简称GPU)(2142)、现场可编程门区域(Field Programmable Gate Areas,简称FPGA)(2143)形式的专用可编程处理单元、用于某些任务的硬件加速器(2144)、图形适配器(2150)等。这些装置连同只读存储器(Read-only memory,简称ROM)(2145)、随机存取存储器(Random-access memory,简称RAM)(2146)、诸如内部非用户可访问硬盘驱动器、SSD之类的内部大容量存储器(2147)可以通过系统总线(2148)连接。在一些计算机系统中,系统总线(2148)可以以一个或多个物理插头的形式访问,以允许额外CPU、GPU等的扩展。外围装置可以直接或者通过外围总线(2149)连接到核心的系统总线(2148)。在一个示例中,屏幕(2110)可以连接到图形适配器(2150)。外围总线的架构包括PCI、USB等。
CPU(2141)、GPU(2142)、FPGA(2143)和加速器(2144)可以执行某些指令,这些指令组合起来可以构成上述计算机代码。该计算机代码可以存储在ROM(2145)或RAM(2146)中。过渡数据也可以存储在RAM(2146)中,而永久数据可以存储在例如内部大容量存储器(2147)中。可以通过使用高速缓冲存储器来实现对任何存储装置的快速存储和检索,高速缓冲存储器可以与一个或多个CPU(2141)、GPU(2142)、大容量存储器(2147)、ROM(2145)、RAM(2146)等紧密关联。
计算机可读介质上可以具有用于执行各种计算机实现的操作的计算机代码。介质和计算机代码可以是为了本公开的目的而专门设计和构造的,或者可以是计算机软件领域的技术人员公知和可获得的类型。
作为示例而非限制,具有架构(2100)的计算机系统,特别是核心(2140)可以提供作为处理器(包括CPU、GPU、FPGA、加速器等)的结果的功能,其执行嵌入在一个或多个有形的计算机可读介质中的软件。这种计算机可读介质可以是与如上所述的用户可访问的大容量存储器相关联的介质以及具有非暂时性的核心(2140)的某些存储器,例如,核心内部大容量存储器(2147)或ROM(2145)。实现本公开的各种实施例的软件可以存储在这样的装置中并由核心(2140)执行。根据特定需要,计算机可读介质可以包括一个或多个存储装置或芯片。该软件可以使核心(2140)并且特别是其中的处理器(包括CPU、GPU、FPGA等)执行本文描述的特定过程或特定过程的特定部分,包括定义存储在RAM(2146)中的数据结构并且根据软件定义的过程修改这样的数据结构。此外或作为替代,计算机系统可以提供作为硬连线或以其他方式包含在电路(例如:加速器(2144))中的逻辑的结果的功能,其可以代替软件或与软件一起操作来执行本文描述的特定过程或特定过程的特定部分。在适当的情况下,对软件的引用可以包括逻辑,反之亦然。在适当的情况下,对计算机可读介质的引用可以包括存储有所要执行的软件的电路(例如,集成电路(Integrated Circuit,简称IC))、包含用于执行的逻辑的电路或者这两者。本公开包含硬件和软件的任何合适的组合。
附录A:缩略语
JEM:共同探索模式(joint exploration model)
VVC:多功能视频编码(versatile video coding)
BMS:基准集(benchmark set)
MV:运动矢量(Motion Vector)
HEVC:高效视频编码(High Efficiency Video Coding)
SEI:补充增强信息(Supplementary Enhancement Information)
VUI:视频可用性信息(Video Usability Information)
GOP:图片组(Groups of Pictures)
TU:变换单元(Transform Units)
PU:预测单元(Prediction Units)
CTU:编码树单元(Coding Tree Units)
CTB:编码树块(Coding Tree Blocks)
PB:预测块(Prediction Blocks)
HRD:假设参考解码器(Hypothetical Reference Decoder)
SNR:信噪比(Signal Noise Ratio)
CPU:中央处理器(Central Processing Units)
GPU:图形处理单元(Graphics Processing Units)
CRT:阴极射线管(Cathode Ray Tube)
LCD:液晶显示器(Liquid-Crystal Display)
OLED:有机发光二极管(Organic Light-Emitting Diode)
CD:光盘(Compact Disc)
DVD:数字视频光盘(Digital Video Disc)
ROM:只读存储器(Read-Only Memory)
RAM:随机存取存储器(Random Access Memory)
ASIC:专用集成电路(Application-Specific Integrated Circuit)
PLD:可编程逻辑器件(Programmable Logic Device)
LAN:局域网(Local Area Network)
GSM:全球移动通信系统(Global System for Mobile communications)
LTE:长期演进(Long-Term Evolution)
CANBus:控制器局域网总线(Controller Area Network Bus)
USB:通用串行总线(Universal Serial Bus)
PCI:外围组件互连(Peripheral Component Interconnect)
FPGA:现场可编程门区域(Field Programmable Gate Areas)
SSD:固态硬盘(solid-state drive)
IC:集成电路(Integrated Circuit)
CU:编码单元(Coding Unit)
NIC:神经图像压缩(Neural Image Compression)
R-D:率失真(Rate-Distortion)
E2E:端到端(End to End)
ANN:人工神经网络(Artificial Neural Network)
DNN:深度神经网络(Deep Neural Network)
CNN:卷积神经网络(Convolution Neural Network)
虽然本公开已经描述了几个示例性实施例,但是存在落入本公开范围内的变更、置换和各种替代等同物。因此,应当理解,本领域技术人员将能够设计出许多系统和方法,尽管在此没有明确示出或描述,但是这些系统和方法体现了本公开的原理,并且因此在本公开的精神和范围内。

Claims (20)

1.一种用于视频编码的方法,包括:
从待编码的输入图像生成初始特征表示;
对所述初始特征表示中的多个元素的值执行迭代更新,所述迭代更新包括:
基于最终特征表示,生成与所述最终特征表示对应的编码表示,所述最终特征表示是通过所述迭代更新的多次迭代对所述初始特征表示进行更新后得到,以及
基于所述编码表示生成与所述最终特征表示对应的重构图像;以及
生成与具有多个元素的更新值的所述最终特征表示对应的编码图像,其中,
(i)与所述最终特征表示对应的的率失真损耗或(ii)所述迭代更新的迭代次数,二者中的一个满足预定条件,以及
基于与所述最终特征表示对应的所述编码表示的比特消耗以及所述输入图像和与所述最终特征表示对应的所述重构图像之间的差异来确定所述率失真损耗。
2.根据权利要求1所述的方法,其中,
所述生成所述编码表示包括:
向所述最终特征表示添加噪声,以生成与所述最终特征表示对应的第一表示;
基于所述第一表示的模拟熵编码来生成所述编码表示,以及所述生成所述重构图像包括编码表示的模拟熵解码。
3.根据权利要求2所述的方法,其中,所述基于所述模拟熵编码生成所述编码表示还包括:
基于所述最终特征表示来确定上下文模型,以及
基于具有确定的所述上下文模型的所述第一表示的模拟熵编码来生成所述编码表示。
4.根据权利要求1所述的方法,其中,
所述生成所述编码图像包括将所述最终特征表示量化为量化表示,基于所述量化表示生成所述编码图像。
5.根据权利要求4所述的方法,其中,所述生成所述编码图像包括:
将所述量化表示熵编码成所述编码图像。
6.根据权利要求5所述的方法,其中,所述将所述量化表示熵编码成所述编码图像包括:将所述量化表示算术编码成所述编码图像。
7.根据权利要求5所述的方法,其中,所述将所述量化表示熵编码成所述编码图像还包括:
基于所述最终特征表示来确定上下文模型,以及
基于确定的所述上下文模型,将所述量化表示熵编码成所述编码图像。
8.根据权利要求1所述的方法,其中,
所述对所述初始特征表示中的多个元素的值执行迭代更新包括:对(i)所述初始特征表示中的多个元素的值的和(ii)用于基于所述最终特征表示生成所述编码表示的神经网络NN中的预训练参数执行迭代更新,所述生成所述编码表示包括:通过由替换参数替换所述预训练参数进行更新后的NN,基于所述最终特征表示生成与所述最终特征表示对应的所述编码表示,所述替换参数已经通过迭代更新的迭代次数从所述预训练参数确定,以及
所述生成所述编码图像包括基于由所述替换参数更新后的NN,从所述最终特征表示生成所述编码图像。
9.根据权利要求1所述的方法,其中,
所述对所述初始特征表示中的多个元素的值执行迭代更新包括:对(i)所述初始特征表示中的多个元素的值的和(ii)用于基于所述编码表示生成所述重构图像的神经网络NN中的预训练参数执行迭代更新,
所述生成所述重构图像包括通过由替换参数替换所述预训练参数进行更新后的NN,基于与所述最终特征表示对应的所述编码表示,生成与所述最终特征表示对应的所述重构图像,所述替换参数已经通过迭代更新的迭代次数从所述预训练参数确定,以及
所述方法还包括:
生成包括在编码比特流中的神经网络更新信息,所述神经网络更新信息用于指示所述替换参数,以及
在所述编码比特流中传输所述编码图像和所述神经网络更新信息。
10.根据权利要求1所述的方法,还包括:
在编码比特流中传输所述编码图像。
11.一种用于视频编码的设备,包括:
处理电路,其被配置为:
从要编码的输入图像生成初始特征表示;
执行初始特征表示中的多个元素的值的迭代更新,所述迭代更新包括:
基于最终特征表示,生成对应于最终特征表示的编码表示,所述最终特征表示已经通过迭代更新的多次迭代从初始特征表示更新,以及
基于编码表示生成对应于最终特征表示的重构图像;以及
生成对应于具有多个元素的更新值的最终特征表示的编码图像,其中,
(i)对应于最终特征表示的率失真损耗或(ii)迭代更新的迭代次数中的一个满足预定条件,以及
基于对应于最终特征表示的编码表示的比特消耗以及输入图像和对应于最终特征表示的重构图像之间的差异来确定率失真损耗。
12.根据权利要求11所述的设备,其中,所述处理电路被配置为:
向最终特征表示添加噪声,以生成对应于最终特征表示的第一表示;
基于所述第一表示的模拟熵编码来生成所述编码表示,以及执行编码表示的模拟熵解码。
13.根据权利要求12所述的设备,其中,所述处理电路被配置为:
基于最终特征表示来确定上下文模型,以及
基于具有所确定的上下文模型的第一表示的模拟熵编码来生成编码表示。
14.根据权利要求11所述的设备,其中,所述处理电路被配置为:
将最终特征表示量化为量化表示,基于量化表示生成所述编码图像。
15.根据权利要求14所述的设备,其中,所述处理电路被配置为:
将量化表示熵编码成编码图像。
16.根据权利要求15所述的设备,其中,所述处理电路被配置为将所述量化表示算术编码成编码图像。
17.根据权利要求15所述的设备,其中,所述处理电路被配置为:
基于最终特征表示来确定上下文模型,以及
基于所确定的上下文模型,将量化表示熵编码成编码图像。
18.根据权利要求11所述的设备,其中,所述处理电路被配置为:
执行(i)初始特征表示中的多个元素的值的和(ii)用于基于最终特征表示生成编码表示的神经网络(NN)中的预训练参数的迭代更新,包括
通过用替换预训练参数的替换参数更新的NN,基于最终特征表示生成对应于最终特征表示的编码表示,所述替换参数已经通过迭代更新的迭代次数从预训练参数确定,以及
基于由替换参数更新的NN,从最终特征表示生成编码图像。
19.根据权利要求11所述的设备,其中,所述处理电路被配置为:
执行(i)初始特征表示中的多个元素的值的和(ii)用于基于编码表示生成重构图像的神经网络(NN)中的预训练参数的迭代更新,包括
通过用替换预训练参数的替换参数更新的NN,基于对应于最终特征表示的编码表示,生成对应于最终特征表示的重构图像,所述替换参数已经通过迭代更新的迭代次数从预训练参数确定,
生成包括在编码比特流中的神经网络更新信息,所述神经网络更新信息指示替换参数,以及
在编码比特流中传输所述编码图像和所述神经网络更新信息。
20.一种非暂时性计算机可读存储介质,存储至少一个处理器能够执行的程序,以执行:
从要编码的输入图像生成初始特征表示;
执行初始特征表示中的多个元素的值的迭代更新,所述迭代更新包括:
基于最终特征表示,生成对应于最终特征表示的编码表示,所述最终特征表示已经通过迭代更新的多次迭代从初始特征表示更新,以及
基于编码表示生成对应于最终特征表示的重构图像;以及
生成对应于具有多个元素的更新值的最终特征表示的编码图像,其中,
(i)对应于最终特征表示的率失真损耗或(ii)迭代更新的迭代次数中的一个满足预定条件,以及
基于对应于最终特征表示的编码表示的比特消耗以及输入图像和对应于最终特征表示的重构图像之间的差异来确定率失真损耗。
CN202280005727.1A 2021-04-30 2022-04-29 用于视频编码的方法和设备及计算机可读存储介质 Active CN116114248B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202411164002.4A CN118784841A (zh) 2021-04-30 2022-04-29 用于视频编码的方法和设备及计算机可读存储介质

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163182476P 2021-04-30 2021-04-30
US63/182,476 2021-04-30
US17/730,026 2022-04-26
US17/730,026 US11917162B2 (en) 2021-04-30 2022-04-26 Content-adaptive online training with feature substitution in neural image compression
PCT/US2022/072028 WO2022232847A1 (en) 2021-04-30 2022-04-29 Content-adaptive online training with feature substitution in neural image compression

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202411164002.4A Division CN118784841A (zh) 2021-04-30 2022-04-29 用于视频编码的方法和设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN116114248A true CN116114248A (zh) 2023-05-12
CN116114248B CN116114248B (zh) 2024-08-13

Family

ID=83807975

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202280005727.1A Active CN116114248B (zh) 2021-04-30 2022-04-29 用于视频编码的方法和设备及计算机可读存储介质
CN202411164002.4A Pending CN118784841A (zh) 2021-04-30 2022-04-29 用于视频编码的方法和设备及计算机可读存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202411164002.4A Pending CN118784841A (zh) 2021-04-30 2022-04-29 用于视频编码的方法和设备及计算机可读存储介质

Country Status (6)

Country Link
US (1) US11917162B2 (zh)
EP (2) EP4331232A4 (zh)
JP (1) JP7368639B2 (zh)
KR (1) KR20230003539A (zh)
CN (2) CN116114248B (zh)
WO (1) WO2022232847A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435906B (zh) * 2023-12-18 2024-03-12 湖南行必达网联科技有限公司 基于交叉熵的新能源汽车配置特征选择方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110182352A1 (en) * 2005-03-31 2011-07-28 Pace Charles P Feature-Based Video Compression
CN109885709A (zh) * 2019-01-08 2019-06-14 五邑大学 一种基于自编码预降维的图像检索方法、装置和存储介质
WO2019185987A1 (en) * 2018-03-29 2019-10-03 Nokia Technologies Oy Entropy-friendly neural network representations and their use in training and using neural networks such as autoencoders
US20200120340A1 (en) * 2017-07-06 2020-04-16 Samsung Electronics Co., Ltd. Method and device for encoding or decoding image
US20210042503A1 (en) * 2018-11-14 2021-02-11 Nvidia Corporation Generative adversarial neural network assisted video compression and broadcast
EP3799431A1 (en) * 2019-09-30 2021-03-31 iSize Limited Preprocessing image data

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1185106A4 (en) * 1999-01-29 2006-07-05 Mitsubishi Electric Corp METHOD FOR ENCODING IMAGE CHARACTERISTICS AND IMAGE SEARCHING METHOD
EP2663076B1 (en) * 2009-04-20 2016-09-14 Dolby Laboratories Licensing Corporation Filter selection for video pre-processing in video applications
EP3022899A4 (en) * 2013-07-15 2016-08-03 Microsoft Technology Licensing Llc COMPRESSION OF IMAGE SET BASED ON CHARACTERISTICS
WO2017136083A1 (en) * 2016-02-05 2017-08-10 Google Inc. Compressing images using neural networks
US20200160565A1 (en) * 2018-11-19 2020-05-21 Zhan Ma Methods And Apparatuses For Learned Image Compression
US11831867B2 (en) * 2019-02-15 2023-11-28 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
US11790566B2 (en) * 2020-05-12 2023-10-17 Tencent America LLC Method and apparatus for feature substitution for end-to-end image compression
US11924445B2 (en) * 2020-09-25 2024-03-05 Qualcomm Incorporated Instance-adaptive image and video compression using machine learning systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110182352A1 (en) * 2005-03-31 2011-07-28 Pace Charles P Feature-Based Video Compression
US20200120340A1 (en) * 2017-07-06 2020-04-16 Samsung Electronics Co., Ltd. Method and device for encoding or decoding image
WO2019185987A1 (en) * 2018-03-29 2019-10-03 Nokia Technologies Oy Entropy-friendly neural network representations and their use in training and using neural networks such as autoencoders
US20210042503A1 (en) * 2018-11-14 2021-02-11 Nvidia Corporation Generative adversarial neural network assisted video compression and broadcast
CN109885709A (zh) * 2019-01-08 2019-06-14 五邑大学 一种基于自编码预降维的图像检索方法、装置和存储介质
EP3799431A1 (en) * 2019-09-30 2021-03-31 iSize Limited Preprocessing image data

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YAT-HONG LAM等: "AHG11: Content-adaptive neural network post-processing filter(JVET-V0075)", 《JOINT VIDEO EXPERTS TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29 22ND MEETING, BY TELECONFERENCE, 20–28 APR. 2021》, 21 April 2021 (2021-04-21) *

Also Published As

Publication number Publication date
EP4331232A1 (en) 2024-03-06
JP7368639B2 (ja) 2023-10-24
EP4107952A1 (en) 2022-12-28
KR20230003539A (ko) 2023-01-06
EP4331232A4 (en) 2024-09-11
CN116114248B (zh) 2024-08-13
WO2022232847A1 (en) 2022-11-03
CN118784841A (zh) 2024-10-15
JP2023528176A (ja) 2023-07-04
US20220353512A1 (en) 2022-11-03
EP4107952A4 (en) 2023-05-24
US11917162B2 (en) 2024-02-27

Similar Documents

Publication Publication Date Title
US11979565B2 (en) Content-adaptive online training method and apparatus for post-filtering
CN115668952B (zh) 用于视频编码的方法、装置及计算机可读存储介质
CN116349225B (zh) 视频解码方法和装置、电子设备和存储介质
CN116114248B (zh) 用于视频编码的方法和设备及计算机可读存储介质
US11889112B2 (en) Block-wise content-adaptive online training in neural image compression
US11758168B2 (en) Content-adaptive online training with scaling factors and/or offsets in neural image compression
US20220353521A1 (en) Method and apparatus for content-adaptive online training in neural image compression
US12058314B2 (en) Block-wise content-adaptive online training in neural image compression with post filtering

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40086562

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant