CN116648909A - 一种使用神经网络编码或解码图像的方法和装置 - Google Patents

一种使用神经网络编码或解码图像的方法和装置 Download PDF

Info

Publication number
CN116648909A
CN116648909A CN202080108045.4A CN202080108045A CN116648909A CN 116648909 A CN116648909 A CN 116648909A CN 202080108045 A CN202080108045 A CN 202080108045A CN 116648909 A CN116648909 A CN 116648909A
Authority
CN
China
Prior art keywords
size
input
downsampling
layer
scaling
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
CN202080108045.4A
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 CN116648909A publication Critical patent/CN116648909A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • 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
    • 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/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/46Extracting features or characteristics from the video content, e.g. video fingerprints, representative shots or key frames
    • 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/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/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/182Methods 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 a pixel
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • 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/048Activation functions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

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

Abstract

一种使用神经网络对图像进行编码或解码的方法和装置。本发明公开了对图像进行编码和对可表示经编码图像的码流进行解码的方法和系统。在编码和解码的过程中,缩放操作用于将输入缩放到可以通过神经网络中的一层处理的大小。本文中公开的实施例提供了减小码流大小的缩放所采用的方法,从而改进了压缩。

Description

一种使用神经网络编码或解码图像的方法和装置
本发明涉及一种使用神经网络对图像进行编码的方法和一种使用神经网络对图像进行解码的方法。本发明还涉及一种对图像进行编码的编码器和一种对图像进行解码的解码器以及一种计算机可读存储介质。
背景技术
视频译码(视频编码和解码)广泛用于数字视频应用,例如,广播数字电视、基于互联网和移动网络的视频传输、视频聊天和视频会议等实时会话应用、DVD和蓝光光盘、视频内容采集和编辑系统以及安全应用的可携式摄像机。
即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量有限的通信网络中流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后通过现代电信网络进行传输。由于内存资源可能有限,当在存储设备中存储视频时,该视频的大小也可能是一个问题。视频压缩设备通常在信源侧使用软件和/或硬件对视频数据进行编码,然后传输或存储视频数据,从而减少表示数字视频图像所需的数据量。然后,对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术能够在几乎不影响图像质量的情况下提高压缩比。
如今,神经网络和使用神经网络的深度学习技术已经在视频、图像等的编码和解码的技术领域中使用了一段时间。
在这类情况下,码流通常表示或者是可以由包括值的二维矩阵合理表示的数据。例如,这适用于表示或者是图像、视频序列或类似数据的码流。除了2D数据之外,本发明中提到的神经网络和框架可以应用于音频信号等更多源信号,这些源信号通常表示为1D信号或其它信号。
例如,包括多个下采样层的神经网络可以将下采样(在下采样层是卷积层的情况下,将卷积)应用于待编码输入,例如,图像。通过将这种下采样应用于输入图像,输入图像的大小会减小,而且这种操作可以重复,直到获取到最终大小。这类神经网络既可以用于使用深度学习神经网络进行图像识别,也可以用于对图像进行编码。相应地,这类网络可以用于对经编码图像进行解码。其它源信号,例如,具有两个以下或以上维度的信号,也可以通过类似的网络处理。
希望提供一种可以高效地应用于大小上可能不同的各种不同信号的神经网络框架。
发明内容
本发明的一些实施例可以减小携带信息的码流的大小,同时仍然确保原始信息可以在丢失尽可能少的信息的情况下重建。
一些实施例提供了根据独立权利要求1所述的使用神经网络对码流进行编码的方法以及根据权利要求29所述的使用神经网络对码流进行解码的方法、根据权利要求55或56所述的对图像进行编码的编码器和根据权利要求57或58所述的对码流进行解码的解码器以及根据权利要求59所述的计算机可读存储介质。其它优选实施例在从属权利要求中提供。
本发明提供了一种使用神经网络(neural network,NN)对图像进行编码的方法。所述NN包括多个层,所述多个层包括至少一个下采样层,所述至少一个下采样层将下采样应用于表示在至少一个维度上具有大小S的矩阵的输入,所述方法包括:在使用所述至少一个下采样层处理所述输入之前,将缩放应用于所述输入,其中,所述缩放包括在所述至少一个维度上改变所述大小,使得其中,r>1,r是所述至少一个下采样层的下采样比;在所述缩放之后,通过所述至少一个下采样层处理所述输入,并且提供具有大小S1<S的输出;在使用所述NN处理所述图像之后(例如,在使用所述NN中的每一层处理所述图像之后),提供码流作为所述NN的输出。
在本发明的上下文中,上述图像可以在视频或视频序列的意义上理解为静止图像或运动图像。此外,本发明中的图像也可以只属于较大(总)图像的一部分。另外,上述图像也可以称为帧。在任何情况下,都可以认为图像是或者可表示为矩阵形式的包括值(通常称为样本)的二维或二维以上数组,然后,该图像可以通过神经网络处理,具体是通过下采样层以上述方式处理。
本发明提供的码流可以是或可以包括经编码图像。码流可以包括其它信息(边信息),例如,这些信息属于对码流进行解码以重建图像所需的信息。
在这种上下文中,当码流表示为矩阵时,码流的大小在至少一个维度上小于最初输入的图像的大小。这里的术语“大小”是指,例如,样本在一个或多个维度(例如,宽度和高度)上的数量。大小还可以表示分辨率,分辨率的典型特征是每个图像或图像区域的样本数量。
需要说明的是,本发明并不限于输入图像的所有维度都在编码器的输出处降低的情况。例如,输入图像可以仅在其中一个维度上减小大小。
此外,码流可能存在第三维度,等等,其中,第三维度上的大小可能比输入图像的对应维度大。第三维度可能表示特征图的数量,特征图也可以称为通道。在一个具体的示例中,第三维度上的大小在输入(图像)处可能是3,而在输出(码流)处可能是192。特征图的大小通常通过编码器增大,以便根据特征图的重要性高效地对输入进行分类。
下采样可以通过任何已知的或技术上合理的方式来实现。例如,下采样可以包括通过将卷积应用于相应下采样层的输入而进行的下采样。在这种上下文中,下采样层可以具体地实现为将卷积应用于输入的卷积层。
当输入图像以矩阵的形式表示时,下采样可以仅在输入图像的一个维度上执行。下采样也可以应用于矩阵的多个或所有维度。但是,本发明并不限于任何特定的下采样。一个或多个处理层可以通过以下方式应用除卷积以外的下采样:例如,删除(移除)输入图像或输入特征图中的每两行和/或列或每三行和/或列,等等。
可以理解的是,本文中提供的本发明实施例使得在通过相应的下采样层处理输入之前立即应用缩放。如果神经网络中包括多个下采样层,则在每个相应的下采样层之前,但在通过用前一层处理输入之后,应用缩放。因此,根据上文内容,缩放取决于相应下采样层的下采样比。
需要说明的是,在一些实施例中,只有先前的确定表明需要缩放,这种缩放才应用于输入。在将缩放操作应用于输入之前,可以检查是否要应用缩放。例如,可以检查S=n·r是否成立。在这种情况下,因为下采样层的输入的大小已经是下采样比的整数倍,所以可以确定不需要缩放。
通过逐层应用缩放,缩放的执行使得对输入进行尽可能少地修改。由此,可以尽可能少地降低质量和/或增大输入的大小。
在一个实施例中,所述NN包括个下采样层,每个下采样层m具有关联的下采样比rm>1,其中,m≤M, 所述方法还包括:在使用下采样层m处理表示在至少一个维度上具有大小Sm的矩阵的输入之前,如果所述大小Sm不是所述下采样层m的下采样比rm的整数倍,将缩放应用于所述输入,其中,所述缩放包括在所述至少一个维度上改变所述大小Sm,使得其中,更具体地,应用于下采样层m的输入的缩放可以与其它下采样层的下采样比rk无关,其中,k≠m。
在另一个实施例中,所述下采样层m的输入在所述至少一个维度上具有大小Sm,所述大小的值不是所述下采样层m的下采样比rm的整数倍,所述输入的大小Sm在缩放的过程中改变,以与所述下采样比rm的最接近但小于所述大小的整数倍匹配或者与所述下采样比rm的最接近但大于所述大小的整数倍匹配。
通过本实施例,规定依赖于直接连续的(或后续的或接连的,可互换使用)下采样层的下采样比的缩放只能在该特定下采样层之前执行。这样可以确保,即使缩放包括增大输入大小,经编码码流的大小也会减小到最小值。
对于上述实施例,在将缩放应用于下采样层的输入之前,(显式或隐式地)确定或检查是否需要缩放。如果确定不需要缩放(例如,因为输入的大小已经是相应下采样比的整数倍),则不应用缩放。
在一个实施例中,在将所述缩放应用于所述具有大小Sm的输入之前,确定Sm是否是所述下采样比rm的整数倍,如果确定Sm不是所述下采样比rm的整数倍,将所述缩放应用于所述输入,使得所述大小Sm在所述至少一个维度上改变,使得其中,这种确定在方法中的其它步骤的意义上可以是显式确定,这种确定也可以是通过其它方式执行的计算的一部分,因此是隐式确定。可以省略通过这种确定获取结果(在指示大小Sm与整数倍之差的数字的意义上)。
在执行缩放之前做出这种确定可以降低编码的计算复杂性,因为可以避免不需要的缩放。
在一个实施例中,如果所述输入的大小Sm是所述下采样层m的下采样比rm的整数倍,则在通过所述下采样层m处理所述输入之前,所述输入不缩放到大小本实施例并不排除,待应用的缩放步骤不改变大小Sm。例如,如果大小Sm=n·rm,则如果缩放包括根据增大大小Sm,“缩放后的”大小是因为在这里,虽然在本实施例中,缩放可以作为某个默认步骤执行,但是缩放不会改变输入的大小Sm。在Sm已经是下采样比的整数倍的情况下不缩放到大小避免了因不必要的大小减小而丢失信息或因不必要的大小增大而添加冗余信息或不相关信息。
在另一个实施例中,所述确定Sm是否是所述下采样比rm的整数倍包括:将所述大小Sm与所述下采样层m的允许输入大小进行比较。该允许输入大小可以是预定义的,也可以是任何大小,只要该大小是下采样比的整数倍。具体地,该允许输入大小可以取决于大小Sm,如果该允许输入大小不是预定义的,也可以根据Sm(动态)确定。
在一个实施例中,所述下采样层m的允许输入大小是根据所述下采样比rm和所述大小Sm中的至少一个计算的。
因此,上述确定特定于相应下采样层和/或其输入,从而可靠地确定可能需要的缩放,并且使这种确定特别适合于包括下采样比不同的下采样层的神经网络。
更具体地,所述比较可以包括:计算Sm与所述下采样层m的允许输入大小之间的差值。
在一个实施例中,所述比较包括:确定在这种上下文中,可以认为是上文提到的“允许输入大小”。
在一个更具体的实施例中,确定的是如果则所述缩放应用于所述具有大小Sm的输入。
替代地或另外,确定的可以是如果则所述缩放应用于所述具有大小Sm的输入。根据上述等式进行确定可以实现以下目的:如果构成允许输入大小并用作则可以同时获取在缩放的过程需要添加到Sm中或从Sm中移除的必要量。这样提供了一种获取缩放的可靠方式,并且可以进一步实现尽可能少地改变输入大小Sm的缩放。
在另一个实施例中,所述大小是根据所述下采样比rm和所述大小Sm中的至少一个确定的。
具体地,所述大小可以是根据包括ceil、int、floor中的至少一个的函数确定的。
更具体地,所述大小可以是通过以下方式之一确定的:
-所述大小是根据确定的;或者
-所述大小是根据确定的;或者
-所述大小是根据确定的。
通过这些方式计算可以尽可能少地改变具有大小Sm的输入,因为下采样比的最接近但小于大小Sm的整数倍或下采样比的最接近但大于大小Sm的整数倍构成大小因此,在缩放的过程中有尽可能少的冗余信息添加到输入中(例如,如果缩放是通过填充输入以增大其大小来实现的),或者在缩放的过程中有尽可能少的相关信息移除(例如,通过裁剪输入以减小其大小)。
在一个实施例中,所述下采样层m的输入在所述至少一个维度中具有大小Sm,所述大小的值在所述下采样层m的下采样比rm的最接近但小于所述大小的整数倍和所述下采样层m的下采样比rm的最接近但大于所述大小的整数倍之间,所述输入的大小Sm根据条件在所述缩放的过程中改变,以与所述下采样比rm的最接近但小于所述大小的整数倍匹配或者与所述下采样比rm的最接近但大于所述大小的整数倍匹配。上述条件可以是任何合适的条件,并且可以包括,例如,避免从输入中移除信息或者将尽可能少的冗余信息或无意义信息添加到输入中。根据这样的条件确定在缩放的过程中是增大输入的大小还是减小大小,不仅可以满足数学限制和要求,而且还可以满足计算限制或要求。此外,这样可以确保编码的质量满足给定要求,例如,在对经编码图像进行解码的过程中可实现的质量。
在一个实施例中,所述下采样层m的输入在所述至少一个维度上具有大小Sm,其中,lrm≤Sm≤rm(l+1),l和rm是所述下采样层m的下采样比,所述大小Sm根据条件缩放到优选地,l是一个小的自然数,使得l和l+1适用于下采样比的“最接近”输入大小的整数倍。
由于缩放的计算效率可能取决于原始输入的大小是增大还是减小,这些缩放后的大小都可能具有优势。具体地,将大小减小到lrm可能会丢失信息,尽管经编码码流最终会变小。将大小增大到rm(l+1)会导致更多的熵提供给输入,而且包括较少有意义信息的经编码图像的大小会增大。但是,至少没有信息丢失,因此可以高质量地对经编码图像进行解码。
在一个实施例中,如果所述输入的大小Sm更接近所述下采样层m的下采样比rm的最接近但小于所述大小的整数倍,而不是更接近所述下采样比rm的最接近但大于所述大小的整数倍,则所述输入的大小Sm减小到与所述下采样比rm的最接近但小于所述大小的整数倍匹配的大小因此,只从输入中移除很少的信息,同时避免添加相当多的冗余信息或无用信息。
在一个实施例中,将所述输入的大小Sm减小到所述大小包括:裁剪所述输入。这样会移除信息,但是可以在编码方法中高效实现。此外,输入的边界可能不提供图像的高度相关信息,因此可以在重建图像的过程中被移除而不会造成显著的质量损失。
在另一个实施例中,如果所述输入的大小Sm更接近所述下采样层m的下采样比rm的最接近但大于所述大小的整数倍,而不是更接近所述下采样比rm的最接近但小于所述大小的整数倍,则所述输入的大小Sm增大到与所述下采样比rm的最接近但大于所述大小的整数倍匹配的大小这样可以保留少量的冗余信息或无用信息,而且不会丢失输入的信息。
具体地,将所述输入的大小Sm增大到大小可以包括:用0或者用从所述具有大小Sm的输入中获取到的填充信息来填充所述具有大小Sm的输入。两种填充方式都可以在计算上高效实现。
在一个更具体的实施例中,所述从所述具有大小Sm的输入中获取到的填充信息用作冗余填充信息,以将所述输入的大小Sm增大到所述大小
更具体地,用冗余填充信息来填充可以包括反射填充和重复填充中的至少一种。通过这些填充方法,可以使用已经是输入一部分的信息,从而在重建图像时减少图像边界处的失真。
在一个实施例中,所述填充信息是或者包括所述具有大小Sm的输入的至少一个值,所述至少一个值最接近所述输入中要添加所述冗余填充信息的区域。
在一个实施例中,所述下采样层m的输入的大小Sm增加到与所述下采样比rm的最接近但大于所述大小的整数倍匹配的大小这可以作为默认选项,表示无论输入的大小Sm是否更接近层m的下采样比的最接近但小于输入大小的整数倍,而不是更接近下采样比rm的最接近但大于输入大小的整数倍,大小Sm都通过上述实施例中的填充等方式增大。因此,避免丢失输入中包括的信息。
在一个实施例中,所述条件使用Min(|S-lrm|,|S-rm(l+1)|),所述条件包括:如果Min产生或选择|Sm-lrm|,则所述输入的大小Sm减小到如果Min产生或选择|Sm-(l+1)rm|,则所述输入的大小Sm增大到通过使用该条件,确保缩放在计算上高效应用。
具体地,l可以是根据所述下采样层m的输入的大小Sm和所述下采样层m的下采样比rm中的至少一个确定的。
在一个具体的实施例中,l是根据确定的和/或l+1是根据确定的。这样可以在计算上高效获取到上述值。从上述实施例中可以看出,l不一定以某种计算输出的形式显式获取到,而是可以在计算的过程中直接使用。
在另一种具体的实现方式中,所述条件是从一组值{krm}中选择以最小化其中,k是正整数,S是输入在缩放之前的大小。通过使用该条件,可以确保缩放在计算上高效应用。
在一个实施例中,所述至少一个下采样层在两个维度上将下采样应用于所述输入,第一维度上的下采样比等于第二维度上的下采样比。本实施例显著减小了图像的大小。例如,图像的大小由其宽度和高度限定,例如,由宽度和高度方向上的样本数量限定。
在另一个实施例中,所有下采样层的下采样比都相等。如果所有下采样比的下采样比都相等,则在计算上更容易确定需要的缩放。
根据使用神经网络(neural network,NN)对表示图像的码流进行解码的方法,根据一个实施例,所述NN包括多个层,所述多个层包括至少两个上采样层,所述至少两个上采样层将上采样应用于表示在至少一个维度上具有大小T的矩阵的输入,所述方法包括:通过第一上采样层处理所述输入,并且提供所述第一上采样层的输出,其中,所述输出具有大小u1>1,u1是所述第一上采样层的上采样比;在通过第二上采样层处理所述第一上采样层的输出之前,将缩放应用于所述第一上采样层的输出,其中,所述缩放包括根据获取到的信息在所述至少一个维度上将所述输出的大小改变为所述至少一个维度上的大小通过所述第二上采样层处理所述缩放(调整大小)后的输出,并且提供所述第二上采样层的输出,其中或使得,所述输出在所述至少一个维度上具有大小u2>1,u2是所述第二上采样层的上采样比;在使用所述NN处理所述码流之后(例如,在使用所述NN中的每一层处理所述码流之后),提供经解码图像作为所述NN的输出。
经解码图像也可以称为重建图像,因为经解码图像是通过这种对码流进行解码的方法重建的。经解码图像可以使用矩阵的形式呈现或表示,在这个意义上可以具有宽度W和高度H。
此外,大小可以称为第一上采样层的输出的目标输出大小和/或第二上采样层的目标输入大小。
获取到的信息可以包括,例如,与经解码码流的目标输出大小或其表示的矩阵有关的信息。该信息可以是有助于解码器执行解码或者是解码器执行解码所需的信息。此外,输出所需的特定大小等其它信息可以是获取到的信息的一部分或全部。本发明还不限于获取信息的具体方式。例如,该信息已经对解码器可用,也可以与经编码码流或其它码流一起提供给解码器。还可以使用它们的组合。
与编码一样,码流可以通过任何合理的形式提供。通过这种方法,可以对码流进行解码,以便根据大小减小的码流来重建在码流中编码的信息。
所述上采样层包括转置卷积(反卷积)层。
转置卷积也可以称为“反卷积”。这是与编码器应用的卷积相反的运算,并且包括输入的离散扩展,以便最终获取到经解码码流。
在一个实施例中,所述信息包括可由所述码流表示的矩阵的目标大小、由所述码流表示的矩阵的高度H、由所述码流表示的矩阵的宽度W、所述上采样比u1、所述上采样比u2、所述第二上采样层的目标输出大小所述大小中的至少一个。为了可靠地获取具有给定目标大小的经解码码流,该信息可能是必要的。
在另一个实施例中,所述信息是从所述码流、第二码流、所述解码器可用的信息中的至少一个中获取到的。该信息可能已经为解码器所知,因此解码器可用,例如,只要该信息与扩大比有关。目标大小等更多信息也可能已经对解码器可用。但是,例如,中间步长的大小可能不为解码器所知,因此可以由码流本身或在单独的码流中提供,因为该大小可能取决于解码的详细内容。这具体涉及或可能特别有利于以下情况:解码器也相对于所使用的上采样和下采样层实现为编码器的“逆操作”。这样可以提供解码器所需且在计算上高效的信息量,同时将码流的大小减小到或保持在最小值。
还可以设想,所述用于在至少一个维度将大小改变为大小的缩放是根据取决于和u2的公式确定的,其中,是所述第二上采样层的输出的目标输出大小,u2是所述第二上采样层的上采样比。
由于上采样比u2是固定的,但第二上采样层的输入的大小取决于缩放,因此上采样之后的输出大小也取决于实际上应用的缩放。反过来,如果输出的目标大小是固定的(例如,由于后续层的输入存在要求),则这些条件可以用于确定缩放。因此,解码器本身通常可用的信息(具体是最终目标大小)可以用于确定需要的缩放,该缩放可以进一步减少必须包括在码流中的信息量,从而减小其大小。
在另一个实施例中,所述用于在至少一个维度上将大小改变为大小的缩放是根据取决于u2和N的公式确定的,其中,N是所述码流通过所述NN的处理顺序中与所述第一上采样层连续的上采样层的总数。
在本实施例中,每个上采样层具有相同的上采样比,通过本实施例,可以高效计算所需的缩放。具体地,每一层的缩放仅仅取决于上采样比、最终目标大小和需要处理的剩余层数N。但是,本实施例并不限于所有上采样层具有相同上采样比的情况。在一个示例中,与第一上采样层连续的各层的上采样比可以是2和8。在这种情况下,为了计算简单起见,可以考虑剩余层数N等于2,上采样比u2等于4。
在一个实施例中,所述公式由给出,其中,Toutput是所述NN的输出的目标大小。
此公式确保缩放始终是一个整数值,该整数值可以加到前一层的输出中或从前一层的输出中减去,以便为后续层获取合理可处理的缩放后的输入。需要说明的是,对于最后一个上采样层,在一些实施例中,上采样总是产生NN的输出的目标大小Toutput。具体地,对于解码器的NN的最后一层,可以不检查最后一层的输入是否具有合适的大小,或者最后一层的输出是否具有合适的大小。
更具体地,用于指示所述大小T3的指示可以包括在码流中。
在替代的实施例中,所述公式由给出或者所述公式由给出。因此,提供了缩放,以便仅依赖于后续层的输出大小。这可以降低确定需要的缩放时的计算复杂性。
指示选择多个预定义公式中的哪一个公式的指示也可以是从码流中获取到的。多个预定义公式可以包括如上文和下文所述的用于确定的公式。
在一个实施例中,所述方法还包括:在对所述具有大小的输出进行所述缩放之前,确定所述输出的大小是否与所述大小匹配。这种确定可以用于潜在地避免对具有大小的输出进行不需要的缩放。
如果确定所述大小与所述大小匹配,则不应用改变所述大小的缩放。这表示不会将大小缩放到但是,即使确定大小与大小匹配,形式上应用缩放但不改变大小的“相同变换”仍可以应用。例如,如果大小则会产生根据这个结果应用的缩放不会改变
在另一个实施例中,所述方法还包括:确定是否大于或者是否小于根据这种确定,就会根据缩放执行更多动作。例如,根据这种确定,大小可以通过一种特定技术减小,或者可以通过另一种技术增大。
在另一个实施例中,如果确定大于则所述缩放包括将裁剪应用于所述具有大小的输出,使得所述大小减小到所述大小裁剪会丢失信息,但是,这是一种减小大小的高效计算方法。
在一个实施例中,如果确定小于则所述缩放包括将填充应用于所述具有大小的输出,使得所述大小增大到所述大小填充可以通过不同的方式实现。具体地,填充可以通过以下方式提供:其它信息仅添加到具有大小的输出的一个或多个边界。因此,只有重建图像中存在较低相关性的区域受到填充的影响,使得重建图像的质量更高。
在一个更具体的实施例中,所述填充包括用0或用从所述具有大小的输出中获取到的填充信息来填充所述具有大小的输出。这两种方式都有优势。用0填充可以在计算上高效实现,因为这与输出的信息无关。用从具有大小的输出中获取到的信息来填充输出在计算上通常更复杂,但是可以控制输出中实际信息与添加信息之间的转变,从而减少重建图像中的处理伪影。
在另一个更具体的实施例中,所述从所述具有大小的输出中获取到的填充信息用作冗余填充信息,以将所述输出的大小增大到所述大小
在一个实施例中,所述填充包括反射填充或重复填充。
在另一个实施例中,所述填充信息是或者包括所述具有大小的输出的至少一个值,所述至少一个值最接近所述输出中要添加所述冗余填充信息的区域。这使得在实际输出和通过填充添加的信息之间转变时产生的失真得到减少。
如果确定不等于则所述缩放包括应用插值滤波器。
一般而言,用于计算大小的调整大小公式可能具有以下形式:例如,
在一个示例中,用于计算每个上采样层之后的大小的公式可能不同。例如,
所述信息在所述码流或另一码流中提供,并且包括对所述码流进行编码的编码器中的至少一个下采样层的下采样比rm,其中,所述下采样层按照处理所述输入的顺序对应于所述解码器的上采样层。
在编码器和解码器彼此相反而相互对应的情况下,本实施例特别有利。
在一个实施例中,至少一个上采样层在两个维度上应用上采样,第一维度上的上采样比等于第二维度上的上采样比。
在另一个实施例中,所有上采样层的上采样比都相等。
这降低了解码器的计算复杂性。
此外,码流表示矩阵,该矩阵包括具有宽度W的第一维度和具有高度H的第二维度,和/或经解码码流是重建图像,例如,静态图像和/或视频图像。对于这类码流,应用解码方法是特别有利的。
在另一个实施例中,上述缩放包括缩放操作,该操作是或者包括将插值、填充、裁剪应用于输入中的至少一个,以便根据缩放改变输入的大小。在上述缩放包括增大原始输入的大小或减小原始输入的大小的情况下,这些缩放操作可以有利地应用。
在一个实施例中,所述NN包括所述码流通过所述NN的处理顺序中的对所述输入应用变换的另一单元,所述变换不改变所述输入在所述至少一个维度上的大小,所述方法包括:如果所述缩放增大所述输入在所述至少一个维度上的大小,在通过所述另一单元处理所述输入之后以及在通过下一层处理所述输入之前应用所述缩放,和/或所述方法包括:如果所述缩放包括减小所述输入在所述至少一个维度上的大小,在通过所述另一单元处理所述输入之前应用所述缩放。
因此,神经网络的每一层或步骤中所需的处理量保持为最小。
所述另一单元可以是或者可以包括批量归一化器和/或修正线性单元(rectifiedlinear unit,ReLU)。
这些另一单元对矩阵中的元素应用修改,如果缩放是在这些单元之后或之前完成,则可以在计算上高效实现。因此,避免了对冗余信息或无用信息进行不必要的处理。
甚至进一步地,所述码流可以包括与所述码流的不同颜色通道对应的子码流,所述NN可以包括子神经网络(sub-neural network,sNN),所述sNN分别用于将任一上述实施例提供的方法应用于作为所述sNN的输入的所述子码流。
这使得本发明也适用于以下情况:例如,考虑底层码流的不同颜色通道,但这些通道相互独立。
在另一个实施例中,如果所述缩放包括将所述大小S增大到所述大小,则所述大小给出,如果所述缩放包括将所述大小S减小到所述大小则所述大小给出。通过这些缩放,确保后续下采样层的缩放后的输入的大小始终是处理具有大小S的输入的后续下采样层的下采样比r的整数倍。
在另一个实施例中,如果所述缩放包括将所述大小增大到所述大小则所述大小给出,如果所述缩放包括将所述大小减小到所述大小则所述大小给出。这样可以确保上采样层的输出具有后续上采样层可以合理处理的大小。
根据一个实施例,提供了一种对图像进行编码的编码器。所述编码器包括:用于接收(获取)图像的接收器或接口;用于实现神经网络(neural network,NN)的一个或多个处理器,其中,所述NN包括图像通过所述NN的处理顺序中的多个层,所述多个层包括至少一个下采样层,所述至少一个下采样层用于将下采样应用于输入;用于输出码流的发送器或接口,其中,所述编码器用于执行任一上述实施例提供的方法。该编码器有利地实现任一上述实施例提供的对图像进行编码的方法。
在另一个实施例中,提供了一种对图像进行编码的编码器。所述编码器包括用于实现神经网络(neural network,NN)的一个或多个处理器,其中,所述一个或多个处理器用于执行任一上述实施例提供的方法。
相应地,例如,提供了一种使用神经网络(neural network,NN)对图像进行编码的编码器。所述编码器包括用于实现所述NN的一个或多个处理器,所述NN包括多个层,所述多个层包括至少一个下采样层,所述至少一个下采样层将下采样应用于表示在至少一个维度上具有大小S的矩阵的输入,所述一个或多个处理器用于:在使用所述至少一个下采样层处理所述输入之前,将缩放应用于所述输入,其中,所述缩放包括在所述至少一个维度上改变所述大小,使得其中,r>1,r是所述至少一个下采样层的下采样比;在所述缩放之后,通过所述至少一个下采样层处理所述输入,并且提供具有大小S1<S的输出;在使用所述NN处理所述图像之后(例如,在使用所述NN中的每一层处理所述图像之后),提供码流作为所述NN的输出。
在一个实施例中,提供了一种对表示图像的码流进行解码的解码器。所述解码器包括:用于接收码流的接收器或接口;用于实现神经网络(neural network,NN)的一个或多个处理器,其中,所述NN包括码流通过所述NN的处理顺序中的多个层,所述多个层包括至少两个上采样层,所述至少两个上采样层用于将上采样应用于输入;用于输出经解码图像的发送器或接口,其中,所述解码器用于执行上述实施例提供的任一方法。该解码器实现了上述对表示图像的码流进行解码的方法的优点。
在一个实施例中,提供了一种对表示图像的码流进行解码的解码器。所述解码器包括用于实现神经网络(neural network,NN)的一个或多个处理器,所述一个或多个处理器用于执行任一上述实施例提供的方法。
相应地,例如,提供了一种对表示图像的码流进行解码的解码器。所述解码器包括用于实现神经网络(neural network,NN)的一个或多个处理器,其中,所述NN包括多个层,所述多个层至少包括第一上采样层和第二上采样层,所述第一上采样层和所述第二上采样层将上采样应用于表示在至少一个维度上具有大小T的矩阵的输入,所述一个或多个处理器用于:通过所述第一上采样层处理所述输入,并且提供所述第一上采样层的输出,其中,所述输出具有大小u1>1,u1是所述第一上采样层的上采样比;在通过所述第二上采样层处理所述第一上采样层的输出之前,将缩放应用于所述第一上采样层的输出,其中,所述缩放包括根据获取到的信息在所述至少一个维度上将所述输出的大小改变为所述至少一个维度上的大小通过所述第二上采样层处理所述缩放后的输出,并且提供所述第二上采样层的输出,其中,所述输出在所述至少一个维度上具有大小u2>1,u2是所述第二上采样层的上采样比;在使用所述NN处理所述码流之后(例如,在使用所述NN中的每一层处理所述码流之后),提供经解码图像作为所述NN的输出。
在一个实施例中,提供了一种计算机程序。例如,所述计算机程序在计算系统上或由一个或多个处理器执行时,用于执行任一上述实施例提供的方法。
在另一个实施例中,提供了一种计算机可读存储介质。所述计算机可读存储介质包括计算机可执行指令,所述计算机可执行指令在计算系统上执行时,使得所述计算系统执行任一上述实施例提供的方法。具体地,所述计算机可读存储介质可以是非瞬时性介质。
附图说明
图1A是用于实现本发明一个实施例的视频译码系统的一个示例的框图;
图1B是用于实现本发明一些实施例的视频译码系统的另一个示例的框图;
图2是编码装置或解码装置的一个示例的框图;
图3是编码装置或解码装置的另一个示例的框图;
图4示出了一个实施例提供的编码器和解码器;
图5是输入的编码和解码的示意图;
图6示出了符合VAE框架的编码器和解码器;
图7示出了一个实施例提供的图4中的编码器的组件;
图8示出了一个实施例提供的图4中的解码器的组件;
图9示出了输入的缩放和处理;
图10示出了编码器和解码器;
图11示出了另一编码器和另一解码器;
图12示出了一个实施例提供的输入的缩放和处理;
图13示出了一个实施例提供的指示缩放选项的一个实施例;
图14示出了图13中的实施例的一种更具体的实现方式;
图15示出了图14中的实施例的一中更具体的实现方式;
图16示出了填充操作的不同可能性的比较;
图17示出了填充操作的不同可能性的进一步比较;
图18示出了根据一个实施例的编码器和解码器以及处理编码器和解码器的输入中的关系;
图19是一个实施例提供的编码器的示意图;
图20是一个实施例提供的解码器的示意图;
图21是编码实施例的流程图;
图22是解码实施例的流程图;
图23示出了如何根据条件确定缩放的一个实施例。
具体实施方式
在下文中,结合附图描述一些实施例。图1至图3是指视频译码系统和方法,它们可以与在其它附图中描述的本发明更具体的实施例一起使用。具体地,结合图1至图3描述的实施例可以与下文进一步描述的编码/解码技术一起使用,这些编码/解码技术利用神经网络对码流进行编码和/或对码流进行解码。
在下面的描述中,参考构成本发明一部分的附图,这些附图通过说明的方式示出本发明的具体方面或可以使用本发明实施例的具体方面。可以理解,实施例可以用于其它方面,并且包括未在附图中描绘的结构上或逻辑上的变化。因此,以下具体实施方式不应以限制性的意义来理解,并且本发明的范围由所附权利要求书限定。
例如,可以理解,与描述方法有关的公开内容可以对于用于执行所述方法的对应设备或系统也同样适用,反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括一个或多个单元(例如,功能单元)来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元分别执行多个步骤中的一个或多个),即使附图中未明确描述或说明该一个或多个单元。另一方面,例如,如果基于一个或多个单元(例如,功能单元)来描述具体装置,则对应的方法可以包括一个步骤来执行一个或多个单元的功能(例如,一个步骤执行一个或多个单元的功能,或多个步骤分别执行多个单元中的一个或多个单元的功能),即使附图中未明确描述或示出该一个或多个单元。此外,可以理解,除非另外明确说明,本文中所描述的各个示例性实施例和/或方面的特征可以相互组合。
视频译码(coding)通常是指处理形成视频或视频序列的图像序列。在视频译码领域,术语“帧(frame)”与“图像(picture/image)”可以用作同义词。视频译码(或通常称为译码)包括视频编码和视频解码两部分。视频编码在源侧执行,通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(从而更高效地存储和/或传输)。视频解码在目的地侧执行,通常包括相对于编码器的逆处理过程,用于重建视频图像。实施例涉及的视频图像(或通常称为图像)的“译码”应理解为视频图像或各自视频序列的“编码”或“解码”。编码部分和解码部分也合称为编解码(编码和解码)。
在无损视频译码的情况下,可以重建原始视频图像,即重建视频图像与原始视频图像具有相同的质量(假设存储或传输期间没有传输损耗或其它数据丢失)。在有损视频译码的情况下,通过量化等执行进一步压缩,以减少表示视频图像的数据量,而解码器侧无法完全重建视频图像,即重建视频图像的质量比原始视频图像的质量低或差。
若干个视频译码标准属于“有损混合视频编解码器”组(即,将样本域中的空间和时间预测与2D变换译码相结合,以在变换域中进行量化)。视频序列中的每个图像通常分割成不重叠块的集合,而且通常在块级执行译码。换句话说,编码器侧通常在块(视频块)级通过以下方式对视频进行处理,即编码:例如,使用空间(帧内)预测和/或时间(帧间)预测来生成预测块,从当前块(当前处理/待处理的块)中减去预测块以获取残差块,在变换域中变换残差块并量化残差块,以减少待传输(压缩)的数据量;而解码器侧将相对于编码器的逆处理部分应用于经编码或经压缩块,以重建用于表示的当前块。此外,编码器复制解码器处理循环,使得编码器和解码器生成相同的预测(例如,帧内和帧间预测)和/或重建,以对后续块进行处理,即译码。最近,部分或整个编码和解码链已经通过使用神经网络或通常意义上的任何机器学习或深度学习框架得到实现。
在以下视频译码系统10的实施例中,根据图1描述视频编码器20和视频解码器30。
图1A是可以利用本申请中技术的示例性译码系统10(例如,视频译码系统10(或简称为译码系统10))的示意框图。视频译码系统10中的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)是两个示例,即可以用于根据本申请中描述的各种示例执行各种技术的设备。
如图1A所示,译码系统10包括源设备12,源设备12用于提供经编码图像数据21,例如,提供给目的地设备14;目的地设备对经编码图像数据13进行解码。
源设备12包括编码器20,并且可以另外(即可选地)可以包括图像源16、预处理器(或预处理单元)18(例如,图像预处理器18)和通信接口或通信单元22。本发明的一些实施例(例如,涉及两个处理层之间的初始缩放或缩放)可以由编码器20实现。一些实施例(例如,涉及初始缩放)可以由图像预处理器18实现。
图像源16可以包括或者可以是任何类型的用于捕获真实世界图像的摄像机等图像捕获设备,和/或任何类型的用于生成计算机动画图像的计算机图形处理器等图像生成设备,或者任何类型的用于获取和/或提供真实世界图像、计算机生成图像(例如,屏幕内容、虚拟现实(virtual reality,VR)图像)和/或其任意组合(例如增强现实(augmentedreality,AR)图像)的其它设备。图像源可以是任何类型的存储任一上述图像的存储器或存储。
为了区分预处理器18和预处理单元18执行的处理,图像或图像数据17还可以称为原始图像或原始图像数据17。
预处理器18用于接收(原始)图像数据17并对图像数据17执行预处理,以获取预处理图像19或预处理图像数据19。预处理器18执行的预处理可以包括修剪(trimming)、颜色格式转换(例如,从RGB转换为YCbCr)、调色或去噪等。可以理解的是,预处理单元18可以是可选组件。
视频编码器20用于接收预处理图像数据19并提供经编码图像数据21。
源设备12中的通信接口22可以用于接收经编码图像数据21,并通过通信信道13将经编码图像数据21(或对经编码图像数据21进一步处理后得到的数据)传输给另一设备,例如,目的地设备14或任何其它设备,以便进行存储或直接重建。
目的地设备14包括解码器30(例如,视频解码器30),并且可以另外(即可选地)包括通信接口或通信单元28、后处理器32(或后处理单元32)和显示设备34。
目的地设备14中的通信接口28用于直接从源设备12或从存储设备(例如,经编码图像数据存储设备)等任何其它源,接收经编码图像数据21(或对经编码图像数据21进一步处理后得到的数据),并将经编码图像数据21提供给解码器30。
通信接口22和通信接口28可以用于通过源设备12和目的地设备14之间的直接通信链路(例如,直接有线或无线连接)或者通过任何类型的网络(例如,有线网络或无线网络或其任何组合,或者任何类型的私网和公网,或者其任何类型的组合)传输或接收经编码图像数据21或经编码数据13。
例如,通信接口22可以用于将经编码图像数据21封装成合适的格式(例如,数据包),和/或通过任何类型的传输编码或处理方式来处理经编码图像数据,以便通过通信链路或通信网络进行传输。
例如,与通信接口22对应的通信接口28可以用于接收传输数据,并使用任何类型的对应传输解码或处理方式和/或解封装方式对传输数据进行处理,以获取经编码图像数据21。
通信接口22和通信接口28均可以配置为图1A中从源设备12指向目的地设备14的通信信道13的箭头所表示的单向通信接口,或者配置为双向通信接口,并且可以用于发送和接收消息等,以建立连接、确认并交换与通信链路和/或数据传输(例如,经编码图像数据传输)相关的任何其它信息等。
解码器30用于接收经编码图像数据21并提供经解码图像数据31或经解码图像31(例如,更多详细内容基于图3等在下文描述)。
目的地设备14中的后处理器32用于对经解码图像数据31(也称为重建图像数据)(例如,经解码图像31)进行后处理,以获取后处理图像数据33(例如,后处理图像33)。后处理单元32执行的后处理可以包括,例如,颜色格式转换(例如,从YCbCr转换为RGB)、调色、修剪或重采样,或者任何其它处理,以便提供经解码图像数据31由显示设备34等显示,等等。
本发明的一些实施例可以由解码器30或后处理器32实现。
目的地设备14中的显示设备34用于接收后处理图像数据33,以便向用户或观看者等显示图像。显示设备34可以是或可以包括任何类型的用于表示重建图像的显示器,例如,集成或外部显示器或显示屏。例如,显示器可以包括液晶显示器(liquid crystaldisplay,LCD)、有机发光二极管(organic light emitting diode,OLED)显示器、等离子显示器、投影仪、微型LED显示器、硅基液晶(liquid crystal on silicon,LCoS)显示器、数字光处理器(digital light processor,DLP)或任何类型的其它显示器。
尽管图1A将源设备12和目的地设备14作为单独的设备进行描述,但是设备实施例还可以包括两种设备或两种功能,即源设备12或对应功能以及目的地设备14或对应功能。在这些实施例中,源设备12或对应的功能以及目的地设备14或对应的功能可以使用相同的硬件和/或软件或通过单独的硬件和/或软件或其任意组合来实现。
根据描述,图1A所示的源设备12和/或目的地设备14中具有和(准确)划分的不同单元或功能可能根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。
编码器20(例如,视频编码器20)或解码器30(例如,视频解码器30),或编码器20和解码器30都可以通过如图1B所示的处理电路来实现,例如,一个或多个微处理器、一个或多个数字信号处理器(digital signal processor,DSP)、一个或多个专用集成电路(application-specific integrated circuit,ASIC)、一个或多个现场可编程门阵列(field-programmable gate array,FPGA)、一个或多个离散逻辑、一个或多个硬件、一个或多个视频编码专用处理器或其任意组合。编码器20可以通过处理电路46来实现,以体现本文中描述的各种模块和/或任何其它编码器系统或子系统。解码器30可以通过处理电路46来实现,以体现本文中描述的各种模块和/或任何其它解码器系统或子系统。处理电路可以用于执行下文论述的各种操作。如图3所示,如果上述技术部分地以软件形式实现,则设备可以将该软件的指令存储在合适的非瞬时性计算机可读存储介质中,并且可以通过一个或多个处理器以硬件形式执行这些指令,以实现本发明中的技术。视频编码器20和视频解码器30中的任一个可以作为组合编码器/解码器(编解码器)的一部分集成在单个设备中,例如,如图1B所示。
源设备12和目的地设备14可以包括多种设备中的任一种,包括任何类型的手持或固定设备,例如,笔记本或膝上型电脑、手机、智能手机、平板或平板电脑、摄像机、台式电脑、机顶盒、电视、显示设备、数字媒体播放器、视频游戏机、视频流设备(例如,内容业务服务器或内容分发服务器)、广播接收器设备、广播发射器设备等,并且可以不使用或使用任何类型的操作系统。在一些情况下,源设备12和目的地设备14可以配备用于无线通信。因此,源设备12和目的地设备14可以是无线通信设备。
在一些情况下,图1A所示的视频译码系统10仅仅是示例性的,本申请提供的技术可以适用于视频译码设置(例如,视频编码或视频解码),这些设置不一定包括编码设备和解码设备之间的任何数据通信。在其它示例中,数据从本地存储器检索、通过网络流式传输,等等。视频编码设备可以对数据进行编码并且将数据存储到存储器中,和/或视频解码设备可以从存储器检索数据并且对数据进行解码。在一些示例中,编码和解码由相互不通信而是仅仅将数据编码到存储器和/或从存储器检索数据并对数据进行解码的设备执行。
为了描述方便,例如,通过参考高效视频编码(High-Efficiency Video Coding,HEVC)或多功能视频编码(Versatile Video coding,VVC)的参考软件、由ITU-T视频编码专家组(Video Coding Experts Group,VCEG)视频编码联合协作小组(Joint CollaborationTeam on Video Coding,JCT-VC)开发的下一代视频编码标准和ISO/IEC运动图像专家组(Motion Picture Experts Group,MPEG),在此描述一些实施例。本领域普通技术人员应理解本发明实施例不限于HEVC或VVC。
图2是本发明一个实施例提供的视频译码设备400的示意图。视频译码设备400适用于实现本文中描述的公开实施例。在一个实施例中,视频译码设备400可以是解码器,例如,图1A中的视频解码器30,也可以是编码器,例如,图1A中的视频编码器20。
视频译码设备400包括用于接收数据的入端口410(或输入端口410)和接收单元(Rx)420,用于处理所述数据的处理器、逻辑单元或中央处理器(central processingunit,CPU)430,用于传输所述数据的传输单元(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-only memory,ROM)、随机存取存储器(random access memory,RAM)、三态内容寻址存储器(ternary content-addressable memory,TCAM)和/或静态随机存取存储器(static random-access memory,SRAM)。
图3是一个示例性实施例提供的装置500的简化框图,其中,装置500可以用作图1中的源设备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,还包括执行本文描述的方法的视频译码应用。
装置500还可以包括一个或多个输出设备,例如,显示器518。在一个示例中,显示器518可以是将显示器与触敏元件组合的触敏显示器,其中,该触敏元件能够用于感测触摸输入。显示器518可以通过总线512耦合到处理器502。
虽然装置500中的总线512在本文描述为单个总线,但是总线512可以包括多个总线。此外,辅助存储器514可以直接耦合到装置500中的其它组件或可以通过网络访问,并且可以包括单个集成单元(例如,一个存储卡)或多个单元(例如,多个存储卡)。因此,装置500可以通过多种配置来实现。
下面描述了本发明的更具体的、非限制性的和示例性的实施例。在此之前,提供一些解释说明以帮助理解本发明。
人工神经网络(artificial neural network,ANN)或联结(connectionist)系统是受到构成动物大脑的生物神经网络模糊启发的计算系统。ANN以一组称为人工神经元的连接单元或节点为基础,这些连接单元或节点松散地模拟生物大脑中的神经元。每个连接,就像生物大脑中的突触一样,可以向其它神经元传递信号。接收信号的人工神经元则处理该信号,并且可以向连接到该人工神经元的神经元发信号。在ANN实现方式中,连接处的“信号”是实数,每个神经元的输出可以根据该神经元的输入之和的某种非线性函数计算出。这些连接称为边。神经元和边通常具有随着学习的进行而调整的权重。该权重会增加或减少连接处信号的强度。神经元可以具有一个阈值,使得只有在聚合信号超过该阈值时,才发送信号。通常,神经元聚集成层。不同的层可以对它们的输入执行不同的变换。信号从第一层(输入层)传输到最后一层(输出层),但可能是在多次遍历这些层之后。
ANN方法的最初目的是通过与人脑相同的方式解决问题。随着时间的推移,注意力转移到执行具体任务上,从而导致偏离生物学。ANN已经应用于各种各样的任务,包括计算机视觉。
“卷积神经网络(convolutional neural network,CNN)”这个名称表明该网络采用了一种称为卷积的数学运算。卷积是一种专用线性运算。卷积网络简单地说是神经网络,这些神经网络在其至少一个层中使用卷积代替通用矩阵乘法。卷积神经网络包括输入层和输出层以及多个隐藏层。输入层是向其提供输入以进行处理的层。例如,图6中的神经网络是CNN。CNN中的隐藏层通常包括一系列卷积层,这些卷积层通过乘法或其它点积进行卷积。一层的结果是一个或多个特征图,有时也称为通道。部分或全部层中可能涉及子采样。因此,特征图可能会变小。CNN中的激活函数可以是修正线性单元(Rectified Linear Unit,RELU)层或GDN层,如上举例说明,随后是其它卷积层,例如,池化层、全连接层和归一化层,这些层称为隐藏层,因为这些层的输入和输出被激活函数和最终卷积层掩蔽。虽然这些层通俗地称为卷积层,但这只是一种惯例。从数学上讲,卷积在技术上是滑动点积或互相关。这对矩阵中的索引具有重要意义,因为滑动点积或互相关会影响在具体索引点确定权重的方式。
当配置CNN来处理图像(picture/image)时,输入是形状为(图像数量)×(图像宽度)×(图像高度)×(图像深度)的张量。然后,在通过卷积层之后,图像被抽象为特征图,形状为(图像数量)×(特征图宽度)×(特征图高度)×(特征图通道)。神经网络内的卷积层应具有以下属性:由宽度和高度(超参数)限定的卷积核;输入通道和输出通道的数量(超参数)。卷积滤波器(输入通道)的深度应等于输入特征图的通道数量(深度)。
在过去,传统的多层感知器(multilayer perceptron,MLP)模型已经应用于图像识别。但是,由于节点之间存在全连接,因此MLP模型受到高维度的影响,而且不能很好地在处理高分辨率图像时进行缩放。具有RGB颜色通道的1000×1000像素图像具有300万个权重,权重太高而无法在全连接的情况下高效地、可行地进行大规模处理。这种网络架构也没有考虑数据的空间结构,导致相距很远的输入像素与靠得很近的像素通过相同的方式处理。这在计算上和语义上都忽略了图像数据中的局部性原理。因此,神经元的全连接对于由空间局部输入模式主导的图像识别等目的没有用处。CNN模型通过自然图像中存在的强空间局部相关性来减轻MLP架构带来的挑战。卷积层是CNN中的核心构建块。这一层的参数包括一组可学习的滤波器(上述核),这些滤波器具有一个小的感受野,但延伸到输入图像的整个深度。在前向传播的过程中,每个滤波器通过输入图像的宽度和高度进行卷积,从而计算该滤波器中的元素与输入之间的点积,并且产生该滤波器的二维激活图。因此,网络学习滤波器,当该网络在输入中的某个空间位置上检测到某一特定类型的特征时,这些滤波器就会激活。
沿着深度维度堆叠所有滤波器的激活图形成卷积层的完整输出图像。因此,也可以将输出图像中的每个元素解释为神经元的输出,该神经元查看输入中的一个小区域并与相同激活图中的神经元共享参数。特征图或激活图是给定滤波器的输出激活。特征图与激活具有相同的含义。在一些论文中,称为激活图是因为它是与图像中的不同部分的激活对应的映射,还称为特征图是因为它还是指示在图像中找到某种特征的位置的映射。高激活表示找到了某个特征。
CNN的另一个重要概念是池化,池化是非线性下采样的一种形式。有几种非线性函数可以实现池化,其中最常见的是最大池化。最大池化将输入图像分割成一组不重叠的矩形,输出每个子区域的最大值。直观上讲,一个特征的确切位置不如其相对于其它特征的粗略位置重要。这就是在卷积神经网络中使用池化背后的原因。池化层用于逐步减小表示的空间大小,减少网络中参数的数量、内存占用空间和计算量,因此也用于控制过拟合。在CNN架构中,很常见的做法是在连续的卷积层之间定期插入池化层。池化运算提供了另一种形式的平移不变性。
上述ReLU是修正线性单元的缩写,使用的是非饱和激活函数。ReLU通过将负值设置为0,有效地从激活图中移除负值,它增加了决策函数和整体网络的非线性特性,而不影响卷积层的感受野。其它函数也用于增加非线性,例如,饱和双曲正切和sigmoid函数。ReLU通常优于其它函数,因为它训练神经网络的速度快了好几倍,而且不会显著降低泛化精度。
经过几个卷积层和最大池层,神经网络中的高级推理通过全连接层实现。全连接层中的神经元与前一层中的所有激活都有连接,如常规(非卷积)人工神经网络中所示。因此,这些激活可以计算为仿射变换,仿射变换包括矩阵乘法和随后的偏置偏移(学习到的或固定的偏置项的向量加法)。
自动编码器是一种人工神经网络,用于以无监督方式学习高效数据译码。自动编码器的目的是通过训练网络忽略信号“噪声”来学习一组数据的表示(编码),通常是为了降低维度。在对原始输入执行降维时,还学习了如何从降维后的对象中重建原始输入,其中,自动编码器试图从降维后的编码中生成尽可能接近其原始输入的表示,因此得名。
图像大小(picture size):是指图像的宽度或高度或宽度-高度对。图像的宽度和高度通常以亮度样本数量为单位来测量。
下采样(downsampling):下采样是一种降低离散输入信号的采样率(采样间隔)的过程。例如,如果输入信号是大小为高度h和宽度w(或下文提到的H和W)的图像,并且下采样的输出是高度h2和宽度w2,则以下至少一项成立:
·h2<h
·w2<w
在一种示例性实现方式中,下采样可以实现为只保留每m个样本,丢弃输入信号的其余部分(在本发明的上下文中,输入信号基本上是图像)。
上采样(upsampling):上采样是一种提高离散输入信号的采样率(采样间隔)的过程。例如,如果输入图像的大小为h和w(或下文提到的H和W),并且下采样的输出是h2和w2,则以下至少一项成立:
·h<h2
·w<w2
重采样(resampling):下采样和上采样过程都是重采样的示例。重采样是一种改变输入信号的采样率(采样间隔)的过程。
插值滤波(interpolation filtering):在上采样或下采样的过程中,可以应用滤波来提高重采样信号的精度和减少混叠影响。插值滤波器通常包括重采样位置周围的样本位置上的样本值的加权组合,其中的关系可以定义如下:
f(xr,yr)=∑s(x,y)C(k)
其中,f()是重采样信号,(xr,yr)是重采样坐标,C(k)是插值滤波器系数,s(x,y)是输入信号。对在(xr,yr)附近的(x,y)执行求和运算。
裁剪(cropping):修剪数字图像的外边缘。裁剪可以用于使图像变小(在样本数量上)和/或改变图像的宽高比(长宽比)。
填充(padding):填充是指通过在图像边界处生成新样本来增大输入图像(或图像)的大小。例如,可以通过使用预定义的样本值或使用输入图像中的位置的样本值来实现。
调整大小(resizing):调整大小是改变输入图像大小的通用术语。调整大小可以使用填充或裁剪的方法之一来实现。调整大小可以通过使用插值的调整大小操作来实现。在下文中,调整大小也可以称为缩放。
整数除法(integer division):整数除法是丢弃小数部分(余数)的除法。
卷积(convolution):卷积由以下通用等式给出。在下文中,f()可以定义为输入信号,g()可以定义为滤波器。
下采样层(downsampling layer):是一个处理层,例如,神经网络中降低输入的至少一个维度的一层。一般而言,输入可能有3个或3个以上维度,其中,这些维度可能包括通道数量、宽度和高度。但是,本发明并不限于这类信号。相反,可以处理具有一个或两个维度的信号(例如,音频信号或具有多个通道的音频信号)。下采样层通常是指降低宽度和/或高度维度。这可以通过卷积、平均、最大池化等运算来实现。还可以使用其它下采样方式,本发明在这方面不受限制。
上采样层(upsampling layer):是一个处理层,例如,神经网络中增加输入的其中一个维度的一层。一般而言,输入可能有3个或3个以上维度,其中,这些维度可能包括通道数量、宽度和高度。上采样层通常是指增加宽度和/或高度维度。这可以通过反卷积、重复等操作来实现。还可以使用其它上采样方式,本发明在这方面不受限制。
一些基于深度学习的图像和视频压缩算法遵循变分自动编码器(VariationalAuto-Encoder,VAE)框架,例如,G-VAE:AContinuously Variable Rate Deep ImageCompression Framework(G-VAE:一种连续可变速率深度图像压缩框架)(Ze Cui、JingWang、Bo Bai、Tiansheng Guo、Yihui Feng),可通过https://arxiv.org/abs/2003.02012查阅。
VAE框架可以看作一种非线性变换译码模型。
变换过程主要可以分为四个部分。图4举例说明了VAE框架。在图4中,编码器601通过函数y=f(x)将输入图像x映射到潜在表示(由y表示)中。在下文中,这种潜在表示也可以称为“潜在空间”中的一部分或一个点。函数f()是一个变换函数,它将输入信号x转换为可压缩性强的表示y。量化器602通过将潜在表示y变换为量化后的具有(离散)值的潜在表示其中,Q表示量化器函数。熵模型或超编码器/解码器(也称为超先验)603估计量化后的潜在表示的分布,以得到通过无损熵源译码可实现的最小速率。
潜在空间可以理解为压缩数据的表示,其中,相似的数据点在潜在空间中靠得更近。潜在空间对学习数据特征和查找更简单的数据表示进行分析有帮助。
量化后的潜在表示T、和超先验3的边信息通过算术译码(arithmetic coding,AE)包含在码流2中(进行二值化)。
此外,提供了解码器604,它将量化后的潜在表示变换为重建图像信号是输入图像x的估计值。希望x尽可能接近换句话说,重建质量尽可能高。但是,和x之间的相似性越高,需要传输的边信息就越多。边信息包括图4中示出的码流1和码流2,两者由编码器生成并传输到解码器。通常情况下,边信息越多,重建质量就越高。但是,大量边信息表示压缩比低。因此,图4中描述的系统的一个目的是平衡重建质量和码流中表示的边信息量。
在图4中,组件AE 605是算术编码模块,它将量化后的潜在表示和边信息的样本转换为二进制表示码流1。的样本可以,例如,包括整数或浮点数。算术编码模块的一个目的是(通过二值化过程)将样本值转换为一串二进制位(这串二进制位随后包含在码流中,该码流可以包括与经编码图像对应的更多部分或更多边信息)。
算术解码(arithmetic decoding,AD)606是恢复二值化过程的过程,其中,二进制位转换回样本值。算术解码由算术解码模块606执行。
需要说明的是,本发明并不限于此特定框架。此外,本发明不限于图像或视频压缩,同样可以应用于对象检测、图像生成和识别系统。
在图4中,有两个子网络相互连接。该上下文中的子网络是整个网络的各个部分之间的逻辑划分。例如,在图4中,模块601、602、604、605和606称为“编码器/解码器”子网络。“编码器/解码器”子网络负责对第一码流“码流1”进行编码(生成)和解码(解析)。图4中的第二网络包括模块603、608、609、610和607,称为“超编码器/解码器”子网络。第二子网络负责生成第二码流“码流2”。这两个子网络的目的不同。第一子网络负责:
·将输入图像x转换601为其潜在表示y(这样更容易压缩x),
·将潜在表示y量化602为量化后的潜在表示
·通过算术编码模块605,使用AE压缩量化后的潜在表示以获取到码流“码流1”,
·通过算术解码模块606,使用AD解析码流1,
·使用解析数据重建604重建图像
第二子网络的目的是获取“码流1”中的样本的统计特性(例如,码流1中的样本之间的平均值、方差和相关性),使得第一子网络对码流1的压缩更高效。第二子网络生成第二码流“码流2”,该码流2包括所述信息(例如,码流1中的样本之间的平均值、方差和相关性)。
第二网络包括编码部分,该编码部分包括将量化后的潜在表示变换603为边信息z,将边信息z量化为量化后的边信息以及将量化后的边信息编码(例如,二值化)609到码流2中。在该示例中,二值化通过算术编码(arithmetic encoding,AE)执行。第二网络的解码部分包括算术解码(arithmetic decoding,AD)610,其将输入码流2变换为经解码和量化后的边信息可能与相同,因为算术编码和解码操作是无损压缩方法。接着,将经解码和量化后的边信息变换607为经解码边信息表示的统计特性(例如,中的样本的平均值,或样本值的方差,等等)。然后,将经解码潜在表示提供给上述算术编码器605和算术解码器606,以控制的概率模型。
图4描述了变分自动编码器(variational auto encoder,VAE)的一个示例,VAE的详细内容在不同的实现方式中可能不同。例如,在一种具体的实现方式中,可以存在其它组件,以更高效地获取码流1中的样本的统计特性。在一种这样的实现方式中,可能存在上下文建模器,其目的是提取码流1中的互相关信息。由第二子网络提供的统计信息可以由算术编码器(arithmetic encoder,AE)605和算术解码器(arithmetic decoder,AD)606组件使用。
图4在单个附图中描述了编码器和解码器。本领域技术人员清楚的是,编码器和解码器可以并且经常是嵌入在互不相同的设备中。
图7描述了编码器,图8单独描述了VAE框架中的解码器组件。根据一些实施例,编码器接收图像作为输入。输入图像可以包括一个或多个通道,例如,颜色通道或其它类型的通道,例如,深度通道或运动信息通道等。编码器(如图7所示)的输出是码流1和码流2。码流1是编码器的第一子网络的输出,码流2是编码器的第二子网络的输出。
类似地,在图8中,接收码流1和码流2两个码流作为输入,并且在输出处生成重建(经解码)图像
如上所述,VAE可以划分成执行不同动作的不同逻辑单元。这在图7和图8中举例说明,因此,图7描述了参与信号编码的组件,其中,信号可以是视频,信号编码提供经编码信息。然后,图8中描述的解码器组件接收该经编码信息,以进行编码,等等。需要说明的是,使用数字9xx和10xx表示的编码器和解码器中的组件在它们的功能上可以对应于上文在图4中提到的使用数字6xx表示的组件。
具体地,如图7所示,上述编码器包括编码器901,编码器901将输入x变换为信号y,随后将信号y提供给量化器902。量化器902将信息提供给算术编码模块905和超编码器903。超编码器903将上文已经论述的码流2提供给超解码器907,超解码器907又将信息发送给算术编码模块605。
编码可以使用卷积,如下文结合图19详述。
算术编码模块的输出是码流1。码流1和码流2是信号编码的输出,两者随后提供(传输)给解码过程。
虽然单元901称为“编码器”,但也可以将图7中描述的完整子网络称为“编码器”。编码过程通常表示将输入转换为经编码(例如,压缩)输出的单元(模块)。从图7中可以看出,实际上可以认为单元901是整个子网络的核心,因为单元901将输入x转换为y,y是x的压缩版本。编码器901中的压缩可以通过应用神经网络或通常通过包括一个或多个层的任何处理网络来实现。在这种网络中,压缩可以通过包括下采样的级联处理来执行,下采样减小了输入的大小和/或通道数量。因此,编码器可以称为基于神经网络(neural network,NN)的编码器,等等。
图中的其余部分(量化单元、超编码器、超解码器、算术编码器/解码器)都是提高编码过程效率或负责将压缩输出y转换为一系列比特(码流)的各个部分。可以执行量化以通过有损压缩进一步压缩NN编码器901的输出。AE 905与用于配置AE 905的超编码器903和超解码器907结合可以执行二值化,这样可以通过无损压缩进一步压缩量化后的信号。因此,也可以将图7中的整个子网络称为“编码器”。
大多数基于深度学习(Deep Learning,DL)的图像/视频压缩系统在将信号转换为二进制位(比特)之前降低信号维度。例如,在VAE框架中,编码器是非线性变换,将输入图像x映射到y中,其中,y的宽度和高度小于x的宽度和高度。由于y具有较小的宽度和高度,因此大小较小,降低了信号的维度(的大小),所以更容易压缩信号y。需要说明的是,一般而言,编码器不一定需要在两个(或通常是所有)维度上减小大小。相反,一些示例性实现方式可以提供一种只在一个维度(或通常是维度子集)上减小大小的编码器。
压缩的一般原理如图5举例说明。潜在空间是编码器的输出和解码器的输入,表示压缩数据。需要说明的是,潜在空间的大小可以远小于输入信号大小。在这里,术语“大小”可以指分辨率,例如,由编码器输出的一个或多个特征图中的样本数量。分辨率可以计算为每个维度的样本数量的乘积(例如,宽度×高度×输入图像或特征图的通道数量)。
输入信号大小的减小如图5举例说明,图5示出了基于深度学习的编码器和解码器。在图5中,输入图像x对应于输入数据,该输入数据是编码器的输入。变换后的信号y对应于潜在空间,潜在空间在至少一个维度上具有比输入信号更小的维度或大小。每列圆表示编码器或解码器的处理链中的一层。每一层中的圆的数量指示该层上的信号的大小或维度。
从图5中可以看出,编码操作对应于输入信号大小的减小,而解码操作对应于图像原始大小的重建。
减小信号大小的方法之一是下采样。下采样是一种降低输入信号采样率的过程。例如,如果输入图像的大小为h和w,并且下采样的输出是h2和w2,则以下至少一项成立:
·h2<h
·w2<w
信号大小的减小通常沿着处理层链逐步地发生,而不是一次发生。例如,如果输入图像x具有h和w(指示高度和宽度)的维度(或维度的大小),而潜在空间y具有维度h/16和w/16,则在编码过程中,大小的减小可能发生在4个层上,其中,每一层在每个维度上将信号的大小减小1/2。
一些基于深度学习的视频/图像压缩方法使用多个下采样层。例如,图6中的VAE框架使用标记为801至806的6个下采样层。包括下采样的层在层描述中用向下箭头指示。层描述“Conv Nx5x5/2↓”表示该层是具有N个通道的卷积层,卷积核的大小为5×5。如上所述,2↓表示在该层中执行因子为2的下采样。因子为2的下采样会导致输入信号的其中一个维度在输出处减少二分之一。在图6中,2↓表示输入图像的宽度和高度都减少1/2。由于存在6个下采样层,如果输入图像814(也用x表示)的宽度和高度由w和h给出,则输出信号813的宽度和高度分别等于w/64和h/64。由AE和AD表示的模块是算术编码器和算术解码器,这些模块在上文已经结合图4、图7和图8进行了解释。算术编码器和解码器是熵译码的具体实现方式。AE和AD(作为组件813和815的一部分)可以被其它熵译码方式替代。在信息论中,熵编码是一种用于将符号的值转换为二进制表示(这是一个可恢复的过程)的无损数据压缩方案。此外,图中的“Q”对应于上文结合图4提到的量化操作,并且在上面的“量化”部分中进一步解释。此外,量化操作和属于组件813或815的对应量化单元不一定存在和/或可以被其它单元替代。
在图6中,还示出了包括上采样层807至812的解码器。另一层820按照输入的处理顺序设置在上采样层811和810之间,这一层被实现为卷积层,但不对接收到的输入进行上采样。还显示了解码器的对应卷积层830。这些层可以在NN中提供,用于对输入执行不改变输入大小但改变特定特征的操作。但是,不需要提供这样的层。
当按照码流2通过解码器的处理顺序查看时,上采样层以相反的顺序(即从上采样层812到上采样层807)运行。这里示出了每个上采样层,以提供上采样比为2的上采样,由↑指示。当然,不一定所有上采样层都具有相同的上采样比,也可以使用其它上采样比,例如,3、4、8等。层807至812被实现为卷积层(conv)。具体地,由于这些层可能旨在对输入执行与编码器操作相反的操作,上采样层可以对接收到的输入应用反卷积运算,使得该输入的大小按与上采样比对应的因子增大。但是,本发明通常不限于反卷积,并且上采样可以通过任何其它方式执行,例如,通过两个相邻样本之间的双线性插值,或者通过最邻近样本复制等。
在第一子网络中,在编码端,一些卷积层(801至803)的后面是广义除法归一化(generalized divisive normalization,GDN),而在解码端,后面是逆GDN(inverse GDN,IGDN)。在第二子网络中,应用的激活函数是ReLu。需要说明的是,本发明并不限于这种实现方式,通常可以使用其它激活函数来代替GDN或ReLu。
图像和视频压缩系统通常不能处理任意输入图像大小。原因在于,压缩系统中的一些处理单元(例如,变换单元或运动补偿单元)在最小单元上操作,如果输入图像大小不是最小处理单元的整数倍,则无法处理该图像。
例如,HEVC指定4×4、8×8、16×16和32×32的四个变换单元(transform unit,TU)大小来对预测残差进行译码。由于最小变换单元大小是4×4,因此无法使用HEVC编码器和解码器来处理大小为3×3的输入图像。类似地,如果图像大小在一个维度上不是4的倍数,则也无法处理该图像,因为不可能将图像分割成可由有效变换单元(4×4、8×8、16×16和32×32)处理的大小。因此,HEVC标准要求输入图像必须是最小译码单元大小的倍数,即8×8。否则,输入图像不能通过HEVC进行压缩。其它编解码器也提出了类似的要求。为了利用现有的硬件或软件,或者为了保持一些互操作性或甚至保留现有编解码器的各个部分,可能希望保持这种限制。但是,本发明不限于任何特定的变换块大小。
一些基于深度神经网络(deep neural network,DNN)或神经网络(neuralnetwork,NN)的图像和视频压缩系统使用多个下采样层。例如,在图6中,第一子网络(层801至804)中包括4个下采样层,第二子网络(层805至806)中包括2个额外的下采样层。因此,如果输入图像的大小分别由w和h(指示宽度和高度)给出,则第一子网络的输出是w/16和h/16,第二网络的输出是w/64和h/64。
深度神经网络中的术语“深度”通常是指按顺序应用于输入的处理层的数量。当层数较高时,神经网络称为深度神经网络,但是对于哪些网络应该称为深度网络,没有明确的描述或指导。因此,就本申请而言,DNN与NN之间没有重大区别。DNN可以指包括一层以上的NN。
在下采样过程中,例如,在卷积应用于输入的情况下,在一些情况下可以获取到经编码图像的分数(最终)大小。这类分数大小不能由神经网络中的后续层或解码器合理地处理。
换句话说,一些下采样操作(例如,卷积)可能期望(例如,通过设计)神经网络中的特定层的输入的大小满足特定条件,使得神经网络中的执行下采样或在执行下采样之后的一层内执行的操作仍然是定义良好的数学运算。例如,对于具有下采样比r>1的将输入在至少一个维度上的大小按下采样比r减小的下采样层,如果输入在该维度上的大小是下采样比r的整数倍,则获取到合理的输出。下采样比r的下采样是指将输入样本在一个维度(例如,宽度)或多个维度(例如,宽度和高度)上的数量除以2,得到输出样本数量。
为了提供一个数值示例,层的下采样比可以是4。第一输入在应用了下采样的维度上具有大小512。512是4的整数倍,因为128×4=512。因此,输入的处理可以由下采样层执行,从而产生合理的输出。第二输入在应用了下采样的维度上可以具有大小513。513不是4的整数倍,因此,如果下采样层或随后的采样层通过设计等方式想要特定的输入大小(例如,512),则该输入不能通过下采样层或随后的采样层合理地处理。有鉴于此,即使输入的大小并不总是相同,为了确保输入可以由神经网络中的每一层以合理的方式(符合预定义的层输入大小)处理,也可以在通过神经网络处理输入之前应用缩放。这种缩放包括改变或调整神经网络(例如,神经网络的输入层)的输入的实际大小,使得大小满足上述关于神经网络中的所有下采样层的条件。这种缩放是通过增大或减小输入在应用了下采样的维度上的大小来实现的,使得大小S=K∏iri,其中,ri是下采样层的下采样比,K是大于0的整数。换句话说,下采样方向上的输入图像(信号)的输入大小被调整为在下采样方向(维度)上应用于网络处理链中的输入图像(信号)的所有下采样比之积的整数倍。
因此,神经网络的输入的大小可以确保每一层可以根据一层的预定义输入大小配置等来处理各自的输入。
然而,通过执行这种缩放,限制了要编码的图像的大小减小量,相应地,可以提供给解码器用于重建经编码信息等目的的经编码图像的大小也有下限。此外,通过迄今提供的方法,可以向码流添加大量熵(当通过缩放增大码流的大小时),或者可能丢失大量信息(如果通过缩放减小码流的大小)。两者都会在解码之后降低码流质量。
因此,很难在提供大小减小的经编码码流的同时获取到高质量的经编码/经解码码流及其所表示的数据。
由于网络中的一层的输出的大小不能是分数(需要有整数行和列的样本),因此输入图像大小存在限制。在图6中,为了确保可靠的处理,输入图像大小在水平和垂直方向上都是64的整数倍。否则,第二网络的输出不会是整数。
为了解决这个问题,可以采用用0填充输入图像的方法,使其在每个方向上都是64个样本的倍数。根据这种技术方案,输入图像大小可以在宽度和高度上扩大以下量:
其中,“Int”是整数转换。整数转换可以计算第一值a和第二值b的商,然后可以提供忽略所有小数位的输出,因此只是一个整数。新生成的样本值可以设置为0。
解决上述问题的另一种可能性是裁剪输入图像,即从输入图像的末端丢弃各行各列的样本,以使输入图像大小为64个样本的倍数。需要裁剪的最小样本行数和列数可以计算如下:
其中,wdiff和wdiff分别对应于需要从图像的各边丢弃的样本行和列的数量。
通过上述内容,输入图像在水平(hnew)和垂直(wnew)维度上的新大小如下所示:
在填充的情况下:
·hnew=h+hdiff
·wnew=w+wdiff
在裁剪的情况下:
·hnew=h-hdiff
·wnew=w+wdiff
这也在图10和图11中示出。在图10中,示出了编码器和解码器(统一用1200表示)可以包括多个下采样和上采样层。每一层应用因子为2的下采样或因子为2的上采样。此外,编码器和解码器可以包括更多组件,例如,编码端的广义除法归一化(generalizeddivisive normalization,GDN)1201和解码端的逆GDN(inverse GDN,IGDN)1202。此外,编码器和解码器都可以包括一个或多个ReLu,具体是漏ReLu(leaky ReLu)1203。还可以在编码器处提供分解熵模型1205,在解码器处提供高斯熵模型1206。此外,可以提供多个卷积掩码1204。此外,在图10和图11的实施例中,编码器包括通用量化器(UnivQuan)1207,解码器包括注意力模块1208。为了便于参考,功能上对应的组件在图11中具有对应的数字。
下采样操作和步长的总数限定了输入通道大小的条件,即神经网络的输入的大小。
在这里,如果输入通道大小是64=2×2×2×2×2×2×2的整数倍,则在所有连续的下采样操作之后,通道大小保持整数。通过在上采样过程中在解码器中应用对应的上采样操作,并且通过将相同的缩放应用于输入通过上采样层处理之后,输出大小再次与编码器处的输入大小相同。
因此,实现了原始输入的可靠重建。
在图11中,示出了在图10中解释的更一般的示例。该示例还示出了编码器和解码器,统一用1300表示。m个下采样层(以及对应的上采样层)具有下采样比si和对应的上采样比。在这里,如果输入通道大小是的整数倍,则在所有m次连续的(也称为接连的或后续的或级联的)下采样操作之后,通道大小保持整数。在编码器中的神经网络处理输入之前对输入进行对应的缩放,确保满足上述等式。换句话说,下采样方向上的输入通道大小是通过(子)网络中的相应m个下采样层应用于输入的所有下采样比之积。
如上所述改变输入大小的模式可能仍然有一些缺点。
在图6中,由“码流1”和“码流2”指示的码流的大小分别等于:A和B是描述压缩比的标量参数。压缩比越高,数字A和B就越小。因此,码流的总大小为
由于压缩的目的是在保持高质量重建图像的同时减小码流的大小,因此很明显,hnew和wnew应该尽可能小以降低码率。
因此,“用0填充”产生的问题是由于输入大小的增大而导致码率的增加。换句话说,通过向输入图像添加冗余数据来增大输入图像的大小,这表示必须从编码器向解码器传输更多的边信息,以重建输入信号。因此,码流的大小被增大。
例如,使用图6中的编码器/解码器对,如果输入图像的大小为416×240,这是通常称为宽四分之一视频图形阵列(Wide Quarter Video Graphics Array,WQVGA)的图像大小格式,则输入图像必须填充为等于大小448×256,这相当于码率提高了15%,因为包含了冗余数据。
第二种方法(裁剪输入图像)产生的问题是信息丢失。由于压缩和解压缩的目的是在保持高保真的同时传输输入信号,因此丢弃部分信号违背了该目的。因此,除非已知输入信号的一些部分是不需要的,否则裁剪是不利的,而情况通常并非如此。
根据一个实施例,输入图像的大小调整在基于DNN的图像或视频压缩系统的每个下采样或上采样层之前执行。更具体地,如果下采样层具有下采样比2(输入大小在层的输出处减半),则如果该层的输入具有奇数个样本行或列,输入调整大小应用于该输入,如果样本行或列的数量为偶数(2的倍数),不应用填充。
此外,如果对应的下采样层在(其)输入处应用了调整大小,则可以在最后,例如,在上采样层的输出处,应用调整大小操作。通过计算从重建图像开始的上采样层数和从输入图像开始的下采样层数,可以找到下采样层的对应层。这一点在图18中举例说明,其中,上采样层1和下采样层1是对应层,上采样层2和下采样层2是对应层,以此类推。
在下采样层的输入处应用的调整大小操作和在上采样层的输出处应用的调整大小操作是互补的,使得两者输出处的数据大小保持相同。
因此,码流大小的增大被最小化。与描述另一种方法的图9相比,可以结合图12解释一个示例性实施例。在图9中,输入的调整大小是在输入提供给DNN之前执行的,并且使得可以通过整个DNN处理调整大小后的输入。图9所示的示例可以使用图6中描述的编码器/解码器来实现(实施)。
在图12中,具有任意大小的输入图像被提供给神经网络。本实施例中的神经网络包括N个下采样层,每一层i(1<=i<=N)具有下采样比ri。“<=”表示小于或等于。对于i的不同值,下采样比ri不一定相同,但在一些实施例中可以全部相等,例如,都可以是ri=r=2。在图12中,下采样层1至M被归纳为下采样层的子网1。子网1(子网络1)提供码流1作为输出。但是,在这种情况下,对下采样层的归纳仅用于描述性目的。包括层M+1至N的第二子网2(子网络2)提供码流2作为输出。
在本实施例中,在下采样层(例如,下采样层M)的输入被提供给该下采样层之前,但是在该输入已经通过前一下采样层(在这种情况下是层M–1)处理之后,输入通过应用调整大小操作进行调整,使得下采样层M的输入具有大小S=nrM,其中,rM表示下采样层M的下采样比,并且可以是预设值,因此已经对解码器可用。在本实施例中,在每个下采样层之前执行这种调整大小操作,使得特定下采样层及其相应的下采样比满足上述条件。换句话说,大小S被调整或设置为下一(在处理顺序中的下采样之后)层的下采样比的整数倍。
在图9中,输入图像被填充(这是图像调整大小的一种形式),以考虑将要一个接一个地处理数据的所有下采样层。在图9中,为了说明目的,下采样比示例性地选择为2。在这种情况下,由于有N层以下采样比2执行下采样,因此输入图像大小通过(用0)填充调整为2N的整数倍。需要说明的是,在本文中,整数“倍”仍然可以等于1,即倍具有乘法(例如,一倍或多倍)的含义,而不是复数的含义。
图12示出了一个实施例。在图12中,输入调整大小在每个下采样层之前应用。输入被调整为每一层的下采样比的整数倍。例如,如果一层的下采样比为3:1(输入大小:输出大小),比值为3,则该层的输入被调整为3的倍数。
一些实施例也可以应用于图6。在图6中,存在6个下采样层,即层801、802、803、804、805和806。所有下采样层的因子都是2。根据一个实施例,输入调整大小在所有6个层之前应用。在图6中,调整大小也以对应的方式在上采样层(807、808、809、810、811和812)中的每一层之后应用(这在上一段中解释)。这表示,在编码器的神经网络中的特定顺序或位置处的下采样层之前应用的调整大小在解码器中的对应位置处应用。
在一些实施例中,可以存在用于缩放输入的两个选项,并且可以根据下文详述的情况或条件等选择其中一个选项。这些实施例结合图13至图15进行描述。
第一选项1501可以包括用0或输入本身中的冗余信息等方式来填充输入,以便将输入的大小增大到与下采样比的整数倍匹配的大小。在解码端,为了缩放,可以在此选项中使用裁剪,以便将输入的大小减小到与连续的上采样层的目标输入大小等匹配的大小。
此选项可以在计算上高效实现,但只能在编码端增大大小。
第二选项1502可以利用编码器处的插值和解码器处的插值来缩放/调整输入。这表示,插值可以用于将输入的大小增大到预期大小,例如,连续的下采样层的下采样比的整数倍或连续的上采样层的目标输入大小,或者插值可以用于将输入的大小减小到预期大小,例如,连续的下采样层的下采样比的整数倍或连续的上采样层的目标输入大小。因此,可以通过增大或减小输入的大小在编码器处应用调整大小。此外,在选项1502中,可以使用不同的插值滤波器,从而提供频谱特性控制。
不同的选项1501和1502可以在码流等中指示为边信息。第一选项(选项1)1501和第二选项(选项2)1502之间的区别可以用语法元素methodIdx等指示来指示,该指示可以取两个值中的一个。例如,第一值(例如,0)用于指示填充/裁剪,第二值(例如,1)用于指示用于调整大小的插值。例如,解码器可以接收对图像进行编码的码流,该码流可能包括具有元素methodIdx的边信息。在解析此码流后,可以获取到边信息,并推导出methodIdx的值。根据methodIdx的值,解码器可以继续进行对应的调整大小或缩放方法,如果methodIdx具有第一值,则使用填充/裁剪,如果methodIdx具有第二值,则使用插值。
这在图13中示出。根据methodIdx的值为0或1,选择限幅(包括填充或裁剪)或插值。
需要说明的是,即使图13中的实施例是指基于methodIdx将限幅(包括填充/裁剪中的一个)或插值选择或确定为用于实现调整大小的方法,本发明在这方面不受限制。结合图13解释的方法也可以实现,其中,第一选项1501是在调整大小操作的过程中增大大小的插值,第二选项1502是在调整大小操作的过程中减小大小的插值。可以在上文和下文解释的任意两个或甚至两个以上(取决于methodIdx的二进制大小)不同的调整大小方法之中选择,并且可以使用methodIdx指示。一般而言,methodIdx不需要是单独的语法元素。methodIdx可以与其它一个或多个参数统一指示或译码。
更多的指示或标志可以如图14所示提供。除了methodIdx之外,大小变化标志(1比特)SCIdx也可以仅在第二选项1502的情况下有条件地指示。在图14的实施例中,第二选项1502包括使用插值来实现调整大小。在图14中,在methodIdx=1的情况下选择第二选项1502。大小变化标志SCIdx可以具有第三值或第四值,该第三值或第四值可以是值0(例如,第三值是0)或值1(例如,第四值是1)。在本实施例中,“0”可以表示缩小,“1”可以表示放大。因此,如果SCIdx是0,则用于实现调整大小的插值以减小输入大小的方式来实现。如果SCIdx是1,则用于实现调整大小的插值以增大输入大小的方式来实现。SCIdx的条件译码可以提供更简洁和高效的语法。但是,本发明不受这种条件语法的限制,并且SCIdx可以与methodIdx分开指示,或者与methodIdx统一指示(译码)(例如,在公共语法元素中,其中,该公共语法元素只能从指示SCIdx和methodIdx的所有组合的值中提取值的子集)。
与指示methodIdx一样,SCIdx也可以由解码器通过解析码流来获取到,该码流可能也对待重建图像进行解码。在获取到SCIdx的值后,可以选择缩小或放大。
作为上述指示的补充或替代,如图15所示,可以指示(在码流中指示)用于调整大小滤波器索引RFIdx的其它(边)指示。
在一些示例性实现方式中,对于第二选项1502,可以有条件地指示RFIdx,这可以包括:如果methodIdx=1,则指示RFIdx,如果methodIdx=0,则不指示RFIdx。RFIdx可以具有一个以上比特的大小,并且可以根据其值等指示在插值中使用哪个插值滤波器来实现调整大小。替代地或另外,RFIdx可以指定多个插值滤波器的滤波器系数。例如,这可以是双线性、双立方性、Lanczos3、Lanczos5、Lanczos8等。
如上所述,methodIdx、SCIdx和RFIdx中的至少一个或所有或至少两个可以在码流中提供,该码流可以是也对待重建图像进行编码的码流,或者是其它码流。然后,解码器可以解析相应的码流,并且获取methodIdx和/或SCIdx和/或RFIdx的值。根据值,可以执行上述动作。
用于实现调整大小的插值的滤波器可以通过缩放比等确定。
如图15右下角的标记1701所示,RFIdx的值可以显式地指示。替代地或另外,RFIdx可以从查找表获取到,使得RFIdx=LUT(SCIdx)。
又如,可能存在2个查找表,一个用于放大的情况,另一个用于缩小的情况。在这种情况下,LUT1(SCIdx)可能指示选择缩小时的调整大小滤波器,LUT2(SCIdx)可能指示放大情况下的调整大小滤波器。
一般而言,本发明不限于RFIdx的任何特定指示方式。RFIdx可以与其它元素单独、分开指示,也可以统一指示。
图16和图17示出了调整大小方法的一些示例。在图16和图17中,描述了3种不同类型的填充操作及其性能。图中的横轴表示样本位置。纵轴表示相应样本的值。
需要说明的是,以下的解释仅是示例性的,并不旨在将本发明限制于特定类型的填充操作。直垂直线指示输入(根据实施例,是图像)的边界,边界的右侧是应用填充操作来生成新样本的样本位置。这些部分在下文也称为“不可用部分”,这表示这些部分不存在于原始输入中,而是在缩放操作过程中通过填充添加而来,以便进一步处理。输入边界线的左侧表示可用样本,这些样本是输入的一部分。图中描述的三种填充方法是重复填充、反射填充和0填充。在根据一些实施例要执行的下采样操作的情况下,NN中的下采样层的输入是填充信息,即通过所应用的填充扩大的原始输入。
在图16中,不可用且可以通过填充填满的位置(即样本位置)是位置4和5。在0填充的情况下,不可用位置使用值为0的样本来填满。在反射填充的情况下,位置4处的样本值设置为位置2处的样本值;位置5处的值设置为位置1处的值。换句话说,反射填充相当于镜像位置3处的可用样本,位置3处的可用样本是输入边界上的最后一个可用样本。在重复填充的情况下,位置3处的样本值被复制到位置4和5。不同的应用可能优选不同的填充类型。
具体地,所使用的填充类型可能取决于待执行任务。例如,0填充或填满可以合理地用于计算机视觉(Computer Vision,CV)任务,例如,识别或检测任务。因此,不添加任何信息,以不改变原始输入中已经存在的信息的数量/值/重要性。
反射填充可能是一种计算上容易的方法,因为添加的值只需要沿着限定的“反射线”(即原始输入的边界)从现有值中复制过来。
使用卷积层的压缩任务可能优选重复填充(repetition padding),因为大多数样本值和导数连续性都是保留的。样本(包括可用样本和填充样本)的导数在图16和图17的右侧描述。例如,在反射填充的情况下,信号的导数在位置4处表现出突变(对于附图中所示的示例性值,在该位置处获取到值–9)。由于平滑的信号(导数较小的信号)更容易压缩,因此可能不希望在视频压缩任务中使用反射填充。
在所示的示例中,重复填充的导数变化最小。考虑到视频压缩任务,这是很有利的,但会导致在边界添加更多的冗余信息。为此,边界上的信息可能会比用于其它任务的信息更重要,因此,在一些实现方式中,0填充的整体性能可能会超过反射填充。
图18示出了另一个实施例。在这里,编码器2010和解码器2020并排示出。在所描述的实施例中,编码器包括多个下采样层1至N。这些下采样层可以分组在一起或形成编码器2010内的神经网络的子网络2011和2012的一部分。例如,这些子网络可以负责提供可向解码器2020提供的特定码流1和2。从这个意义上讲,编码器的下采样层的子网络可以形成一个不能合理分离的逻辑单元。如图18所示,编码器2020中的第一子网2011包括下采样层1至3,每一层都具有各自的下采样比。第二子网络2012包括具有各自下采样比的下采样层M至N。
解码器2020具有对应的结构,包括上采样层1至N。解码器2020中的一个子网络2022包括上采样层N至M,另一个子网络2021包括上采样层3至1(在这里,按照降序排列,以便在相应输入的处理顺序中查看时使编号与解码器一致)。
如上所述,在编码器中的下采样层2之前应用于输入的缩放相应地应用于上采样层2的输出。这表示下采样层2的输入的大小与上采样层2的输出的大小相同,如上所述。
更一般地,应用于编码器中的下采样层n的输入的缩放对应于应用于上采样层n的输出的缩放,使得缩放后的输入的大小与缩放后的输出的大小相同。
在下面结合图19至图23的描述中,会更加详细地解释一些其它实施例。下文描述的实施例旨在与任一上述实施例结合,特别是关于图12至图15和图18,以实现神经网络在编码和解码中的具体用途。此外,图13至图15中解释的指示待使用的缩放模式的具体模式可以与下文的教导组合,以在对图像进行编码的码流等中向解码器提供关于必要缩放的信息,或者除图像之外还提供关于在将图像编码到码流中时待应用的缩放的信息。此外,下文描述的实施例可以使用结合图1至图3描述的任何系统和方法来实现,或者可以实现为在这些图中描述的系统和方法的一部分。
图19和图20示出了可以用于一些实施例的编码器(图19)和解码器(图20)的示例性实施例。上文已经结合图1至图3、图4和图6至图8解释了编码器和解码器的具体实施例。相应的实施例包含在下面的描述中。这表示,结合图1至图3、图4和图6至图8以及图10和图11描述的所有组件和功能也可以提供给图20中的解码器和图19中的编码器,即使下文没有明确提到。
在详细介绍编码器和解码器的结构之前,需要说明的是,下面的描述并不旨在将本发明限制于编码器或解码器的具体实现方式。此外,编码器和解码器都可以通过软件与通用硬件交互以实现编码器/解码器的功能来实现,或者通过专门适配硬件根据其结构实现编码器/解码器的功能来实现。此外,还可以使用两种方式的组合。
而且,下面的描述着重于编码器和解码器中设置的神经网络。但是,编码器/解码器还可以包括其它组件,例如,一个或多个解析单元、一个或多个解释器、一个或多个加密单元、一个或多个解密单元、用于接收图像或其它数据的一个或多个接收单元、用于输出数据和/或码流的一个或多个输出单元。
解析单元可以实现为技术人员已知的解析器。如技术人员所知,接收单元可以实现为天线或接收器,或者可以包括天线或接收器。输出单元还可以实现为发送器或天线,或者可以包括发送器或天线。此外,接收单元和输出单元可以实现为单个组件,例如,实现为收发器。
从图19开始,示意性地示出了编码器2100中的组件。
在本实施例中,编码器包括神经网络,该神经网络包括多个层2110、2120、2130和2140。
这些层中的每一层优选地用于通过特定的方式处理神经网络中的相应层的输入2101、2102、2103、2104。在图19中,输入2101是神经网络的输入,也就是说,神经网络中的前一层没有处理输入。根据一些实施例,神经网络的输入是图像。该图像可以是静态图像或运动图像或静态图像或运动图像的各个部分。输入不一定是图像本身,但可以通过表示图像的合适数据结构的形式提供。例如,图像可以通过多个样本的形式提供,这些样本可以像具有高度和宽度的矩阵一样处理,矩阵中的每个元素表示对应样本的值。
输出2105在这里示为神经网络的最终输出。在这方面,本发明不限于输入不进行预处理,例如,解析或解密等。此外,输出可能会经过一些其它处理,例如,加密。通常,输出2105可以称为码流或经编码码流。码流是或包括输入图像的表示。
此外,在图19的上下文中,编码器2100不限于只包括神经网络中的4个层,而是可以为神经网络提供任意数量的层,用于处理相应的输入。
例如,图像可以表示单个图像或图像文件或运动图像或运动图像文件,类似于视频文件或任何其它信息,这些信息可以由具有两个维度的矩阵表示,这两个维度可以表示为高度H和宽度W,等等。
根据一个实施例,编码器包括神经网络内的多个层中的至少一个层,该层用于将下采样应用于已接收的输入。该输入不一定是原始图像,也可以是神经网络中已经对图像进行一些修改的前一层的输出,也可以是预处理图像的预处理器的输出。
这样的下采样可以用于对图像进行编码。通过这种下采样,图像的大小通过减小码流实际上表示的矩阵的大小等方式来减小。
例如,可以示例性地考虑分辨率为1024×512像素的图像。为了便于解释,还假设该图像可以只提供一个(颜色通道),使得它是灰度图像,从而包括组成二维矩阵内1024×512点的每个像素的单一颜色(强度)值。通过应用本发明一个实施例提供的下采样,该矩阵的大小在两个维度中的至少一个维度上减小二分之一,从而产生大小为512×256个像素的下采样图像,等等。这可以通过将神经网络内的多个层中的至少一个下采样层用作卷积层来实现,该卷积层将卷积应用于接收到的输入。在另一个示例中,下采样可以通过在一个维度上保留输入中的每n个样本并丢弃每n个样本中的n–1个样本来实现。
下采样操作可以应用一次或多次,这表示大小为512×256的下采样中间图像可以在两个维度上进一步按因子2进行下采样,从而产生256×128的输出大小。下采样的目的是丢弃相关性高的样本,从而提高图像的可压缩性。在自然图像中,相邻样本的值通常非常相似。例如,蓝天图像中的一个像素样本与下一像素样本非常相似(两者都是蓝色的,阴影也许存在细微变化)。这表示图像中的相邻样本的值是非常相关的,如果知道一个样本的值,则可以很好地猜测到相邻样本的值。下采样操作的目的是消除这类冗余,从而通过丢弃冗余信息使图像的可压缩性更强。最终经译码码流的大小取决于包含多少冗余信息,因此冗余信息越少,码流就越小。
在上面的示例中,如果NN共有2个下采样层(以及其它不执行下采样的处理层),其中,每个下采样层的下采样比是2,并且如果输入图像的大小为1024×512,则不会察觉到任何问题。由于经过了两次下采样操作,所得到的下采样输出为256×128。但是,如果输入的大小是1024×511,则无法使用NN处理输入,因为经过第一下采样层之后,中间输出的预期大小为512×255.5,这不是整数,不能存在部分像素样本。这表示,示例中的NN无法处理不是4×4的倍数的输入图像。
上文已经举例说明了少量(例如,2个)下采样层产生的问题。但是,图像压缩是一项复杂的任务(因为图像是一个具有大量维度的信号),通常情况下,深度神经网络是执行这项任务所必需的。这表示,NN包括的下采样层的数量通常大于甚至远大于2。这加剧了问题,因为,例如,如果下采样层的数量是6(每个下采样层的下采样比为2),则NN只能处理26×26=64×64的倍数的输入大小。不同终端用户设备获取到的大多数图像不满足此要求。
这样的卷积包括输入的原始矩阵(在这种情况下,是一个具有1024×512个元素的矩阵,其中,元素用Mij表示)中的元素与在该矩阵上运行(移位)且大小通常小于输入大小的核K的元素乘法。2个离散变量的卷积运算可以描述为:
因此,计算n的所有可能值的函数(f*g)[n]相当于在输入数组g[]上运行(移位)核或滤波器f[]以及在每个移位位置处执行逐元素相乘。
在上面的示例中,核K是在输入上运行步进范围2的2×2矩阵,使得通过将核K与元素M11、M12、M21、M22相乘,获取到下采样码流D中的第一元素D11。然后,通过计算核与元素或减小的矩阵与元素M13、M14、M23、M24的内积,获取到水平方向上的下一元素D12。相应地在垂直方向上执行上述操作,最终获取到矩阵D,该矩阵D包括通过计算M与K的相应内积而获取到的元素Dij,并且在每个方向或维度上只有一半的元素。
换句话说,用于获取卷积输出的移位量确定了下采样比。如果核在每个计算步骤之间移位2个样本,则输出按因子2进行下采样。下采样比2可以用上式表示如下:
转置卷积运算可以在数学上以与卷积运算相同的方式表示。术语“转置”表示所述转置卷积运算对应于特定卷积运算的逆运算。但是,根据具体的实现方式,转置卷积运算可以根据上面的公式类似地实现。使用转置卷积的上采样操作可以通过以下函数实现:
在上面的公式中,u对应于上采样比,int()函数对应于转换为整数。例如,int()运算可以实现为取整运算。
在上述公式中,当卷积核或滤波器f()和输入变量数组g()是一维数组时,值m和n可以是标量索引。当核和输入数组是多维时,值m和n也可以理解为多维索引。
本发明不限于通过卷积和反卷积进行下采样或上采样。任何可能的下采样或上采样方法都可以在神经网络(neural network,NN)的层中实现。
如果在神经网络内提供了一个以上下采样层以进一步减小大小,则可以重复此过程(下采样)。因此,在图19中,经编码码流2105可以用作神经网络的输出。这种重复的下采样可以在图6、图10和图11所述的编码器中实现。
编码器和神经网络中的层不限于仅仅包括应用卷积的下采样层,而且还可以考虑不一定应用卷积的其它下采样层,这种卷积实现输入大小减小。
此外,神经网络中的层可以包括对神经网络中的对应层的相应输入和/或输出执行其它操作的更多单元。例如,神经网络中的层2120可以包括下采样层,并且在该层的输入的处理顺序中,在下采样之前可以提供修正线性单元(rectifying linear unit,ReLu)和/或批量归一化器。
已知修正线性单元将修正应用于矩阵P中的元素Pij,以获取到以下形式的修改后的元素P'ij
因此,确保修改后的矩阵中的值都等于或大于0。这对于一些应用可能是必要的或有利的。
众所周知,批量归一化器首先根据大小为M×N的矩阵P中的元素Pij计算平均值,然后归一化矩阵中的值。平均值的形式如下:
利用该平均值V,根据以下公式获取包括元素P'ij的批量归一化矩阵P':
P′ij=Pij-V
批量归一化器获取到的计算值和修正线性单元获取到的计算值都不会改变元素的数量(或大小),而只会改变矩阵中的值。
根据情况,这些单元可以设置在相应的下采样层之前或在相应的下采样层之后。具体地,由于下采样层减少了矩阵中的元素数量,因此将批量归一化器在码流的处理顺序中设置在相应的下采样层之后可能更合适。因此,获取V和P'ij所需的计算量大大减少。由于修正线性单元可以简化乘法以在卷积用于下采样层的情况下获取大小减小的矩阵,因为一些元素可能为0,因此在应用卷积之前设置修正线性单元是有利的。
然而,本发明在这方面不受限制,批量归一化器或修正线性单元可以按照另一顺序相对于下采样层设置。
此外,并非每一层都必须包括这些更多单元中的一个单元,还可以使用执行其它修改或计算的其它更多单元。
为了使神经网络可以可靠地通过神经网络处理输入2101,并且可以最终获取输出2105,在通过编码器中的神经网络处理输入码流时应用的下采样操作是确定好的数学运算。
考虑到上文中卷积作为下采样层的一种实现方式的示例,例如,实施例能够确保输入(图像)在每个维度上表示的矩阵中的元素数量对应于核在该维度上的大小的整数倍。因此,可以避免卷积不能在数学上执行的情况,这种情况要么在通过编码器2100中的神经网络处理输入2101时产生故障,要么导致不一致的结果。同时,实施例可以将在通过编码器2100的神经网络处理输入图像2101之后最终输出的码流的大小保持尽可能小。
这是通过应用结合图21详述的方法来实现的,并且包括对神经网络中的一层的输入的大小进行缩放的缩放操作。这将在下文详述。
图20示出了一个实施例提供的解码器2200。
该解码器至少包括神经网络,该神经网络包括此处所示的连续顺序中的多个层2201、2220、2230和2240,使得输入2201通过神经网络的后续层进行处理,并且在输入2201通过神经网络中的所有层进行处理之后(产生后续输出2202、2203、2204),提供输出2205。
在本发明的上下文中,编码器2200中的神经网络包括至少一个层,例如,层2220,这一层将上采样操作应用于层2220的输入2202。这种上采样操作包括在至少一个维度上增大输入的大小,其中,输入可以通过矩阵的形式表示。已经在图19中给出的关于这方面的解释也适用于此。
考虑到图19中的上述实施例,解码器的输入2201是表示图像的码流。具体地,码流可以是由图19中的编码器获取到的码流。因此,码流可以表示静止图像或运动图像等图像或其各个部分,并且可以通过使用图20中的解码器2200来解码,具体是通过将上采样应用于先前下采样(并由此编码)的码流。
因此,与解码器2200的输出2205相比,输入码流2201的大小,就其表示具有至少两个维度的矩阵而言,在这些维度中的至少一个维度上更小。具体地,输出可以是经解码图像或已经根据输入到解码器2200的码流2201重建的重建图像。
然而,神经网络中的层不限于包括上采样层,除了至少一个上采样层之外,还可以包括至少一个其它层。此外,根据本发明,层的数量也不受限制,解码器可以包括任意数量的层。
上采样层通过对输入执行插值或反卷积(即转置卷积运算)等方式在至少一个维度上对接收到的输入进行上采样。在这种上下文中,上采样包括将输入的大小按上采样比u>1增大,其中,
神经网络和解码器2200内的神经网络中的一个或多个上采样层还可以包括其它单元,例如,上文解释的修正线性单元和/或上文解释的批量归一化器。
考虑到图19和图21中的实施例,解码器是编码器的逆操作,如果解码器将其操作应用于通过图19中的编码器2101编码的输入2201,产生了最初提供给编码器的输入2101。这是理想的情况,但由于在使用图19中的编码器对码流进行编码时存在信息丢失,因此解码器2200对码流2201进行处理之后得到的经解码码流2205可能与原始输入2101不同。
在一些实施例中,编码器包括编号从0到N的多个接连的卷积层或(更一般意义上的)下采样层。在这种情况下,解码器可以包括对应顺序中的对应N个上采样层,其中,解码器中的上采样层n的上采样比u等于编码器中的对应下采样层的下采样比r,即un=rN-n,索引n或N–n表示上采样层或下采样层在处理输入的顺序中的位置。这表示,输入(即码流)通过解码器的神经网络的处理顺序中的第一上采样层的上采样比等于输入(即图像)通过编码器的神经网络的处理顺序中的最后一个下采样层的下采样比。
这导致逆向上采样操作,与输入通过相应神经网络进行处理的同一点上执行的下采样操作相反。
上述实施例已经结合编码器和解码器进行了描述,参考的是示例性输入图像,该输入图像表示没有阴影的黑白图像等的二维矩阵。但是,本发明设想的是,该技术也可以应用于包括更复杂信息的图像,例如,彩色视频(作为运动图像)或每个可用颜色通道中包括多个值的图像。
对于这种情况,虽然原则上也可以使用如上所述的单个神经网络处理这种更复杂的输入,但优选地,对于每个颜色通道,具有图19和/或图20中的结构的“子神经网络(subneural network,sNN)”设置在相应的编码器和/或解码器中。此外,表征编码器和/或解码器中的神经网络各层的值对于每个sNN可以是相同的。但是,还可以设想的是,指定神经网络和其中一个sNN中的神经网络各层的参数不同于另一个sNN的相应值。例如,与红色通道相比,用于处理绿色通道的子神经网络可以具有不同的结构(包括更多或更少的层或卷积,核具有其它值或下采样比具有不同顺序)。在这方面,可以考虑任何技术上合理的组合。但是,如果通过使用编码器中的sNN处理图像各个部分获取到的子码流在通过编码器中的相应神经网络处理之后具有相同的大小,则具有不同结构可能是优选的。解码器也同样如此。这表示,通过不同sNN处理子码流获取到的码流产生通过对子码流进行解码而获取到的重建图像,其中,每个经解码子码流在解码时优选具有与其它经解码子码流相同的大小。
图21详细描述了一种使用下采样层处理在至少一个维度上具有大小S的输入图像或一般意义上的输入的方法,该下采样层可以是图19中的神经网络的一部分。
方法2300开始于步骤2301,其中,接收在至少一个维度上具有大小S的输入。为便于解释,下面仅结合一个维度描述下采样。但是,从上文可以清楚地看出,本发明也可以用于在两个维度上对输入进行下采样。
如上所述,输入可以是图像,例如,静止图像或运动图像等。此外,步骤2301可以发生在图19所述的神经网络中的任何一点上。因此,不需要在作为通过神经网络处理输入2101的顺序中的第一层的层2110处接收输入,但步骤2301也可以发生在后续下采样层,例如,具有索引i的下采样层。
在下一步骤中,优选地检查具有大小S的输入,以确定其大小S是否等于相应下采样层i的下采样比ri的倍数。
例如,该检查可以包括计算大小S与之间的差值。如果该差值为0,则S已经是相应下采样层的下采样比r的整数倍。如果该差值不为0,则S不是下采样层的下采样比r的整数倍。
例如,考虑大小S=512和下采样比r=4。在这种情况下,S=128ri,因此是下采样比的整数倍。在这种情况下,上述计算产生如果大小S=513,则不是该下采样层的下采样比ri的整数倍。在这种情况下,例如, 因此,差值的两种计算都会导致差值不为0。
确定S是否是下采样比r的整数倍也可以使用取决于S和/或r的函数通过其它合适的方式来实现,从而得到表示S是下采样比r的整数倍的一个结果以及S不是下采样比r的整数倍时的另一个结果。
根据这种确定,可以采取两种不同的办法。
如果在步骤2302中确定大小S等于下采样比的整数倍(用2310指示),则该方法可以前进到步骤2311。这表示不对具有大小S的输入应用缩放。由于输入的大小S是相应下采样层的下采样比ri的整数倍,因此在步骤2311中,可以执行输入的下采样操作,使得输入的大小减小到大小Si<S。
在执行了这种下采样之后,输出可以由该层提供给神经网络的处理顺序中的另一层,或者这可能已经是神经网络的最终输出,如图19中的标记2105所示。
此外,如上所述,如果神经网络中的相应层与更多单元相关联或包括更多单元,则可以在步骤2311之前(例如,通过使用修正线性单元)和/或在步骤2311之后以及在实际提供输出2312之前应用更多操作。具体地,在执行了下采样之后,批量归一化器可以用于对获取到的具有减小大小Si的码流的值进行归一化,然后用作后续实体的输出。
另一方面,如果在步骤2302中确定大小S不是神经网络中相应层的下采样比ri的整数倍(步骤2320),则缩放可以应用于该输入,从而改变输入的大小S,以使得下采样层可以实际上处理输入。这种缩放操作可以包括增大或减小输入的大小S,从而获取到改变后的大小其中,n和
优选地,确定大小以便尽可能少地改变原始大小S。优选地,将大小S改变为下采样比r的最接近但小于大小S的整数倍或下采样比r的最接近但大于大小S的整数倍。通过最小化函数f(n)=|S-nr|,可以获取到下采样比r的最接近但小于大小S或大于大小S的整数倍。由于n被限制为正整数值,这种最小化会产生下采样比r的最接近但小于大小S或大于大小S的整数倍。在S已经是下采样比r的整数倍的情况下,下采样比的最接近但小于大小S或大于大小S的整数倍也可以与S相同。
替代地,也可以通过计算获取到。第一种计算会产生下采样比的最接近但大于的整数倍,而后者会产生下采样比的最接近但小于的整数倍。
这两个替代方案不一定包括显式获取n值。n的相应值可以通过在单独的步骤中计算显式获取到,因为这些步骤提供了n的值。但是,这并不是必须的。
获取到大小后,在应用缩放时增大或减小输入的大小S,使得其大小改变为这可以通过任何合适的方式实现。对于将大小从大小S减小到大小的缩放的情况,这可以通过裁剪输入或者使用上文结合图13至图15解释的插值来实现。如果缩放将大小从大小S增大到大小这可以通过用0填充输入或者使用插值或用冗余信息填充来实现。在这里,具体可以使用反射填充或重复填充,如上文同样结合图13至图15所述。
为了提供一个显式的示例,如上所述,如果输入的大小为513,但下采样比r为4,则为了对应于下采样比的整数倍,输入的大小比整数倍小1,或者比整数倍大3。因此,执行缩放操作,该操作可以包括在边界处用“0”填充原始输入(或通过反射填充或重复填充将原始输入中的现有样本复制到不存在的位置上),以便将大小S增大到等于下采样比r的整数倍的大小替代地,具有大小S的输入可以通过移除输入的一个或多个边界处的元素来裁剪,以将大小S减小到大小还可以使用插值等其它方式,以便执行相应的缩放。
本发明在这方面不受限制,如下结合图23详述,确定是增大输入的大小还是减小输入的大小以及确定实际用于此目的的缩放操作可以取决于特定条件。
此外,需要说明的是,当通过神经网络处理输入时,如果大小在连续的下采样层之前增大或者大小在连续的下采样层之前减小,则不需要通过单一方式应用缩放。例如,在第一下采样层之前,通过用0填充来增大输入的大小,而在第二下采样层之前,通过用冗余信息填充来增大输入的大小,具体是使用反射填充或重复填充。
一旦输入在步骤2322中被缩放到大小则可以根据步骤2311执行下采样操作,但不是使用具有大小S的原始输入,而是使用修改后的具有大小的输入。在任何情况下,可以设想的是,下采样使得下采样层的输出的大小Si仍然小于原始输入大小S。这表示在步骤2321中应用的缩放优选以添加尽可能少的额外元素的方式执行,或者可以默认在任何情况下,通过将输入的大小S减小到相应下采样比的最接近但小于大小S的整数倍来实现。
例如,如果相应下采样层的下采样比为2,并且输入的大小S不是2的倍数,则缩放原则上可以包括使输入的大小加倍。在任何情况下,这都会产生缩放后的大小但是,与大小S相比,这会显著增大大小并且不会使得大小Si在执行下采样后真的小于输入的大小S。因此,优选地避免了这类操作,反而可以确保,如果输入具有大小lri<S<ri(l+1),则执行根据步骤2321中的缩放,使得这表示,优选地,选择下采样比的最接近的整数倍进行缩放。
l的值可以使用ceil()或floor()或任何其它可以获取相应值的函数获取到。例如,为了获取l,可以计算出因为这会产生整数值l,当与r相乘时,该整数值最接近S,同时小于或等于S。因此,通过此值获取确保了确实是下采样比的最接近但小于的整数倍。l或l+1也可以使用获取到。此函数会提供(l+1),因为它产生了一个整数值(l+1),当与下采样比r相乘时,该整数值最接近S,但大于或等于S。因此,通过此值获取确保了确实是下采样比的最接近但大于的整数倍。
为了提供一个示例,下采样比r=4,输入的大小可以是513。在这种情况下,使用计算l会产生l=128,作为最接近但小于输入大小的整数。使用会产生(l+1)=129。由于513更接近r的最小整数倍(因为4×128=512),输入的大小可以减小到512,使得尽可能少地丢失信息。但是,默认大小S增大到516,以确保没有信息丢失。
在另一个实施例中,检查步骤2302和包括步骤2310的左分支可能不存在。在这种情况下,当S已经是下采样比ri的整数倍时,缩放步骤2321可以输出等于S的大小换句话说,缩放函数已经可以考虑到S可能是ri的整数倍。因此,检查步骤2302可能不被执行。在又一个实施例中,即使S已经是下采样比ri的整数倍,缩放步骤2321也可以执行缩放。例如,如果减小输入的大小很重要,并且如果调整大小操作生成小于S的大小这可能是有利的。
此外,这种确定可能不是显式执行的。相反,例如,默认情况下,当为具有下采样比r的下采样层获取具有大小S的输入时,可以确定值基于此,执行缩放,而不确定或不决定是否等于S。在这些值等于S的情况下,缩放可以是“0”缩放或相同缩放,而不改变大小S。只有在这些值与S不同的情况下,才会应用真正的缩放。
根据本发明一个实施例,方法2300在每个下采样层之前分别执行。具体地,步骤2302中的确定和步骤2321中的缩放优选与图19中的编码器的神经网络内的另一个下采样层的任何其它下采样比无关。例如,如果图19中的层2110是下采样层,而层2130也是下采样层,则方法2300仅在具有下采样层2110的下采样比r2110的下采样层2110之前执行。随后,在使用神经网络中的层2120处理码流之后以及在使用另一下采样层2130处理码流之前,根据方法2300,使用其各自的大小和下采样层2130的下采样比r2130来处理码流2103。
因此,用于处理当前输入的特定下采样层执行仅考虑步骤2302的条件的缩放操作,并且仅在必要时向码流表示的矩阵中添加或移除其它元素。因此,用作图19中的编码器2100的输出的经编码码流2105的大小尽可能地减小。
图22示出了适用于图20中的解码器中的一个上采样层要执行的调整大小或缩放操作的另一个实施例。
对于编码而言,每个上采样层单独执行这种缩放。但是,从下面的论述中可以明显看出,这不能以完全独立于后续扩大层的方式执行,特别是在解码器中的神经网络(参见图20)的最终输出2205的目标大小已经固定的情况下。一个例外情况可能是,所有关于调整大小的必要信息都在码流中显式提供给解码器。
然而,如果存在一个以上上采样层,例如,图20中示出的层2220和层2240,则上采样可以在码流通过层2210处理之后以及在通过上采样层2220处理之前应用。类似地,第二上采样可以发生在使用层2230处理之后以及在使用上采样层2240处理之前。
在图22和方法2400的上下文中,可以在步骤2401中接收具有大小T的输入。接收该输入可以对应于提供与前一层相关的输出。在任何情况下,步骤2401中的码流在至少一个维度上具有大小T,至少一个维度可以是码流表示具有水平分量和垂直分量的二维矩阵时的水平维度。
在使用上采样层处理该输入之前,在步骤2402中进行确定。一般而言,可以认为这种确定可以考虑到,如果对具有大小T的输入应用上采样,对应的输出是否具有与预期目标大小匹配的大小。预期目标大小可以是在该特定层的处理之后预期的大小。但是,还可以包括根据其它信息的评估,例如,在该特定上采样操作之后要执行的上采样,直到在通过神经网络对经编码码流进行处理之后获取到最终的经解码码流。在这种情况下,可以在步骤2402中确定在通过上采样层(具有上采样比u)对输入进行上采样之后获取到的大小Ti=uT是否等于预期大小该预期大小由给出,其中,ui是后续上采样层的上采样比。在所有上采样比都相等的情况下,该乘积可以用uN替换,其中,N是后续上采样层的数量。
假设输出的预期大小或目标大小为输出的目标大小可以根据经解码图像或重建图像的目标输出大小Ttarget获取到。例如,可以是1024,剩余两个上采样层的上采样比ui=u=2。通过计算的值,获取到如果大小Ti为258等,因为上采样层的输入的大小为129,则大小Ti不匹配,因此可能需要缩放。
确定步骤2402可以是如上所述的显式确定。但是,在所描述的方法中,上述确定不能作为显式步骤或单独步骤执行。例如,在一些实施例中,默认应用缩放将大小T改变为如果T已经是则不会改变大小T。另一方面,如果T还不等于则可以执行调整大小(例如,使用填充来增大或使用裁剪来减小)。但是,在本实施例中,不会执行像步骤2402中那样的单独确定,但该检查已经是应用缩放的计算的隐式部分。
一般而言,预期大小可以通过形式的调整大小函数获取到,其中,ui,uj,uk,…,是输入的处理顺序中的后续上采样层的上采样比。
f(ui,uj,uk,…,Ttarget)的另一个示例可能是
因此,当前上采样层提供用来通过后续上采样层处理的输出的实际大小取决于必要的后续上采样,但不取决于已经执行的上采样。但是,很明显,有可能已经执行的先前上采样过程可以通过对应的决定获取到,当然,也会考虑一些先前层。因此,输入的大小T至少在某种程度上取决于全神经网络的上采样比。
ceil函数是一个整除函数。运算结果,具体是步骤2402的结果,可以表示
情况导致在步骤2410中进行确定,据此确定在上采样之后不需要进一步缩放具有大小T的输入,并且在步骤2411中,可以执行用于将输入从大小T上采样到大小(在图22中也称为Ti,作为上采样层i的输出)的上采样操作,并且可以在步骤2412中提供具有大小的输出,以通过更多上采样层进行进一步处理。
另一方面,如果在步骤2402中确定大小不等于(2420),则在步骤2421中需要对具有大小Ti的输出进行缩放,以获得这种缩放可以包括通过应用上述方式之一,例如,插值或0填充或重复填充或反射填充等,将大小Ti增大到大小替代地,如果缩放可以包括缩减、裁剪或任何其它操作,以减小大小Ti,使得其与预期大小匹配。
如果需要缩放,则可以将缩放后的输出用作输出,以使用其它上采样层等进行后续处理。
无论步骤2402的确定结果如何,在步骤2411中应用上采样之后提供的输出都具有大小然后通过后续层进一步处理以获取具有合适大小的输出。
2402中的检查步骤可能是可选的,并且可以合并到调整大小(缩放)操作/函数中。在这种情况下,调整大小函数可能会输出等于Ti如果在通过连续的上采样层处理前一上采样层的输出之前,大小T被缩放到则可能是上述情况。如果在一些情况下,这会导致“0”缩放或相同缩放,其中,输出的大小不会改变。如果检查步骤已经包括执行调整大小函数f(ui,uj,uk,…,Ttarget),则这可能特别有用。在这种情况下,可以认为检查步骤是一个隐式步骤,它不是独立于缩放执行的,但已经构成了缩放的一部分。例如,在图22中,函数f()等于需要执行该函数来决定是否需要调整大小。因此,在一些实现方式中,可能不提供此检查步骤,而是可以解释为调整大小操作(2421)的一部分。
然而,在检查步骤不包括以相同的方式执行调整大小操作的其它实现方式中,检查步骤可以单独实现。一个示例可能是,检查步骤2402可能包括检查层ID(处理顺序中的层编号)。此检查操作不包括调整大小操作。因此,在本示例中,检查操作是必要的。
在下一上采样层中,可以进行对应的确定,并且可以执行或不执行缩放(调整大小)。
术语“调整大小”和“缩放”可互换使用,两者都是指在通过神经网络中的下采样层或上采样层实际处理输入以外,还改变输入的大小。
在上述实施例中,在通过上采样层处理输入之前作出决定2402。但是,可以在执行上采样之后或者甚至在后续上采样层之前做出决定。在任何情况下,缩放都会在执行上采样之后执行。
为了做出决定2402,解码器,具体是神经网络,可能必须知道可以通过不同方式获取到的其它信息。具体地,考虑到上面提供的等式,确定是否必须以实际应用缩放的方式应用缩放可以根据在对经编码码流进行解码时实际获取到的目标大小来决定。例如,如果经解码码流的最终目标大小在表示为二维矩阵时为1024×512,则与神经网络内特定点的目标大小2048×1024相比,可能需要不同的缩放。因此,神经网络中的每一层或神经网络本身或解码器可能必须知道目标大小等。
替代地或另外,如果神经网络知道在每个上采样层i之后要输出的输出大小则知道目标大小可以是优选的。这样就不需要了解目标大小。此外,每次确定是否需要缩放时,也没有必要执行上述ceiling函数。
替代地,相应的输出大小已经可以通过给定的格式提供,例如,查找表(lookuptable,LUT)。在该查找表中,可以提供大小以便从矩阵中获取它们。矩阵中的元素可以根据目标大小和上采样层i的数量来定义,使得当i和目标大小已知时,可以使用指向LUT中相应位置的指针从LUT中获取。
此外,为了在步骤2402中可靠地确定是否需要缩放,在通过神经网络处理经编码码流时,还需要知道对该确定产生影响的上采样比。
如上所述,这些信息可以通过不同的方式提供。由于本发明一些实施例的优点是减小了经编码码流,优选但仍然没有必要提供尽可能多的与经编码码流无关的信息,以避免增大经编码码流的大小。
因此,例如,关于要在每个上采样层之后获取到的中间目标大小中的目标大小的信息或关于上采样比的信息可以在不属于经编码码流的单独码流中提供。替代地,只要码流的总大小可以保持较小,也可以在码流中提供这些必要信息。
另一种替代方案是提供部分或全部这些信息,特别是关于上采样层的上采样比和/或解码器上已经存在的目标大小。这样,解码器专门设计成通过按照特定顺序应用固定(或至少已知)上采样,从输入中获取具有固定目标大小的经解码码流。因此,这些信息不需要包括在码流中,以保持其大小尽可能小。但是,在解码器能够提供具有不同目标大小的输出的情况下,码流可以包括指示其目标大小的标志或指针。
此信息以及指示应用哪种缩放类型的信息(如图13至图15所述)可以包括在码流本身或单独的码流中,如上文结合图13至图15所述。具体地,码流(或另一码流)可以包括如上所述的methodIdx、SCIdx和RFIdx等指示,这些指示可以由编码器用来确定要应用哪种类型的缩放。
图23示出了用于决定是在图21的步骤2321中增大输入的大小还是在执行下采样之前减小输入的大小的另一种方法2500。
方法2500从步骤2501开始,在步骤2501中,已经确定或已经根据步骤2320确定接收到的输入具有大小S≠lrm
在步骤2501中做出了这个确定之后,下一步骤2502可以包括对输入进行详细评估。具体地,该步骤可以包括确定大小S为lrm≤S≤rm(l+1)。
本领域技术人员很清楚,步骤2501可能不必要和不存在。
确定之后,就可以在步骤2503中使用条件,根据该条件的结果在步骤2510或2520中执行不同的更多步骤。这表示,根据条件对大小S的评估可以产生第一结果,其结果是大小S增大到而条件评估的第二结果2520可以是在步骤2530中执行下采样之前,在步骤2521中将大小减小到
示例性地,该条件可以使用Min(|S-lrm|,|S-rm(l+1)|),其中,l和l+1可以根据图21所述的内容确定。具体地,l可以根据获取,l+1可以通过将该结果加1或计算获取。在获取到l之后,或者通过直接在上述Min函数中使用可以确定差值S-lrm或与下一较大整数倍的差值S-rm(l+1)是否较小,从而需要向输入提供最少的其它信息或从原始输入中移除最少信息。
例如,如果rm=4和S=513,如上所述,在一个示例中,l=128,并且输入的大小S更接近rm的最接近但小于输入大小的整数倍,而不是更接近rm的最接近但大于输入大小的整数倍。如果S为S=515,则输入的大小S更接近rm的最接近但大于输入大小的整数倍,而不是更接近rm的最接近但小于输入大小的整数倍。
根据上述Min评估,可以确定需要执行的计算步骤的数量,并将其保持在最少。
使用上述Min评估的条件可以是保持用于执行缩放操作的计算步骤较少。例如,如果在一维情况下,下采样比rm为4,大小S=krm+1,则将大小S减小到而不将其增大到在计算上可能更高效。
在缩放中需要执行的操作的数量相对于增大大小S和减小大小S是相等的情况下,条件还可以是添加尽可能少的冗余信息,或者从输入中移除尽可能少的信息。在上述情况下,可以决定通过0填充来将大小S=krm+2增大到大小这增加了冗余信息量,但不会丢失信息。
一般而言,如果通过根据步骤2503中的条件评估输入的大小S来确定差值S-rm(l+1)小于差值S-lrm,并且如果可以确定在执行下采样之前,根据结果2510将大小S增大2511到大小可能在计算上更高效,则大小S可以增大到
另一方面,如果确定差值S-lrm小于差值S-rm(l+1),以及如果可以确定将大小S减小到大小可能在计算上更高效,则大小S可以减小到
然而,这只是一个可用于具体实现条件的实施例,在执行下采样之前,使用该条件可以评估是增大还是减小输入的大小。在这方面,还可以考虑,输入大小实际上越小,执行下采样所需的计算通常就越少。此外,可以使用任何其它认为合适的条件来进行确定。
鉴于上述情况,在任何情况下,在通过下采样层处理输入之前对输入进行缩放会导致输入在特定维度上的大小增大或减小。
在上述示例中,使用了任意的下采样比和上采样比。但是,一些优选实施例可以包括编码器的神经网络中的所有下采样层的下采样比可以相同。类似地或替代地,解码器的神经网络中的所有上采样层的上采样比可以相同。但是,本发明在这方面不受限制,上采样比和/或下采样比可以使用可以想到的任何整数值。但是,优选实施例使用2~10范围内的上采样比和/或下采样比。
在本文中描述的编码方法或编码器的实施例中,由NN等输出码流可以是NN中的最后一个子网络或网络层的输出或码流。
在本文中描述的编码方法或编码器的更多实施例中,由NN等输出的码流可以是由两个码流形成或包括两个码流的码流,这两个码流也可以称为子码流,例如,码流或子码流(码流1和码流2),或者一般意义上的第一码流或第一子码流和第二码流或第二子码流(例如,每个码流或子码流由NN中的相应子网络生成和/或输出)。两个码流或子码流可以单独传输或存储,也可以组合(例如,复用)为一个码流。
在本文中描述的编码方法或编码器的更多实施例中,由NN等输出的码流可以是由两个以上码流形成或包括两个以上码流的码流,这些码流也可以称为子码流,例如,第一码流/子码流,第二码流/子码流、第三码流/子码流,以及可选的更多码流/子码流(例如,每个码流/子码流由NN中的相应子网络生成和/或输出)。码流/子码流可以单独传输或存储,也可以组合(例如,复用)为一个码流或多个组合码流。
在本文中描述的解码方法或解码器的实施例中,由NN等接收的接收码流可以用作NN中的第一子网络或网络层的输入。
在本文中描述的解码方法或解码器的更多实施例中,接收码流可以是由两个码流形成或包括两个码流的码流,这两个码流也可以称为子码流,例如,码流/子码流(码流1和码流2),或者一般意义上的第一码流/子码流和第二码流/子码流(例如,每个码流/子码流由NN中的相应子网络接收和/或处理)。两个码流/子码流可以单独接收或存储,也可以组合(例如,复用)为一个码流,并且解复用以获取到码流/子码流。
在本文中描述的解码方法或解码器的更多实施例中,接收码流可以是由两个以上码流形成或包括两个以上码流的码流,这些码流也可以称为子码流,例如,第一码流/子码流、第二码流/子码流、第三码流/子码流,以及可选的更多码流/子码流(例如,每个码流/子码流由NN中的相应子网络接收和/或处理)。码流/子码流可以单独接收或存储,也可以组合(例如,复用)为一个码流或多个组合码流,并且解复用以获取到码流/子码流。
数学运算符
本申请中使用的数学运算符与C编程语言中使用的数学运算符类似。但是,本发明准确定义了整除运算和算术移位运算的结果,并且还定义了其它运算,例如,幂运算和实值除法。编号和计数规范通常从0开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,以此类推。
算术运算符
算术运算符的定义如下:
+ 加法
– 减法运算(二元运算符)或者取反(一元前缀运算符)
* 乘法,包括矩阵乘法
÷ 除法运算,不做截断或取整。
除法运算,不做截断或取整。
用于计算f(i)的和,i取x到y之间的所有整数,包括x和y。
x%y 模运算,表示x除y的余数,其中,x和y都是整数,并且x>=0,y>0。
逻辑运算符
逻辑运算符的定义如下:
x&&y x和y的布尔逻辑“与”运算
x||y x和y的布尔逻辑“或”运算
! 布尔逻辑“非”运算
x?y:z 如果x为真或不等于0,则求y的值;否则,求z的值。
关系运算符
关系运算符的定义如下:
> 大于
>= 大于或等于
< 小于
<= 小于或等于
== 等于
!= 不等于
当一个关系运算符应用于一个已被赋值“na”(不适用)的语法元素或变量时,值“na”被视为该语法元素或变量的不同值。值“na”被视为不等于任何其它值。
按位运算符
按位运算符的定义如下:
& 按位“与”运算。当对整数参数运算时,运算的是整数值的二进制补码表示。当对二进制参数运算时,如果它包括的比特比另一个参数少,则通过添加更多等于0的有效比特来扩展较短的参数。
| 按位“或”运算。当对整数参数运算时,运算的是整数值的二进制补码表示。当对二进制参数运算时,如果它包括的比特比另一个参数少,则通过添加更多等于0的有效比特来扩展较短的参数。
^按位“异或”运算。当对整数参数运算时,运算的是整数值的二进制补码表示。当对二进制参数运算时,如果它包括的比特比另一个参数少,则通过添加更多等于0的有效比特来扩展较短的参数。
x>>y将x以二进制补码整数表示的形式向右算术移动y个二进制数位。只有当y为非负整数值时才有这个函数定义。右移的结果是移进最高有效位(most significant bit,MSB)的比特等于移位运算之前的x的MSB。
x<<y将x以二进制补码整数表示的形式向左算术移动y个二进制数位。只有当y为非负整数值时才有这个函数定义。左移的结果是移进最低有效位(least significantbit,LSB)的比特等于0。
赋值运算符
算术运算符的定义如下:
=赋值运算符
++递增,即,x++等于x=x+1;在阵列索引中使用时,进行自增运算之前先求取变量的值。
––递减,即,x––等于x=x–1;;在阵列索引中使用时,在进行自减运算之前先求取变量的值。
+=自增指定值,例如:x+=3相当于x=x+3,x+=(–3)相当于x=x+(–3)。
–=自减指定值,例如:x–=3相当于x=x–3,x–=(–3)相当于x=x–(–3)。
范围表示法
下面的表示法用来说明值的范围:
x=y..z x取从y到z(包括y和z)的整数值,其中,x、y和z都是整数,z大于y。
数学函数
数学函数的定义如下:
Asin(x)三角反正弦函数,对参数x运算,x在–1.0至1.0的范围(包括端值)内,输出值在–π÷2至π÷2的范围(包括端值)内,单位为弧度。
Atan(x)三角反正切函数,对参数x运算,输出值在–π÷2至π÷2(包括端值)范围之间,单位为弧度。
Ceil(x)大于或等于x的最小整数。
Clip1Y(x)=Clip3(0,(1<<BitDepthY)–1,x)
Clip1C(x)=Clip3(0,(1<<BitDepthC)–1,x)
Cos(x)三角余弦函数,对参数x运算,单位为弧度。
Floor(x)小于或等于x的最大整数。
Ln(x)返回x的自然对数(以e为底的对数,其中,e是自然对数底数常数2.718281828……)。
Log2(x)x以2为底的对数。
Log10(x)x的以10为底的对数。
Round(x)=Sign(x)*Floor(Abs(x)+0.5)
Sin(x)三角正弦函数,对参数x运算,单位为弧度。
Swap(x,y)=(y,x)
Tan(x)三角正切函数,对参数x运算,单位为弧度。
运算优先级顺序
当没有使用括号来显式表示表达式中的优先顺序时,以下规则适用:
–高优先级的运算在低优先级的任何运算之前计算。
–相同优先级的运算从左到右依次计算。
下表从最高到最低的顺序说明运算的优先级,表中位置越高,优先级越高。
如果在C编程语言中也使用这些运算符,则本文中采用的优先级顺序与C编程语言中采用的优先级顺序相同。
表:运算优先级从最高(表格顶部)到最低(表格底部)
逻辑运算的文本说明
在文本中,用数学形式描述如下的逻辑运算语句:
可以用以下方式描述:
……如下/……以下内容适用:
–如果条件0,则语句0
–否则,如果条件1,则语句1
-……
–否则(关于其余条件的提示性说明),语句n
文本中的每个“如果……否则,如果……否则,……”语句都以“……如下”或“……以下内容适用”引入,后面紧跟着“如果……”。“如果……否则,如果……否则,……”的最后一个条件总有一个“否则,……”。通过将“……如下:”或“……以下内容适用”与结尾语句“否则,……”相匹配来识别中间有“如果……否则,如果……否则”的语句。
在文本中,用数学形式描述如下的逻辑运算语句:
可以用以下方式描述:
……如下/……以下内容适用:
–如果以下所有条件都为真,则语句0:
–条件0a
–条件0b
–如果满足以下一个或多个条件,则语句1:
–条件1a
–条件1b
-……
–否则,语句n
在文本中,用数学形式描述如下的逻辑运算语句:
可以用以下方式描述:
当条件0时,语句0
当条件1时,语句1
虽然本发明实施例主要根据视频译码进行了描述,但需要说明的是,译码系统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)、或红外线、无线电和微波等无线技术从网站、服务器或其它远程源进行传输,则同轴缆线、光纤缆线、双绞线和DSL、或红外线、无线电和微波等无线技术也包括在上述介质的定义中。但是,应当理解的是,计算机可读存储介质和数据存储介质并不包括连接、载波、信号或其它瞬时性介质,而是涉及非瞬时性有形存储介质。本文所使用的磁盘和光盘包括压缩光盘(compact disc,CD)、激光光盘、光学光盘、数字多功能光盘(digital versatile disc,DVD)和蓝光光盘,其中,磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。上述各项的组合也应包括在计算机可读介质的范围内。
指令可以通过一个或多个数字信号处理器(digital signal processor,DSP)、一个或多个通用微处理器、一个或多个专用集成电路(application specific integratedcircuit,ASIC)、一个或多个现场可编程逻辑阵列(field programmable logic array,FPGA)或其它同等集成或离散逻辑电路等一或多个处理器来执行。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文描述的各种功能可以提供在用于编码和解码的专用硬件和/或软件模块内,或者并入组合编解码器中。此外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
本发明中的技术可以在多种设备或装置中实现,这些设备或装置包括无线手机、集成电路(integrated circuit,IC)或一组IC(例如芯片组)。本发明描述了各种组件、模块或单元,以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定需要由不同的硬件单元实现。实际上,如上所述,各种单元可以结合合适的软件和/或固件组合在编解码器硬件单元中,或者通过包括如上所述的一个或多个处理器的互操作硬件单元的集合来提供。

Claims (66)

1.一种使用神经网络(neural network,NN)对图像进行编码的方法,其特征在于,所述NN包括多个层,所述多个层包括至少一个下采样层(2110、2120、2130、2140),所述至少一个下采样层将下采样应用于表示在至少一个维度上具有大小S的矩阵的输入(2101、2102、2103、2104),所述方法包括:在使用所述至少一个下采样层处理(2311)所述输入之前,将缩放应用(2321)于所述输入,其中,所述缩放包括在所述至少一个维度上改变所述大小S,使得其中,r>1,r是所述至少一个下采样层的下采样比;在所述缩放之后,通过所述至少一个采样层(2110、2120、2130、2140)处理(2311)所述输入,并且提供(2312)具有大小S1<S的输出;在使用所述NN处理所述图像之后,提供码流作为所述NN的输出。
2.根据权利要求1所述的方法,其特征在于,所述NN包括个下采样层,每个下采样层m(2110、2120、2130、2140)具有关联的下采样比rm>1,其中,m≤M,所述方法还包括:在使用下采样层m处理(2311)表示在至少一个维度上具有大小Sm的矩阵的输入(2101、2102、2103、2104)之前,如果所述大小Sm不是所述下采样层m的下采样比rm的整数倍,将缩放应用于所述输入,其中,所述缩放包括在所述至少一个维度上改变所述大小Sm,使得其中,
3.根据权利要求2所述的方法,其特征在于,在将所述缩放应用(2321)于所述具有大小Sm的输入(2101、2102、2103、2104)之前,确定Sm是否是所述下采样比rm的整数倍,如果确定Sm不是所述下采样比rm的整数倍,所述缩放应用于所述输入,使得所述大小Sm在所述至少一个维度上改变,使得其中,
4.根据权利要求2或3所述的方法,其特征在于,如果所述输入(2101、2102、2103、2104)的大小Sm是所述下采样层m(2110、2120、2130、2140)的下采样比rm的整数倍,则在通过所述下采样层m处理所述输入之前,所述输入不缩放到大小
5.根据权利要求3或4所述的方法,其特征在于,所述确定Sm是否是所述下采样比rm的整数倍包括:将所述大小Sm与所述下采样层m(2110、2120、2130、2140)的允许输入大小进行比较。
6.根据5所述的方法,其特征在于,所述下采样层m的允许输入大小是根据所述下采样比rm和所述大小Sm中的至少一个计算的。
7.根据权利要求5或6所述的方法,其特征在于,所述比较包括:计算Sm与所述下采样层m(2110、2120、2130、2140)的允许输入大小之间的差值。
8.根据权利要求5或7中任一项所述的方法,其特征在于,所述比较包括:确定
9.根据权利要求8所述的方法,其特征在于,确定的是如果则所述缩放应用于所述具有大小Sm的输入。
10.根据权利要求8所述的方法,其特征在于,确定的是如果则所述缩放应用于所述具有大小Sm的输入。
11.根据权利要求10所述的方法,其特征在于,所述大小是根据所述下采样比rm和所述大小Sm中的至少一个确定的。
12.根据权利要求11所述的方法,其特征在于,所述大小是根据包括ceil、int、floor中的至少一个的函数确定的。
13.根据权利要求12所述的方法,其特征在于,
所述大小是根据确定的;或者
所述大小是根据确定的;或者
所述大小是根据确定的。
14.根据权利要求2至13中任一项所述的方法,其特征在于,所述应用于下采样层m的输入(2101、2102、2103、2104)的缩放与其它下采样层的下采样比rk无关,其中,k≠m。
15.根据权利要求1至14中任一项所述的方法,其特征在于,所述下采样层m的输入(2101、2102、2103、2104)在所述至少一个维度上具有大小Sm,所述大小的值在所述下采样层m(2110、2120、2130、2140)的下采样比rm的最接近但小于所述大小的整数倍和所述下采样层m(2110、2120、2130、2140)的下采样比rm的最接近但大于所述大小的整数倍之间,所述输入的大小Sm根据条件在所述缩放的过程中改变,以与所述下采样比rm的最接近但小于所述大小的整数倍匹配或者与所述下采样比rm的最接近但小于所述大小的整数倍匹配。
16.根据权利要求1至15中任一项所述的方法,其特征在于,所述下采样层m的输入(2101、2102、2103、2104)在所述至少一个维度上具有大小Sm,所述大小的值不是所述下采样层m(2110、2120、2130、2140)的下采样比rm的整数倍,所述输入的大小Sm在所述缩放的过程中改变,以与所述下采样比rm的最接近但小于所述大小的整数倍匹配或者与所述下采样比rm的最接近但大于所述大小的整数倍匹配。
17.根据权利要求1至16中任一项所述的方法,其特征在于,所述下采样层m的输入(2101、2102、2103、2104)在所述至少一个维度上具有大小Sm,其中,lrm≤Sm≤rm(l+1),l和rm是所述下采样层m(2110、2120、2130、2140)的下采样比,所述大小Sm根据条件缩放到
18.根据权利要求1至17所述的方法,其特征在于,如果所述输入(2101、2102、2103、2104)的大小Sm更接近所述下采样层m(2110、2120、2130、2140)的下采样比rm的最接近但小于所述大小的整数倍,而不是更接近所述下采样比rm的最接近但大于所述大小的整数倍,则所述输入的大小Sm减小到与所述下采样比rm的最接近但小于所述大小的整数倍匹配的大小
19.根据权利要求18所述的方法,其特征在于,将所述输入(2101、2102、2103、2104)的大小Sm减小到所述大小包括:裁剪所述输入。
20.根据权利要求1至19中任一项所述的方法,其特征在于,如果所述输入(2101、2102、2103、2104)的大小Sm更接近所述下采样层m(2110、2120、2130、2140)的下采样比rm的最接近但大于所述大小的整数倍,而不是更接近所述下采样比rm的最接近但小于所述大小的整数倍,则所述输入的大小Sm增大到与所述下采样比rm的最接近但大于所述大小的整数倍匹配的大小
21.根据权利要求20所述的方法,其特征在于,将所述输入(2101、2102、2103、2104)的大小Sm增大到所述大小包括:用0或用从所述具有大小Sm的输入中获取到的填充信息来填充所述具有大小Sm的输入。
22.根据权利要求21所述的方法,其特征在于,所述从所述具有大小Sm的输入中获取到的填充信息作为冗余填充信息,以将所述输入(2101、2102、2103、2104)的大小Sm增大所述大小
23.根据权利要求22所述的方法,其特征在于,所述用冗余填充信息来填充包括反射填充和重复填充中的至少一种。
24.根据权利要求22或23所述的方法,其特征在于,所述填充信息是或包括所述具有大小Sm的输入的至少一个值,所述至少一个值最接近所述输入(2101、2102、2103、2104)中要添加所述冗余填充信息的区域。
25.根据权利要求1或13所述的方法,其特征在于,所述下采样层m(2110、2120、2130、2140)的输入(2101、2102、2103、2104)的大小Sm增加到与所述下采样比rm的最接近但大于所述大小的整数倍匹配的大小
26.根据权利要求17所述的方法,其特征在于,所述条件使用Min(|S-lrm|,|S-rm(l+1)|),所述条件包括:如果Min产生|Sm-lrm|,则所述输入的大小Sm减小到如果Min产生|Sm-(l+1)rm|,则所述输入的大小Sm增加到
27.根据权利要求26所述的方法,其特征在于,l是根据所述下采样层m(2110、2120、2130、2140)的输入的大小Sm和所述下采样层m的下采样比rm中的至少一个确定的。
28.根据权利要求27所述的方法,其特征在于,l是根据确定的和/或l+1是根据确定的。
29.根据权利要求1至28中任一项所述的方法,其特征在于,所述下采样层(2110、2120、2130、2140)中的至少一个下采样层在两个维度上将下采样应用于所述输入(2101、2102、2103、2104),第一维度上的下采样比等于第二维度上的下采样比。
30.根据权利要求1至29中任一项所述的方法,其特征在于,所有下采样层(2110、2120、2130、2140)的下采样比都相等。
31.一种使用神经网络(neural network,NN)对表示图像的码流进行解码的方法,其特征在于,所述NN包括多个层,所述多个层至少包括第一上采样层和第二上采样层,所述第一上采样层和所述第二上采样层将上采样应用于表示在至少一个维度上具有大小T的矩阵的输入(2201、2202、2203、2204),所述方法包括:通过所述第一上采样层处理所述输入,并且提供所述第一上采样层的输出,其中,所述输出具有大小u1是所述第一上采样层的上采样比;在通过所述第二上采样层处理所述第一上采样层的输出之前,将缩放(2421)应用于所述第一上采样层的输出,其中,所述缩放包括根据获取到的信息在所述至少一个维度上将所述输出的大小改变为所述至少一个维度上的大小通过所述第二上采样层处理所述缩放后的输出,并且提供所述第二上采样层的输出,其中,所述输出在所述至少一个维度上具有大小u2是所述第二上采样层的上采样比;在使用所述NN处理所述码流之后,提供经解码图像作为所述NN的输出。
32.根据权利要求31所述的方法,其特征在于,所述上采样层包括转置卷积或卷积层。
33.根据权利要求31或32所述的方法,其特征在于,所述信息包括所述经解码图像的目标大小、所述上采样比u1、所述上采样比u2、所述第二上采样层的目标输出大小所述大小中的至少一个,其中,所述经解码图像的目标大小包括所述经解码图像的高度H和所述经解码图像的宽度W中的至少一个。
34.根据权利要求31至33中任一项所述的方法,其特征在于,所述信息是从所述码流、第二码流、所述解码器可用的信息中的至少一个中获取到的。
35.根据权利要求31至34中任一项所述的方法,其特征在于,所述用于在所述至少一个维度上将大小改变为大小的缩放(2421)是根据取决于和u2的公式确定的,其中,是所述第二上采样层的输出的目标输出大小,u2是所述第二上采样层的上采样比。
36.根据权利要求31至35中任一项所述的方法,其特征在于,所述用于在所述至少一个维度上将大小改变为大小的缩放是根据取决于u2和N的公式确定的,其中,N是所述码流通过所述NN的处理顺序中与所述第一上采样层连续的上采样层的总数。
37.根据权利要求31或36所述的方法,其特征在于,所述公式由给出,其中,Toutput是所述NN的输出的目标大小。
38.根据权利要求31或37所述的方法,其特征在于,所述公式由给出,其中,Toutput是所述NN的输出的目标大小,u是上采样比。
39.根据权利要求38所述的方法,其特征在于,用于指示所述大小Toutput的指示包括所述码流中。
40.根据权利要求35所述的方法,其特征在于,所述公式由给出或者所述公式由给出。
41.根据权利要求40所述的方法,其特征在于,指示选择多个预定义公式中的哪一个公式的指示是从所述码流中获取到的。
42.根据权利要求31至41中任一项所述的方法,其特征在于,所述方法还包括:在对所述具有大小的输出进行缩放(2412)之前,确定所述输出的大小是否与所述大小匹配。
43.根据权利要求42所述的方法,其特征在于,如果确定所述大小与所述大小匹配,则不应用改变所述大小的缩放。
44.根据权利要求42或43所述的方法,其特征在于,所述方法还包括:确定是否大于或者是否小于
45.根据权利要求44所述的方法,其特征在于,如果确定大于则所述缩放包括将裁剪应用于所述具有大小的输出,使得所述大小减小到所述大小
46.根据权利要求44或45所述的方法,其特征在于,如果确定小于则所述缩放包括将填充应用于所述具有大小的输出,使得所述大小增大到所述大小
47.根据权利要求46所述的方法,其特征在于,所述填充包括用0或用从所述具有大小的输出中获取到的填充信息来填充所述具有大小的输出。
48.根据权利要求47所述的方法,其特征在于,所述从所述具有大小的输出中获取到的填充信息作为冗余填充信息,以将所述输出的大小增大到所述大小
49.根据权利要求48所述的方法,其特征在于,所述填充包括反射填充或重复填充。
50.根据权利要求48或49所述的方法,其特征在于,所述填充信息是或包括所述具有大小的输出的至少一个值,所述至少一个值最接近所述输出中要添加所述冗余填充信息的区域。
51.根据权利要求44所述的方法,其特征在于,如果确定不等于则所述缩放包括应用插值滤波器。
52.根据权利要求31至51中任一项所述的方法,其特征在于,所述信息在所述码流或另一码流中提供,并且包括对所述码流进行编码的编码器中的至少一个下采样层的下采样比rm,其中,所述下采样层在处理所述输入的顺序中对应于所述解码器的上采样层。
53.根据权利要求31至52中任一项所述的方法,其特征在于,所述上采样层中的至少一个上采样层在两个维度上应用上采样,第一维度上的上采样比等于第二维度上的上采样比。
54.根据权利要求31至53中任一项所述的方法,其特征在于,所有上采样层的上采样比都相等。
55.根据权利要求1至54中任一项所述的方法,其特征在于,所述NN包括所述码流通过所述NN的处理顺序中的对所述输入应用变换的另一单元,所述变换不改变所述输入在所述至少一个维度上的大小,所述方法包括:如果所述缩放增大所述输入在所述至少一个维度上的大小,在通过所述另一单元处理所述输入之后以及在通过下一层处理所述输入之前应用所述缩放,和/或所述方法包括:如果所述缩放包括减小所述输入在所述至少一个维度上的大小,在通过所述另一单元处理所述输入之前应用所述缩放。
56.根据权利要求55所述的方法,其特征在于,所述另一单元是或包括批量归一化器和/或修正线性单元(rectified linear unit,ReLU)。
57.根据权利要求1至56中任一项所述的方法,其特征在于,所述码流包括与所述图像的不同颜色通道对应的子码流,所述NN包括子神经网络(sub-neural network,sNN),所述sNN分别用于将根据权利要求1至51中任一项所述的方法应用于作为所述sNN的输入的所述子码流。
58.根据权利要求1至30中任一项所述的方法,其特征在于,如果所述缩放包括将所述大小S增加到所述大小则所述大小给出,如果所述缩放包括将所述大小S减小到所述大小则所述大小给出。
59.根据权利要求31至54中任一项所述的方法,其特征在于,如果所述缩放包括将所述大小增加到所述大小则所述大小给出,如果所述缩放包括将所述大小减小到所述大小则所述大小给出。
60.一种对图像进行编码的编码器(2100),其特征在于,所述编码器包括:用于接收图像的接收器;用于实现神经网络(neural network,NN)的一个或多个处理器,其中,所述NN包括图像通过所述NN的处理顺序中的多个层(2110、2120、2130、2140),所述多个层包括至少一个下采样层,所述至少一个下采样层用于将下采样应用于输入(2101、2102、2103、2104);用于输出码流的发送器,其中,所述编码器用于执行根据权利要求1至30或权利要求55至59中任一项所述的方法。
61.一种对图像进行编码的编码器(2100),其特征在于,所述编码器包括用于实现神经网络(neural network,NN)的一个或多个处理器,所述一个或多个处理器用于执行根据权利要求1至30或权利要求55至59中任一项所述的方法。
62.一种使用神经网络(neural network,NN)对图像进行编码的编码器(2100),其特征在于,所述编码器包括用于实现所述NN的一个或多个处理器,其中,所述NN包括多个层,所述多个层包括至少一个下采样层(2110、2120、2130、2140),所述至少一个下采样层将下采样应用于表示在至少一个维度上具有大小S的矩阵的输入(2101、2102、2103、2104),所述一个或多个处理器用于:
在使用所述至少一个下采样层处理(2311)所述输入之前,将缩放应用(2321)于所述输入,其中,所述缩放包括在所述至少一个维度上改变所述大小S,使得其中,r>1,r是所述至少一个下采样层的下采样比;
在所述缩放之后,通过所述至少一个下采样层(2110、2120、2130、2140)处理(2311)所述输入,并且提供(2312)具有大小S1<S的输出;
在使用所述NN处理所述图像之后,提供码流作为所述NN的输出。
63.一种对表示图像的码流进行解码的解码器(2200),其特征在于,所述解码器包括:用于接收码流的接收器;实现神经网络(neural network,NN)的一个或多个处理器,其中,所述NN包括码流通过所述NN的处理顺序中的多个层(2210、2220、2230、2240),所述多个层包括至少两个上采样层,所述至少两个上采样层用于将上采样应用于输入(2201、2202、2203、2204);用于输出经解码图像的发送器,其中,所述解码器用于执行根据权利要求31至57或权利要求59中任一项所述的方法。
64.一种对表示图像的码流进行解码的解码器(2200),其特征在于,所述解码器包括个用于实现神经网络(neural network,NN)的一个或多处理器,所述一个或多个处理器用于执行根据权利要求31至57或权利要求59中任一项所述的方法。
65.一种对表示图像的码流进行解码的解码器(2200),其特征在于,所述解码器包括用于实现神经网络(neural network,NN)的一个或多个处理器,其中,所述NN包括多个层,所述多个层至少包括第一上采样层和第二上采样层,所述第一上采样层和所述第二上采样层将上采样应用于表示在至少一个维度上具有大小T的矩阵的输入(2201、2202、2203、2204),所述一个或多个处理器用于:
通过所述第一上采样层处理所述输入,并且提供所述第一上采样层的输出,其中,所述输出具有大小u1是所述第一上采样层的上采样比;
在通过所述第二上采样层处理所述第一上采样层的输出之前,将缩放(2421)应用于所述第一上采样层的输出,其中,所述缩放包括根据获取到的信息在所述至少一个维度上将所述输出的大小改变为所述至少一个维度上的大小
通过所述第二上采样层处理所述缩放后的输出,并且提供所述第二上采样层的输出,其中,所述输出在所述至少一个维度上具有大小u2是所述第二上采样层的上采样比;
在使用所述NN处理所述码流之后,提供经解码图像作为所述NN的输出。
66.一种包括计算机可执行指令的计算机可读存储介质,其特征在于,所述计算机可执行指令在计算系统上执行时,使得所述计算系统执行根据权利要求1至59中任一项所述的方法。
CN202080108045.4A 2020-12-18 2020-12-18 一种使用神经网络编码或解码图像的方法和装置 Pending CN116648909A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2020/087333 WO2022128138A1 (en) 2020-12-18 2020-12-18 A method and apparatus for encoding or decoding a picture using a neural network

Publications (1)

Publication Number Publication Date
CN116648909A true CN116648909A (zh) 2023-08-25

Family

ID=74141531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080108045.4A Pending CN116648909A (zh) 2020-12-18 2020-12-18 一种使用神经网络编码或解码图像的方法和装置

Country Status (7)

Country Link
US (1) US20240015314A1 (zh)
EP (1) EP4226325A1 (zh)
JP (1) JP2024500744A (zh)
KR (1) KR20230072491A (zh)
CN (1) CN116648909A (zh)
MX (1) MX2023007191A (zh)
WO (1) WO2022128138A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024193708A1 (en) * 2023-03-22 2024-09-26 Douyin Vision Co., Ltd. Method, apparatus, and medium for visual data processing

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3204888A4 (en) * 2014-10-09 2017-10-04 Microsoft Technology Licensing, LLC Spatial pyramid pooling networks for image processing
US20200005151A1 (en) * 2016-12-30 2020-01-02 Nokia Technologies Oy Artificial neural network

Also Published As

Publication number Publication date
MX2023007191A (es) 2023-07-03
KR20230072491A (ko) 2023-05-24
EP4226325A1 (en) 2023-08-16
US20240015314A1 (en) 2024-01-11
WO2022128138A1 (en) 2022-06-23
JP2024500744A (ja) 2024-01-10

Similar Documents

Publication Publication Date Title
TWI834087B (zh) 用於從位元流重建圖像及用於將圖像編碼到位元流中的方法及裝置、電腦程式產品
CN116636217A (zh) 使用神经网络编码图像和解码码流的方法和装置
CN115606179A (zh) 用于使用学习的下采样特征进行图像和视频编码的基于学习的下采样的cnn滤波器
CN116965029A (zh) 使用卷积神经网络对图像进行译码的装置和方法
JP2023543520A (ja) 機械学習を基にしたピクチャコーディングにおけるクロマサブサンプリングフォーマット取り扱いのための方法
US20240037802A1 (en) Configurable positions for auxiliary information input into a picture data processing neural network
CN116508320A (zh) 基于机器学习的图像译码中的色度子采样格式处理方法
CN115552905A (zh) 用于图像和视频编码的基于全局跳过连接的cnn滤波器
US20240015314A1 (en) Method and apparatus for encoding or decoding a picture using a neural network
US20240013446A1 (en) Method and apparatus for encoding or decoding a picture using a neural network comprising sub-networks
US20240161488A1 (en) Independent positioning of auxiliary information in neural network based picture processing
TW202420815A (zh) 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq
CN118020306A (zh) 视频编解码方法、编码器、解码器及存储介质
JP7571363B2 (ja) ニューラルネットワーク・ベースのビットストリームのデコードとエンコード
US20240296594A1 (en) Generalized Difference Coder for Residual Coding in Video Compression
TW202416712A (zh) 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq
CN118435524A (zh) 用于获得用于熵编码或熵解码数据的累积分布函数的方法和装置
CN115914651A (zh) 点云编解码方法、装置、设备及存储介质
CN118823145A (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