CN116965029A - 使用卷积神经网络对图像进行译码的装置和方法 - Google Patents

使用卷积神经网络对图像进行译码的装置和方法 Download PDF

Info

Publication number
CN116965029A
CN116965029A CN202180094577.1A CN202180094577A CN116965029A CN 116965029 A CN116965029 A CN 116965029A CN 202180094577 A CN202180094577 A CN 202180094577A CN 116965029 A CN116965029 A CN 116965029A
Authority
CN
China
Prior art keywords
layers
layer
parameters
neural network
updatable
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.)
Pending
Application number
CN202180094577.1A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN116965029A publication Critical patent/CN116965029A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/096Transfer learning
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明涉及使用部分在线训练的神经网络对一个或多个图像(例如视频)进行编码和解码。因此,在编码器中选择待训练的一个或多个层。然后,对所述神经网络进行训练,其中,更新所述选择的层的参数。剩余层的参数保持不变,且不更新。在码流中提供更新后的参数。也对所述一个或多个图像进行编码。解码器接收所述更新后的参数的指示,仅更新那些指示的参数,并应用所获得的神经网络。

Description

使用卷积神经网络对图像进行译码的装置和方法
技术领域
本发明涉及图像的编码和解码,尤其涉及使用神经网络,例如作为环内滤波器或后处理滤波器的神经网络对图像的编码和解码。
背景技术
视频译码(视频编码和解码)广泛用于数字视频应用,例如广播数字电视、基于互联网和移动网络的视频传输、视频聊天、视频会议等实时会话应用、DVD和蓝光光盘、视频内容采集和编辑系统、移动设备视频记录以及安全应用的可携式摄像机。
自从1990年H.261标准中基于块的混合视频译码方法发展以来,新的视频译码技术和工具相继出现,为新的视频编码标准奠定了基础。与前代标准相比,大多数视频编码标准的目标之一是在保证图像质量的情况下,降低码率。其它视频编码标准包括MPEG-1视频、MPEG-2视频、VP8、VP9、AV1、ITU-T H.262/MPEG-2、ITU-T H.263、ITU-TH.264/MPEG-4第10部分、高级视频编码(Advanced Video Coding,AVC)、ITU-T H.265/高效视频编码(HighEfficiency Video Coding,HEVC)、ITU-T H.266/通用视频编码(Versatile VideoCoding,VVC)和这些标准的扩展,如可扩展性和/或三维(three-dimensional,3D)扩展。
即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量有限的通信网络中进行流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后通过现代电信网络进行传输。由于内存资源可能有限,当在存储设备上存储视频时,该视频的大小也可能成为问题。视频压缩设备通常在源侧使用软件和/或硬件对视频数据进行编码,然后进行传输或存储,从而减少表示数字视频图像所需的数据量。然后,由对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术能够在几乎不牺牲图像质量的前提下提高压缩比。
视频的编码和解码可以由标准视频编码器和解码器执行,例如兼容H.264/AVC、HEVC(H.265)、VVC(H.266)或其它视频编码技术。
发明内容
本发明实施例提供了用于使用神经网络对图像进行编码和解码或一般处理的装置和方法。
本发明实施例由独立权利要求的特征定义,并且实施例的其它有利实现方式由从属权利要求的特征定义。
根据一个实施例,提供了一种用于对一个或多个输入图像进行编码的装置,其中,所述编码包括使用神经网络(neural network,NN),所述装置包括:处理电路,用于:从所述神经网络的层中选择一个或多个可更新层;根据所述一个或多个输入图像,训练所述神经网络,其中,所述训练包括更新所述一个或多个(选择的)可更新层的一个或多个参数,并保持所述神经网络层中的一个或多个预配置层的参数;将关于所述一个或多个可更新层的一个或多个更新后的参数的信息编码到参数码流部分中;将所述一个或多个输入图像编码到图像码流部分中。通过仅重训练或更新所述神经网络所有层的子集(例如,一个或多个,但不是全部),即具有可更新参数的一个或多个可更新层,可以加速NN训练,从而减少用于所述NN训练的时间。此外,随着对更新后的参数的信息(在所述NN训练之后)进行编码,指示开销也会减少。因此,只编码了部分NN参数,而不是对整个网络进行参数化。
根据一种实现方式,所述处理电路还用于将关于所述一个或多个可更新层的信息编码到层码流部分中。例如,关于所述一个或多个可更新层的信息包括所述一个或多个可更新层的层索引,所述层索引是根据预设规则进行索引的所述神经网络的层中的一个或多个可更新层的索引。因此,可能不需要所述可更新层的更新信息,从而减少了指示开销。反过来,如果被指示,指示开销仍然减少,因为信息与可更新层(一个或多个,但不是全部)相关,而不是与神经网络的整个层相关。因此,层码流部分的比特量较小。
在另一个示例中,可更新层具有一个或多个可更新参数和一个或多个预配置参数;所述处理电路用于通过更新所述一个或多个可更新层的所述一个或多个可更新参数并保持所述一个或多个预配置参数来训练所述神经网络。因此,通过仅重训练或更新所述神经网络所有层的子集(一个或多个,但不是全部),即具有可更新参数的一个或多个可更新层,可以加速NN训练,从而减少用于所述NN训练的时间。此外,用于计算和指示关于更新后的参数的更新信息的开销被减少,因为并非所述可更新层的所有可更新参数都可以被更新。因此,在所述NN训练期间更新的参数量进一步减少。
在一种示例性实现方式中,所述可更新层包括权重为所述一个或多个可更新参数的可更新子层和权重为所述一个或多个预配置参数的预配置子层。所述可更新层的相同输入提供给所述可更新子层和所述预配置子层。所述可更新层的输出是所述可更新子层和所述预配置子层的元素和。使用所述可更新层的子层并在保持预配置权重的同时训练可更新子层的权重,有助于根据相对于预配置权重的权重变化来训练可更新层。这被称为增量权重训练。因此,通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)的NN训练,即具有可更新参数的所述一个或多个可更新层,有助于加速NN训练,从而减少用于所述NN训练的时间,因为预配置权重被用作所述训练的参考。换句话说,所述NN训练的收敛速度可以加快。
根据一种实现方式,所述可更新子层包括稀疏神经网络。因此,所述可更新子层的参数数量减少。例如,所述可更新子层包括张量训练神经网络层。
此外,所述处理电路用于通过与用于训练所述一个或多个预配置参数的训练方法相比较不复杂的训练方法更新所述一个或多个可更新参数。因此,通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)来降低所述NN训练的复杂性,因此可以节省训练成本(例如复杂性、延迟等)。
在一种实现性示例中,所述一个或多个可更新层为卷积层。此外,以下至少一项适用:(i)所述较不复杂的训练方法处理的参数更新比用于训练所述一个或多个预配置参数的训练方法处理的参数更新更少;(ii)所述较不复杂的训练方法更新的卷积核比用于训练所述一个或多个预配置参数的训练方法更新的卷积核更小。因此,通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)来降低所述NN训练的复杂性。此外,较小的卷积核作为输出的更新参数较少,因此减少了所述更新参数的指示开销。
此外,所述处理电路用于:通过伪随机初始化所述一个或多个可更新层的所述一个或多个可更新参数,更新所述一个或多个可更新参数;使用原始图像和重建图像对执行所述训练。因此,所述可更新层被快速且简单地初始化,从而降低了训练复杂性。
在一些实施例中,所述处理电路用于通过根据原始图像和重建图像对更新所述一个或多个可更新层的所述一个或多个参数,训练所述神经网络。例如,所述重建图像是所述NN的输入,并且训练所述NN(分别是所述一个或多个可更新层的所述一个或多个参数)以减少所述重建图像和所述对应的原始图像之间的差异。例如,所述一个或多个可更新层的所述一个或多个参数包括所述一个或多个可更新层的权重。因此,所述神经网络的架构具有低复杂性,因为在这种情况下,所述可更新层不包括并行布置的两个子层。
根据一种实现方式,所述处理电路还用于:根据所述一个或多个输入图像,通过预训练所述神经网络进行预配置,其中,所述预训练包括以比训练所述一个或多个可更新层更低的频率来更新所述一个或多个预配置层的参数;将关于所述一个或多个预配置层的更新后的参数的信息编码到网络码流部分中。因此,可以通过使用更新的预配置参数,通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)来改进对神经网络的实际训练。因此,与更新频率较低的预配置参数相关的信息与和更新频率较高的可更新参数相关的信息分开。
此外,所述处理电路还用于:获取多个预配置层集;从所述多个预配置层集中选择包括所述神经网络的所述一个或多个预配置层的集合,其中,关于所述更新后的参数的信息是选择的集合的指示。所述选择的集合的指示可以是相应神经网络层的索引。或者,该指示可以是所述NN的参数。因此,通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)的所述NN训练可以通过选择现有NN(即,通过预训练预配置的NN)来适应特定的压缩任务,从而改进整体NN训练。
例如,对所述层的选择和/或更新是以不同的间隔执行的。因此,可以避免层选择和层更新之间的干扰,这提高了所述NN训练的性能和稳定性。此外,通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)来进行所述NN训练,可以根据对层选择或层更新的偏好进行调整。
此外,关于所述一个或多个可更新层的信息是以比编码关于所述一个或多个可更新层的一个或多个更新后的参数的信息更低的频率编码的。这意味着,所述可更新层的选择比所述可更新层参数的重训练更频繁。因此,通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)来进行所述NN训练,可以优先于层更新(即更新后的参数),而不是层选择,加速了所述NN训练。
在一些示例性实现方式中,所述训练是根据第一数量个输入图像和重建图像对进行的。所述对关于所述一个或多个更新后的参数的信息的所述编码是在对所述第一数量个输入图像的编码之后进行的,并且所述经过训练的神经网络待应用于第二数量个重建图像。所述第二数量大于所述第一数量。因此,通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)的所述NN训练可以在较小的输入图像对集合上执行,而解码端NN可以应用于较大的输入图像集合,因此加速所述NN训练并使其不那么复杂。不过,可能会定期调整图像内容。
根据一个示例,所述神经网络的所述一个或多个预配置层和/或所述一个或多个可更新层为卷积层。
此外,所述处理电路用于根据包括速率、失真和复杂性中的至少一个的成本函数的优化来选择所述一个或多个可更新层。因此,可以以优化的方式选择一个或多个可更新层,并且因此通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)来改进所述神经网络的整体训练。
在一种实现方式中,所述神经网络是经过训练用于后滤波的神经网络。
此外,使用所述神经网络对所述一个或多个图像进行编码。
在另一种实现方式中,所述神经网络经过训练以执行环内滤波、端到端图像译码、自适应采样和图像译码参数的译码中的一个。因此,所述神经网络的相同架构可用于训练不同类型的视频压缩任务的NN。因此,通过仅重训练和更新所述神经网络所有层的子集(一个或多个,但不是全部)的所述NN训练可以以灵活的方式执行,并适应于各种任务。
根据一个实施例,提供了一种用于对一个或多个输入图像进行解码的装置,其中,所述解码包括使用神经网络。所述装置包括:处理电路,用于:从参数码流部分中解码关于一个或多个(选择的)可更新层的一个或多个参数的信息;从图像码流部分中解码所述一个或多个输入图像,其中,所述解码包括用所述神经网络处理,其中,所述神经网络包括:包括一个或多个经解码参数的所述一个或多个可更新层;具有预配置参数的一个或多个预配置层。因此,通过仅更新所述神经网络所有层的子集(一个或多个,但不是全部)来更新所述神经网络,即具有可更新参数的一个或多个可更新层,有助于减少指示开销,以更新所述NN并加速所述NN的更新。此外,用于计算和指示关于更新后的参数的更新信息的开销被减少,因为并非所述可更新层的所有可更新参数都可以被更新。此外,可以通过使用具有小于预配置参数量的量的更新后的参数的神经网络快速解码所述一个或多个输入图像。因此,当使用更新的NN参数时,图像解码的效率提高了,同时确保了保质量的经解码图像。
在一种实现方式中,所述处理电路用于从层码流部分中解码关于一个或多个可更新层的信息。例如,关于所述一个或多个可更新层的信息包括所述一个或多个可更新层的层索引,所述层索引是根据预设规则进行索引的所述神经网络的层中的一个或多个可更新层的索引。因此,所述解码器可以不需要解码关于所述可更新层的信息,从而减少了处理所述更新信息的指示开销。反过来,如果被指示,解码开销仍然减少,因为信息与可更新层相关,而不是与所述神经网络的整个层相关。因此,被解码的层码流部分的比特量仍然较小,因此有助于快速解码所述可更新层的更新信息。
在一种示例性实现方式中,可更新层具有一个或多个可更新参数和一个或多个预配置参数;所述处理电路用于更新所述一个或多个可更新层的所述一个或多个可更新参数并保持所述一个或多个预配置参数。因此,所述基于NN的图像解码可以进一步加速,以及用于解码关于更新后的参数的信息的开销,因为并非所述可更新层的所有可更新参数都可以更新。因此,表示所述NN的更新参数配置的参数量进一步减少。
在一些示例性实现方式中,可更新层包括权重为所述一个或多个可更新参数的可更新子层和权重为所述一个或多个预配置参数的预配置子层;所述可更新层的相同输入提供给所述可更新子层和所述预配置子层;所述可更新层的输出是所述可更新子层和所述预配置子层的元素和。因此,所述图像解码被加速,因为仅更新权重变化,而使用预配置权重作为参考。
根据一个示例,所述可更新子层是或包括稀疏神经网络层。因此,所述可更新子层的参数数量减少。此外,所述可更新子层包括张量训练神经网络层。所述张量训练神经网络是稀疏NN的一个示例。
在一种示例性实现方式中,所述一个或多个可更新层是卷积层;以下至少一项适用:所述可更新子层的参数比所述预配置子层更少;所述可更新子层应用的卷积核比所述预配置子层更小。因此,减少了图像解码所需的时间。此外,较小的卷积核具有较少的更新后的参数,因此减少了正在处理的数据量。
此外,所述一个或多个可更新层的所述一个或多个参数包括所述一个或多个可更新层的权重。因此,所述可更新层的所述可更新参数是直接更新的权重。因此,所述神经网络的架构具有低复杂性,因为在这种情况下,所述卷积层不包括并行布置的两个子层。
在一些示例性实现方式中,所述处理电路还用于:从网络码流部分中解码关于所述一个或多个预配置层的更新后的参数的信息;根据所述更新后的参数的信息,以比更新所述可更新参数更低的频率更新所述预配置参数。因此,可以通过使用用于解码端NN的更新后的预配置参数来改进所述图像解码。此外,关于更新后的预配置参数的信息从与其它码流部分(视频、参数、层)分开的网络码流部分解码。因此,与更新频率较低的预配置参数相关的信息与和更新频率较高的可更新参数相关的信息分开。
例如,所述处理电路还用于:从关于所述更新后的参数的信息中获取多个预配置层集中选择的集合的指示,其中,所述选择的集合包括所述神经网络的所述一个或多个预配置层。因此,解码可以通过使用另一个现有的NN(即,例如通过预训练预配置的网络)来适用于特定的压缩任务,并且因此改进了整体图像解码。
此外,关于所述一个或多个可更新层的信息是以比解码关于所述一个或多个可更新层的一个或多个更新后的参数的信息更低的频率解码的。因此,解码可以优先于层更新(即更新后的参数)而不是层选择(即更新后的层索引)来执行,从而加速所述图像解码。因此,可以避免层更新(即更新后的层索引)和参数更新之间的干扰,提高解码的性能和稳定性。此外,所述解码可以根据层更新或参数更新的偏好进行适配。因此,所述解码可以以灵活的方式执行,并适用于特定的任务。
在一种示例性实现方式中,所述神经网络的所述一个或多个预配置层和/或所述一个或多个可更新层为卷积层。
例如,所述神经网络适用于后滤波。
根据一种实现方式,使用所述神经网络对所述一个或多个图像进行解码。
在另一个示例中,所述神经网络适用于环内滤波、图像解码、自适应采样和图像译码参数的解码中的一个。因此,所述神经网络的相同架构可用于解码不同类型的视频压缩任务的输入图像。因此,所述解码可以以灵活的方式执行,并适应于各种任务,包括后滤波器和环内滤波器。
根据一个实施例,提供了一种用于对一个或多个输入图像进行编码的方法,其中,所述编码包括使用神经网络,所述方法包括以下步骤:从所述神经网络的层中选择一个或多个可更新层;根据所述一个或多个输入图像,训练所述神经网络,其中,所述训练包括更新所述一个或多个可更新层的一个或多个参数,并保持所述神经网络层中的一个或多个预配置层的参数;将关于所述一个或多个可更新层的一个或多个更新后的参数的信息编码到参数码流部分中;将所述一个或多个输入图像编码到图像码流部分中。
根据一个实施例,提供了一种用于对一个或多个输入图像进行解码的方法,所述解码包括使用神经网络,所述方法包括以下步骤:从参数码流部分中解码关于一个或多个可更新层的一个或多个参数的信息;从图像码流部分中解码所述一个或多个输入图像,其中,所述解码包括用所述神经网络处理,其中,所述神经网络包括:包括一个或多个经解码参数的所述一个或多个可更新层;具有预配置参数的一个或多个预配置层。
其它方法包括编码方法和解码方法的实现方式和示例,对应于上述编码装置和解码装置的实现方式和示例。
这些方法提供了与执行上述相应步骤的装置相似的优点。
根据一个实施例,提供了一种存储程序的计算机可读非瞬时性介质,包括指令,当在一个或多个处理器上执行时,该指令使一个或多个处理器执行上述用于对一个或多个输入图像进行编码和/或解码的方法,所述编码和/或解码包括使用神经网络。
根据一个实施例,提供了一种用于对一个或多个输入图像进行编码的装置,其中,所述编码包括使用神经网络,所述装置包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述程序在所述一个或多个处理器中执行时,所述编码器执行根据本文中任一实施例、实现方式和示例的编码方法。
根据一个实施例,提供了一种用于对一个或多个输入图像进行解码的装置,其中,所述解码包括使用神经网络,所述装置包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述程序在所述一个或多个处理器中执行时,所述装置执行根据本文中任一实施例、实现方式和示例的编码方法。
根据一种实施例,提供了一种计算机程序,包括程序代码,用于在计算机中执行时,执行本文中任一实施例和示例所述的方法。
所述可更新层还可以被称为自适应或自适应层或选择待更新的层(例如,通过在编码器侧的在线训练,特别是通过对待编码的特定图像集或视频序列的在线训练),以将这些层或这些层的集合(NN的)与其它或所有剩余层或其它或未更新或未更新(换句话说,固定或静态,例如保持其权重值)的所有剩余层(NN的)。相应地,可更新参数也可以被称为自适应或自适应参数或选择待更新的参数(例如,通过选择待更新的层或子层),以将这些参数与未更新或未更新(换句话说,固定或静态)的(NN的)其它或剩余参数区分开来,例如,不更新的层或子层的参数。
本发明可以在硬件(HW)和/或软件(SW)或其组合中实现。此外,基于硬件的实现可以与基于软件的实现相结合。
一个或多个实施例的细节在附图和说明书中阐述。其它特征、目标和优点将从说明书、附图和权利要求中显而易见。
附图说明
下文参考以下附图详细描述本发明实施例,其中:
图1为示例性卷积神经网络处理的示意图;
图2为卷积神经网络的层的示例性层处理的示意图;
图3为常规和轻量级(张量训练)卷积层架构的示意图;
图4为示例性权重共享压缩的图示;
图5为另一个示例性权重共享压缩的图示,其中,图4的稀疏数据张量4003由张量近似;
图6为当不应用量化和当应用量化时权重的示例性分布;
图7为具有多个层的神经网络中权重修剪的示意图;
图8为具有残差块和其它层的示例性残差网络的框图;
图9为示例性编码器-解码器处理链的框图,包括编码端的基于CNN的训练和解码端的CNN推理;
图10为示例性编码器-解码器处理链的框图,包括采用CNN用于滤波重建图像的目的;
图11为示例性编码器处理和输出的框图;
图12为示例性解码器处理和输出的框图;
图13为具有多层的神经网络N的图示,所述多层包括待更新的可更新层和未更新的预配置层;
图14为包括两个卷积层和相应卷积层之后的ReLU层的残差神经网络ResNet的残差块的示例性结构的框图;
图15为可更新层的示例性结构的框图,所述可更新层包括在训练期间未更新的具有参数的子层和在训练期间更新的具有参数的子层;
图16为待作为可更新层的层的示例性选择的框图,所述可更新层包括具有在训练期间未更新的参数的子层和具有在训练期间更新的参数的子层;
图17为原始或现有神经网络(即,预配置NN)的原始卷积层和神经网络实施例的替换原始层的对应层的框图,其中,所述对应层包括两个子层,两个子层包括未更新的原始部分和可更新的增量部分,子层的输出被求和;
图18为使用TensorTrain卷积层TTConv的基于字典的压缩的示例,其中,可更新层的权重被压缩并在码本和索引本中表示;
图19为示例性编码器处理和输出,包括通过离线训练对权重的预训练,以及用于可更新层的权重微调的在线训练,以及视频和NN的压缩;
图20为示例性解码器处理和输出,包括解压缩视频和NN;
图21为一个实施例提供的示例性编码装置的框图;
图22为一个实施例提供的示例性解码装置的框图;
图23为一个实施例提供的使用神经网络的编码方法的流程图;
图24为一个实施例提供的使用神经网络的解码方法的流程图;
图25为用于实现本发明实施例的示例性视频编码器的框图;
图26为用于实现本发明实施例的视频解码器的示例性结构的框图;
图27为可以采用本发明的一些实施例的示例性解码器的框图;
图28为用于实现本发明实施例的示例性视频译码系统的框图;
图29为用于实现本发明实施例的另一个示例性视频译码系统的框图;
图30为示例性编码装置或解码装置的框图;
图31为另一个示例性编码装置或解码装置的框图。
具体实施方式
在以下描述中,参考构成本发明一部分的附图,附图通过说明的方式示出了本发明实施例的特定方面或可使用本发明实施例的特定方面。应理解,本发明实施例可用于其它方面,并且包括未在附图中描绘的结构或逻辑变化。因此,以下详细的描述并不当作限定,本发明的范围由所附权利要求书界定。
可以理解的是,与所描述的方法有关的公开内容对于与用于执行方法对应的设备或系统也同样适用,反之亦然。例如,如果描述了一个或多个特定方法步骤,则对应的设备可以包括一个或多个单元,例如,功能单元,用于执行所描述的一个或多个方法步骤(例如,执行所述一个或多个步骤的一个单元,或各自执行所述多个步骤中的一个或多个步骤的多个单元),即使图中未明确描述或说明此类一个或多个单元。另一方面,例如,如果根据一个或多个单元(例如,功能单元)来描述特定装置,对应的方法可以包括一个步骤来执行一个或多个单元的功能(例如,执行所述一个或多个单元的功能的一个步骤,或各自执行所述多个单元中的一个或多个单元的功能的多个步骤),即使图中未明确描述或说明此类一个或多个步骤。此外,应理解,除非另外具体指出,否则本文中描述的各种示例性实施例和/或方面的特征可彼此组合。
视频译码(coding)通常指对构成视频或视频序列的图像序列进行的处理。在视频编码领域中,术语“帧”与“图像(picture/image)”可以用作同义词。视频译码包括视频编码和视频解码两部分。在源侧执行视频编码,通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(以进行更高效的存储和/或传输)。在目的地侧执行视频解码,通常包括相对于编码器的逆处理以重建视频图像。关于视频图像(或一般为图像,将在下文解释)的“译码”的实施例应理解为涉及视频图像的“编码”和“解码”两者。编码部分和解码部分也合称为编解码(编码和解码,CODEC)。
在无损视频译码的情况下,可以重建原始视频图像,即,重建视频图像与原始视频图像的质量相同(假设在存储或传输过程中没有传输误差或其它数据丢失)。在有损视频译码的情况下,进一步执行压缩(例如,通过量化)以减少表示无法在解码器中完全重建的视频图像的数据量,即,与原始视频图像相比,经重建视频图像的质量较低或较差。
H.261之后的几个视频译码标准属于“有损混合型视频编解码器”组(即,将样本域中的空间预测和时间预测与变换域中用于应用量化的2D变换译码结合)。视频序列的每个图像通常被分割成一组不重叠的块,并且译码通常以块为单位执行。换句话说,在编码器处,通常在块(视频块)级对视频进行处理(即编码),例如,通过空间(帧内)预测和时间(帧间)预测来生成预测块;从当前块(当前处理/待处理的块)中减去预测块,获得残差块;在变换域中变换残差块并量化残差块,以减少待传输(压缩)的数据量,而在解码器处,将相对于编码器的逆处理应用于经编码或压缩的块,以重建当前块以进行表示。此外,编码器的处理环路与解码器的处理环路相同,使得两者产生相同的预测(例如,帧内预测和帧间预测)块和/或重建块,以对后续块进行处理(即,译码)。
因为视频图像处理(也称为移动图像处理)和静止图像处理(术语“处理”包括译码)共享许多概念和技术或工具,所以在下文中,术语“图像”用于指代视频序列的视频图像(如上文所解释)和/或静止图像,以避免在不需要时,视频图像与静止图像之间不必要的重复和区分。在描述仅指静止图像(picture/image)的情况下,应使用术语“静止图像”。
即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量有限的通信网络中进行流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后通过现代电信网络进行传输。由于内存资源可能有限,当在存储设备上存储视频时,该视频的大小也可能成为问题。视频压缩设备通常在源侧使用软件和/或硬件对视频数据进行编码,然后进行传输或存储,从而减少表示数字视频图像所需的数据量。然后,由对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术能够在几乎不牺牲图像质量的前提下提高压缩比。
在过去的十年里,深度学习技术在许多学科中取得了巨大成功,特别是在计算机视觉(computer vision,CV)和图像处理方面。最近,有很多尝试将深度学习(deep-learning,DL)应用于数据压缩,如图像/视频压缩,但也应用于其它一些数据压缩,包括音频数据压缩、3D数据(例如,点云数据)压缩等。例如,对于视频压缩,有很多尝试使用神经网络来增强甚至取代传统视频编解码器架构中的一些模块,包括以下模块:
·基于深度学习的帧内预测:在传统的帧内预测中,编码块的相邻重建样本用于沿着由帧内预测模式指示的特定直线方向(或一些固定模式)获得编码块内样本的预测。通过使用参考样本执行深度学习,生成的预测样本值可以更灵活,并且可以更类似于当前编码块内的样本。
·基于深度学习的帧间预测:在传统的帧间预测中,参考图像中的参考块通过简单的加权方法来获取当前编码块内样本的预测。通过使用参考块执行深度学习,可以获得更灵活的预测,这可以与当前编码块内的样本更相似。
·基于深度学习的熵译码:在传统的熵译码中,一些相邻信息或先验知识被用作上下文,用于估计算术译码的语法值的概率。通过将深度学习与上下文一起使用,可以估计更准确的概率。
·基于深度学习的自适应采样:在编解码器区域,有一种经典的方法,其中视频的空间分辨率将通过下采样降低,然后馈送到编码器。在解码器中,在获得视频的重建图像后,将进行上采样。使用深度学习方法,上采样的图像可以具有更高的质量。类似地,自适应采样也可以用于时域。
此外,在使用深度学习技术减少甚至删除编码伪影,以提高解码图像的整体质量(客观质量或主观质量)方面,还有另一个重要的尝试。基于神经网络(如CNN)的增强滤波器是最常见的深度学习技术,可应用于数据压缩,如视频压缩。
图像和/或视频编码技术方案(或编解码器,分别为框架),使用传统编解码器,如联合图像专家组(Joint Photographic Experts Group,JPEG)、H.264、H.265、H.266或运动图像专家组-增强视频编码(Motion Picture Experts Group,MPEG EVC)作为基础,并使用神经网络替换或改进部件或工具(如环内滤波器或后处理滤波器)或其它人工智能(artificial intelligence,AI)技术方案也被称为基于混合AI的图像或视频编码或AI增强的图像或视频编码技术方案(或编解码器,分别为框架)。例如,本发明实施例涉及这种基于AI的混合图像或视频编码。
为了更好地理解即将到来的讨论,引入了关于示例性编码和解码方法的一些术语,这些术语在整个描述中都提到。
图25为用于实现本申请技术的示例性视频编码器20的示意性框图。在图25的示例中,视频编码器20包括输入端201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210和逆变换处理单元212、重建单元214、环路滤波单元220、解码图像缓冲区(decoded picture buffer,DPB)230、模式选择单元260、熵编码单元270和输出端272(或输出接口272)。模式选择单元260可以包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(未示出)。图25所示的视频编码器20也可以称为混合视频编码器或基于混合视频编解码器的视频编码器。
残差计算单元204、变换处理单元206、量化单元208和模式选择单元260可以组成编码器20的前向信号路径;反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲区(decoded picture buffer,DPB)230、帧间预测单元244和帧内预测单元254可以组成视频编码器20的反向信号路径,其中,视频编码器20的反向信号路径对应于解码器(参见图26的解码器30)的信号路径。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区(decoded picture buffer,DPB)230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。
编码器20可以用于通过输入端201等接收图像17(或图像数据17),例如形成视频或视频序列的图像序列中的图像。接收的图像或图像数据也可以是预处理图像19(或预处理图像数据19)。为了简单起见,以下描述使用图像17。图像17也可称为当前图像或待译码的图像(尤其是在视频译码中将当前图像与其它图像区分开时,其它图像例如同一视频序列,即也包括当前图像的视频序列中的之前经编码图像和/或经解码图像)。
(数字)图像是或可为具有强度值的样本的二维阵列或矩阵。阵列中的样本也可以称为像素(图像元素的简短形式)。阵列或图像的水平和垂直方向(或轴)的样本数限定了图像的大小和/或分辨率。为了表示颜色,通常使用三种颜色分量,即,该图像可以表示为或包括三个样本阵列。在RBG格式或颜色空间中,一个图像包括对应的红色、绿色和蓝色样本阵列。但是,在视频译码中,每个像素通常以亮度和色度格式或在颜色空间中表示,例如,YCbCr,包括Y表示的亮度分量(有时也用L表示)和Cb和Cr表示的两个色度分量。亮度分量Y表示亮度或灰阶强度(例如,如同灰阶图像中),两个色度分量Cb和Cr表示色度或颜色信息分量。相应地,YCbCr格式的图像包括亮度样本值(Y)的亮度样本阵列和色度值(Cb和Cr)的两个色度样本阵列。RGB格式的图像可以转换成YCbCr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是单色的,则图像可以仅包括亮度样本阵列。相应地,例如,图像可以为单色格式的亮度样本阵列或4:2:0、4:2:2和4:4:4颜色格式的亮度样本阵列和两个对应的色度样本阵列。
视频编码器20的实施例可以包括图像分割单元(图25中未示出),用于将图像17分割成多个(通常不重叠)图像块203。这些块也可以称为根块、宏块(H.264/AVC)或编码树块(coding tree block,CTB),或编码树单元(coding tree unit,CTU)(H.265/HEVC和VVC)。图像分割单元可用于对视频序列中的所有图像使用相同的块大小和使用限定块大小的对应网格,或在图像或图像子集或图像组之间改变块大小,并将每个图像分割成对应块。
在另外的实施例中,视频编码器可用于直接接收图像17的块203,例如,组成图像17的一个、几个或所有块。图像块203也可以称为当前图像块或待译码图像块。
与图像17一样,图像块203同样是或可认为是具有强度值(样本值)的样本组成的二维阵列或矩阵,但是图像块203的大小比图像17的小。即,例如,块203可以包括,例如,一个样本阵列(例如黑白图像17情况下的亮度阵列,或者在彩色图像情况下的亮度或色度阵列)或三个样本阵列(例如,在彩色图像17情况下的亮度阵列和两个色度阵列)或依据所应用的色彩格式的任何其它数量和/或类型的阵列。块203的水平和垂直方向(或轴)的样本数限定了块203的大小。因此,块可以为M×N(M列×N行)个样本阵列,或M×N个变换系数阵列等。
在一个实施例中,图25所示的视频编码器20可以用于逐块对图像17进行编码,例如,对每个块203执行编码和预测。
图25所示的视频编码器20的实施例还可以用于使用条带(slice)(也称为视频条带)对图像进行分割和/或编码,其中,可以使用一个或多个条带(通常为不重叠的)对图像进行分割或编码,并且每个条带可以包括一个或多个块(例如,CTU)。
图25所示的视频编码器20的实施例还可以用于使用分块组(tile group)(也称为视频分块组)和/或分块(tile)(也称为视频分块)对图像进行分割和/或编码,其中,可以使用一个或多个分块组(通常为不重叠的)对图像进行分割或编码,每个分块组可以包括一个或多个块(例如,CTU)或一个或多个分块等,其中,每个分块可以为矩形等形状,可以包括一个或多个块(例如,CTU),例如完整或部分块。
残差计算单元204可以用于通过如下方式根据图像块203和预测块265(后续详细介绍了预测块265)来计算残差块205(也称为残差205):例如,逐个样本(逐个像素)从图像块203的样本值中减去预测块265的样本值,得到样本域中的残差块205。
变换处理单元206可以用于对残差块205的样本值执行离散余弦变换(discretecosine transform,DCT)或离散正弦变换(discrete sine transform,DST)等,得到变换域中的变换系数207。变换系数207也可以称为变换残差系数,表示变换域中的残差块205。
变换处理单元206可以用于应用DCT/DST(例如为H.265/HEVC指定的变换)的整数近似。与正交DCT变换相比,这种整数近似通常通过某一因子进行缩放。为了保持正逆变换处理的残差块的范数,在变换过程中应用了其它的缩放因子。缩放因子通常是根据某些约束条件来选择的,例如缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实施成本之间的权衡等。例如,通过逆变换处理单元212等为逆变换(以及在视频解码器30处通过逆变换处理单元312等为对应逆变换)指定具体的缩放因子,以及相应地,可以在编码器20中通过变换处理单元206等为正变换指定对应的缩放因子。
视频编码器20(对应为变换处理单元206)的实施例可以用于直接输出或由熵编码单元270进行编码或压缩后输出变换参数(例如,一种或多种变换的类型),例如使得视频解码器30可以接收并使用变换参数进行解码。
量化单元208可以用于通过例如标量量化或矢量量化对变换系数207进行量化,得到量化变换系数209。量化系数209也可以称为量化变换系数209或量化残差系数209。
量化过程可以减少与部分或全部变换系数207相关的位深度。例如,可在量化期间将n位变换系数向下取整到m位变换系数,其中,n大于m。可通过调整量化参数(quantization parameter,QP)修改量化程度。例如,对于标量量化,可以应用不同的缩放来实现更精细或更粗略的量化。较小的量化步长对应于更精细的量化,而较大的量化步长对应于更粗略的量化。适用的量化步长可以通过量化参数(quantization parameter,QP)表示。例如,量化参数可以是一组预定义的适用量化步长的索引。例如,较小量化参数可以对应于精细量化(较小量化步长),较大量化参数可以对应于粗略量化(较大量化步长),反之亦然。量化可以包含除以量化步长以及例如通过反量化单元210执行的对应的解量化和/或反解量化,或者可以包含乘以量化步长。根据HEVC等一些标准的实施例可以用于使用量化参数来确定量化步长。通常,量化步长可以根据使用包括除法的等式的定点近似法的量化参数来计算。量化和解量化可以引入其它缩放因子以恢复残差块的范数,由于在量化步长和量化参数的方程的定点近似法中使用的缩放,可能会修改残差块的范数。在一种示例性实现方式中,可以合并逆变换和解量化的标度。或者,可以使用自定义量化表并由编码器通过码流等方式向解码器指示(signal)。量化是有损操作,损失随着量化步长的增大而增大。
在实施例中,视频编码器20(对应为量化单元208)可用于输出量化参数(quantization parameter,QP),例如,直接输出或由熵编码单元270进行编码后输出,例如使得视频解码器30可接收并使用量化参数进行解码。
反量化单元210用于对量化系数执行量化单元208的反量化,得到解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可称为解量化残差系数211,对应于变换系数207,但是由于量化造成损耗,解量化系数211通常与变换系数不完全相同。
逆变换处理单元212用于执行变换处理单元206执行的变换的逆变换,例如,逆离散余弦变换(discrete cosine transform,DCT)或逆离散正弦变换(discrete sinetransform,DST),以在样本域中得到重建残差块213(或对应的解量化系数213)。重建残差块213也可称为变换块213。
重建单元214(例如,加法器或求和器214)用于将变换块213(即重建残差块213)添加到预测块265,以在样本域中得到重建块215,例如,将重建残差块213的样本值和预测块265的样本值相加。
环路滤波单元220(或简称“环路滤波器”220)用于对重建块215进行滤波,得到滤波块221,或通常用于对重建样本进行滤波,得到经滤波样本。例如,环路滤波单元用于顺利进行像素转变或提高视频质量。环路滤波单元220可以包括一个或多个环路滤波器,例如去块效应滤波器、样本自适应偏移(sample-adaptive offset,SAO)滤波器或者一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,ALF)、锐化或平滑滤波器、协作滤波器或其任意组合。例如,这些滤波器可以通过神经网络实现,稍后将更详细地解释。尽管环路滤波单元220在图25中示为环内滤波器,但是在其它配置中,环路滤波单元220可以实现为后环路滤波器。滤波块221也可称为经滤波重建块221。
在实施例中,视频编码器20(相应地,环路滤波单元220)可以用于输出环路滤波器参数(例如样本自适应偏移信息),例如直接输出或由熵编码单元270进行编码后输出,使得例如解码器30可以接收并使用相同的环路滤波器参数或相应的环路滤波器进行解码。
解码图像缓冲区(decoded picture buffer,DPB)230可以是存储参考图像或参考图像数据以供视频编码器20对视频数据进行编码的存储器。DPB 230可以由多种存储器设备中的任一种形成,例如动态随机存取存储器(dynamic random access memory,DRAM),包括同步DRAM(synchronous DRAM,SDRAM)、磁阻RAM(magnetoresistive RAM,MRAM)、电阻RAM(resistive RAM,RRAM)或其它类型的存储设备。解码图像缓冲区(decoded picturebuffer,DPB)230可用于存储一个或多个滤波块221。解码图像缓冲区230还可用于存储同一当前图像或之前的重建图像等不同图像的其它之前的滤波块,例如之前的重建和滤波块221,并可提供完整的之前重建即经解码图像(和对应参考块和样本)和/或部分重建的当前图像(和对应参考块和样本),例如进行帧间预测。例如,在重建块215未被环路滤波单元220进行滤波时,解码图像缓冲区(decoded picture buffer,DPB)230还可用于存储一个或多个未经滤波的重建块215,或通常存储未经滤波的重建样本,或重建块或重建样本的任何其它未经进一步处理的版本。
模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,用于从解码图像缓冲区230或其它缓冲区(例如,行缓冲区,图中未示出)接收或获得原始图像数据,例如原始块203(当前图像17的当前块203),以及重建图像数据,例如同一(当前)图像和/或一个或多个之前经解码图像的滤波和/或未经滤波的重建样本或重建块。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,以得到预测块265或预测值265。
模式选择单元260可用于为当前块预测模式(包括不分割)和预测模式(例如帧内或帧间预测模式)确定或选择分割类型,并生成对应的预测块265,以对残差块205进行计算和对重建块215进行重建。
在一个实施例中,模式选择单元260可用于选择分割和预测模式(例如,从模式选择单元260支持的或可用的预测模式中选择),所述预测模式提供最佳匹配或者最小残差(最小残差是指传输或存储中进行更好的压缩),或者提供最小指示开销(最小指示开销是指传输或存储中进行更好的压缩),或者同时考虑或平衡以上两者。模式选择单元260可用于根据率失真优化(rate distortion optimization,RDO)确定分割和预测模式,即选择提供最小率失真的预测模式。本上下文中如“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准,例如,值超过或低于阈值或其它约束条件,可能会进行“次优选择”,但是降低了复杂度和处理时间。
换句话说,分割单元262可以用于将块203分割成更小的分割块或子块(再次形成块),例如,使用四叉树(quad-tree,QT)分割、二叉树(binary-tree,BT)分割或三叉树(triple-tree,TT)分割或其任何组合迭代地进行,并且例如,对每个分割块或子块进行预测,其中,所述模式选择包括选择分割块203的树形结构并将预测模式应用于每个分割块或子块。
下文将详细地描述由视频编码器20执行的分割(例如,由分割单元260执行)和预测处理(由帧间预测单元244和帧内预测单元254执行)。
如前所述,本文中使用的术语“块”可以是图像的一部分,具体是正方形或矩形部分。例如,参照HEVC和VVC,块可以为或可以对应于编码树单元(coding tree unit,CTU)、编码单元(coding unit,CU)、预测单元(prediction unit,PU)和变换单元(transform unit,TU)和/或对应的块,例如编码树块(coding tree block,CTB)、编码块(coding block,CB)、变换块(transform block,TB)或预测块(prediction block,PB)。
例如,编码树单元(coding tree unit,CTU)可以为或者可以包括具有3个样本阵列的图像中的亮度样本的一个CTB、该图像中的色度样本的两个对应CTB,或者黑白图像中的或使用3个单独颜色平面和语法结构进行译码的图像中的样本的一个CTB。这些语法结构用于对样本进行译码。相应地,编码树块(coding tree block,CTB)可以为N×N个样本块,其中,N可以设为某个值使得分量划分为CTB,这就是分割。编码单元(coding unit,CU)可以为或者可以包括具有3个样本阵列的图像中的亮度样本的一个编码块、该图像中的色度样本的两个对应编码块,或者黑白图像中的或使用3个单独颜色平面和语法结构进行编码的图像中的样本的一个编码块。这些语法结构用于对样本进行编码。相应地,编码块(codingblock,CB)可以为M×N个样本块,其中,M和N可以设为某个值使得CTB划分为编码块,这就是分割。
在实施例中,例如根据HEVC,可以通过表示为编码树的四叉树结构将编码树单元(coding tree unit,CTU)划分为多个CU。在CU级决定是否使用帧间(时间)预测或帧内(空间)预测对图像区域进行译码。每个CU可以根据PU划分类型进一步划分为一个、两个或四个PU。一个PU内应用相同的预测过程,并以PU为单位向解码器发送相关信息。在根据PU划分类型执行预测过程得到残差块之后,可以根据类似于用于CU的编码树的另一种它四叉树结构将CU分割成变换单元(transform unit,TU)。
在实施例中,例如根据VVC,可以使用四叉树结构、三叉树结构和/或二叉树结构将编码树单元(coding tree unit,CTU)划分为多个编码单元(coding unit,CU)。在一个示例中,视频编码器20的模式选择单元260可以用于执行本文描述的分割技术的任意组合。
如上所述,视频编码器20用于从(例如,预定的)预测模式集中确定或选择最佳或最优的预测模式。例如,预测模式集可以包括帧内预测模式和/或帧间预测模式。
帧内预测模式集可包括35种不同的帧内预测模式,例如,像DC(或均值)模式和平面模式的非方向性模式,或如HEVC定义的方向性模式,或者可包括67种不同的帧内预测模式,例如,像DC(或均值)模式和平面模式的非方向性模式,或如VVC中定义的方向性模式。
帧内预测单元254用于根据帧内预测模式集中的帧内预测模式,使用同一当前图像的邻块的重建样本来生成帧内预测块265。
帧内预测单元254(或通常为模式选择单元260)还用于将帧内预测参数(或通常为指示块的所选帧内预测模式的信息)以语法元素266的形式输出到熵编码单元270,以包括到经编码图像数据21中,使得例如视频解码器30可以接收并使用预测参数进行解码。
(可能的)帧间预测模式集根据可用参考图像(即,例如存储在DPB 230中的之前至少部分解码的图像)和其它帧间预测参数确定,例如是否使用整个参考图像或只使用参考图像的一部分(例如当前块的区域附近的搜索窗口区域)来搜索最佳匹配参考块,和/或例如是否应用像素插值(例如半像素和/或四分之一像素插值)。
除上述预测模式外,还可以应用跳过模式和/或直接模式。帧间预测单元244可以包括运动估计(motion estimation,ME)单元和运动补偿(motion compensation,MC)单元(两者在图25中均未示出)。运动估计单元可用于接收或获取图像块203(当前图像17的当前图像块203)和经解码图像231,或至少一个或多个之前重建块,例如,一个或多个其它/不同的之前经解码图像231的重建块,以进行运动估计。例如,视频序列可以包括当前图像和之前的经解码图像231,或者换句话说,当前图像和之前的经解码图像231可以是组成视频序列的图像序列的一部分或形成视频序列的图像序列。
例如,编码器20可用于从多个其它图像中的相同或不同图像的多个参考块中选择参考块,并将参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元。这个偏移也称为运动矢量(motion vector,MV)。
运动补偿单元用于获取(例如接收)帧间预测参数,并根据或使用帧间预测参数执行帧间预测,得到帧间预测块265。由运动补偿单元执行的运动补偿可能涉及根据通过运动估计确定的运动/块矢量来提取或生成预测块,还可能包括对子像素精度进行插值。插值滤波可以从已知像素的样本中生成其它像素的样本,从而可能增加可用于对图像块进行译码的候选预测块的数量。在接收当前图像块的PU对应的运动矢量时,运动补偿单元可以在其中一个参考图像列表中定位运动矢量所指向的预测块。
运动补偿单元还可以生成与所述块和视频条带相关的语法元素,以供视频解码器30用于对视频条带的图像块进行解码。除了条带和相应语法元素或作为条带和相应语法元素的替代,还可以接收和/或使用分块组(tile group)和/或分块以及相应语法元素。
熵编码单元270用于将熵编码算法或方案(例如,可变长度译码(variable lengthcoding,VLC)方案、上下文自适应VLC(context adaptive VLC scheme,CAVLC)方案、算术译码方案、二值化,上下文自适应二进制算术译码(context adaptive binary arithmeticcoding,CABAC)、基于语法的上下文自适应二进制算术译码(syntax-based context-adaptive binary arithmetic coding,SBAC)、概率区间分割熵(probability intervalpartitioning entropy,PIPE)译码或其它熵编码方法或技术)等应用于或不应用于(无压缩)量化系数209、帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素,得到可以通过输出端272以经编码码流21等形式输出的经编码图像数据21,使得例如视频解码器30可以接收并使用这些参数进行解码。可将经编码码流21发送到视频解码器30,或将其保存在存储器中稍后由视频解码器30传输或检索。
视频编码器20的其它结构变体可用于对视频流进行编码。例如,基于非变换的编码器20可以在没有变换处理单元206的情况下直接对某些块或帧的残差信号进行量化。在另一种实现方式中,编码器20可以具有组合成单个单元的量化单元208和反量化单元210。
图26示出了用于实现本申请技术的视频解码器30的示例。视频解码器30用于接收例如由编码器20编码的经编码图像数据21(例如,经编码码流21),得到经解码图像331。经编码图像数据或码流包括用于对所述经编码图像数据进行解码的信息,例如表示经编码视频条带(和/或分块组或分块)的图像块的数据和相关的语法元素。
在图26的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320、解码图像缓冲区(decoded picturebuffer,DPB)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以为或包括运动补偿单元。在一些示例中,视频解码器30可以执行大体上与针对图25的视频编码器100描述的编码过程相反的解码过程。
如针对编码器20的描述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区(decoded picture buffer,DPB)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。相应地,反量化单元310在功能上可与反量化单元110相同,逆变换处理单元312在功能上可与逆变换处理单元212相同,重建单元314在功能上可与重建单元214相同,环路滤波器320在功能上可与环路滤波器220相同,解码图像缓冲区330在功能上可与解码图像缓冲区230相同。因此,视频编码器20的各个单元和功能的解释相应地适用于视频解码器30的各个单元和功能。
熵解码单元304用于解析码流21(或一般为经编码图像数据21)并对经编码图像数据21执行熵解码,得到量化系数309和/或经解码译码参数(图26中未示出)等,例如帧间预测参数(例如参考图像索引和运动矢量)、帧内预测参数(例如帧内预测模式或索引)、变换参数、量化参数、环路滤波器参数和/或其它语法元素等中的任一个或全部。熵解码单元304可用于应用与针对编码器20的熵编码单元270描述的编码方案对应的解码算法或方案。熵解码单元304还可以用于向模式应用单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,以及向解码器30的其它单元提供其它参数。视频解码器30可以接收视频条带级和/或视频块级的语法元素。另外或者作为条带和相应语法元素的替代,可以接收或使用分块组和/或分块以及相应语法元素。
反量化单元310可用于从经编码图像数据21(例如通过熵解码单元304解析和/或解码)接收量化参数(quantization parameter,QP)(或通常为与反量化相关的信息)和量化系数,并根据量化参数对经解码量化系数309进行反量化以获得解量化系数311,所述解量化系数311也可以称为变换系数311。反量化过程可以包括使用视频编码器20对视频条带(或分块或分块组)中的每个视频块确定的量化参数来确定量化程度,同样确定需要进行的反量化的程度。
逆变换处理单元312可用于接收解量化系数311,也称为变换系数311,并对解量化系数311应用变换,得到样本域的重建残差块213。重建残差块213也可以称为变换块313。变换可以为逆变换,例如逆DCT、逆DST、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从经编码图像数据21(例如通过熵解码单元304进行解析和/或解码)接收变换参数或对应信息,以确定应用于解量化系数311的变换。
重建单元314(例如,求和器(adder或summer)314)可以用于将重建残差块313添加到预测块365,得到样本域的重建块315,例如,将重建残差块313的样本值和预测块365的样本值相加。
环路滤波单元320(在译码环路中或之后)用于对重建块315进行滤波,得到滤波块321,从而顺利进行像素转变或提高视频质量等。环路滤波单元320可包括一个或多个环路滤波器,例如去块效应滤波器、样本自适应偏移(sample-adaptive offset,SAO)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,ALF)、锐化或平滑滤波器、协作滤波器或其任意组合。尽管环路滤波单元320在图26中示为环内滤波器,但是在其它配置中,环路滤波单元320可以实现为后环路滤波器。
随后将一个图像中的经解码视频块321存储在解码图像缓冲区330中,解码图像缓冲区330存储作为参考图像的经解码图像331,参考图像用于其它图像和/或分别输出显示的后续运动补偿。解码器30用于通过输出单元312等输出经解码图像311,向用户呈现或供用户查看。
帧间预测单元344的功能可以与帧间预测单元244(特别是运动补偿单元)相同,帧内预测单元354的功能可以与帧内预测单元254相同,并根据从经编码图像数据21接收的分割和/或预测参数或相应信息(例如,通过熵解码单元304等解析和/或解码)决定划分或分割并执行预测。模式应用单元360可以用于根据重建图像、块或相应的样本(经滤波或未经滤波)对每个块执行预测(帧内预测或帧间预测),得到预测块365。
当视频条带被译码为经帧内译码(I)的条带时,模式应用单元360的帧内预测单元354用于根据当前帧或图像的之前解码块的指示(signal)的帧内预测模式和数据来生成当前视频条带的图像块的预测块365。当视频图像被译码为经帧间译码(即B或P)的条带时,模式应用单元360的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收的运动矢量和其它语法元素针对当前视频条带的视频块生成预测块365。对于帧间预测,可以从其中一个参考图像列表中的一个参考图像产生这些预测块。视频解码器30可以根据存储在DPB 330中的参考图像,使用默认构建技术来构建参考帧列表0和列表1。除了条带(例如视频条带)或作为条带的替代,相同或类似的过程可应用于分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如视频可以使用I、P或B分块组和/或分块进行译码。模式应用单元360用于通过解析运动矢量或相关信息以及其它语法元素来确定当前视频条带中的视频块的预测信息并使用所述预测信息针对所解码的当前视频块生成预测块。例如,模式应用单元360使用接收到的一些语法元素确定用于对视频条带的视频块进行译码的预测模式(例如,帧内预测或帧间预测)、帧间预测条带类型(例如,B条带、P条带或GPB条带)、用于条带的一个或多个参考图像列表的构建信息、用于条带的每个经帧间编码的视频块的运动矢量、用于条带的每个经帧间译码的视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。除了条带(例如视频条带)或作为条带的替代,相同或类似的过程可应用于分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如视频可以使用I、P或B分块组和/或分块进行译码。在一个实施例中,图26所示的视频解码器30可以用于使用条带(也称为视频条带)对图像进行分割和/或解码,其中图像可以分割成一个或多个条带(通常为不重叠的)或使用一个或多个条带(通常为不重叠的)进行解码,每个条带可包括一个或多个块(例如CTU)。在一个实施例中,图26所示的视频解码器30还可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或解码,其中图像可以分割成一个或多个分块组(通常为不重叠的)或使用一个或多个分块组(通常为不重叠的)进行解码,每个分块组可包括一个或多个块(例如CTU)或一个或多个分块等,其中每个分块可以为矩形等形状,可包括一个或多个完整或部分块(例如CTU)。可以使用其它形式的视频解码器30对经编码图像数据21进行解码。例如,解码器30可以在没有环路滤波单元320的情况下产生输出视频流。例如,基于非变换的解码器30可以在没有逆变换处理单元312的情况下直接对某些块或帧的残差信号进行反量化。在另一种实现方式中,视频解码器30可以具有组合成单个单元的反量化单元310和逆变换处理单元312。应理解,在编码器20和解码器30中,可以对当前步骤的处理结果进一步处理,然后输出到下一步骤。例如,在插值滤波、运动矢量推导或环路滤波之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进行进一步的运算,如限幅(clip)或移位(shift)运算。下文解释了本文中使用的一些其它术语。
编码伪影/压缩伪影:对于视频中的一个或多个图像,在编码或压缩之后,当查看解码/解压缩/重建的图像或视频时,可能会有一些伪影,如块伪影、模糊伪影、环形伪影、轮廓伪影或一些其它伪影。这些伪影将影响图像/视频的客观质量和/或主观质量。换句话说,术语伪影通常是指人眼可见的图像失真,例如不属于那里的图像部分,例如由基于块的编码等引起的附加边缘。
图像增强:图像(或视频序列中的图像)的客观质量和/或主观质量的增加,例如,由于压缩(例如,使用去块效应、去模糊或一些其它方法)而具有低质量。需要说明的是,在图像编码的上下文中,术语主观质量通常表示与人类感知评分良好相关的质量度量。本领域中已知的许多度量基于一些客观视频参数测量(估计)主观质量。
环路滤波器或环内滤波器:所述滤波器用于提高经解码图像的质量,如去块效应滤波器、样本自适应偏移滤波器或自适应环路滤波器。例如,根据帧间预测,滤波后的图像可以用作预测另一个(例如下一个)图像的参考图像。
后滤波器:所述滤波器用于提高经解码图像的质量,如去块效应滤波器、样本自适应偏移滤波器或自适应环路滤波器。滤波后的图像不会用作预测其它图像的参考图像。环路滤波器(或环内滤波器)和后滤波器之间的区别在于滤波后的图像是否将用于预测,以编码/解码其它图像。
图像大小:指图像的宽度w或高度h或宽高对。图像的宽度和高度通常以亮度样本的数量来衡量。
下采样:下采样是降低离散输入信号的采样率(采样间隔)的过程。例如,如果输入信号是大小为h和w的图像,而下采样的输出大小为h2和w2,则以下至少一项成立:
·h2<h
·w2<w。
在一种示例性实现方式中,下采样可以实现为仅保留每个第m个样本,同时丢弃输入信号的其余部分(例如图像)。
上采样:上采样是降低离散输入信号的采样率(采样间隔)的过程。例如,如果输入图像大小为h和w的图像,而下采样的输出大小为h2和w2,则以下至少一项成立:
·h<h2
·w<w2。
重采样:下采样和上采样过程都是重采样的示例。重采样是改变输入信号的采样率(采样间隔)的过程。
插值滤波:在上采样或下采样过程中,可以应用滤波来提高重采样信号的精度,并减少混叠效应。插值滤波通常包括重采样位置周围样本位置的样本值的加权组合。它可以实现为:
f()指的是重采样信号,(xr,yr)是重采样坐标(重采样样本的坐标),C(k)是插值滤波器系数,s(x,y)是输入信号。坐标x、y是输入图像样本的坐标。对位于(xr,yr)附近Ωr的(x,y)执行求和操作。换句话说,新样本f(xr,yr)作为输入图像样本s(x,y)的加权和获得。加权由系数C(k)执行,其中k表示滤波器系数在滤波器掩码中的位置(索引)。例如,在1D滤波器的情况下,k将取从1到滤波器的顺序的值。在可以应用于2D图像的2D滤波器的情况下,k可以是表示所有可能的(非零)滤波器系数中的一个的索引。根据惯例,索引与滤波器掩码(滤波器内核)中系数的特定位置关联。
超分辨率:包括空间超分辨率和时间超分辨率。对于空间超分辨率,它意味着通过上采样(例如从w×h到2w×2h)来增加图像(或视频序列中的图像)的大小。对于时间超分辨率,它意味着视频序列的帧率增加,例如,从10帧/秒(10fps)增加到20帧/秒(20fps),其中fps是每秒帧的单位。
RDO(率失真优化):RDO是指在一些可能的参数中在一些限制(约束)下进行选择的原则。例如,在视频压缩中,有许多编码方式或参数对应于不同的失真和编码比特量。当同时优选高质量和低数量的编码比特时,则做出决策的成本C可以公式为C=失真+λ*速率。在这里,失真是重建信号的失真(重建信号与原始信号之间的距离或差),速率是对原始信号编码后的比特数,λ是一个称为拉格朗日乘子(也称为拉格朗日)的系数。
神经网络(在计算机系统中,即人工神经网络)模糊地受到构成动物大脑的生物神经网络的启发。任何神经网络都可以形式化,并完全定义为具有一组节点Z的有向无环图。每个节点z(k)表示一个张量(多维数组),并与其父节点集I(k)上的操作(神经网络层)o(k)∈O关联。唯一的例外是没有输入节点和关联操作的输入节点x。节点k处的计算可以正式表示为:
z(k)=o(k)(I(k)),
其中,所述操作集O包括一元操作(卷积、池化、激活、批量规范等)和多元操作(级联、加法等)。任何指定一组父级和每个节点的操作的表示都完全定义了神经网络。
眷积:卷积可以在一维中为输入信号f[]和滤波器g[]定义为:
这里,m是输入信号和滤波器内的索引,n表示滤波器相对于输入信号的位置(移位)。n和m都是整数。2D中的S卷积可以类似地工作,正如本领域众所周知的那样。为了一般性起见,m可以被认为具有在负无穷大到正无穷大之间的值,如上面的等式。然而,在实践中,滤波器f[]可能具有有限的长度,在这种情况下,对于超过滤波器大小的m,滤波器系数f[m]将等于0。卷积是现代神经网络中广泛使用的操作,它将大小N×Cin×Hin×Win的输入数据(或在一些实现方式中N×Hin×Win×Cin)与大小K×K×Cin×Cout的卷积滤波器卷积。需要说明的是,术语大小还指输入和/或输出数据的形状或尺寸(例如,6个宽度和高度样本的输入以及3个颜色或3个色度和亮度分量作为信道,如图2所示)。卷积生成大小为N×Cout×Hout×Wout的输出数据,其中,N是批的大小,Hin和Hout是输入(in)和输出(out)数据的高度,Win和Wout是输入和输出数据的宽度,Cin是输入信道的数量,Cout是输出信道的数量。K是卷积滤波器参数。它定义了获取1个输出数据样本所需的输入数据中区域的大小。在这里,输入数据、输出数据和内核是沿每个维度具有一定大小的4维数组。卷积滤波器的值称为卷积层的权重。卷积层的权重可以被认为是4维空间中的张量。
图2示出了卷积层的特定示例。在所述示例中,输入数据2001的大小为6×6×3(也称为形状或维度)(例如,宽度和高度的6个样本和作为信道的3个颜色或3个色度和亮度分量的输入),卷积滤波器2002的大小为3×3×3×2(每个内核具有宽度和高度的3个权重的大小K,3个信道中的每个信道都有2个内核(参见滤波器1和滤波器2),定义输出信道数量的内核或滤波器数量)。卷积滤波器2002可以表示为大小为3×3×3的2个滤波器(滤波器1、滤波器2)。它们都使用滑动窗口原理(在本文中,例如,不填充)与输入数据2001卷积,以获取4×4(每个输出通道在宽度和高度上包括4个样本,例如通过逐元素方式添加通过对3个输入信道进行滤波所获取的结果)输出数据2003。最终输出数据2004的大小为4×4×2(2个输出通道,每个通道在宽度和高度上包括4个样本)。
眷积神经网络(Convolutional Neural Network,CNN)是深度神经网络(DeepNeural Network,DNN)的子类。“卷积神经网络”(convolutional neural network,CNN)这一名称表示该网络采用上文已经定义的一种称为卷积的数学运算。术语“深”通常表示有许多级联层。由于网络架构何时具有深度没有明确的切入点,本文中,任何具有至少一个隐藏层的网络都可以被视为深度神经网络。卷积是一种专门的线性运算,如上文所述。卷积网络是简单的神经网络,在其至少一个层中使用卷积代替一般矩阵乘法。卷积神经网络由输入层和输出层以及一个或多个隐藏层组成。输入层是提供输入进行处理的层。
CNN的隐藏层通常由一系列卷积层组成,这些卷积层与乘法或其它点积进行卷积。层的结果是一个或多个特征图,也称为信道。一些或所有层中可能涉及子采样。因此,特征图可以变小。CNN中的激活函数可以是修正线性单元(rectified linear unit,ReLU)层或广义划分归一化(Generalized Divisive Normalization,GDN),如上文所提及,因此随后可以是附加卷积,例如池化层、全连接层和归一化层,称为隐藏层,因为它们的输入和输出被激活函数和最终卷积掩盖。GDN是端到端压缩中使用的一种特殊类型的激活,其中可以执行以下变换:
y[i]=x[i]/sqrt(beta[i]+sum_j(gamma[j,i]*x[j])),
其中,i和j在信道上运行,β和γ是可训练的参数。
虽然这些层被通俗地称为卷积,但这只是按照惯例。从数学上讲,它在技术上是一个滑动点积或互相关。这对矩阵中的索引具有重要意义,因为影响到在特定索引点确定权重的方式。
当对CNN进行编程以处理图像时,输入是大小(图像数量)×(图像宽度)×(图像高度)×(图像深度)的张量。需要说明的是,术语大小还指输入和/或输出数据的形状或尺寸(例如,6个宽度和高度样本的输入以及3个颜色或3个色度和亮度分量作为信道,如图2所示)。然后,在通过卷积层后,图像被抽象为特征图,大小为(图像数量)×(特征图宽度)×(特征图高度)×(特征图信道)。神经网络中的卷积层应具有以下性质。由宽度和高度(超参数)定义的卷积核。输入信道和输出信道的数量(超参数)。卷积滤波器(输入信道)的深度可以等于输入特征图的数量信道(深度)。
过去,传统的多层感知器(multilayer perceptron,MLP)模型被用于图像识别。但是,由于节点之间的完全连接,它们受到了高维度的影响,并且在较高分辨率图像中无法充分扩展。具有RGB颜色信道的1000×1000像素图像具有3百万个权重,权重太高,无法在全连接的情况下切实高效地进行大规模处理。此外,这种网络架构不考虑数据的空间结构,以与距离近的像素相同的方式处理距离远的输入像素。这在计算上和语义上都忽略了图像数据中的参考局部性。因此,神经元的全连接对于由空间局部输入模式占主导的图像识别等目的是浪费的。
卷积神经网络是多层感知器的生物学启发变体,专门设计用于模拟视觉皮层的行为。CNN模型通过利用自然图像中存在的强空间局部相关性,减轻了MLP架构带来的挑战。卷积层是CNN中的核心构建块。该层的参数由一组可学习的滤波器(上述内核)组成,这些滤波器具有一个小的接受场,但延伸到输入卷的整个深度。在正向传递期间,每个滤波器在输入体积的宽度和高度上卷积,计算滤波器条目和输入之间的点积,并生成该滤波器的二维激活图。因此,网络学习滤波器,当滤波器在输入中的某个空间位置检测到某些特定类型的特征时激活。
沿深度维度堆叠所有滤波器的激活图形成卷积层的完整输出体积。因此,输出体积中的每个条目也可以被解释为神经元的输出,该神经元查看输入中的一个小区域,并与同一激活图中的神经元共享参数。特征图或激活图是指定滤波器的输出激活。特征图和激活具有相同的含义。在一些论文中,特征映射被称为激活映射,因为它是对应于图像不同部分激活的映射,也是特征映射,因为它也是图像中找到某种特征的映射。高激活意味着找到了某个功能。
CNN的另一个重要概念是池化,是非线性下采样的一种形式。有几个非线性函数来实现池化,其中最大池化是最常见的。将输入图像划分为一组非重叠矩形,并对于每个这种子区域输出最大值。直觉上,特征的确切位置不如其相对于其它特征的粗略位置重要。这就是在卷积神经网络中使用池化背后的原因。池化层用于逐步减小表示的空间大小,减少网络中参数的数量、内存占用空间和计算量,因此也用于控制过拟合。在CNN架构中,在连续的卷积层之间定期插入池化层是常见的。池化操作提供了另一种形式的变换不变性。
池化层在输入的每个深度条带上独立操作,并在空间上重新调整大小。最常见的形式是池化层具有大小为2×2的滤波器,这些滤波器在输入中的每个深度条带上应用步幅为2的下采样,沿宽度和高度均缩小二分之一,从而丢弃75%的激活。在这种情况下,每个最大运算都超过4个系数。深度维度保持不变。
除了最大池化之外,池化单元还可以使用其它函数,例如平均池化或l2-norm池化。过去经常使用的是平均池化,但与实践中表现更好的最大池化相比,平均池化最近已经不受欢迎。由于表示大小的大幅减小,最近有一种趋势是使用较小的滤波器或完全舍弃池化层。“感兴趣区域(Region of Interest)”池化(还称为ROI池化)是最大池化的变体,其中的输出大小是固定的,输入矩形是参数。池化是卷积神经网络基于快速R-CNN架构进行目标检测的重要组成部分。
上述ReLU是修正线性单元的缩写,应用非饱和激活函数。它通过将负值设置为0,有效地从激活图中去除这些负值。它增加了决策函数和整体网络的非线性性质,而不影响卷积层的接受场。其它函数也用于增加非线性,例如饱和双曲正切(saturatinghyperbolic tangent)和S形函数(sigmoid function)。ReLU通常比其它函数更受欢迎,因为它训练神经网络的速度快几倍,而不会对泛化精度造成很大影响。
经过几个卷积层和最大池化层之后,神经网络中的高级推理是通过全连接层完成的。全连接层中的神经元与前一个层中的所有激活都有连接,如常规(非卷积)人工神经网络中所示。因此,这些激活可以作为仿射变换计算,矩阵乘法之后是偏置偏移(学习或固定偏置项的矢量加法)。
“损失层(loss layer)”指定训练如何影响预测(输出)标签与真实标签之间的偏差(deviation),并且通常是神经网络的最后一层。可以使用适合不同任务的各种损失函数。Softmax损失用于预测K个互斥类别的单个类别。Sigmoid交叉熵损失用于预测[0,1]中的K个独立概率值。欧氏损失(Euclidean loss)用于回归到实值标签。
因此,CNN可以用于执行以下任何操作:
■卷积
■批量归一化
■非线性激活(sigmoid、ReLU等)
■全连接层(Fully-connected layer,FCL)
■元素运算(加法、乘法)
■下采样(最大池化、平均池化)
如今,CNN是计算机视觉(computer vision,CV)任务最常用的方法,如分类、FaceID、人物重新识别、汽车品牌识别、物体检测、语义和实例分割、图像/视频增强、图像/视频超分辨率等。
图1示出了用于分类任务的典型CNN架构的示例。输入节点1001具有RGB图像的Hin×Win×3或灰度图像的Hin×Win×3的大小(也称为形状或尺寸)。1002-与和激活层耦合的卷积层相关。1004与全连接层相关。1003表示神经网络的节点,1005表示CNN的输出节点。以RGB/灰度为输入,CNN依次计算直到输出节点的所有中间节点。输出节点表示属于其中一个类(这里是猫、狗、自行车、汽车)的输入图像的概率矢量。
还有许多其它类型的流行的NN架构。例如,用于自然语言处理(Natural LanguageProcessing,NLP)任务的递归神经网络(recurrent neural network,RNN)和用于NLP和CV任务的变换器。
训练:通过考虑样本观察,对网络进行调整,以更好地处理任务。训练包括调整网络的权重和其它参数,以提高结果的准确性(即NN的输出)。这是通过最小化观察到的误差来实现的。在神经网络的训练完成后,具有自适应权重的神经网络称为经过训练的神经网络。因此,神经网络是一个可训练的神经网络。
损失函数:是将一个或多个变量的值映射到一个实数上的函数,表示与观察到的变量相关的一些“成本”。例如,如果我们考虑多维数组(例如视频)上的误差值,那么损失函数可以是与误差平方的平均值对应的均方差(MeanSquareError,MSE)
反向传播:是一种调整权重以补偿学习期间发现的每个错误的方法。从技术上讲,反向传播计算与给定状态相关的成本函数相对于权重的梯度(导数)。权重更新可以通过随机梯度下降(stochastic gradient descent,SGD)或其它方法完成。
神经网络训练初始化:是一种在训练过程开始时分配神经网络层权重的方法。
典型的NN训练过程包括将训练数据集划分为一批样本。然后,对所有批处理顺序执行反向传播方法。所有训练数据集样本的一次反向传播处理称为训练周期。
神经网络推理:是对测试数据进行训练的神经网络的执行过程。
神经网络大小:是存储神经网络所需的内存量(即定义神经网络的参数)。通常,网络的大小是存储神经网络图(架构)所需的内存量和存储层权重所需的内存量的总和。存储卷积滤波器大小为K×K×Cin×Cout的卷积层权重所需的内存量可以计算为Cin*Cout*K*K*numbits_of_1element。
轻量级眷积层:神经网络层的输入和输出大小(也称为形状或维度)与常规卷积层相似,但存储层的权重所需的内存量要小得多。
张量训练眷积层(TTConv):是神经网络的轻量级卷积层。图3示出了这种轻量级卷积层的示例。对于大小为K×K×Cin×Cout 3001的滤波器,相应的TTConv层由3个卷积层(conv1、conv2、conv3)组成。Conv1 3002的大小为1×1×Cin×R1*R2。Conv2(3003)的大小为K×K×R1×1。Conv33004的大小为1×1×R2×Cout,其中,R1,R2是指TTConv层的等级。一般来说,等级越低,TTConv层的参数就越少。TTConv等级和性能之间存在权衡。TTConv层使用以下过程应用。
-conv1卷积大小为Cin×Hin×Win3005的输入数据。conv1的输出具有形状R1*R2×Hin×Win 3006。
-conv1 3006的输出被划分为大小为R1×Hin×Win的数组R2
-划分数组由conv2卷积。
-conv2的输出被级联3007。
-conv2的级联输出与conv3进行卷积。conv3的输出是TTConv层3008的输出。
卷积的轻量级版本的输入和输出大小与常规卷积相同,但参数要少得多。例如,在内核为3的正则卷积的情况下,输入和输出信道的数量为64,并且具有3*3*64*64=36864个参数。相反,R_1=R_2=4的TensorTrain卷积层具有64*4*4*1*1+4*3*3+4*64*1*1=1316个参数。
神经网络压缩:是一个减小神经网络大小的过程。有很多NN压缩方法,例如,包括:
·权重共享压缩是网络约简的简单形式之一,涉及层之间的权重共享,如D.Babin等人在“使用质心字典的CNN推理加速(CNNinference acceleration using dictionaryof centroids)”中所讨论的,并在图4和图5中示出。对于此方法,张量权重的不同子张量是相似的,并且不保存所有子张量,只保存一个子张量,而对于所有其它子张量,只保存参考。
·量化:网络量化通过减少表示每个权重所需的比特数来压缩原始网络。没有经过量化和经过量化的权重值分布如图6所示。例如,在权重最初是双精度(例如64位)的情况下,位数(位深度)可以减少到单精度(浮点32位)。需要说明的是,这只是通过减少位深度来量化的简单示例。然而,为了本发明的目的,可以应用任何类型的量化。
·修剪(pruning):是一种压缩方法,包括从经过训练的模型中删除一些不重要的权重。在机器学习中,修剪是删除不必要的层或层的权重。修剪操作的示意图在图7中示出,示出了不受修剪的训练网络的经过训练网络7010和经受修剪的经过训练网络7020。在网络7020中,通过删除相邻层的节点之间的权重(连接)和删除层内的节点来修剪权重和层。
·推理时间神经网络压缩:是一种神经网络压缩方法,通常从以标准方式训练的网络开始,而不考虑压缩。
·训练感知神经网络压缩:是一种神经网络训练的方法,它为神经网络层的力权重提供了额外的正则化损失,用一些压缩方法更好地压缩。
·残差神经网络(ResNet)是卷积神经网络的一类。残差神经网络利用跳过连接或快捷方式跳过一些层。典型的ResNet模型是用双层或三层跳过实现的,这些跳过包含非线性(例如ReLU)和之间的批归一化。这在图8和图14中说明。
典型的ResNet架构由一定数量的残差块组成。ResNet在图8中示出,示出了第一卷积层810之后跟ReLU,最后卷积层850之后跟ReLU 860,以及在它们之间的多个残差块830至840。还存在跳过连接801。
图14例示了残差块结构。它包括两个卷积层1410、1420、卷积层之后的ReLU层1430、1460、从块的输入到conv2的输出1450的跳过连接1440和跳过连接之后的ReLU层,如图14所示。
·聚类是将一组对象分组的任务,使同一组(称为聚类)中的对象彼此更相似(在预定义的相似性度量的意义上),而不是与其它组(聚类)中的对象更相似。
配备了上述定义的术语,参考图8描述了CNN对输入图像的典型处理。图8示出了一个示例,其中CNN(或通常NN)被用作图像增强的滤波器。重建图像(亮度帧)被馈送到CNN网络中,CNN网络在处理后提供例如更高质量的图像(增强亮度帧)作为输出。
所谓的增强滤波器可以在大数据集上进行训练,并应用于其它视频序列。这个情况被称为离线培训。图10示出了由编码器1020编码到码流中并提供给信道1030的图像(例如静止或视频图像)1010。这种编码器可以是任何已知的图像或视频编码器,可以但不必基于神经网络。解码器1040获取经编码码流并对其进行解码。在解码之后,滤波器1050被应用于经解码图像。然后可以示出经解码和经滤波图像1060。
所述滤波器可以是基于CNN的滤波器。它可以是环路滤波器(loop filter,LF),如CNN-LF。但是,它也可能是后滤波器。更具体地,它可以是增强滤波器,是指滤波器的目的,以增强重建图像以具有更好的质量(例如,通过客观或主观度量测量)的术语。在离线训练的情况下,压缩视频流通过信道1030传输。CNN滤波器可以在视频流被滤波之前,例如在解码器将CNN滤波器1050应用于经解码视频之前预配置(预训练)。这就是说,CNN-LF不依赖于输入视频1010而改变。它可以根据输入视频序列1010以外的图像或视频序列预先进行训练。
另一种方法是在一个视频序列或一帧或几帧上训练增强滤波器,并将其应用于此视频或一帧或几帧上。在这种情况下,除了压缩视频外,经过训练的网络参数通常还需要发送到解码器。然后,解码器将使用接收到的网络(即网络参数)来获得最终重建图像和滤波图像。这个情况被称为在线培训。图9举例说明了在线培训的典型方案。
原始帧910由传统的视频编码器920编码。编码器920输出压缩视频930和重建帧960。CNN滤波器970经过训练以改进重建帧960(增强),以便更接近具有预定义损失函数的原始帧。CNN滤波器参数通过信道990传输。传统解码器940接收压缩视频并将其解码为经解码帧950。传输的CNN滤波器970将经解码帧950作为输入,并输出增强帧980。通常,在在线训练中,编码端NN 970根据编码的输入(原始)图像(作为应使用NN 970增强的重建图像的目标或地面真相)来训练。NN 970的经过训练的参数被发送到解码器,并通过应用配置有传输参数的NN(解码端推理NN 970)在解码端应用,以重建(特别是增强)经编码图像。在本发明中,术语“传输”是指封装到码流中。传输可以是传输到存储器(临时或永久)或通过通信接口传输等。
无论离线或在线执行的训练,增强滤波器都可以用作环路滤波器(选项1)或后滤波器(选项2),如图27所示。环路滤波器和后滤波器可以位于与参考图描述的相同位置上,上文参考图25和图26所述。
离线训练
在离线训练的情况下,NN模型通常在编码端和解码端都是固定的。因此,不需要将其从编码器发送到解码器。
A.环内滤波器或环路滤波器(选项1):
编码端(例如,图25)
·压缩视频/图像。
·将CNN滤波器(预训练,使用大训练数据集)用作重建图像的环路滤波器(例如,在图25中的环路滤波器220的位置上,例如,作为传统环路滤波器的替代或除了传统环路滤波器之外),滤波后的图像将用作另一个图像的参考图像。
解码端(例如,图26、图27)
·解压缩视频/图像(例如,通过图26和27中重建单元314之前并包括重建单元314的模块)。
·将CNN滤波器(预训练,例如,使用大训练数据集,与编码器中的CNN滤波器相同)用作解压缩/经解码图像的环路滤波器(例如,在图26中的环路滤波器320的位置上,例如,作为传统环路滤波器的替代或除了传统环路滤波器之外,例如,如图27:CNN环路滤波器2701中所示,除另一个环路滤波器320之外)。经滤波图像可以用作预测另一图像的参考图像,即存储在解码图像缓冲区330中。
B.后处理滤波器或后滤波器(选项2):
编码端
·压缩视频/图像(这可以与选项1中的方法相同)。
由于后滤波器不会影响参考图像,因此编码器不需要执行后滤波过程。后滤波器的应用通常用于提高要呈现(例如显示)的图像的质量。如果编码器不呈现图像(通常不呈现图像),则无需应用后滤波器。另一方面,如果需要图像的呈现,则也可以在编码端应用后滤波器。
编码器可以包括环路滤波器220(传统或CNN或两者的组合),如上文针对选项1所述。
解码端(图27)
·解压缩视频/图像(这可以与选项1中的方法相同)。
·使用CNN滤波器2702(预训练,使用大训练数据集)作为解压缩/经解码图像的后滤波器。经滤波图像可以用作预测另一图像的参考图像,即存储在解码图像缓冲区中。
解码器可以包括环路滤波器320/2701(传统或CNN或两者的组合),如上文针对选项1所述。
在线训练
在在线训练的情况下,NN模型的参数与压缩视频一起发送到解码器。在线训练的典型场景如下:
编码端
·运行没有CNN滤波器的视频编码器。
·使用均方差(mean square error,MSE)损失函数或其它损失函数在输入-重建图像、输出-输入图像上训练CNN滤波器。换句话说,NN的输入应该是重建图像(或多个重建图像),NN的输出应该是正在编码的原始图像(或多个原始图像)。损失函数可以是任何失真函数(测量或度量)。CNN滤波器可以是预训练的,因此CNN的训练也可以被称为重训练或更新CNN。
·压缩(训练或重训练)CNN滤波器参数,例如使用一种或多种神经网络压缩方法(例如量化和/或熵编码)。
·发送(压缩)CNN滤波器参数和经编码视频流。
解码端
·获取经编码视频流和压缩后的CNN滤波器参数。
·运行CNN解压缩以获取CNN滤波器参数。
·运行视频解码器以获取经解码图像。
·将CNN滤波器(配置了解压缩后的CNN滤波器参数)应用于经解码图像。
与离线训练类似,在线训练CNN滤波器也可以用作环路滤波器(选项1)或后滤波器(选项2)。
上面的描述是基于CNN的增强滤波器,用作在线训练或离线训练的示例。该机制也可用于其它基于神经网络的压缩工具,如基于深度学习的帧内预测、基于深度学习的帧间预测或基于深度学习的自适应采样等。
如上所述,对于离线训练,不需要将网络模型发送到解码器,这样比特成本就低于在线训练情况。然而,网络无法适应待压缩数据的内容,因此离线训练的压缩效率通常仍然不够。
反过来,在线训练面临着这样一个问题,例如,在视频压缩中,神经网络参数与视频的比特成本相比具有显著的比特成本(速率),因此,即使是图像质量的显著增益也无法补偿更显著增加的比特成本。例如,对于具有40层的典型CNN滤波器,传输成本可以是3MB,而4K视频序列中1帧的平均比特可以小于0.5MB。因此,高效的网络建设和压缩以获得最佳的在线内容适配是一项具有挑战性的任务。
鉴于上述方法的问题,需要提供一种高效的方法来表示和压缩网络模型,同时保持低传输网络模型的成本。如下面将详细说明的,本发明的一些实施例和示例解决了使用神经网络编码和解码输入图像的在线训练的上述问题,这可以通过传输最小的网络参数集来降低传输网络模型的成本。
具体地,本发明的一些实施例提供了用于执行基于在线训练的数据压缩方案的装置和方法,其使用以下方法中的一个或多个,这些方法将在后面以及一些示例性的替代方案中更详细地描述:
–现有NN模型(编码器和解码器中已经存在)的层的部分更新(一个或多个层,但不是所有层都被更新),包括在编码端训练部分更新(可更新)层。
在整个描述中,现有神经网络是指已经配置在编码端和/或解码端的神经网络。换句话说,现有的神经网络可以指具有预配置参数的层的当前神经网络。所述参数的预配置可以通过预训练来执行。因此,现有或当前神经网络也可以称为预配置神经网络和/或预训练神经网络。
–在一些示例性实现方式中,可以编码和传输用于更新可更新层的信息。在解码端,更新可更新(部分更新)层的信息可以被解码,以获得修改或更新的模型(即,具有部分更新参数的更新后神经网络),用于在解码器中进行推理。这种修改或更新的神经网络可以被视为(一个)其它神经网络(除了(部分)更新之前的神经网络之外的神经网络)。
在整个描述中,另一个神经网络是指神经网络(在编码端和/或解码端),其中现有神经网络受到(部分)更新。所述更新可以包括(选择的)可更新层的一个或多个可更新参数的(部分)更新和/或层的(部分)更新(例如它们的层索引,或通常关于分别选择哪些层作为可更新层进行更新的更新)。因此,另一个神经网络也可以称为更新的神经网络。
–在一些示例性实现方式中,可以压缩将被更新的层(这些层的指示和/或参数),例如通过紧凑表示、基于字典的机制或另一种神经网络压缩方法。
–另一个(修改、更新)NN模型中的部分更新(可更新)层可能具有与现有(当前)NN模型不同的架构。例如,现有模型是另一个(修改、更新)模型的一部分,这意味着对于要在另一个NN模型中更新的层,它包括现有NN模型中同一层的原始部分,并包括新添加的部分。在编码器中,只有新添加的部分(在下面的实现方式中也称为增量部分)被重训练,并且新添加的部分的权重将被编码并发送到解码器。在解码器中,新添加部分的权重的位被解码,并用于获得另一个NN(修改、更新)模型。
–压缩将更新的层的新添加部分,例如使用紧凑表示、基于字典的机制或另一种(例如无损)网络压缩方法。
根据本发明的一个实施例,提供了一种用于对一个或多个输入图像1010、17进行编码的装置2100,其中,所述编码包括使用神经网络。一个或多个输入图像可以是静止图像或视频图像。图像(静止或视频)可以包括一个或多个样本(即像素)。通常,图像将是样本的矩形排列。例如,在灰度图像中,样本可以属于单个信道。然而,本发明可以同样地应用于多个信道,例如颜色信道或其它类型的信道(例如深度、运动等)。神经网络可以是任何人工神经网络,如多层感知器或卷积神经网络等。本发明不限于任何特定的神经网络架构。上面的术语“使用神经网络”是指任何类型的用途,例如使用如上所述的滤波器,其可以是环路滤波器。然而,本发明并不限于此。使用并不意味着必须应用这样的滤波器:例如,在后滤波器的情况下,它可以仅通过使用神经网络在编码端确定。本发明不限于滤波。神经网络可以用于其它任务,例如图像数据的编码或解码,或用于编码/解码图像数据的数据,例如译码参数(运动矢量、运动信息、预测模式等)。神经网络可以用于经典的混合编码器/解码器或基于神经网络的方法。除了视频或静止图像编码之外,一些实施例可用于计算机视觉任务,例如对象的识别或分类等。
图21示出了用于使用神经网络NN对一个或多个输入图像进行编码的编码装置2100的框图。装置2100包括处理电路2110,处理电路2110用于从神经网络的层1310、1320中选择一个或多个可更新层1310。换句话说,编码器可以确定哪些层将被更新(例如,重训练)。图13示出了具有层1310和层1320的神经网络NN的示例。在所述示例中,层1310被选择为被更新(可更新层),这意味着它们各自的参数(例如权重或权重变化)可以在NN的训练期间改变(可以被更新)。反过来,层1320不被选择用于更新(固定或不可更新层),这意味着它们各自的参数(例如权重)被保持并具有它们的预配置参数。因此,层1320是预配置层。预配置可以在预处理步骤中执行,例如通过离线训练。层1310的相应索引[i,…,i+s]包括在层列表中。除非解码器还不知道索引,否则编码器将预配置层的信息编码到层码流中,并将层码流发送到解码器。
处理电路还用于根据一个或多个输入图像(例如在线)训练所述神经网络。训练包括更新一个或多个可更新层的一个或多个参数,并保持神经网络层中的一个或多个预配置层1320的参数。因此,仅训练可更新层的参数,而预配置层的参数不改变,也不训练(至少在编码用于执行可更新层参数的在线训练的一个或多个当前图像期间不训练)。
一个或多个可更新层的一个或多个参数可以包括权重。可替换地或此外,所述一个或多个参数可以包括施加到一个或多个可更新层的偏差。可以训练表征(配置)神经网络的任何其它参数。类似的适用于一个或多个预配置层的保持参数,可以是权重、偏差等。
保持一个或多个预配置层的参数意味着在更新一个或多个可更新参数的神经网络的训练期间,所述参数不受改变/更新的影响。换句话说,虽然NN的训练涉及整个网络及其全部参数,但实际训练仅通过更新可更新参数来修改它们。需要说明的是,保持的参数也可以改变并经受某种更新处理。然而,这可能比可更新层更频繁地发生,或者仅在视频的开头等发生。换句话说,例如对于整个视频流,预配置参数可以是(在一些实施例中),但不一定是固定的。
例如,预配置层可以被预配置,因为相应的(保持的)参数可以通过神经网络的预训练获得,该神经网络在实际NN训练之前通过更新一个或多个可更新参数来执行。预配置可以是预训练的,可以离线执行,以便用预训练的参数初始化神经网络。或者,预配置参数的(预)训练也可以在线执行,但频率低于可更新参数的训练更新处理。
处理电路2110还用于将关于一个或多个可更新层的一个或多个更新后的参数的信息编码到参数码流部分中1190。编码可以用神经网络执行。此外,处理电路可以将一个或多个输入图像编码到图像码流部分1180中。
根据一种实现方式示例,使用神经网络对一个或多个图像进行编码。图像编码可以通过神经网络执行,如适用于环内滤波。或者,图像编码可以在没有神经网络的情况下执行,使用以下任一编码标准,包括MPEG-1视频、MPEG-2视频、VP8、VP9、AV1、ITU-TH.262/MPEG-2、ITU-T H.263、ITU-T H.264/MPEG-4第10部分、高级视频编码(Advanced VideoCoding,AVC)、ITU-T H.265、高效视频编码(High Efficiency Video Coding,HEVC)、ITU-TH.266/通用视频编码(Versatile Video Coding,VVC)和这些标准的扩展,如可扩展性和/或三维(three-dimensional,3D)扩展。图像编码适合于后滤波。
通过仅重训练或更新神经网络所有层的子集(一个或多个,但不是全部),即具有可更新参数的一个或多个可更新层,可以加速NN训练,从而减少用于NN训练的时间。此外,随着对更新后的参数的信息(在所述NN训练之后)进行编码,指示开销也会减少。因此,只编码了部分NN参数,而不是对整个网络进行参数化。
例如,神经网络的一个或多个预配置层和/或一个或多个可更新层为卷积层1410、1420。图2示出了卷积层的示例。在所述示例中,输入数据2001的大小为6×6×3(例如,宽度和高度的6个样本和作为信道的3个颜色或3个色度和亮度分量的输入),卷积滤波器2002的大小为3×3×3×2(每个内核具有宽度和高度的3个权重的大小K,3个信道中的每个信道都有2个内核(参见滤波器1和滤波器2),定义输出信道数量的内核或滤波器数量)。卷积滤波器2002可以表示为大小为3×3×3的2个滤波器(滤波器1、滤波器2)。它们都使用滑动窗口原理与输入数据卷积,以获取4×4(每个输出通道在宽度和高度上包括4个样本,例如通过逐元素方式添加通过对3个输入信道进行滤波所获取的结果)输出数据2003。最终输出数据2004的大小为4×4×2(2个输出通道,每个通道在宽度和高度上包括4个样本)。
根据另一种实现方式示例,处理电路用于根据包括速率、失真和复杂性中的至少一个的成本函数的优化来选择一个或多个可更新层。例如,所述成本函数可以通过用于速率失真优化(rate distortion optimization,RDO)的函数,失真+λ*速率,其中,失真是重建信号的失真(重建信号与原始信号之间的距离或差),速率是比特数,λ是一个叫做拉格朗日乘数(简称拉格朗日乘数)的系数。这种形式的函数有助于在高质量的图像(即低失真)和低数量编码比特的约束下优化成本。在许多应用中,这是首选的优化成本函数。重建信号可以指重建图像,而原始信号可以指原始图像。因此,可以以优化的方式选择一个或多个可更新层,从而改进神经网络的整体训练。
图11示出了编码器处理的示例性实现方式,并将在稍后更详细地描述。在一种示例性实现方式中,处理电路用于将关于一个或多个可更新层的信息编码到层码流部分1195中。例如,关于所述一个或多个可更新层的信息包括所述一个或多个可更新层的层索引,所述层索引是根据预设规则进行索引的所述神经网络的层中的一个或多个可更新层的索引。例如,层索引的预设规则可以是从神经网络的输入到输出的连续索引。参数码流部分1190、图像码流部分1180和层码流部分1195可以编码到一个码流中,如图11所示。或者,不同的码流部分可以单独编码。不同的码流部分1180、1190和1195可以以不同的顺序编码和传输,并且其它码流部分(例如用于其它目的)可以设置在它们之间。术语码流部分也可以是码流部分。此外,关于一个或多个可更新层的信息可以包括所选择的可更新层的数量(即量)。例如,所选择的可更新层的数量可以是预先设置的,因此在解码端也是已知的。因此,可能不需要所述可更新层的指示信息,从而减少了指示开销。反过来,如果被指示,开销仍然减少,因为信息与可更新层相关,而不是与所述神经网络的整个层相关。因此,层码流部分的比特量较小。
在图21所示的装置2100的一种示例性实现方式中,处理电路2110可以包括:用于编码的相应模块,例如用于从NN层中选择一个或多个可更新层的选择模块2112;NN训练模块2114,用于使用输入图像训练包括选择的可更新层和预配置层的神经网络。最后,编码模块2116、编码模块2118和编码模块2120,用于将关于可更新层的信息、关于更新后的参数的信息和输入图像编码到它们各自的码流部分中。
根据一种示例性实现方式,可更新层1310具有一个或多个可更新参数和一个或多个预配置参数。可更新层属于正在选择的一个或多个可更新层。此外,所述处理电路用于通过更新一个或多个可更新层的一个或多个可更新参数并保持一个或多个预配置参数来训练神经网络。换句话说,可更新层具有参数,其中一部分在NN训练期间更新,而其余参数是预配置的,在NN训练期间不受变化的影响。这意味着,虽然通常可更新层的所有参数都可以通过训练改变,但可更新层的所述参数被划分成在训练期间被改变的参数子集,并且另一个参数子集在NN训练期间保留它们的参数值。可更新层的保持的预配置参数可以通过以与NN的一个或多个预配置层的(保持)预配置参数类似的方式执行预训练来进行预配置。因此,NN训练可以进一步加速,以及用于计算和指示关于更新后的参数的信息的开销并且并非所述可更新层的所有可更新参数都可以更新。因此,在所述NN训练期间更新的参数量进一步减少。
图16进一步在左侧示出了可更新层,其可以是卷积层Conv 3×3×48×48。如图所示,第一层Conv1的输出输入到公共ReLU中。右侧示出了原始部分和增量部分,这两个部分都是左侧公共Conv1层的一部分。其中,原始部分是指在训练期间保持预配置参数的可更新层。反过来,增量部分指的是可更新的参数,这些参数在NN训练期间会被更新。
在一种示例性实现方式中,所述可更新层1310、1620、1705包括权重为所述一个或多个可更新参数的可更新子层1526、1626、1720和权重为所述一个或多个预配置参数的预配置子层1524、1624、1710。参考图16,可更新子层对应于增量部分(即增量层),预配置子层对应于原始部分(即原始层)。可更新子层和预配置子层是并行(子)层,其结果被合并到公共输出中。此外,可更新层的相同输入被提供给可更新子层和预配置子层;可更新层的输出是可更新子层和预配置子层的元素和1730。向两个子层提供相同的输入意味着可更新子层和可更新层的预配置层是并行的,如图16所示。此外,子层的相应输出被求和。在一个示例中,可以对子层的所有输出执行逐元素求和。
图17示出了可更新层1705的另一个示例,类似于图16中层1620的那些示例。层1705可以是卷积层,并由编码器选择为可更新层。在图17所示的情况下,层1705包括原始部分1710和增量部分1720。原始部分1710对应于预配置子层,而增量部分1720对应于可更新子层。因此,在训练期间,原始部分1710保持其预配置参数(例如权重),并且更新增量部分1720的参数(例如权重变化)。需要说明的是,在所述示例性实现方式中,原始部分和增量部分平行设置,并采取相同的输入。然后,它们的输出被逐元素求和1730。
使用所述可更新层的子层并在保持预配置权重的同时训练可更新子层的权重,有助于根据相对于预配置权重的权重变化来训练可更新层。这被称为增量权重训练。因此,NN训练被加速,因为预配置权重被用作所述训练的参考。换句话说,NN训练的收敛速度可以加快。
根据一个示例,所述可更新子层包括稀疏神经网络层3006、4003、5010。因此,所述可更新子层的参数数量减少。例如,可更新子层包括张量训练神经网络层3006、4003、5010。所述张量训练神经网络是稀疏NN的一个示例。张量训练NN层是图3所示的轻量级卷积层的一个示例。
图3示出了如上所述的这种轻量级卷积层的示例。对于大小为K×K×Cin×Cout(3001)的滤波器,相应的TTConv层由3个卷积层(conv1、conv2、conv3)组成。Conv1(3002)的大小为1×1×Cin×R1*R2。Conv2(3003)的大小为K×K×R1×1。Conv3(3004)的大小为1×1×R2×Cout,其中,R1、R2是指TTConv层的等级。一般来说,等级越低,TTConv层的参数就越少。TTConv等级和性能之间存在权衡。卷积的轻量级版本的输入和输出大小与常规卷积相同,但参数要少得多。例如,在内核大小为3×3的正则卷积的情况下,输入和输出信道的数量为64,并且具有3*3*64*64=36864个参数。相反,R_1=R_2=4的TensorTrain卷积层具有64*4*4*1*1+4*3*3+4*64*1*1=1316个参数,如上所述。
根据一种实现方式,处理电路用于通过与用于训练一个或多个预配置参数的训练方法相比较不复杂的训练方法更新一个或多个可更新参数。例如,由于可更新层的训练可以使用预配置子层的预配置参数来执行,因此可更新子层的可更新参数的实际训练需要较少的参数更新,并且可能需要较少的训练步骤。因此,NN训练的复杂性降低,因此可以节省训练成本(例如复杂性、延迟等)。
在一个示例中,一个或多个可更新层是卷积层1003、3001、810、850、1410、1420、1620、1705;并且以下至少一个适用:较不复杂的训练处理的参数更新比用于训练一个或多个预配置参数的训练方法少;较不复杂的训练更新的卷积核比用于训练一个或多个预配置参数的训练方法更小。因此,可以减少NN训练所需的时间。此外,较小的卷积核作为输出的更新参数较少,因此减少了所述更新参数的指示开销。
图2示出了卷积层的示例。在所述示例中,输入数据(2001)的大小为6×6×3(例如,宽度和高度的6个样本和作为信道的3个颜色或3个色度和亮度分量的输入),卷积滤波器(2002)的大小为3×3×3×2(每个内核具有宽度和高度的3个权重的大小K,3个信道中的每个信道都有2个内核(参见滤波器1和滤波器2),定义输出信道数量的内核或滤波器数量)。卷积滤波器(2002)可以表示为大小为3×3×3的2个滤波器(滤波器1、滤波器2)。它们都使用滑动窗口原理与输入数据卷积,以获取4×4(每个输出通道在宽度和高度上包括4个样本,例如通过逐元素方式添加通过对3个输入信道进行滤波所获取的结果)输出数据(2003)。最终输出数据(2004)的大小为4×4×2(2个输出通道,每个通道在宽度和高度上包括4个样本)。需要说明的是,作为这种张量训练层,图3中所示的TTConv层是一个专门的卷积层。例如,在内核为3的正则卷积的情况下,输入和输出信道的数量为64,并且具有3*3*64*64=36864个参数。相反,R_1=R_2=4的TensorTrain卷积层具有64*4*4*1*1+4*3*3+4*64*1*1=1316个参数。
在另一种示例性实现方式中,所述处理电路用于:通过伪随机初始化一个或多个可更新层1626的一个或多个可更新参数,更新所述一个或多个可更新参数;使用原始图像910和重建图像960对执行训练。因此,所述可更新层被快速且简单地初始化,从而降低了训练复杂性。图16示例了可更新层包括可更新子层和预配置子层(增量权重训练)的这种情况。如上所述,在这种情况下,预配置参数是指预配置权重,该权重反过来可以通过离线或在线训练过程中的预训练获得。这些权重可能已经接近NN训练后获得的最终权重。训练的一部分是初始化待训练的可更新参数,这些参数可以以随机的方式执行。使用这些随机权重作为一种初始猜测,然后可以使用原始图像和重建图像执行NN训练。例如,这有助于确定图像残差,所述图像残差用作NN的成本函数,以便训练权重。需要说明的是,这对于后滤波器和环路滤波器和时空滤波器或其它增强滤波器是正确的。例如,对于端到端(end-to-end,E2E)编码,可以仅根据原始视频图像进行训练。对于一些其它工具,可能还有一些其它选项。例如,变换处理单元(例如图25中所示的变换处理单元206或逆变换处理单元212、312)可以是基于NN进行训练的,在这种情况下,可以使用与变换系数可以被量化的程度相关的成本函数。
根据另一种实现方式,处理电路用于通过根据原始图像910和重建图像960对更新一个或多个可更新层的一个或多个参数,训练神经网络。重建图像可以在没有神经网络的情况下重建。此外,所述一个或多个可更新层的所述一个或多个参数包括所述一个或多个可更新层的权重。在本示例性实现方式中,NN训练在使用原始图像和重建图像对的同时更新各自的权重。换句话说,图像残差(即重建图像和原始图像之间的差异)可以用于训练NN,但更新的是权重。NN的一个或多个可更新层1310是卷积层1410、1420。图14和图16(左)示出了两个卷积层Conv1和Conv2的示例,其内核为3×3×48×48。从图14和图16(左)中可以看出,待更新的相应Conv层没有可更新和预配置的子层,如前面讨论的和图15和图16(右)中所示。因此,可更新层的可更新参数是直接更新的权重(参考权重训练)。需要说明的是,虽然权重会发生变化,但权重仍然可以通过预训练(在线或离线训练)预配置,因此可以用作权重的初始化参数。另一个选项是预设权重。或者,权重可以被初始化,例如,随机地。因此,所述神经网络的架构具有低复杂性,因为在这种情况下,所述可更新层不包括并行布置的两个子层。
根据一种实现方式,处理电路还用于:根据一个或多个输入图像,通过预训练神经网络进行预配置,其中,所述预训练包括以比训练一个或多个可更新层更低的频率来更新一个或多个预配置层的参数;将关于一个或多个预配置层的更新后的参数的信息编码到网络码流部分中。神经网络在这里指的是存在于编码端和解码端的现有NN模型。需要说明的是,现有的NN模型可能并不意味着所述NN就其预先配置的参数而言是编码器和解码器的固定部分。相反,预配置参数可以经过预训练,并为此根据需要重训练。因此,用于预配置一个或多个预配置层的目的的预训练意味着在更新可更新层的可更新参数的NN的实际训练之前(离线或在线)执行所述预训练。区别在于执行预配置参数的预训练的频率(即在一定时间内的频率)。由于预配置参数通常比可更新参数多,因此预训练的执行频率低于实际的NN训练。现有的NN模型也可以被压缩并发送到解码器,但时间要长得多。例如,预训练可以使用图像P的数量为10或32,但预训练是针对每1000万帧执行的。新的现有模型(即新的预配置NN)可以被发送到解码器。当然,预训练可以重复应用于新的现有模型。因此,可以通过使用更新后的预配置参数来改进神经网络的实际训练。此外,关于更新后的预配置参数的信息编码到与其它码流部分(视频、参数、层)分开的网络码流部分中。因此,与更新频率较低的预配置参数相关的信息与和更新频率较高的可更新参数相关的信息分开。
在另一种示例性实现方式中,处理电路还用于:获取多个预配置层集;从多个预配置层集中选择包括神经网络的一个或多个预配置层的集合,其中,关于更新后的参数的信息是选择的集合的指示。所述选择的集合的指示可以是相应神经网络层的索引。或者,该指示可以是所述NN的参数。例如,可能有多个现有的NN模型N1、N2……Nj……NM,编码器可以从中选择一个模型Nj作为现有的NN模型N(Nj→N)。然后,编码器发送/传输NN索引j等到解码器。解码器会根据索引j确定将使用的现有NN模型N。因此,NN训练可以通过选择现有NN来适应特定的压缩任务,从而改进整体NN训练。
又如,对层的选择和/或更新是以不同的间隔执行的。如上所述,层的选择直接影响NN的架构,因为所述层选择指定了实际选择的NN层中的哪些层被更新。反过来,层选择后的层更新通过可更新参数影响输出响应,这些参数在NN训练期间改变。因此,可以避免层选择和层更新之间的干扰,这提高了所述NN训练的性能和稳定性。此外,NN训练可以根据层选择或层更新的偏好进行适配。
例如,每个P帧都将具有对应的信息来更新待更新的层。然而,即使在一个视频中,P也可能有所不同。例如,假设一个视频具有1000帧(f0、f1……f999)。例如,包括帧f0至f10的第一帧集会具有对应的信息来更新待更新的层。包括帧f11至f35的另一个帧集会具有另一个对应的信息来更新待更新的层。此外,层列表updateLayersList也可以针对不同的帧集更改,这意味着可更新层可以根据特定的帧集选择。
例如,关于一个或多个可更新层的信息是以比编码关于一个或多个可更新层的一个或多个更新后的参数的信息更低的频率编码的。这意味着,所述可更新层的选择比所述可更新层参数的重训练更频繁。因此,NN训练可以优先于层更新(即更新后的参数)而不是层选择来执行,这可以进一步简化NN训练。
就码流语法而言,这种实现方式可以包括指示层码流部分1195的频率低于参数码流部分1190。例如,层码流部分1195可以在适用于多个图像的参数集中指示,而参数码流部分1190可以在图像头或条带头中指示,或者通常在适用于比指示层码流部分的参数集合更少图像的参数集中指示。具体地,层码流部分1195可以在序列参数集或图像参数集或视频参数集等中指示,而参数码流部分1190可以在图像头等中指示。
在另一种示例性实现方式中,训练是基于第一数量个输入图像和重建图像对;在对第一数量个输入图像进行编码之后,对一个或多个更新后的参数的信息进行编码,经过训练的神经网络将应用于第二数量个重建图像;第二数量大于第一数量。术语数量是指对的数量。第二数量个输入图像可以包括第一数量对的所有输入图像。或者,第二数量对可以包括第一数量对的一部分。或者,第二数量对可以不包括第一数量对。
例如,假设正在编码100个帧。编码器可以使用帧f0至f9进行编码,并用于训练神经网络以获得新模型(即具有更新后的参数的新NN)。然后,新的网络模型可以用作以下帧(例如帧f10至f99)的滤波器,作为环内滤波器或后滤波器的情况。但是,新的网络模型可能不适用于帧f0至f9。否则,即使帧被编码f0并传输(在视频码流部分),帧f0也无法重建(因为没有NN滤波器),并显示在解码端,除非帧f9的编码完成。然后,可以训练NN模型,并向解码端指示。在这种情况下,低延迟会受到影响(实时编码)。在上面的示例中,延迟>10帧的时间延迟。编码(码流)顺序可以如下:[f0~f9][NN参数][f11~f99]。在这种情况下,NN参数不需要等待帧[f11~f99],因为NN参数可以在编码帧[f0~f9]后获得。类似的情况也适用于帧[f11~f99]的NN参数设置。在这种情况下,帧f0~f9的质量可能较低,但可以实现低延迟功能。或者,新的网络模型可以应用于第一帧组f0至f9的一部分,例如帧f8和f9。或者,新的网络模型可以应用于所有第一帧集f0至f9。至于解码端,解压缩网络模型可以应用于与上面讨论的编码端相同的帧。否则,即使解码帧f0,帧f0也不能显示,除非在f9之后,NN参数可用。新的网络模型可能不适用于帧f0。在这种情况下,低延迟会受到影响(实时解码)。
因此,NN训练可以在较小的输入图像对集合上执行,而解码端NN可以应用于较大的输入图像集合,因此加速所述NN训练并使其不那么复杂。不过,可能会定期调整图像内容。
例如,为了获取关于更新后的部分层的信息,使用重建的P帧和原始的P帧。在解码器中,使用解码信息将推导出的其它NN模型(即具有更新后的参数的NN)应用于P帧。需要说明的是,推导出的其它NN模型也可以用于P帧之外的其它帧。例如,假设一个视频具有1000帧(f0、f1……f999)。例如,包括帧f0至f10的第一帧集会具有对应的信息来更新待更新的层。在解码器中,使用对应的信息推导出另一个NN模型。另一个NN模型将应用于包括帧f11至f35的另一个帧集。另一个NN模型甚至可以应用于其它帧集,但可以不应用于包括帧f0至f10的帧集。
在一个示例中,神经网络是经过训练用于后滤波2702的神经网络。图27示出了具有环内滤波器220的编码器20,并提供经编码图像数据21的输出271。对于这种情况,CNN滤波器(即增强滤波器)可以位于编码器的外部,CNN滤波器将输出272作为输入。相应的输出将是经过滤波的输出(选项2)。在另一个示例中,神经网络经过训练以执行环内滤波2701、端到端图像译码、自适应采样和图像译码参数的译码中的一个。在这种情况下,CNN滤波器可以位于图27的环内滤波器220的左侧,作为输入滤波块221(选项1)。CNN滤波器的相应输出将被提供作为解码图像缓冲区230的输入。图像译码参数可以包括运动矢量、预测类型等。因此,所述神经网络的相同架构可用于训练不同类型的视频压缩任务的NN。因此,NN训练可以以灵活的方式执行,并适用于各种任务。
例如,在视频压缩的自适应空间采样的情况下,重建的空间下采样视频和原始下采样视频(原始空间分辨率视频)被用作训练数据,以获得用于更新待更新的部分层的信息。关于更新参数的信息将被编码并发送到解码器。解码器会解码信息,并使用它来获得另一个模型。另一个模型是指解码端的神经网络,它使用更新后的参数。另一个模型用于对解码的低空间分辨率视频进行上采样。
图19举例说明了上述编码器方案。在本示例中,离线步骤作为一种预处理和随后的在线训练执行。从现有的网络架构1910(例如神经网络)开始,具有多个输入图像的视频数据集1920被用于对网络的参数1930进行训练。在所述示例中,可更新参数(即预训练)是权重。需要说明的是,这些参数对应于作为离线训练的结果的预配置参数。然后,在线训练被执行,其中使用来自离线训练的预配置(即预训练)权重来使用测试视频1940或当前视频1940(例如当前待编码)的输入图像微调网络1910的选择的层的可更新参数。在所述示例中,权重受到微调1950的影响,因此在在线训练期间更新。在线训练的结果是选择的可更新层的一个或多个更新后的参数(此处为权重)。在图19的编码器方案中,执行减法运算1955,其中从可更新层的经过训练的权重中减去预配置权重(权重参考),提供权重差。这些权重差是指关于更新后的参数的信息,所述更新后的参数被编码(即压缩)1960到参数码流部分中。由于权重差的值范围通常小于实际权重的值,因此权重变化的比特的成本降低。或者,更新后的参数和预训练参数之间的元素差(减)(而不是更新后的参数)被编码到参数码流中。此外,测试视频被编码(即压缩)1970到图像码流部分中。包括图像部分和参数部分的压缩码流作为输出1980提供。需要说明的是,输出1980还可以包括经编码层码流部分,所述经编码层码流部分包含关于选择的可更新层的信息。
根据本发明的一个实施例,提供了一种用于对一个或多个输入图像1060、331进行解码的装置2200,其中,所述解码包括使用神经网络。一个或多个输入图像可以是静止图像或视频图像。图像(静止或视频)可以包括一个或多个样本(即像素)。通常,图像将是样本的矩形排列。例如,在灰度图像中,样本可以属于单个信道。然而,本发明可以同样地应用于多个信道,例如颜色信道或其它类型的信道(例如深度、运动等)。神经网络可以是任何人工神经网络,如多层感知器或卷积神经网络等。本发明不限于任何特定的神经网络架构。解码可以适合于解码包括由示例性编码器生成的上述码流部分1180、1190、1195的码流。
图22示出了用于使用神经网络NN对一个或多个输入图像进行解码的解码装置2200的框图。装置2200包括处理电路2210,用于从参数码流部分1220中解码关于一个或多个可更新层1310的一个或多个参数的信息。
处理电路还用于:从图像码流部分1210中解码一个或多个输入图像,所述解码包括使用神经网络进行处理。神经网络包括:具有一个或多个经解码参数的一个或多个可更新层1310;具有预配置参数的一个或多个预配置层1320。一个或多个经解码参数也可以具有经过预训练的参数。所述一个或多个预配置参数可以经过预训练。因此,在解码一个或多个输入图像时,使用可更新层的更新后的参数。
一个或多个可更新层的一个或多个参数可以包括权重。可替换地或此外,所述一个或多个参数可以包括施加到一个或多个可更新层的偏差。表征(配置)神经网络的任何其它参数可以包括在参数码流部分中。类似的适用于一个或多个预配置层的参数,可以是权重、偏差等。
需要说明的是,预配置参数也可以改变并经受某种更新处理。然而,这可能比可更新层更频繁地发生,或者仅在视频的开头等发生。换句话说,例如对于整个视频流,预配置参数可以是(在一些实施例中),但不一定是固定的。
例如,预配置层可以被预配置,因为相应的参数可以在编码端通过神经网络的预训练获得,该神经网络在基于编码器的实际NN训练之前通过更新一个或多个可更新参数来执行。可以通过预训练离线执行预配置。关于预配置参数和/或预配置层的信息可以编码到网络码流部分中,解码器将从网络码流部分解码关于预配置参数和/或预配置层的相应信息。与预配置参数和/或层有关的所述信息可以比关于更新后的参数的信息更低的频率提供给解码器并由解码器解码。
因此,可以通过使用具有小于预配置参数量的量的更新后的参数的神经网络快速解码一个或多个输入图像。因此,当使用更新的NN参数时,图像解码的效率提高了,同时确保了保质量的经解码图像。
根据一种实现方式示例,使用神经网络对一个或多个图像进行解码。图像解码可以通过神经网络执行,如适用于环内滤波。或者,图像解码可以在没有神经网络的情况下执行,使用以下任一编码标准,包括MPEG-1视频、MPEG-2视频、VP8、VP9、AV1、ITU-TH.262/MPEG-2、ITU-T H.263、ITU-T H.264/MPEG-4第10部分、高级视频编码(Advanced VideoCoding,AVC)、ITU-T H.265、高效视频编码(High Efficiency Video Coding,HEVC)、ITU-TH.266、通用视频编码(Versatile Video Coding,VVC)和这些标准的扩展,如可扩展性和/或三维(three-dimensional,3D)扩展。所述图像解码适合于后滤波。
在一种示例性实现方式中,处理电路用于从层码流部分1230中解码关于一个或多个可更新层的信息。例如,关于所述一个或多个可更新层的信息包括所述一个或多个可更新层的层索引,所述层索引是根据预设规则进行索引的所述神经网络的层中的一个或多个可更新层的索引。
例如,层索引的预设规则可以是从神经网络的输入到输出的连续索引。参数码流部分、图像码流部分和层码流部分可以是一个码流,从该码流可以解码图像、关于更新参数的信息和关于可更新层的信息,如图12所示。或者,视频和信息(更新参数、可更新层)可以与相应的码流部分分开解码。术语码流部分也可以是码流部分。此外,关于一个或多个可更新层的信息可以包括其参数待更新的可更新层的数量(即量)。例如,可更新层的数量可以是预设的,因此解码器已经知道。因此,所述解码器可以不需要解码关于所述可更新层的信息,从而减少了指示开销。反过来,如果被指示,解码开销仍然减少,因为信息与可更新层相关,而不是与所述神经网络的整个层相关。因此,经解码层码流部分的比特量较小。
在图22所示的装置2200的一种示例性实现方式中,处理电路2210可以包括用于解码的相应模块,例如:用于从层码流部分解码关于可更新层的信息的解码模块2216、用于从参数码流部分解码关于更新参数的信息的解码模块2218,以及用于从图像码流部分解码一个或多个输入图像的解码模块2220。
此外,所述神经网络的所述一个或多个预配置层1320和/或所述一个或多个可更新层1310为卷积层1410、1420。图2示出了卷积层的示例。在该示例中,输入数据21的大小为6×6×3,卷积滤波器2002的大小为3×3×3×2。卷积滤波器2002可以表示为大小为3×3×3的2个滤波器(滤波器1、滤波器2)。两者都利用滑动窗口原理与输入数据进行卷积,以获得4×4输出数据2003。最终输出数据2004的大小为4×4×2,用2个滤波器2003的输出进行填充。
根据一种示例性实现方式,可更新层1310、1620、1705具有一个或多个可更新参数和一个或多个预配置参数。所述处理电路用于更新所述一个或多个可更新层的所述一个或多个可更新参数并保持所述一个或多个预配置参数。
换句话说,可更新层具有参数,其中一部分参数在预配置其余参数的同时被更新,并且在解码一个或多个输入图像时不会改变。这意味着,虽然通常可更新层的所有参数都可以改变,但可更新层的所述参数被划分为正在更新的参数子集,并且另一个参数子集保留其参数值。保持的可更新层的预配置参数可以通过编码端的预训练预配置。因此,所述基于NN的图像解码可以进一步加速,以及用于解码关于更新后的参数的信息的开销,因为并非所述可更新层的所有可更新参数都可以更新。因此,表示所述NN的更新参数配置的参数量进一步减少。
在一种示例性实现方式中,所述可更新层1310、1620、1705包括权重为所述一个或多个可更新参数的可更新子层1526、1626、1720和权重为所述一个或多个预配置参数的预配置子层1524、1624、1710。参考图15和图16,可更新子层对应于增量部分(即增量层),预配置子层对应于原始部分(即原始层)。此外,可更新层的相同输入被提供给可更新子层和预配置子层;可更新层的输出是可更新子层的输出和预配置子层的输出的元素和1730。向两个子层提供相同的输入意味着可更新子层和可更新层的预配置层是并行的,如图15和图16所示。此外,对子层的相应输出进行求和(相加)。在一个示例中,可以对子层的所有元素执行元素和。
因此,所述图像解码被加速,因为仅更新权重变化,而使用预配置权重作为参考。
根据一个示例,所述可更新子层包括稀疏神经网络层3006、4003、5010。因此,所述可更新子层的参数数量减少。例如,可更新子层包括张量训练神经网络层3006、4003、5010。所述张量训练神经网络是稀疏NN的一个示例。张量训练NN层是图3中所示和上面描述的轻量级卷积层的示例。
根据一种实现方式,所述一个或多个可更新层是卷积层1003、3001、810、850、1410、1420、1620、1705;以下至少一项适用:所述可更新子层的参数比所述预配置子层更少;所述可更新子层应用的卷积核比所述预配置子层更小。因此,减少了图像解码所需的时间。此外,较小的卷积核具有较少的更新后的参数,因此减少了正在处理的数据量。
在一种示例性实现方式中,所述一个或多个可更新层的所述一个或多个参数包括所述一个或多个可更新层的权重。图14和图16(左)示出了两个卷积层Conv1 1410和Conv21420的示例,其内核为3×3×48×48。从图14和16(左)中可以看出,待更新的相应卷积层没有可更新和预配置的子层,如前面讨论的,并且如图15和图16所示。因此,所述可更新层的所述可更新参数是直接更新的权重。需要说明的是,虽然所述权重会发生变化,但权重仍然可以通过编码端的预训练(在线或离线训练)预配置。另一个选项是预设权重。因此,所述神经网络的架构具有低复杂性,因为在这种情况下,所述卷积层不包括并行布置的两个子层。
根据一种示例性实现方式,所述处理电路还用于:从网络码流部分中解码关于所述一个或多个预配置层的更新后的参数的信息;根据所述更新后的参数的信息,以比更新所述可更新参数更低的频率更新所述预配置参数。神经网络在这里指的是现有的NN模型,它存在于解码端。例如,解码器可以具有10层,这些层具有固定的预配置参数。然后,在编码端只能更新(重训练)一个层,而其它9个层保持其固定的预配置参数(部分更新)。或者,10层的所有参数可以在编码侧重训练,这可以不那么频繁地执行(完全更新)。需要说明的是,现有的NN模型可能并不意味着所述NN就其预配置参数而言是解码器的固定部分。
预配置参数可以在编码端进行预训练,并为此根据需要重训练。因此,用于预配置一个或多个预配置层的目的的预训练意味着可更新参数可以在编码端预训练(离线或在线),更新的预配置参数从编码端发送到解码器。然后,解码器使用更新后的参数更新预配置层的参数。区别在于预配置参数被预训练的频率(即在一定时间内的频率)。由于预配置参数通常比可更新参数多,所以预训练的执行频率较低,因此更新的预配置参数较少需要发送到解码器。因此,解码器较少需要解码关于更新参数的信息。因此,现有的NN模型也可以被压缩并发送到解码器,但需要更长的时间。例如,编码端的预训练可以使用的图像P的数量为10或32个,但预训练是针对每1000万帧执行的。因此,新的现有模型(即新预配置的NN)可以每1000万帧发送到解码器。同样,解码器需要每1000万帧解码关于更新的预配置参数的信息。
因此,可以通过使用用于解码端NN的更新后的预配置参数来改进所述图像解码。此外,关于更新后的预配置参数的信息从与其它码流部分(视频、参数、层)分开的网络码流部分解码。因此,与更新频率较低的预配置参数相关的信息与和更新频率较高的可更新参数相关的信息分开。
在另一种实现方式中,所述处理电路还用于:从关于所述更新后的参数的信息中获取多个预配置层集中选择的集合的指示,其中,所述选择的集合包括所述神经网络的所述一个或多个预配置层。所述选择的集合的指示可以是相应神经网络层的索引。或者,该指示可以是所述NN的参数。例如,在编码端,可能有多个现有的NN模型N1、N2……Nj、NM,其中,编码器可以选择一个模型Nj,作为现有的NN模型N(Nj→N)。需要说明的是,在该实现示例中,多个现有的NN模型也存在于解码端。然后,编码器奖NN索引j(指示)等发送/发送到解码器。解码器将确定现有的NN模型N,该模型将根据索引j进行使用。因此,解码可以通过使用另一个现有的NN来适用于特定的压缩任务,并且因此改进了整体图像解码。
根据一种实现方式,关于所述一个或多个可更新层的信息是以比解码关于所述一个或多个可更新层的一个或多个更新后的参数的信息更低的频率解码的。因此,解码可以优先于层更新(即更新后的参数)而不是层选择(即更新后的层索引)来执行,从而加速所述图像解码。
需要说明的是,层更新(即更新的层索引)直接影响解码器NN的架构,因为可更新层上的信息指定了解码器NN层中的哪一个实际上被选择来进行更新。反过来,相应参数的实际更新通过可更新参数影响输出响应,可更新参数可能会更频繁地更改。因此,可以避免层更新(即更新后的层索引)和参数更新之间的干扰,提高解码的性能和稳定性。此外,所述解码可以根据层更新或参数更新的偏好进行适配。因此,所述解码可以以灵活的方式执行,并适用于特定的任务。
在一个实现示例中,神经网络被应用于后滤波2702。图25示出了在这种情况下位于解码器外部的CNN滤波器(即增强滤波器)(选项2)。在另一种示例性实现方式中,所述神经网络适用于环内滤波2701、图像解码、自适应采样和图像译码参数的解码中的一个。图27示出了在这种情况下位于解码器内部的CNN滤波器(选项1)。图像译码参数可以包括运动矢量、预测类型等。因此,所述神经网络的相同架构可用于解码不同类型的视频压缩任务的输入图像。因此,所述解码可以以灵活的方式执行,并适应于各种任务,包括后滤波器和环内滤波器。
例如,在视频压缩的自适应空间采样的情况下,重建的空间下采样视频和原始下采样视频(原始空间分辨率视频)被用作训练数据,以获得用于更新待更新的部分层的信息。关于更新参数的信息将被编码并发送到解码器。解码器会解码信息,并使用它来获得另一个模型。另一个模型是指解码端的神经网络,它使用更新后的参数。另一个模型用于对解码的低空间分辨率视频进行上采样。
图20举例说明了符合图19的编码器方案的上述解码器方案。在该示例中,输入包括压缩视频2010(即图像码流部分)和压缩权重2020(即经编码参数码流部分)。在图20的示例中,压缩参数是为了节省比特而进行的权重变化WT–W,因为权重变化通常具有比实际权重的值范围小的值范围。视频和更新的参数(例如,当权重变化WT–W时指示的)被解压缩(解码),并提供经解码视频2030和经解码更新参数2040。为了更新(现有)解码端神经网络2050,需要更新可更新层的权重。换句话说,现有的网络更新这些层的参数(例如权重),解码器已经知道这些层是可更新层,或解码器根据从层码流部分解码的关于可更新层的信息知道这些层是可更新层。如上所述,由于在该示例中更新的参数是权重变化,所以执行(参数方面)相加操作2060,其中,将变化添加到相应可更新层的(预训练)预配置权重中。现有的神经网络2050现在更新。或者,如果经解码参数码流不包含更新参数,而是元素减更新参数和预配置参数,则经解码参数码流逐元素添加到预训练参数(2060)。然后,解压缩的视频码流由用于神经网络推理2070的更新神经网络处理,以便获得经解码输入图像作为输出2080。
根据本发明实施例,提供了一种用于对一个或多个输入图像1010、17进行编码的方法,所述编码包括使用神经网络。图23示出了相应的流程图,包括步骤S2310,用于从神经网络的层1310、1320中选择一个或多个可更新层1310。该方法还包括步骤S2320,用于根据所述一个或多个输入图像训练所述神经网络,其中,所述训练包括更新所述一个或多个可更新层的一个或多个参数,并保持所述神经网络层中的一个或多个预配置层1320的参数。此外,步骤S2340用于将关于一个或多个可更新层的更新的一个或多个参数的信息编码到参数码流部分1190中,步骤S2350用于将一个或多个输入图像编码到图像码流部分1180中。该编码方法还可以包括步骤S2330,用于将关于一个或多个可更新层的信息编码到层码流部分中(可选)。
通过更新具有可更新参数的可更新层的NN参数的子集来训练神经网络可以提供加速NN训练的优点,从而节省NN训练的时间成本。此外,随着对更新后的参数的信息(在所述NN训练之后)进行编码,指示开销也会减少。因此,只编码了部分NN参数,而不是对整个网络进行参数化。
根据本发明实施例,提供了一种用于对一个或多个输入图像1060、331进行解码的方法,所述解码包括使用神经网络。图24示出了相应的流程图,包括步骤S2410(可选),用于从层码流部分解码关于一个或多个可更新层的信息。还包括步骤S2420,用于从参数码流部分1220解码关于一个或多个可更新层1310的一个或多个参数的信息。最后,包括步骤S2430,用于从图像码流部分1210解码一个或多个输入图像,包括用神经网络处理,其中,神经网络包括:包括经解码的一个或多个参数的一个或多个可更新层1310;具有预配置参数的一个或多个预配置层1320。
因此,可以通过使用具有小于预配置参数量的量的更新后的参数的神经网络快速解码一个或多个输入图像。因此,当使用更新的NN参数时,图像解码的效率提高了,同时确保了保质量的经解码图像。
根据本发明实施例,提供了一种存储程序的计算机可读非瞬时性介质,所述计算机可读非瞬时性介质包括指令,当所述指令在一个或多个处理器中执行时,所述一个或多个处理器执行根据上述实施例中的任一个所述的方法。
根据本发明实施例,提供了一种用于对一个或多个输入图像进行编码的装置,其中,所述编码包括使用神经网络,所述装置包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述程序在所述一个或多个处理器中执行时,所述编码器执行编码方法。
根据本发明实施例,提供了一种用于对一个或多个输入图像进行解码的装置,其中,所述解码包括使用神经网络,所述装置包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述程序在所述一个或多个处理器中执行时,所述装置执行解码方法。
根据本发明实施例,提供了一种计算机程序,所述计算机程序包括程序代码,当所述程序代码在计算机中执行时,执行根据任一编码和/或解码方法的方法。
在下文中,更详细地讨论了编码器/解码器的后滤波器应用的示例,其处理电路用于执行以下处理。
图11示出了由编码器执行的特定详细和示例性过程,并且可以如下逐项列出:
步骤1:获取(1110)现有的神经网络N和重建数据Vrec
现有的神经网络将被表示为N,它可以具有卷积层{Layer0,Layer1,…,Layers},这些层的预训练权重W={W0,W1,…,Ws},预先使用更大的数据集。例如,现有的神经网络N可以是具有总共20个残差块的传统的残差神经网络(Resnet)的神经网络。图14描述了一种残差块方案。包括2个大小为3×3×48×48的卷积层(conv1 1410、conv2 1420)、conv1之后的ReLU层1430、从块输入到conv2 1420输出的跳过连接1440、conv2输出和跳过连接的元素和1450以及元素和之后的ReLU层1460。在所述示例中,N总共可以有40个卷积层{Layer0,Layer1,…,Layer39}。编码器中已经存在现有的神经网络N。术语现有的神经网络是指编码器已经实现的神经网络,它可以预训练。
原始的P个帧(P是表示帧数的整数)将被表示为V,并使用H.266/VVC、H.265/HEVC等现有的译码方案进行压缩。这里,压缩V的码流(即图像码流部分)被表示为输出2。然后,获得重建的P个帧,其将被表示为Vrec,如图11所示。
步骤2:确定(1120)待更新的层的索引。
图13示出了具有多个层(包括层1310和层1320)的神经网络。由于N层中只有一部分会被更新,所以需要确定哪些层将被更新。在图13所示的示例中,层1310被更新,而层1320不被更新。这意味着层1320保持它们的预配置参数(例如权重)。待更新的层可以根据实验结果的分析或根据经验在编码端配置。例如,经验可能是,更新中间层比更新前面的层或后面的层更可取。例如,在本实现方式中,N有40层,如果只能更新4层(可以根据实际场景调整,考虑到训练复杂性和整个网络的全部层),则可以更新第20、24、26、27层。此外,可以使用速率失真优化(rate-distortion optimization,RDO)原则来确定哪些层将被更新,例如:
对于Set1,第20层、第21层、第22层、第23层作为更新层,或
对于Set2,第20层、第22层、第24层、第26层作为更新层,或
对于Set3,第20层、第24层、第26层、第27层作为更新层,或
……
因此,每个Seti都包含NN的可更新层的信息,i是整数。
对于每个Seti,速率失真成本,即失真+λ*速率,将如上所述进行评估。这里,失真是使用Seti对滤波信号的失真(滤波信号与原始信号之间的距离或差),速率是码流的位数(包括视频部分和NN部分和layerList,如图11所示),λ是叫做拉格朗日乘数的系数(简称为拉格朗日乘数)。需要说明的是,失真和速率只能在步骤3中已知,这意味着,对于每个Seti,需要执行一次步骤3。具有最小速率失真成本的seti是最佳集合。例如,如果Set3的速率失真成本最小,则第20层、第24层、第26层、第27层将被更新。需要说明的是,选择不必通过应用RDO来执行。可以执行其它优化,例如考虑复杂性的优化,例如速率-失真-复杂性优化等。
这里,待更新的层的层索引可以放入名为updateLayersList的层列表中。该layerList对应于NN的一个或多个可更新层中的信息。例如,updateLayersList可以是{20,24,26,27}。如果在训练过程中层索引发生变化,则updateLayersList需要发送到解码器。但是,如果待更新的层的索引保持固定,则不需要将层列表的信息发送到解码端。这意味着解码器反过来可能不需要解码关于可更新层的信息。需要说明的是,所述可更新层的参数(即,关于一个或多个更新参数的信息)在训练期间仍然可以改变(更新),因此将被发送到解码器。在该实现方式中,待更新层的层索引可能会改变,因此可更新NN层的部分可能会改变。.这里,层列表的码流表示为输出1。
步骤3:导出并编码(1170)用于更新updateLayersList中的层的信息。
由于只有层索引在updateLayersList中的层将被更新,所以这些层将被重训练,而其它不在updateLayersList中的层的相应的权重将被保持。层索引在updateLayersList中的层的权重将被压缩。在该实现方式中,提出了另一种方法来表示层索引在updateLayersList中的层。
步骤3.1:改变(1150)层索引在updateLayersList中的层的架构,并得到另一个神经网络
在该子步骤中,将更改层索引在updateLayersList中的层的架构。这在图17中示出,其中,除了与N中层的架构相同的原始部分1710之外,对于层索引在updateLayersList中的每个层,还有增量部分1720。原始层1710和增量部分(增量层)分别指可更新层的子层。换句话说,正式地,两个子层都属于一个公共的可更新层。但是,从图17可以看出,原始部分和增量部分具有相同的输入,因此彼此并行布置。这两个子层的这种并行排列可以被认为是另一个神经网络但仍然具有与N相同的架构,除了层索引在updateLayersList中的层。在该实现示例中,层索引在updateLayersList中的每个Layeri 1710将更改为3个部分(Layeri(1),ΔLayeri(2),elementwise_sum(3))。这里,Layeri表示原始部分,ΔLayeri表示增量部分。/>的Layeri和ΔLayeri具有与现有的神经网络N相同的输入Layeri。elementwise_sum 1730表示另一个神经网络/>的Layeri和ΔLayeri的元素和。另一个神经网络/>的元素和层具有与现有的神经网络N相同的输出Layeri
例如,ΔLayeri可以是TensorTrain卷积层TTConv,其中,(R1=R2=4)。这些参数R1,R2已经在上面的定义部分中参考图3解释过。通常,较小的R1、R2意味着TTConv的大小较小,但性能较差。例如,现有的神经网络N的残差块可以具有块方案,如图14所示。而与N中的残差块(如图14所示)相对应的另一个神经网络的残差块的块方案如图15所示。
步骤3.2:在另一个神经网络中更新(1160)层索引在updateLayersList中的层的增量部分的权重。
使用现有的网络N中对应的层的权重初始化另一个神经网络的层的权重,这些层的层索引不在updateLayersList中。使用现有的网络N中对应的层的权重初始化另一个神经网络/>的层的原始部分的权重,这些层的层索引在中updateLayersList。反过来,层索引在updateLayersList内中的层的增量部分的权重通过使用随机权重初始化。例如,如图16所示,将另一个神经网络/>中层索引在updateLayersList中的层的Conv1 1610和Conv21620的权重设置为现有的神经网络N中层索引在updateLayersList中的层的权重,而Conv1TT 1630和Conv2TT 1640层的权重是随机初始化的。
初始化之后,另一个神经网络中层索引在updateLayersList中的层的增量部分的权重被重训练。这里,对于另一个神经网络/>在重训练(即神经网络的训练)期间,只有层索引在updateLayersList中的层的增量部分的权重是可改变的(即更新),而原始部分的其它权重在训练期间保持(即不更新)。然后,通过使用V和Vrec对其它神经网络/>进行训练。损失函数M可以是M=度量(另一个网络(Vrec),V)。这里,“另一个网络(Vrec)”是指通过使用另一个网络滤波Vrec。度量(A,B)是指A与B之间的距离,通过使用特定度量,例如峰值信噪比、PSNR、度量、MSSIM度量、VMAF视频度量或任何其它图像/视频质量度量。如图11所示,Vrec被输入另一个神经网络/>中,以便训练/>使得/>即另一个网络(Vrec)的输出尽可能类似于V。如上所述,在该实现方式中,在训练期间,仅更新层索引在updateLayersList中的层的增量部分。
步骤3.3:在另一个神经网络中编码updateLayersList中的层的增量部分的权重。
中层索引在updateLayersList中的层的增量部分的权重已经更新,然后将压缩权重。/>中层索引在updateLayersList中的层的增量部分的更新权重压缩的码流被表示为输出3(参数码流部分),如图11所示。对于压缩,可以使用所有现有的网络压缩方法。图18示出了基于字典的压缩的示例,其可以如下执行:
1.选择σ子张量聚类的起始聚类数。相对于σ执行{ΔLayerl}的基于自适应字典的压缩。
(图18)。例如,对于4个TTConv层,最佳聚类数为64。
(1)将{ΔLayerl(),updateLayersList中的1}中的所有张量划分为预定义大小m×n的张量1810。例如,m=3,n=1。然后,获取{sub_ΔLayerl()}。例如,如果ΔLayer是TTConv层,其中,输入和输出通道的数量等于48,并且秩R1=R2=4,则TTConv层的conv1的大小为1×1×48×16,conv2的大小为3×3×4×1,conv3的大小1×1×4×48。对于给定的参数,conv1被划分为16×16=256个sub_layer,conv2被划分为3×4=12个sub_layer,conv3被划分为4×16=64个sub_layer。因此,TTConv总共被划分为256+12+64=332个sub_layer。如果ΔLayer的总数为4,则子层的总数为332*4=1328。
(2)将sub_ΔLayerl()的每个张量视为Rmxn空间中的元素,例如R3空间。使用σ个质心执行聚类(例如k为均值)。结果是码本C={ci}1820,0≤i<σ和具有(sub_ΔLayerl(),相关code_book元素)对的索引本1820。例如,如果聚类的总数为64,sub_layer总数为1328,则码本C有64个元素,index_book总共有1328对。
(3)将另一个网络的ΔLayerl()的所有张量更改为相关的码本元素。例如,每个大小为3×1的子张量都可以更改为64个码本元素中的一个。
(4)度量为另一个网络对Vrec的性能。例如,/>(另一个网络(Vrec),V)。指压缩NN的性能。
(5)如果则执行步骤6,否则设置σ=2*σ,并执行步骤2。如果压缩NN的性能与非压缩NN的性能相似,则所提出的压缩参数σ足以压缩NN而不会损失性能。如果不够,则需要增加聚类的数量。
(6)输出码本和index_book。
2.将神经网络转换为压缩码流1190、1195
输入:码本C={ci},0<i<σ和带对(sub_ΔLayerl()的索引本,相关code_book元素),σ为码本中元素的数量,μ为索引本中元素的数量。例如,假设σ=64,μ=1332。
(1)计算存储1个码本元素所需的位数k。例如,如果权重以float32格式表示,则需要32位。子张量的大小为3×1,因此需要32×3=96位。
(2)将码本序列化为长度为k*σ的码流。例如,对于n=32,σ=64,总共需要32*64=2048位。
(3)将索引本序列化为μ*log2σ位。当码本总共有64个元素时,每个元素都需要log264=6位。因此,存储索引本需要1332*6=7992位。
(4)针对σ、μ,将32位值放入码流中,然后是(2)和(3)的生成的码流。
(5)将任何无损压缩应用于生成的码流(例如gzip)。生成的码流是输出3。
简言之,码流将包括3部分:用于压缩数据(如压缩视频)输出2的码流1180;用于将被更新的层(层索引在updateLayersList中的的层)的层索引输出1的码流1195;以及将被更新的层(层索引在updateLayersList中的层)的增量部分的压缩权重1190的输出3的码流(参数码流部分)。
解码器关于该实现示例执行图12中所示的以下处理。
解码器对接收到的码流进行解码。由于码流包括3个部分(这里,接收部分1210、1220和1230分别对应于发送部分1180、1190和1195),如上所述,所有这些部分都将被解码。这三个码流部分包括视频码流部分1210(输入2)、参数码流部分1220(输入3)和层码流部分1230(输入3)。为了便于读取,编码端的outputi将分别表示为解码端的inputi。例如,压缩视频的码流被表示为输入2(视频码流部分),将被更新的层(即一个或多个可更新层)(层索引在updateLayersList中的层)的层索引的码流被表示为输入1,并且将被更新的层(对应于可更新层的层索引在updateLayersList中的层)的增量部分的压缩权重(即一个或多个更新参数)的码流被表示为输入3,如图12所示。
步骤1:获取现有的神经网络N和经解码数据Vdec 1240。
现有的神经网络N与编码器中的神经网络相同,编码器中已经存在神经网络。因此,现有的神经网络是指具有层的神经网络,所述层包括一个或多个预配置层和一个或多个可更新层。例如,神经网络可以具有卷积层{Layer0,Layer1,…,Layers}和这些层的权重W={W0,W1,…,Ws}。例如,由于神经网络在编码器中是相同的,所以现有的神经网络N可以是具有总共20个残差块的传统残差神经网络(Resnet)的神经网络,其中,图14中所示的每个块包括2个大小为3×3×48×48的卷积层(conv1 1410、conv2 1420),conv1 1410之后的ReLU层1430、从块输入到conv2 1420输出的跳过连接1440和跳过连接1440之后的ReLU层1460。在所述示例中,N总共可以有40个卷积层{Layer0,Layer1,…,Layer39}。
现有的译码方案可以用于解码来自压缩视频输入2的图像码流,并获得经解码视频Vdec(即,一个或多个输入图像)。
步骤2:获取(1250)层的层索引,该层索引将被更新。
图13示出了具有多个层(包括层1310和层1320)的神经网络。由于图13中所示的神经网络N的一部分将被更新,所以需要获得或知道网络N的哪些层将被更新。在图13的示例中,待更新层是层1310,而层1320将不改变。换句话说,层1320保持它们的原始参数,这些参数可以预配置。在该实现方式中,层的层索引将被更新(即改变),在这种情况下,将被更新的层的层索引的码流将被解码(即层码流部分)。然后,层索引列表updateLayersList将从参数码流部分解码,该参数码流部分包括关于所述可更新层的更新参数的信息。例如,updateLayersList可以是{20,24,26,27},在这种情况下,已知现有的神经网络N中只有第20层、第24层、第26层、第27层将被更新。
步骤3:解码(1250)用于更新中层索引在updateLayersList中的层的信息。
由于只有层索引在updateLayersList中的层将被更新,所以其它层(层索引不在updateLayersList中的层)的权重将与现有的神经网络N相同。换句话说,保持所述权重。
由于在编码器中,层索引在updateLayersList中的层的架构已经改变(如图17所示),所以只有层索引在updateLayersList中的层的增量部分1720的权重被改变。如上所述,层的增量部分是指可更新层的子层,该子层具有原始部分。如图17所示,原始部分1710对应于预配置层。从参数码流部分解码层的增量部分的压缩权重,并更新增量部分的相应权重(层索引在updateLayersList中的层)。输入3:这里,将使用对应的网络解压缩方法以类似于编码器中应用的方式获得这些权重。根据基于字典的(解)压缩的压缩方案的示例如图18所示。在上面的示例中,使用了基于字典的压缩,这里也使用了这种压缩,但对于基于字典的解压缩的情况:
(1)解压缩输出3。
(2)应用解压缩以解压缩无损压缩之后的码流。
(3)对于每个l∈updateLayersList,使用码流的已知固定结构,将码流反序列化为σ、μ、码本和索引本。这意味着输入1、输入2和输入3在码流中按一定的顺序排列。
(4)对于l∈updateLayersList,构造ΔLayerl()。
步骤4:获取另一个神经网络1260,将/>应用于Vdec 1270。
在编码器中,层索引在updateLayersList中的层的架构已经改变,如图17所示。在该实现示例中,原始部分(即可更新层的子层)与N中各层的架构相同,而层索引在updateLayersList中的每一层都存在增量部分(即可更新层的子层)。换句话说,层索引在updateLayersList中的每个Layeri都被更改为3部分,即(Layeri,ΔLayeri,elementwise_sum)。需要说明的是,原始部分和增量部分属于一个层,即可更新层。从上面的步骤3中,获得ΔLayeri,指示现有的网络N的哪些层待更新。在现有神经网络N中,在图17所示的新架构范围内得到了另一个神经网络以替换层索引在updateLayersList中的层。需要说明的是,在技术上并没有实际替换所述层。相反,解码器已经实现了包括两个子层(即可更新子层和预配置子层)的可更新层。
在所述示例中,神经网络经过训练用于后滤波器。在这种情况下,另一个神经网络将应用于Vdec,以获得输出视频,如图12所示。
由于只有一部分层将被更新,在本实现方式中,另一个NN的架构通过现有神经网络N改变。对于层索引在updateLayersList中的每个层(即可更新层),除了原始部分(预配置子层)和增量部分(可更新子层)之外,还包括原始部分(预配置子层)和增量部分(可更新子层)。在该实现方式中,使用了基于TensorTrain卷积(TTConv)层的轻量级卷积层。TTconv是稀疏神经网络层的一个示例。这种稀疏层提供的输出数据量较少。除了TTConv,还可以使用其它轻量级卷积层方案,例如:
■MobileNet块
■倒置残差块
■塔克分解
■具有较小卷积核的正则卷积。
在该实现方式中,用于更新层的权重的信息(即,关于一个或多个可更新参数的信息)使用基于字典的方案压缩。此外,基于字典的方案,也可以使用其它类型的神经网络压缩,例如:
■推理时间量化
■训练感知量化
■训练感知修剪
在上面对实现示例的讨论中,可更新层包括两个子层,一个可更新子层和一个预配置子层。在这种情况下,使用预配置子层的预配置权重和可更新参数的权重在编码端训练神经网络。换句话说,更新的实际上是权重的变化,使用预配置权重作为参考。这意味着训练是使用权重的残差执行的。因此,相应的子层被并行地布置,如图17通过原始层1710和增量层1720的示例所示。因此,解码器的神经网络具有与编码器相同的架构,使得解码器可以根据关于更新参数和/或可更新层的经解码信息执行这些层的相应更新。
在下文中,讨论一个或多个输入图像的编码和解码的另一种实现方式,其中,编码端的训练是通过直接更新权重来执行的。在这种情况下,可更新层可以只是一层,而不被划分为两个子层。
对于编码器,相应的处理如下:
步骤1:获取(1110)现有的神经网络N和重建数据Vrec
编码器的处理与前面讨论的实现情况相同。
步骤2:确定(1120)将更新的层的索引(可更新层的信息)。
同样,编码器的处理与前面讨论的实现情况相同。
步骤3:导出并编码(1170)用于更新updateLayersList中的层的信息(可更新参数)。
由于与现有的神经网络模型N相比,另一个神经网络模型中的架构不会改变,所以在训练期间改变和更新的是层索引在updateLayersList中的层(即可更新层)的权重。
的所有权重都是通过使用网络N的权重初始化的,网络N的权重是预配置的。在训练期间,/>中层索引在updateLayersList中的这些层的权重可以在重训练期间改变,而对于/>中层索引不在updateLayersList中的层的权重则保持不变。换句话说,预配置层的权重保留它们在初始化时接收的相应权重。
如上所述,损失函数M可以是M=度量(另一个网络(Vrec),V)。这里,“另一个网络(Vrec)”是指通过使用另一个网络滤波Vrec。度量(A,B)是指A与B之间的距离,通过使用特定度量,例如峰值信噪比、PSNR、度量、MSSIM度量、VMAF视频度量或任何其它图像/视频质量度量。如图11所示,Vrec被输入另一个神经网络中,以便训练/>使得/>即“另一个网络(Vrec)”的输出尽可能类似于V。
在获得用于更新的信息之后,使用现有的神经网络压缩方法(例如基于字典的压缩)压缩信息(即关于更新的信息)(例如,压缩到图11中的参数码流部分1190中)。这已经在上面参考图18详细讨论过。这里,信息是(WT–W),这是指和N中层索引在updateLayersList中的层的权重之间的差权重值。换句话说,新训练的(重训练的)权重WT不一定需要完全发送(但在一些实施例中它们可以完全发送)。相反,可以发送训练前的权重W与新训练的权重WT之间的差。这种方法发送差异所需的比特较少,因为它们可能具有较小的值范围和较高的概率。因此,进一步的译码(例如熵译码)可以产生较短的码流。
对于解码器,相应的处理如下:
步骤1:获取现有的神经网络N和经解码数据Vdec 1240。
解码器的处理与前面讨论的实现情况相同。
步骤2:获取(1250)层的层索引,该层索引将被更新。
同样,编码器的处理与前面讨论的实现情况相同。
步骤3:解码(1250)用于更新层索引在updateLayersList中的层的信息。
由于只有层索引在updateLayersList中的层才会被更新,所以层索引不在updateLayersList中的层的权重将被保持。换句话说,预配置层的可更新参数(权重)与现有的神经网络N相同。
对应的神经网络解压缩方法用于获得关于可更新参数和/或可更新层的信息。与编码器类似,可以使用基于字典的压缩。这里,信息是(WT–W),这是指和N中层索引在updateLayersList中的层的权重之间的差权重值。
步骤4:获取另一个神经网络1260,将/>应用于Vdec 1270。
与上述实现方式相比,另一个神经网络模型中的神经网络架构与现有的NN模型N相比没有变化,因此,从步骤3获得的信息用于通过将(WT–W)添加到另一个神经网络模型/>中的W中,获得层索引在updateLayersList中的层的权重。
这指定了另一个神经网络模型因为使用了训练的权重。然后,将另一个神经网络模型/>应用于Vdec。
这里,用于更新updateLayersList中的层的信息是(WT–W),这是指和N中层索引在updateLayersList中的层的权重之间的差权重值。在另一种可能的方式中,该信息也可以是/>中层索引在updateLayersList中的层的权重值,但不是差值。换句话说,WT将直接压缩,在神经网络解压缩中,解压缩的权重被直接用作另一个NN模型/>中层索引在updateLayersList中的层的权重。对于后滤波器应用场景,在编码器中,P个帧(P≥1)将首先压缩。例如,假设一个具有1000帧(f0、f1……f999)的视频,并且fi+1至fi+P将是P个帧。然后,获得P个帧的码流,以及重建的P个帧。然后,需要使用原始的P个帧和重建的P个帧来训练现有的网络(通常预先使用更大的数据集进行预训练)。然后,对训练后的网络模型进行压缩,得到网络模型的码流(网络码流部分)。然后,所有码流部分都被发送到解码器。在解码器中,首先解压缩P个帧,然后解压缩网络模型。然后将网络模型应用于解压缩的P个帧。
在下文中,提供了在在线训练的情况下经过训练用于后滤波器的神经网络的示例,通过该示例可以高效地表示和压缩神经网络。
以CNN滤波器(在线训练情况)作为视频压缩的后滤波器为例,该方法如下:
编码端:
1.获取输入视频V、现有的神经网络N以及神经网络N层的预训练权重W。
2.使用视频压缩编码器压缩视频。获取重建视频Vrec和码流的视频部分。
3.设置layerList–layerList包含可更新层的索引,这些层是网络N的卷积层的子集。例如,如果Layers=[Layer0,Layer1,…,Layers]–N的所有卷积层的列表,则layerList可以是[LayerlStart,…,LayerlEnd],其中,lStart<lEnd。
4.使另一个神经网络具有与神经网络N相同的架构,但layerList中的层除外。layersList中的每个Layeri都更改为3部分(Layeri、ΔLayeri、elementwise_sumi)。另一个神经网络的Layeri和ΔLayeri具有与现有的神经网络的Layeri相似的输入。elementwise_sumi是Layeri和ΔLayeri的元素和。另一个神经网络的elementwise_sumi层具有与现有的神经网络的Layeri相似的输出。
5.使用随机值初始化ΔLayer权重。
6.在输入视频V和重建视频Vrec上训练另一个神经网络(即,可更新层是包括Layeri和ΔLayeri的子层的网络),仅更新ΔLayer层的权重。
7.从另一个神经网络中提取ΔLayer层,并使用其中一种神经网络压缩方法执行自适应神经网络压缩。从码流中获取神经网络部分(网络码流部分)。
8.发送码流的视频部分、码流的神经网络部分和layerList。
解码端:
1.使用视频压缩解码器解压缩视频部分,获取Vdec
2.使用NN解压缩方法解压缩ΔLayer层。
3.使另一个神经网络具有与神经网络N相同的架构,但索引在layerList中的层除外。layersList中的每个Layeri都更改为3部分(Layeri、ΔLayeri、elementwise_sumi)。另一个神经网络/>的Layeri和ΔLayeri具有与现有的神经网络的Layeri相似的输入。
elementwise_sumi是Layeri和ΔLayeri的元素和。另一个神经网络的elementwise_sumi层具有与现有的神经网络的Layeri相似的输出。
4.使用另一个神经网络对Vdec进行推理。获取结果视频/>
根据本发明的处理流程的相应表示在图11和图12中示出。
对于ΔLayer层,使用轻量级卷积操作,例如张量训练、TTConv、层3006,如图3所示。
由于轻量级卷积和神经网络压缩的参数数量较少,所以所提出的方法支持最大限度地降低模型传输成本。
该方法的另一个优点是,基于编码器中内联解码器的反馈,可以进行自适应神经网络压缩。
该方法的另一个优点是,灵活选择可更新参数和神经网络压缩参数,例如:
–参数layerList,定义用于内容适配的卷积层
–轻量级卷积的参数,例如张量分解的秩
–神经网络自适应频率的参数,如:
·每1次适配使用多少帧
·适配策略
–场景变化
–所需延迟
视频压缩中的一个重要因素可能是压缩速度,因此直接与神经网络训练的在线训练时间相关。本发明实施例和实现示例支持通过最大限度地减少更新参数的量(仅更新少量参数)来最大限度地减低在线训练时间成本。否则,训练时间是灵活的,可以根据特定的压缩任务进行调整。
最佳内容适配参数的选择可以通过尝试几组预定义的参数和使用速率失真优化(rate distortion optimization,RDO)原理来完成。
例如,与离线训练场景相比,增量在线训练显示出稳定的压缩节省。
根据本发明的基于在线训练的压缩方法也可以用于CNN环路滤波器或其它视频压缩模块,例如基于深度学习的帧内预测,或基于深度学习的帧间预测,或基于深度学习的自适应采样。
上面关于编码和解码的讨论是参考一个或多个图像进行的,所述图像是静态图像或视频。图像/视频只是可以应用上述详细实施例和实现示例的数据的一个示例。所提供的用于在线训练的装置和方法可以适用于其它数据压缩任务,包括音频压缩、3D数据(例如点云、网格)压缩。此外,数据压缩方案可以用于视频压缩,如环路滤波器、后滤波器、帧内预测、帧间预测、熵译码或其它模块。这里,主要描述了视频压缩中的后滤波器,作为一个典型的应用示例。然而,提出的基于在线培训的数据压缩方案可应用于其它模块或其它任务。
本领域技术人员将理解,各种图(方法和装置)的“块”(“单元”)表示或描述本发明实施例的功能(而不一定是硬件或软件中的单独“单元”),因此同样描述装置实施例以及方法实施例的功能或特征(步骤)。
术语“单元”仅仅是用于说明编码器/解码器的实施例的功能,并非旨在限制本发明。
在本申请中提供若干实施例中,应理解,所公开的系统、装置和方法可通过其它方式实现。例如,上述装置实施例仅仅是示例性的。例如,单元划分仅仅是逻辑功能划分且在实际实现方式中可以是其它划分。例如,可将多个单元或部件合并或集成到另一系统中,或可忽略或不执行部分特征。另外,所显示或讨论的相互耦合或直接耦合或通信连接可以是通过一些接口来实现的。装置或单元之间的直接耦合或通信连接可通过电子、光学、机械或其它形式实现。
作为分立部分描述的单元可以是物理上分开的,也可以不是物理上分开的,作为单元显示的部分可以是物理单元,也可以不是物理单元,可以位于一个位置,也可以分布在多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,本发明实施例中的功能单元可集成到一个处理单元中,或每个单元可物理上单独存在,或两个或多于两个单元可集成到一个单元中。
硬件和软件中的一些进一步实现将在下文中描述。
在以下实施例中,参考上文图25和图26,根据图28和图29描述了视频译码系统10、视频编码器20和视频解码器30。
图28为可以利用本申请技术的示例性译码系统10(例如,视频译码系统10,或简称为译码系统10)的示意性框图。视频译码系统10的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)表示可用于根据本申请中描述的各种示例执行各技术的设备示例。
如图28所示,译码系统10包括源设备12,例如,所述源设备12用于将经编码图像数据21提供到目的地设备14以对经编码图像数据13进行解码。
源设备12包括编码器20,另外即可选地,可包括图像源16、图像预处理器18等预处理器(或预处理单元)18、通信接口或通信单元22。
图像源16可以包括或可以是任何类型的图像捕获设备,例如用于捕获真实世界图像的摄像机,和/或任何类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器,或用于获取和/或提供真实世界图像、计算机生成图像(例如,屏幕内容、虚拟现实(virtual reality,VR)图像)和/或其任何组合(例如,增强现实(augmented reality,AR)图像)的任何类型的其它设备。图像源可以为任何类型的存储任一上述图像的存储器(memory/storage)。
为了区分预处理器18和预处理单元18执行的处理,图像或图像数据17还可以称为原始图像或原始图像数据17。
预处理器18用于接收(原始)图像数据17,对图像数据17进行预处理,以获得预处理图像19或预处理图像数据19。预处理器18执行的预处理可包括修剪(trimming)、颜色格式转换(例如从RGB转换为YCbCr)、颜色校正或去噪等。应理解,预处理单元18可以是可选组件。
视频编码器20用于接收预处理图像数据19并提供经编码图像数据21(例如,根据图25,上文描述了其它细节,其可以通过用环路CNN滤波器替换环路滤波器来进一步修改,类似于图27中用于解码器的环路CNN滤波器)。
源设备12中的通信接口22可用于:接收经编码图像数据21并通过通信信道13向目的地设备14等另一设备或任何其它设备发送经编码图像数据21(或其它任何经处理版本),以便存储或直接重建。
目的地设备14包括解码器30(例如,视频解码器30),另外即可选地,可包括通信接口或通信单元28、后处理器32(或后处理单元32)和显示设备34。
目的地设备14中的通信接口28用于直接从源设备12或从存储设备等任何其它源设备接收经编码图像数据21(或其它任何经处理版本),例如,存储设备为经编码图像数据存储设备,并将经编码图像数据21提供给解码器30。
通信接口22和通信接口28可以用于通过源设备12与目的地设备14之间的直接通信链路(例如,直接有线或无线连接),或通过任何类型的网络(例如,有线或无线网络或其任何组合,或任何类型的专用和公共网络),或其任何组合发送或接收经编码图像数据21或经编码数据13。
例如,通信接口22可用于将经编码图像数据21封装为报文等合适的格式,和/或使用任何类型的传输编码或处理来处理经编码图像数据,以便在通信链路或通信网络上进行传输。
例如,与通信接口22对应的通信接口28可用于接收发送的数据,并使用任何类型的对应传输解码或处理和/或解封装对发送的数据进行处理,以获得经编码图像数据21。
通信接口22和通信接口28均可配置为图28中从源设备12指向目的地设备14的通信信道13的箭头所表示的单向通信接口,或者配置为双向通信接口,并且可以用于发送和接收消息等,以建立连接、确认并交换与通信链路和/或数据传输(例如经编码图像数据传输)相关的任何其它信息等。
解码器30用于接收经编码图像数据21并提供经解码图像数据31或经解码图像31(上文根据图26或图27进行详细描述)。
目的地设备14的后处理器32用于对经解码图像数据31(也称为经重建图像数据)(例如,经解码图像31)进行后处理,以获取后处理图像数据33(例如,后处理图像33)。后处理单元32执行的后处理可以包括颜色格式转换(例如从YCbCr转换为RGB)、颜色校正、修剪或重采样,或者任何其它处理,以便提供经解码图像数据31由显示设备34等显示,等等。
目的地设备14中的显示设备34用于接收后处理图像数据33,以向用户或观看者等显示图像。显示设备34可以为或包括用于表示经重建图像的任何类型的显示器,例如,集成或外部显示器或监视器。例如,显示器可以包括液晶显示器(liquid crystal display,LCD)、有机发光二极管(organic light emitting diode,OLED)显示器、等离子显示器、投影仪、微型LED显示器、硅基液晶(liquid crystal on silicon,LCoS)显示器、数字光处理器(digital light processor,DLP)或任何类型的其它显示器。
尽管图28将源设备12和目的地设备14描绘为单独的设备,但是设备的实施例也可以包括源设备12和目的地设备14或同时包括源设备12的对应功能和目的地设备14的对应功能。在这些实施例中,源设备12或对应功能以及目的地设备14或对应功能可以使用相同的硬件和/或软件或通过单独的硬件和/或软件或其任意组合来实现。
根据所述描述,技术人员将清楚地看到,如图28所示的源设备12和/或目的地设备14中的不同单元或功能的存在和(精确)划分可以根据实际设备和应用而变化。
编码器20(例如视频编码器20)或解码器30(例如视频解码器30),或编码器20和解码器30两者都可通过如图1B所示的处理电路实现,如一个或多个微处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application-specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、离散逻辑、硬件、视频译码专用处理器或其任意组合。编码器20可以由处理电路46实现,以体现结合图25的编码器20论述的各种模块和/或本文描述的任何其它编码器系统或子系统。解码器30可以由处理电路46实现,以体现结合图26(或图27)的解码器30论述的各种模块和/或本文描述的任何其它解码器系统或子系统。处理电路可用于执行稍后将论述的各种操作。如图31中所示,当所述技术部分地以软件形式实现时,设备可将软件的指令存储在合适的非瞬时性计算机可读存储介质中,并且可以使用一个或多个处理器以硬件形式执行所述指令,以执行本发明的技术。视频编码器20或视频解码器30可作为组合编码器/解码器(编解码器)的一部分集成在单个设备中,如图29所示。
源设备12和目的地设备14可以包括多种设备中的任一种,包括任何类型的手持或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板电脑(tablet/tabletcomputer)、摄像机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏机、视频流设备(如内容服务服务器或内容分发服务器)、广播接收器设备、广播发射器设备等,并且可以不使用或使用任何类型的操作系统。在一些情况下,源设备12和目的地设备14可配备用于无线通信的组件。因此,源设备12和目的地设备14可以是无线通信设备。
在一些情况下,图28所示的视频译码系统10仅仅是示例性的,本申请提供的技术可适用于视频译码设置(例如,视频编码或视频解码),这些设置不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据从本地存储器中检索,通过网络发送,等等。视频编码设备可以对数据进行编码并将数据存储到存储器中,和/或视频解码设备可以从存储器中检索数据并对数据进行解码。在一些示例中,编码和解码由相互不通信而只是将数据编码到存储器和/或从存储器检索数据并对数据进行解码的设备来执行。
为便于描述,本文参考由ITU-T视频编码专家组(Video Coding Experts Group,VCEG)和ISO/IEC运动图像专家组(Motion Picture Experts Group,MPEG)的视频编码联合工作组(Joint Collaboration Team on Video Coding,JCT-VC)开发的高效视频编码(High-Efficiency Video Coding,HEVC)或通用视频编码(Versatile Video coding,VVC)参考软件或下一代视频编码标准描述本发明实施例。本领域普通技术人员理解本发明实施例不限于HEVC或VVC。
图30为本发明实施例提供的视频译码设备400的示意图。视频译码设备400适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备400可以是解码器(如图28的视频解码器30)或编码器(如图28的视频编码器20)。
视频译码设备400包括用于接收数据的入端口410(或输入端口410)和接收单元(receiver unit,Rx)420,用于处理数据的处理器、逻辑单元或中央处理单元(centralprocessing unit,CPU)430,用于发送数据的发送单元(transmitter unit,Tx)440和出端口450(或输出端口450)以及用于存储数据的存储器460。视频译码设备400还可包括耦合到入端口410、接收单元420、发送单元440和出端口450的光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件,用于光信号或电信号的出口或入口。
处理器430通过硬件和软件来实现。处理器430可实现为一个或多个CPU芯片、核(例如,多核处理器)、FPGA、ASIC和DSP。处理器430与入端口410、接收单元420、发送单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上文所公开的实施例。例如,译码模块470执行、处理、准备或提供各种译码操作。因此,通过译码模块470为视频译码设备400的功能提供了实质性的改进,并且影响了视频译码设备400到不同状态的切换。或者,以存储在存储器460中并由处理器430执行的指令来实现译码模块470。
存储器460可以包括一个或多个磁盘、磁带机和固态硬盘,可以用作溢出数据存储设备,用于在选择执行程序时存储这些程序,并且存储在程序执行过程中读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、三态内容寻址存储器(ternary content-addressable memory,TCAM)和/或静态随机存取存储器(staticrandom-access memory,SRAM)。
图31为示例性实施例提供的装置500的简化框图,所述装置500可用作图28中的源设备12和目的地设备14中的任一个或两个。
装置500中的处理器502可以是中央处理单元。或者,处理器502可以是现有的或今后将研发出的能够操控或处理信息的任何其它类型的设备或多个设备。虽然可以使用如图所示的处理器502等单个处理器来实现所公开的实现方式,但使用一个以上的处理器可以提高速度和效率。
在一种实现方式中,装置500中的存储器504可以是只读存储器(read onlymemory,ROM)设备或随机存取存储器(random access memory,RAM)设备。任何其它合适类型的存储设备都可以用作存储器504。存储器504可以包括处理器502通过总线512访问的代码和数据506。存储器504还可包括操作系统508和应用程序510,应用程序510包括使得处理器502执行本文所述方法的至少一个程序。例如,应用程序510可以包括应用程序1到N,应用程序1到N还包括执行本文所述方法的视频编码应用程序,包括使用具有部分可更新层子集的神经网络进行编码和解码。
装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是将显示器与触敏元件组合的触敏显示器,该触敏元件能够用于感测触摸输入。显示器518可以通过总线512耦合到处理器502。
尽管装置500的总线512在本文中描述为单个总线,但是总线512可以包括多个总线。此外,辅助存储器514可以直接耦合到装置500的其它组件或可以通过网络访问,并且可以包括存储卡等单个集成单元或多个存储卡等多个单元。因此,装置500可以具有各种各样的配置。
尽管本发明实施例主要根据视频译码进行了描述,但需要说明的是,译码系统10、编码器20和解码器30(相应地,系统10)的实施例以及本文描述的其它实施例也可以用于静止图像处理或译码,即,对视频译码中独立于任何之前或连续图像的单个图像进行处理或译码。一般情况下,如果图像处理译码仅限于单个图像17,帧间预测单元244(编码器)和344(解码器)可能不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)同样可用于静态图像处理,例如残差计算204/304、变换206、量化208、反量化210/310、(逆)变换212/312、分割262/362、帧内预测254/354和/或环路滤波220/320、熵编码270和熵解码304。
编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以使用硬件、软件、固件或其任意组合来实现。如果使用软件来实现,那么各种功能可作为一或多个指令或代码在计算机可读媒体上存储或发送,且由基于硬件的处理单元执行。计算机可读介质可包括计算机可读存储介质,对应于有形介质,例如数据存储介质,或包括任何促进将计算机程序从一处传送到另一处的介质(例如根据通信协议)的通信介质。以此方式,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质,或(2)如信号或载波等通信介质。数据存储介质可为可由一个或多个计算机或一个或多个处理器存取以检索用于实现本发明中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存或可用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以被适当地定义为计算机可读介质。例如,如果指令是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光缆、双绞线、数字用户线(digital subscriber line,DSL)或以红外、无线和微波等无线方式发送的,也被包含在所定义的介质中。但是,应理解,所述计算机可读存储介质和数据存储介质并不包括连接、载波、信号或其它瞬时性介质,而是实际上针对于非瞬时性有形存储介质。本文中使用的磁盘(disk)和光盘(disc)包括压缩磁盘(compact disc,CD)、镭射盘、光盘、数字多功能光盘(digital versatiledisc,DVD)、软盘和蓝光光盘,磁盘通常以磁性复制数据,而光盘通常以激光进行光学复制数据。上述的组合也可以包括在计算机可读介质范畴中。
可通过一个或多个数字信号处理器(digital signal processor,DSP)、通用微处理器、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或其它等效集成或离散逻辑电路等一个或多个处理器来执行指令。因此,本文所使用的术语“处理器”可以指上述结构中的任一种或适于实施本文所述技术的任何其它结构。另外,在一些方面中,本文描述的各种功能可以提供在用于编码和解码的专用硬件和/或软件模块内,或者并入到组合编解码器中。而且,这些技术可以在一个或多个电路或逻辑元件中完全实现。
本发明技术可以在多种设备或装置中实现,这些设备或装置包括无线手机、集成电路(integrated circuit,IC)或一组IC(例如芯片组)。本发明中描述各种组件、模块或单元是为了强调用于执行所公开技术的设备的功能方面,但未必需要由不同硬件单元实现。实际上,如上所述,各种单元可以结合合适的软件和/或固件组合在编解码器硬件单元中,或者通过互操作硬件单元(包括如上所述的一个或多个处理器)的集合来提供。
总结,本发明涉及使用部分在线训练的神经网络对一个或多个图像(例如,视频)进行编码和解码。因此,在编码器中选择待训练的一个或多个层。然后,对所述神经网络进行训练,其中,更新所述选择的层的参数。剩余层的参数保持不变,且不更新。在码流中提供更新后的参数。也对所述一个或多个图像进行编码。解码器接收所述更新后的参数的指示,仅更新那些指示的参数,并应用所获得的神经网络。

Claims (44)

1.一种用于对一个或多个输入图像(1010、17)进行编码的装置(2100),其特征在于,所述编码包括使用神经网络,所述装置包括:
处理电路(2110),用于:
从所述神经网络的层(1310、1320)中选择一个或多个可更新层(1310);
根据所述一个或多个输入图像,训练所述神经网络,其中,所述训练包括更新所述一个或多个可更新层的一个或多个参数,并保持所述神经网络层中的一个或多个预配置层(1320)的参数;
将关于所述一个或多个可更新层的一个或多个更新后的参数的信息编码到参数码流部分(1190)中;
将所述一个或多个输入图像编码到图像码流部分(1180)中。
2.根据权利要求1所述的装置,其特征在于,
所述处理电路用于将关于所述一个或多个可更新层的信息编码到层码流部分(1195)中。
3.根据权利要求2所述的装置,其特征在于,
关于所述一个或多个可更新层的所述信息包括所述一个或多个可更新层的层索引,
所述层索引是根据预设规则进行索引的所述神经网络的层中的所述一个或多个可更新层的索引。
4.根据权利要求1至3中任一项所述的装置,其特征在于,
可更新层(1310)具有一个或多个可更新参数和一个或多个预配置参数;
所述处理电路用于通过更新所述一个或多个可更新层的所述一个或多个可更新参数并保持所述一个或多个预配置参数来训练所述神经网络。
5.根据权利要求4所述的装置,其特征在于,
所述可更新层(1310、1620、1705)包括权重为所述一个或多个可更新参数的可更新子层(1526、1626、1720)和权重为所述一个或多个预配置参数的预配置子层(1524、1624、1710);
所述可更新层的相同输入提供给所述可更新子层和所述预配置子层;
所述可更新层的输出是所述可更新子层和所述预配置子层的元素和(1730)。
6.根据权利要求5所述的装置,其特征在于,所述可更新子层包括稀疏神经网络层(3006、4003、5010)。
7.根据权利要求5或6所述的装置,其特征在于,所述可更新子层包括张量训练神经网络层(3006、4003、5010)。
8.根据权利要求4至7中任一项所述的装置,其特征在于,
所述处理电路用于通过与用于训练所述一个或多个预配置参数的训练方法相比较不复杂的训练方法更新所述一个或多个可更新参数。
9.根据权利要求8所述的装置,其特征在于,
所述一个或多个可更新层为卷积层(1003、3001、810、850、1410、1420、1620、1705);
以下至少一项适用:
–所述较不复杂的训练方法处理的参数更新比用于训练所述一个或多个预配置参数的训练方法处理的参数更新更少;
–所述较不复杂的训练方法更新的卷积核比用于训练所述一个或多个预配置参数的训练方法更新的卷积核更小。
10.根据权利要求3至9中任一项所述的装置,其特征在于,所述处理电路用于:
通过伪随机初始化所述一个或多个可更新层(1626)的所述一个或多个可更新参数,更新所述一个或多个可更新参数;
使用原始图像(910)和重建图像(960)对执行所述训练。
11.根据权利要求1至3中任一项所述的装置,其特征在于,
所述处理电路用于通过根据原始图像(910)和重建图像(960)对更新所述一个或多个可更新层的所述一个或多个参数,训练所述神经网络。
12.根据权利要求1至11中任一项所述的装置,其特征在于,所述一个或多个可更新层的所述一个或多个参数包括所述一个或多个可更新层的权重。
13.根据权利要求1至12中任一项所述的装置,其特征在于,所述处理电路还用于:
通过根据所述一个或多个输入图像,预训练所述神经网络来进行预配置,其中,所述预训练包括以比训练所述一个或多个可更新层更低的频率来更新所述一个或多个预配置层的参数;
将关于所述一个或多个预配置层的更新后的参数的信息编码到网络码流部分中。
14.根据权利要求13所述的装置,其特征在于,所述处理电路还用于:
获取多个预配置层集;
从所述多个预配置层集中选择包括所述神经网络的所述一个或多个预配置层的集合,
其中,关于所述更新后的参数的信息是选择的集合的指示。
15.根据权利要求1至14中任一项所述的装置,其特征在于,对所述层的选择和/或更新是以不同的间隔执行的。
16.根据权利要求1至15中任一项所述的装置,其特征在于,
关于所述一个或多个可更新层的信息是以比编码关于所述一个或多个可更新层的一个或多个更新后的参数的信息更低的频率编码的。
17.根据权利要求1至16中任一项所述的装置,其特征在于,
所述训练是根据第一数量个输入图像和重建图像对进行的;
所述对关于所述一个或多个更新后的参数的信息的所述编码是在对所述第一数量个输入图像的编码之后进行的,并且所述经过训练的神经网络待应用于第二数量个重建图像;
所述第二数量大于所述第一数量。
18.根据权利要求1至17中任一项所述的装置,其特征在于,所述神经网络的所述一个或多个预配置层(1320)和/或所述一个或多个可更新层(1310)为卷积层(1410、1420)。
19.根据权利要求1至18中任一项所述的装置,其特征在于,所述处理电路用于根据包括速率、失真和复杂性中的至少一个的成本函数的优化来选择所述一个或多个可更新层。
20.根据权利要求1至19中任一项所述的装置,其特征在于,所述神经网络是经过训练用于后滤波(2702)的神经网络。
21.根据权利要求1至20中任一项所述的装置,其特征在于,对所述一个或多个图像的编码是使用所述神经网络执行的。
22.根据权利要求21所述的装置,其特征在于,所述神经网络经过训练以执行环内滤波(2701)、端到端图像译码、自适应采样和图像译码参数的译码中的一个。
23.一种用于对一个或多个输入图像(1060、331)进行解码的装置(2200),其特征在于,所述解码包括使用神经网络,所述装置包括:
处理电路(2210),用于:
从参数码流部分(1220)中解码关于一个或多个可更新层(1310)的一个或多个参数的信息;
从图像码流部分(1210)中解码所述一个或多个输入图像,其中,所述解码包括用所述神经网络处理,其中,所述神经网络包括:
–包括一个或多个经解码参数的所述一个或多个可更新层(1310);
–具有预配置参数的一个或多个预配置层(1320)。
24.根据权利要求23所述的装置,其特征在于,
所述处理电路用于从层码流部分(1230)中解码关于所述一个或多个可更新层的信息。
25.根据权利要求24所述的装置,其特征在于,
所述一个或多个可更新层的信息包括所述一个或多个可更新层的索引;
所述层索引是根据预设规则进行索引的所述神经网络的层中的所述一个或多个可更新层的索引。
26.根据权利要求23至25中任一项所述的装置,其特征在于,
可更新层(1310、1620、1705)具有一个或多个可更新参数和一个或多个预配置参数;
所述处理电路用于更新所述一个或多个可更新层的所述一个或多个可更新参数并保持所述一个或多个预配置参数。
27.根据权利要求26所述的装置,其特征在于,
所述可更新层(1310、1620、1705)包括权重为所述一个或多个可更新参数的可更新子层(1526、1626、1720)和权重为所述一个或多个预配置参数的预配置子层(1524、1624、1710);
所述可更新层的相同输入提供给所述可更新子层和所述预配置子层;
所述可更新层的输出是所述可更新子层和所述预配置子层的元素和(1730)。
28.根据权利要求27所述的装置,其特征在于,所述可更新子层包括稀疏神经网络层(3006、4003、5010)。
29.根据权利要求27或28所述的装置,其特征在于,所述可更新子层包括张量训练神经网络层(3006、4003、5010)。
30.根据权利要求27至29中任一项所述的装置,其特征在于,
所述一个或多个可更新层为卷积层(1003、3001、810、850、1410、1420、1620、1705);
以下至少一项适用:
–所述可更新子层的参数比所述预配置子层更少;
–所述可更新子层应用的卷积核比所述预配置子层更小。
31.根据权利要求23至25中任一项所述的装置,其特征在于,所述一个或多个可更新层的所述一个或多个参数包括所述一个或多个可更新层的权重。
32.根据权利要求23至31中任一项所述的装置,其特征在于,所述处理电路还用于:
从网络码流部分中解码关于所述一个或多个预配置层的更新后的参数的信息;
根据所述更新后的参数的信息,以比更新所述可更新参数更低的频率更新所述预配置参数。
33.根据权利要求32所述的装置,其特征在于,所述处理电路还用于:
从关于所述更新后的参数的信息中获取多个预配置层集中选择的集合的指示,其中
所述选择的集合包括所述神经网络的所述一个或多个预配置层。
34.根据权利要求23至33中任一项所述的装置,其特征在于,
关于所述一个或多个可更新层的信息是以比解码关于所述一个或多个可更新层的一个或多个更新后的参数的信息更低的频率解码的。
35.根据权利要求23至34中任一项所述的装置,其特征在于,所述神经网络的所述一个或多个预配置层(1320)和/或所述一个或多个可更新层(1310)为卷积层(1410、1420)。
36.根据权利要求23至35中任一项所述的装置,其特征在于,所述神经网络适用于后滤波(2702)。
37.根据权利要求23至36中任一项所述的装置,其特征在于,对所述一个或多个图像的解码是使用所述神经网络执行的。
38.根据权利要求37所述的装置,其特征在于,所述神经网络适用于环内滤波(2701)、图像解码、自适应采样和图像译码参数的解码中的一个。
39.一种用于对一个或多个输入图像(1010、17)进行编码的方法,其特征在于,所述编码包括使用神经网络,所述方法包括以下步骤:
从所述神经网络的层(1310、1320)中选择(S2310)一个或多个可更新层(1310);
根据所述一个或多个输入图像,训练(S2320)所述神经网络,其中,所述训练包括更新所述一个或多个可更新层的一个或多个参数,并保持所述神经网络层中的一个或多个预配置层(1320)的参数;
将关于所述一个或多个可更新层的一个或多个更新后的参数的信息编码(S2340)到参数码流部分(1190)中;
将所述一个或多个输入图像编码(S2350)到图像码流部分(1180)中。
40.一种用于对一个或多个输入图像(1060、331)进行解码的方法,其特征在于,所述解码包括使用神经网络,所述方法包括以下步骤:
从参数码流部分(1220)中解码(S2420)关于一个或多个可更新层(1310)的一个或多个参数的信息;
从图像码流部分(1210)中解码(S2430)所述一个或多个输入图像,其中,所述解码包括用所述神经网络处理,其中,所述神经网络包括:
–包括一个或多个经解码参数的所述一个或多个可更新层(1310);
–具有预配置参数的一个或多个预配置层(1320)。
41.一种存储程序的计算机可读非瞬时性介质,其特征在于,所述计算机可读非瞬时性介质包括指令,当所述指令在一个或多个处理器中执行时,所述一个或多个处理器执行根据权利要求39和/或40所述的方法。
42.一种用于对一个或多个输入图像进行编码的装置,其特征在于,所述编码包括使用神经网络,所述装置包括:
一个或多个处理器;
非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述程序在所述一个或多个处理器中执行时,所述编码器执行根据权利要求39所述的方法。
43.一种用于对一个或多个输入图像进行解码的装置,其特征在于,所述解码包括使用神经网络,所述装置包括:
一个或多个处理器;
非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述程序在所述一个或多个处理器中执行时,所述装置执行根据权利要求40所述的方法。
44.一种计算机程序,其特征在于,包括程序代码,用于在计算机中执行时,执行根据权利要求39和/或40所述的方法。
CN202180094577.1A 2021-02-25 2021-02-25 使用卷积神经网络对图像进行译码的装置和方法 Pending CN116965029A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/RU2021/000082 WO2022182265A1 (en) 2021-02-25 2021-02-25 Apparatus and method for coding pictures using a convolutional neural network

Publications (1)

Publication Number Publication Date
CN116965029A true CN116965029A (zh) 2023-10-27

Family

ID=75801642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180094577.1A Pending CN116965029A (zh) 2021-02-25 2021-02-25 使用卷积神经网络对图像进行译码的装置和方法

Country Status (5)

Country Link
US (1) US20240064318A1 (zh)
EP (1) EP4268467A1 (zh)
KR (1) KR20230128079A (zh)
CN (1) CN116965029A (zh)
WO (1) WO2022182265A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11889112B2 (en) * 2021-04-30 2024-01-30 Tencent America LLC Block-wise content-adaptive online training in neural image compression
CN116434347B (zh) * 2023-06-12 2023-10-13 中山大学 一种基于掩码图自编码器的骨架序列识别方法及系统
CN117975173A (zh) * 2024-04-02 2024-05-03 华侨大学 基于轻量化视觉转换器的儿童邪典图片识别方法和设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10979718B2 (en) * 2017-09-01 2021-04-13 Apple Inc. Machine learning video processing systems and methods

Also Published As

Publication number Publication date
KR20230128079A (ko) 2023-09-01
US20240064318A1 (en) 2024-02-22
WO2022182265A1 (en) 2022-09-01
EP4268467A1 (en) 2023-11-01

Similar Documents

Publication Publication Date Title
CN115211115A (zh) 使用基于循环的机器学习系统的视频压缩
TWI830107B (zh) 通過指示特徵圖資料進行編碼
US20240064318A1 (en) Apparatus and method for coding pictures using a convolutional neural network
US20230239516A1 (en) Entropy encoding/decoding method and apparatus
US20230336784A1 (en) Decoding and encoding of neural-network-based bitstreams
KR20230041084A (ko) 단대단 신경망 기반 비디오 코딩
US20230336759A1 (en) Decoding with signaling of segmentation information
US20220272355A1 (en) Machine learning based flow determination for video coding
CN116982311A (zh) 用于学习的视频压缩的多尺度光流
EP4305839A1 (en) Learned b-frame coding using p-frame coding system
WO2023172153A1 (en) Method of video coding by multi-modal processing
JP2023544562A (ja) イントラ予測方法及び装置
TWI834087B (zh) 用於從位元流重建圖像及用於將圖像編碼到位元流中的方法及裝置、電腦程式產品
US11825090B1 (en) Bit-rate estimation for video coding with machine learning enhancement
US20240015318A1 (en) Video coding using optical flow and residual predictors
WO2023091040A1 (en) Generalized difference coder for residual coding in video compression
TW202416712A (zh) 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq
WO2024015665A1 (en) Bit-rate estimation for video coding with machine learning enhancement
JP2024508772A (ja) ビデオコーディングのための機械学習ベースのフロー決定
CN117501696A (zh) 使用在分块之间共享的信息进行并行上下文建模
WO2024002496A1 (en) Parallel processing of image regions with neural networks – decoding, post filtering, and rdoq
WO2024002497A1 (en) Parallel processing of image regions with neural networks – decoding, post filtering, and rdoq
WO2024015713A1 (en) Video coding using camera motion compensation and object motion compensation
KR20230117346A (ko) 뉴럴 네트워크 기반 비디오 코딩을 위한 프론트-엔드 아키텍처
CN116965025A (zh) 用于神经网络特征压缩的比特分配

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