CN116325729A - 用于视频译码的基于神经网络的滤波过程中的激活函数设计 - Google Patents

用于视频译码的基于神经网络的滤波过程中的激活函数设计 Download PDF

Info

Publication number
CN116325729A
CN116325729A CN202180065157.0A CN202180065157A CN116325729A CN 116325729 A CN116325729 A CN 116325729A CN 202180065157 A CN202180065157 A CN 202180065157A CN 116325729 A CN116325729 A CN 116325729A
Authority
CN
China
Prior art keywords
alpha
block
video
cnn
video data
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
CN202180065157.0A
Other languages
English (en)
Inventor
王洪涛
陈建乐
M·卡切夫维茨
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN116325729A publication Critical patent/CN116325729A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • H04N19/436Methods 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 using parallelised computational arrangements
    • 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
    • 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/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/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/176Methods 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 block, e.g. a macroblock
    • 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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/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

Landscapes

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

Abstract

一种对视频数据进行译码的方法,该方法包括:重构视频数据的块;并将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中基于CNN的滤波器使用LeakyReLU激活函数。

Description

用于视频译码的基于神经网络的滤波过程中的激活函数设计
本申请要求于2021年9月29日提交的美国专利申请第17/489,459号和于2020年9月30日提交的美国临时专利申请第63/085,936号的优先权,所述申请中的每一个的全部内容均通过引用并入本文。2021年9月29日提交的美国专利申请第17/489,459号要求2020年9月30日提交的美国临时专利申请第63/085,936号的权益。
技术领域
本公开涉及视频编码和视频解码。
背景技术
数字视频功能可以并入范围广泛的设备中,包括数字电视、数字直播系统、无线广播系统、个人数字助理(PDA)、膝上型或台式计算机、平板计算机、电子书阅读器、数字相机、数字录音设备、数字媒体播放器、视频游戏设备、视频游戏终端、蜂窝或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流式传输设备等。数字视频设备采用视频译码技术,例如MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分高级视频译码(AVC)、ITU-T H.265/高效视频译码(HEVC)以及此类标准的扩展所定义的标准中描述的那些。视频设备可以通过实施此类视频译码技术更高效地发送、接收、编码、解码和/或存储数字视频信息。
视频译码技术包括空间(图片内)预测和/或时间(图片间)预测以减少或去除视频序列中固有的冗余。对于基于块的视频译码,视频切片(例如,视频图片或视频图片的一部分)可以被分割成视频块,视频块也可以称为译码树单元(CTU)、译码单元(CU)和/或译码节点。图片的帧内译码(I)切片中的视频块是使用关于同一图片中相邻块中的参考样本的空间预测来编码的。图片的帧间译码(P或B)切片中的视频块可以使用关于同一图片中相邻块中的参考样本的空间预测或关于其他参考图片中的参考样本的时间预测。图片可称为帧,并且参考图片可称为参考帧。
发明内容
总的来说,本公开描述了与失真图片的滤波过程有关的技术。滤波过程可以基于神经网络技术。例如,滤波过程可以将基于卷积神经网络(CNN)的滤波器应用于重构的视频数据块。基于CNN的滤波器可以使用泄漏整流线性单元(ReLU)激活函数。使用LeakyReLU激活函数可能会导致比修正线性单元(ReLU)激活函数更好的性能,并且在训练期间比参数修正线性单元(PReLU)激活函数具有更高的稳定性。滤波过程可以在高级视频编解码器的上下文中使用,例如通用视频译码(VVC)的扩展或下一代视频译码标准,以及任何其他视频编解码器。
在一个示例中,本公开描述了一种对视频数据进行译码的方法,该方法包括:重构视频数据的块;并将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中基于CNN的滤波器使用LeakyReLU激活函数。
在另一示例中,用于对视频数据进行译码的设备包括:用于存储视频数据的存储器;以及在电路中实现的一个或多个处理器,该一个或多个处理器被配置为:重构视频数据的块;并将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中基于CNN的滤波器使用LeakyReLU激活函数。
在另一个示例中,本公开描述了一种用于对视频数据进行译码的设备,该设备包括:用于重构视频数据的块的单元;以及用于将基于卷积神经网络(CNN)的滤波器应用于重构的块的单元,其中基于CNN的滤波器使用LeakyReLU激活函数。
在另一个示例中,本公开描述了一种其上存储有指令的计算机可读存储介质,这些指令在被执行时使一个或多个处理器:重构视频数据的块;并将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中基于CNN的滤波器使用LeakyReLU激活函数。
在附图和下面的描述中阐述了一个或多个示例的细节。其他特征、目的和优点将从描述、附图和权利要求中显而易见。
附图说明
图1是说明可执行本公开的技术的示例视频编码和解码系统的框图。
图2A和图2B是说明示例四叉树二叉树(QTBT)结构和对应的译码树单元(CTU)的概念图。
图3是说明示例混合视频译码框架的框图。
图4是说明图片组(GOP)大小等于16的示例分层预测结构的概念图。
图5是说明具有四层的基于卷积神经网络(CNN)的滤波器的概念图。
图6A是说明ReLU激活函数的概念图。
图6B是说明PReLU激活函数的概念图。
图7是说明根据本公开的一种或多种技术的具有14层且LeakyReLU作为激活函数的示例基于CNN的滤波器的概念图。
图8是说明可执行本公开的技术的示例视频编码器的框图。
图9是说明可执行本公开的技术的示例视频解码器的框图。
图10是说明根据本公开的技术用于对当前块进行编码的示例方法的流程图。
图11是说明根据本公开的技术的用于对当前块进行解码的示例方法的流程图。
图12是说明根据本公开的一种或多种技术的视频译码器的示例操作的流程图。
具体实施方式
视频编码器和视频解码器可以实施可以提高重构图片质量的环路内滤波器。常见类型的环路内滤波器包括去块滤波器和自适应环路滤波器(ALF)。最近,已经提出了基于神经网络(NN)的滤波器。基于NN的滤波器包括一个神经网络,它将重构图片的块作为输入。神经网络输出经滤波的块。
基于神经网络的滤波器可以包括输入层、一个或多个隐藏层和输出层。这些层可能包括一组接收输入并生成输出的神经元。输入层和每个隐藏层都与一个激活函数相关联,该激活函数应用于该层的神经元的输出。整流线性单元(ReLU)和参数ReLU(PReLU)是激活函数的示例。神经网络中使用的激活函数可能会对神经网络的性能和可训练性产生重大影响。例如,PReLU可能比ReLU具有更好的性能。然而,PReLU可能会使神经网络的训练过程变得不稳定,因为PReLU本身包含一个可能变得极端的可训练变量。
本公开描述了可以解决视频译码中先前提出的基于NN的滤波器的这些技术问题的技术。举例来说,视频译码器(例如,视频编码器或视频解码器)可重构视频数据块。此外,视频译码器可以将基于卷积神经网络(CNN)的滤波器应用于重构块。基于CNN的滤波器使用LeakyReLU激活函数。使用LeakyReLU激活函数可以使基于CNN的滤波器能够具有比PReLU更好的性能,同时避免训练过程期间的不稳定。与其他类型的激活函数相对,LeakyReLU激活函数的使用基于重构图片滤波期间表现出的特定特性,并且可能会在性能和稳定性二者方面为视频译码带来意想不到的重大改进。
图1是说明可执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术一般涉及译码(编码和/或解码)视频数据。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未编码的视频、编码的视频、解码的(例如,重构的)视频、和视频元数据,例如信令数据。
如图1所示,在该示例中,系统100包括源设备102,其提供要由目的地设备116解码和显示的编码的视频数据。具体而言,源设备102经由计算机可读介质110向目的地设备116提供视频数据。源设备102和目的地设备116可以包括范围广泛的设备中的任何设备,包括台式计算机、笔记本(即膝上型)计算机、移动设备、平板计算机、机顶盒、诸如智能手机的电话手持机、电视、相机、显示设备、数字媒体播放器、视频游戏终端、视频流式传输设备、广播接收器设备等。在一些情况下,源设备102和目的地设备116可以配备成用于无线通信,因此可以称为无线通信设备。
在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目的地设备116的视频解码器300可被配置为应用用于使用基于神经网络的滤波器的技术。因此,源设备102代表视频编码设备的示例,而目的地设备116代表视频解码设备的示例。在其他示例中,源设备和目的地设备可以包括其他组件或布置。例如,源设备102可以从诸如外部相机的外部视频源接收视频数据。同样,目的地设备116可以与外部显示设备接合,而不是包括集成显示设备。
如图1所示的系统100只是一个示例。通常,任何数字视频编码和/或解码设备都可以执行用于使用基于神经网络的滤波器的技术。源设备102和目的地设备116仅仅是这样的译码设备的示例,其中源设备102生成译码的视频数据以传输到目的地设备116。本公开将“译码”设备称为执行数据的译码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300代表译码设备的示例,具体地,分别代表视频编码器和视频解码器。在一些示例中,源设备102和目的地设备116可以以基本上对称的方式操作,使得源设备102和目的地设备116中的每一个都包括视频编码和解码组件。因此,系统100可以支持源设备102和目的地设备116之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。
通常,视频源104表示视频数据源(即,原始的、未编码的视频数据)并且向视频编码器200提供视频数据的连续图片系列(也称为“帧”),视频编码器200对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,例如摄像机、包含先前捕获的原始视频的视频档案和/或用于从视频内容提供者接收视频的视频馈送接口。作为进一步的可替代方案,视频源104可以生成基于计算机图形的数据作为源视频,或者实况视频、存档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从接收到的顺序(有时称为“显示顺序”)重新排列成用于译码的译码顺序。视频编码器200可以生成包括编码的视频数据的比特流。源设备102然后可以经由输出接口108将编码的视频数据输出到计算机可读介质110上以供例如目的地设备116的输入接口122接收和/或取回。
源设备102的存储器106和目的地设备116的存储器120代表通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如来自视频源104的原始视频和来自视频解码器300的原始的解码的视频数据。此外或可替代地,存储器106、120可以存储可分别由例如视频编码器200和视频解码器300执行的软件指令。尽管在此示例中存储器106和存储器120与视频编码器200和视频解码器300分开示出,但应理解视频编码器200和视频解码器300还可包括用于功能相似或等同目的的内部存储器。此外,存储器106、120可存储经编码的视频数据,例如,从视频编码器200输出并输入到视频解码器300。在一些示例中,存储器106、120的部分可分配为一个或多个视频缓冲器,例如,以存储原始的、解码的和/或编码的视频数据。
计算机可读介质110可以表示能够将编码的视频数据从源设备102传输到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示通信介质以使源设备102能够例如经由射频网络或基于计算机的网络将编码的视频数据实时地直接发送到目的地设备116。输出接口108可以调制包括编码的视频数据的传输信号,并且输入接口122可以根据诸如无线通信协议的通信标准解调接收到的传输信号。通信介质可以包括任何无线或有线通信介质,例如射频(RF)频谱或一个或多个物理传输线。通信介质可以形成基于分组的网络的一部分,例如局域网、广域网或诸如互联网的全球网络。通信介质可包括路由器、交换机、基站或可用于促进从源设备102到目的地设备116的通信的任何其他设备。
在一些示例中,源设备102可以将经编码的数据从输出接口108输出到存储设备112。类似地,目的地设备116可以经由输入接口122访问来自存储设备112的经编码的数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,例如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或用于存储编码的视频数据的任何其他合适的数字存储介质。
在一些示例中,源设备102可以将编码的视频数据输出到文件服务器114或可以存储由源设备102生成的编码的视频数据的另一个中间存储设备。目的地设备116可以经由流式传输或下载来从文件服务器114访问存储的视频数据。
文件服务器114可以是能够存储编码的视频数据并将该编码的视频数据发送到目的地设备116的任何类型的服务器设备。文件服务器114可以表示网络服务器(例如,用于网站)、配置为提供文件传输协议服务(例如文件传输协议(FTP)或通过单向传送的文件输送(FLUTE)协议)的服务器、内容输送网络(CDN)设备、超文本传输协议(HTTP)服务器、多媒体广播多播服务(MBMS)或增强型MBMS(eMBMS)服务器,和/或网络附加存储(NAS)设备。文件服务器114可以附加地或可替代地实现一个或多个HTTP流式传输协议,例如通过HTTP的动态自适应流式传输(DASH)、HTTP实况流式传输(HLS)、实时流式传输协议(RTSP)、HTTP动态流式传输等。
目的地设备116可以通过任何标准数据连接(包括互联网连接)访问来自文件服务器114的编码的视频数据。这可能包括适合访问存储在文件服务器114上的编码的视频数据的无线信道(例如Wi-Fi连接)、有线连接(例如数字用户线(DSL)、电缆调制解调器等)或两者的组合。输入接口122可以被配置为根据上面讨论的用于从文件服务器114取回或接收媒体数据的各种协议中的任何一个或多个或用于取回媒体数据的其他此类协议来进行操作。
输出接口108和输入接口122可以表示无线发射器/接收器、调制解调器、有线联网组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何标准操作的无线通信组件,或其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据诸如4G、4G-LTE(长期演进)、LTE Advanced、5G等蜂窝通信标准来传输数据,例如编码的视频数据。在输出接口108包括无线发射器的一些示例中,输出接口108和输入接口122可以被配置为根据其他无线标准(例如IEEE 802.11规范、IEEE802.15规范(例如,ZigBeeTM)、蓝牙TM标准等来传输数据,例如编码的视频数据。在一些示例中,源设备102和/或目的地设备116可以包括相应的片上系统(SoC)设备。举例来说,源设备102可包括SoC设备以执行归属于视频编码器200和/或输出接口108的功能,且目的地设备116可包括SoC设备以执行归属于视频解码器300和/或输入接口122的功能。
本公开的技术可以应用于支持多种多媒体应用中的任何一种的视频译码,例如空中(over-the-air)电视广播、有线电视传输、卫星电视传输、互联网流式传输视频传输,例如通过HTTP的动态自适应流式传输(DASH)、编码到数据存储介质上的数字视频、存储在数据存储介质上的数字视频的解码、或其他应用。
目的地设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收编码的视频比特流。编码的视频比特流可以包括由视频编码器200定义的信令信息,其也被视频解码器300使用,例如具有描述视频块或其他译码的单元(例如,切片、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118向用户显示经解码的视频数据的经解码的图片。显示设备118可以表示多种显示设备中的任何一种,例如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或其他类型的显示设备。
虽然图1没有显示,但在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元,或其他硬件和/或软件,以处置包括在公共数据流中的音频和视频两者的复用流。如果适用,则MUX-DEMUX单元可以符合ITU H.223复用器协议或其他协议,例如用户数据报协议(UDP)。
视频编码器200和视频解码器300各自可以实现为多种合适的编码器和/或解码器电路中的任何一种,例如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件或其任何组合。当技术部分地以软件实现时,设备可以在合适的、非暂时性计算机可读介质中存储用于软件的指令并且使用一个或多个处理器执行硬件中的指令以执行本公开的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,其中的任一个可以集成为相应设备中的组合编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,例如蜂窝电话。
视频编码器200和视频解码器300可以根据视频译码标准进行操作,例如ITU-TH.265,也称为高效视频译码(HEVC)或其扩展,例如多视图和/或可缩放视频译码扩展。可替代地,视频编码器200和视频解码器300可根据其他专有或行业标准操作,例如ITU-TH.266,也称为通用视频译码(VVC)。VVC规范的第1版已被最终确定(以下简称VVC FDIS),并且可从http://phenix.int-evry.fr/jvet/doc_end_user/documents/19_Teleconference/wgl1/JVET-S2001-vl7.zip获得。然而,本公开的技术不限于任何特定译码标准。
一般而言,视频编码器200和视频解码器300可执行图片的基于块的译码。术语“块”通常指的是包括要处理(例如,编码、解码或以其他方式用于编码和/或解码过程中的)的数据的结构。例如,块可以包括亮度和/或色度数据样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以YUV(例如,Y、Cb、Cr)格式表示的视频数据进行译码。即,视频编码器200和视频解码器300可以译码亮度和色度分量,而不是译码图片样本的红色、绿色和蓝色(RGB)数据,其中色度分量可以包括红色色调和蓝色色调色度分量二者。在一些示例中,视频编码器200在编码之前将接收到的RGB格式化数据转换为YUV表示,并且视频解码器300将YUV表示转换为RGB格式。可替代地,预处理和后处理单元(未显示)可以执行这些转换。
本公开可一般地指代图片的译码(例如,编码和解码)以包含对图片的数据进行编码或解码的过程。类似地,本公开可指代图片的块的译码以包含对块的数据进行编码或解码的过程,例如,预测和/或残差译码。编码的视频比特流通常包括表示译码决策(例如,译码模式)和将图片分割为块的语法元素的一系列值。因此,对图片或块的译码的引用一般应被理解为形成图片或块的语法元素的译码值。
HEVC定义了各种块,包括译码单元(CU)、预测单元(PU)和变换单元(TU)。根据HEVC,视频译码器(例如视频编码器200)根据四叉树结构将译码树单元(CTU)分割成CU。也就是说,视频译码器将CTU和CU分成四个相等的、不重叠的正方形,并且四叉树的每个节点都有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这样的叶节点的CU可以包括一个或多个PU和/或一个或多个TU。视频译码器可进一步分割PU和TU。例如,在HEVC中,残差四叉树(RQT)表示TU的分割。在HEVC中,PU表示帧间预测数据,而TU表示残差数据。帧内预测的CU包括帧内预测信息,例如帧内模式指示。
作为另一个示例,视频编码器200和视频解码器300可以被配置为根据VVC来操作。根据VVC,视频译码器(例如视频编码器200)将图片分割成多个译码树单元(CTU)。视频编码器200可以根据诸如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构的树结构来分割CTU。QTBT结构去除了多种分割类型的概念,例如HEVC的CU、PU、TU的分离。QTBT结构包括两级:第一级,其根据四叉树分割进行分割;以及第二级,其根据二叉树分割进行分割。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于译码单元(CU)。
在MTT分割结构中,可以使用四叉树(QT)分割、二叉树(BT)分割和一种或多种类型的三元树(TT)(也称为三叉树(TT))分割来对块进行分割。三元或三叉树分割是将一个块拆分成三个子块的分割。在一些示例中,三元或三叉树分割将块划分为三个子块,而不通过中心划分原始块。MTT中的分割类型(例如QT、BT和TT)可以是对称的或不对称的。
在一些示例中,视频编码器200和视频解码器300可以使用单个QTBT或MTT结构来表示亮度和色度分量中的每一个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个QTBT或MTT结构,例如用于亮度分量的一个QTBT/MTT结构和用于两个色度分量的另一个QTBT/MTT结构(或用于相应色度分量的两个QTBT/MTT结构)。
视频编码器200和视频解码器300可以被配置为使用每个HEVC的四叉树分割、QTBT分割、MTT分割或其他分割结构。为了解释的目的,本公开的技术的描述是关于QTBT分割来呈现的。然而,应了解,本公开的技术还可应用于经配置以使用四叉树分割或其他类型的分割的视频译码器。
在一些示例中,CTU包括亮度样本的译码树块(CTB)、具有三个样本阵列的图片的色度样本的两个对应CTB、或单色图片或使用三个单独的颜色平面和用于对样本进行译码的语法结构进行译码的图片的样本的CTB。CTB可以是某个N值的NxN样本块,使得将一个分量划分为CTB就是一个分割。分量是一个阵列或来自三个阵列(亮度和两个色度)之一的单个样本,这些阵列以4:2:0、4:2:2或4:4:4颜色格式或阵列或组成单色格式图片的阵列的单个样本组成图片。在一些示例中,译码块是用于一些M和N的值的MxN样本块,使得将CTB划分成译码块是分割。
块(例如,CTU或CU)可以在图片中以各种方式分组。作为一个示例,砖块(brick)可以指图片中特定分块(tile)内的CTU行的矩形区域。分块可以是图片中特定分块列和特定分块行内的CTU的矩形区域。分块列是指CTU的矩形区域,其高度等于图片的高度,并且宽度由语法元素指定(例如,在图片参数集中)。分块行是指CTU的矩形区域,其高度由语法元素(例如,在图片参数集中的)指定,并且宽度等于图片的宽度。
在一些示例中,分块可以被分割成多个砖块,每个砖块可以包括分块内的一个或多个CTU行。未被分割成多个砖块的分块也可以被称为砖块。然而,作为分块的真子集的砖块可能不被称为分块。
图片中的砖块也可以在切片中排列。切片可以是可以排他地包含在单个网络抽象层(NAL)单元中的图片的整数个砖块。在一些示例中,切片包括多个完整分块或仅一个分块的完整砖块的连续序列。
本公开可以可互换地使用“NxN”和“N乘N”来指代块(例如CU或其他视频块)在垂直和水平维度方面的样本维度,例如,16x16样本或16乘16样本。一般来说,一个16x16的CU将在垂直方向有16个样本(y=16),并且在水平方向有16个样本(x=16)。同样,一个N×N的CU一般在垂直方向有N个样本,并且在水平方向有N个样本,其中N表示一个非负整数值。CU中的样本可以按行和列排列。此外,CU不需要一定在水平方向上具有与在垂直方向上相同数量的样本。例如,CU可以包括NxM样本,其中M不一定等于N。
视频编码器200对表示预测和/或残差信息以及其他信息的CU的视频数据进行编码。预测信息指示要如何预测CU以便形成CU的预测块。残差信息通常表示编码之前的CU的样本与预测块之间的逐样本差异。
为了预测CU,视频编码器200通常可以通过帧间预测或帧内预测形成CU的预测块。帧间预测通常是指从先前译码的图片的数据预测CU,而帧内预测通常是指从同一图片的先前译码的数据预测CU。为了执行帧间预测,视频编码器200可使用一个或多个运动向量来生成预测块。视频编码器200通常可执行运动搜索以识别与CU紧密匹配的参考块,例如,根据CU与参考块之间的差异。视频编码器200可以使用绝对差和(SAD)、平方差和(SSD)、平均绝对差(MAD)、均方差(MSD)或其他此类差计算来计算差度量以确定参考块是否与当前CU紧密匹配。在一些示例中,视频编码器200可使用单向预测或双向预测来预测当前CU。
VVC的一些示例还提供仿射运动补偿模式,其可以被认为是帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动的两个或更多个运动向量,例如放大或缩小、旋转、透视运动或其他不规则运动类型。
为了执行帧内预测,视频编码器200可选择帧内预测模式来生成预测块。VVC的一些示例提供了六十七种帧内预测模式,包括各种方向模式,以及平面模式和DC模式。一般而言,视频编码器200选择描述当前块(例如,CU的块)的相邻样本的帧内预测模式,从相邻样本中预测当前块的样本。假设视频编码器200以光栅扫描顺序(从左到右,从上到下)对CTU和CU进行译码,此类样本通常可能在与当前块相同的图片中的当前块的上方、左上方和左方)。
视频编码器200对表示当前块的预测模式的数据进行编码。举例来说,对于帧间预测模式,视频编码器200可对表示使用各种可用帧间预测模式中的哪一者的数据以及对应模式的运动信息进行编码。例如,对于单向或双向帧间预测,视频编码器200可以使用高级运动向量预测(AMVP)或合并模式对运动向量进行编码。视频编码器200可以使用类似的模式来编码用于仿射运动补偿模式的运动向量。
在预测,(例如块的帧内预测或帧间预测)之后,视频编码器200可以计算块的残差数据。诸如残差块之类的残差数据表示块与使用对应预测模式形成的块的预测块之间的逐样本差异。视频编码器200可以对残差块应用一个或多个变换,以在变换域而不是样本域中产生变换的数据。举例来说,视频编码器200可将离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在第一变换之后应用二次变换,例如模式相关不可分离二次变换(MDNSST)、信号相关变换、Karhunen-Loeve变换(KLT)等。视频编码器200在应用一个或多个变换之后产生变换系数。
如上所述,在产生变换系数的任何变换之后,视频编码器200可以执行变换系数的量化。量化通常指的是其中对变换系数进行量化以可能减少用于表示变换系数的数据量、提供进一步压缩的过程。通过执行量化过程,视频编码器200可降低与一些或所有变换系数相关联的比特深度。举例来说,视频编码器200可在量化期间将n位值向下舍入为m位值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可执行要量化的值的按位右移。
在量化之后,视频编码器200可以扫描变换系数,从包括量化的变换系数的二维矩阵产生一维向量。扫描可以被设计成将较高能量(以及因此较低频率)的变换系数放置在向量的前面并且将较低能量(以及因此较高频率)的变换系数放置在向量的后面。在一些示例中,视频编码器200可利用预定义的扫描顺序来扫描量化的变换系数以产生序列化向量,并且然后对该向量的量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描量化的变换系数以形成一维向量之后,视频编码器200可例如根据上下文自适应二进制算术译码(CABAC)对一维向量进行熵编码。视频编码器200还可对描述与编码的视频数据相关联的元数据的语法元素的值进行熵编码,所述编码的视频数据由视频解码器300在解码视频数据时使用。
为了执行CABAC,视频编码器200可以将上下文模型内的上下文指派给要传输的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于指派给符号的上下文。
视频编码器200还可以向视频解码器300生成语法数据,例如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,例如,在图片报头、块报头、切片报头或其他语法数据中,例如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)。视频解码器300同样可以解码这样的语法数据以确定如何解码对应的视频数据。
以这种方式,视频编码器200可以生成包括编码的视频数据的比特流,例如,描述将图片分割成块(例如,CU)的语法元素以及块的预测和/或残差信息。最终,视频解码器300可以接收比特流并对编码的视频数据进行解码。
一般而言,视频解码器300执行与视频编码器200执行的过程相反的过程以解码比特流的编码的视频数据。例如,视频解码器300可以以与视频编码器200的CABAC编码过程基本相似但相反的方式使用CABAC来解码比特流的语法元素的值。语法元素可以定义用于将图片分割成CTU以及按照诸如QTBT结构之类的对应的分割结构分割每个CTU以定义CTU的CU的分割信息。语法元素可进一步定义视频数据块(例如,CU)的预测和残差信息。
残差信息可以由例如量化的变换系数来表示。视频解码器300可以对块的量化的变换系数进行逆量化和逆变换以再现该块的残差块。视频解码器300使用用信号通知的预测模式(signaled prediction mode)(帧内或帧间预测)和相关预测信息(例如,用于帧间预测的运动信息)来形成块的预测块。视频解码器300然后可以组合预测块和残差块(在逐个样本的基础上)以再现原始块。视频解码器300可执行附加的处理,例如执行解块过程以减少沿块边界的视觉伪影。
本公开通常可以提到“用信号通知”某些信息,例如语法元素。术语“用信号通知”通常可以指用于语法元素和/或用于解码编码的视频数据的其他数据的值的通信。也就是说,视频编码器200可以用信号通知比特流中语法元素的值。通常,用信号通知是指在比特流中生成一个值。如上所述,源设备102可以基本上实时或非实时地将比特流传输到目的地设备116,例如在将语法元素存储到存储设备112以供目的地设备116稍后取回时可能发生的情况。
图2A和图2B是说明示例四叉树二叉树(QTBT)结构130和对应的译码树单元(CTU)132的概念图。实线表示四叉树分裂,并且虚线表示二叉树分裂。在二叉树的每个分裂的(即非叶)节点中,一个标志被用信号通知以指示使用哪种分裂类型(即水平或垂直),其中在该示例中0表示水平分裂,并且1表示垂直分裂。对于四叉树分裂,不需要指示分裂类型,因为四叉树节点将一个块水平和垂直地分裂成4个大小相等的子块。因此,视频编码器200可编码且视频解码器300可解码用于QTBT结构130的区域树级别(即,实线)的语法元素(例如分裂信息)和用于QTBT结构130的预测树级别(即,虚线)的语法元素(例如分裂信息)。对于由QTBT结构130的终端叶节点表示的CU,视频编码器200可以编码视频数据,例如预测和变换数据,并且视频解码器300可以解码视频数据,例如预测和变换数据。
通常,图2B的CTU 132可以与定义对应于QTBT结构130的节点的在第一级和第二级的块的大小的参数相关联。这些参数可能包括CTU大小(表示样本中CTU 132的大小)、最小四叉树大小(MinQTSize,表示允许的最小四叉树叶节点大小)、最大二叉树大小(MaxBTSize,表示允许的最大二叉树根节点大小)、最大二叉树深度(MaxBTDepth,表示允许的最大二叉树深度)以及最小二叉树大小(MinBTSize,表示允许的最小二叉树叶节点大小)。
与CTU相对应的QTBT结构的根节点在QTBT结构的第一级可以有四个子节点,每个子节点可以按照四叉树分割进行分割。也就是说,第一级的节点要么是叶节点(没有子节点),要么有四个子节点。QTBT结构130的示例将这样的节点表示为包括父节点和对于分支具有实线的子节点。如果第一级的节点不大于最大允许的二叉树根节点大小(MaxBTSize),则节点可以被相应的二叉树进一步分割。可以迭代一个节点的二叉树分裂,直到分裂产生的节点达到允许的最小二叉树叶节点大小(MinBTSize)或允许的最大二叉树深度(MaxBTDepth)。QTBT结构130的示例将这样的节点表示为针对分支具有虚线。二叉树叶节点称为译码单元(CU),其用于预测(例如,图片内或图片间预测)和变换,而没有任何进一步分割。如上所述,CU也可称为“视频块”或“块”。
在QTBT分割结构的一个示例中,CTU大小被设置为128x128(亮度样本和两个对应的64x64色度样本),MinQTSize被设置为16x16,MaxBTSize被设置为64x64,MinBTSize(对于宽度和高度两者)设置为4,并且MaxBTDepth设置为4。四叉树分割首先应用于CTU以生成四叉树叶节点。四叉树叶节点的大小可以从16x16(即MinQTSize)到128x128(即CTU大小)。如果四叉树叶节点是128x128,则叶四叉树节点将不会被二叉树进一步分裂,因为大小超过了MaxBTSize(即本示例中的64x64)。否则,四叉树叶节点将被二叉树进一步分割。因此,四叉树叶节点也是二叉树的根节点,并且二叉树深度为0。当二叉树深度达到MaxBTDepth(本示例中为4)时,不允许进一步分裂。宽度等于MinBTSize(在本示例中为4)的二叉树节点意味着针对该二叉树节点不允许进一步的垂直分裂(即,宽度的划分)。类似地,高度等于MinBTSize的二叉树节点意味着针对该二叉树节点不允许进一步的水平分裂(即,高度的划分)。如上所述,二叉树的叶节点被称为CU,并且在没有进一步分割的情况下根据预测和变换被进一步处理。
自H.261以来的大多数视频译码标准都基于所谓的混合视频译码原理,其在图3中示出。术语混合指的是两种用于减少视频信号中的冗余的手段的组合,即具有预测残差量化的预测和变换译码。预测和变换通过去相关减少视频信号中的冗余,而量化通过降低它们的精度来减少变换系数表示的数据,理想情况下通过仅去除不相关的细节。这种混合视频译码设计原理也被用在最近的两个标准HEVC和VVC中。
现代混合视频译码器可以由如图3的示例中所示的以下构建块组成。换句话说,图3是说明示例混合视频译码框架320的框图。在图3的示例中,框架320接收输入视频数据的图片322并将图片322拆分成块。块分割用于将图像划分为更小的块以用于预测和变换过程的操作。早期的视频译码标准使用固定的块大小,通常为16x16样本。诸如HEVC和VVC之类的最近标准采用基于树的分割结构来提供灵活的分割,例如,如图2A和图2B所示。
框架320包括运动估计单元324、帧内预测单元326和帧间预测单元328。运动估计单元324可以基于视频数据的先前重构图片330来执行运动估计。帧间预测单元328可使用由运动估计单元324生成的运动信息来生成预测块。运动补偿预测或图片间预测(即帧间预测)利用视频序列的图片之间(因此“图片间”)存在的冗余。在现代视频编解码器中使用的基于块的运动补偿中,预测是从一个或多个先前解码的图片(即参考图片)获得的。用于生成帧间预测的对应区域由运动信息指示,包括运动向量和参考图片索引。
帧内预测单元326可使用帧内预测来生成预测块。图片内预测通过从已经译码/解码的空间相邻(参考)样本中导出对块的预测,利用图片内存在(因此称为“图片内”)的空间冗余。方向角预测、DC预测和平面或平面上预测用于最近的视频编解码器,包括AVC、HEVC和VVC。框架320可以在帧间预测单元328所生成的预测块和帧内预测单元326所生成的预测块之间进行选择。
框架320的残差生成单元332可以基于预测块和图片322的对应块来生成残差数据。变换单元334可以对残差数据应用变换以生成变换系数。混合视频译码标准将块变换应用于预测残差(无论预测残差是来自图片间还是图片内预测)。在包括H.261/262/263在内的早期标准中,采用了离散余弦变换(DCT)。在HEVC和VVC中,可以应用除DCT之外的更多变换内核,以便应对特定视频信号中的不同统计信息。
量化单元336然后可以对变换系数应用量化。量化旨在降低输入值或一组输入值的精度,以便减少表示这些值所需的数据量。在混合视频译码中,量化通常应用于各个变换后的残差样本,即变换系数,从而产生整数系数级别。在最近的视频译码标准中,量化中使用的步长源自控制保真度和比特率的所谓量化参数(QP)。较大的步长降低比特率,但也会降低质量,这可能会导致视频图片出现块伪影(blocking artifact)和模糊细节。
熵编码单元338可以将熵编码应用于表示变换系数的语法元素。框架320可以输出比特流中的熵编码的语法元素。熵编码技术(例如上下文自适应二进制算术编码(CABAC))由于其高效率,可用于最近的视频编解码器,例如AVC、HEVC和VVC。
此外,在图3的示例中,逆量化单元340可以对变换系数进行逆量化。逆变换单元342可以对逆量化后的变换系数应用逆变换以生成残差数据。重构单元344可以基于预测块和残差数据来重构块。环路滤波器单元346可以将一个或多个滤波器应用于包含重构块的图片。
在最近的视频编解码器中,应用一组图片(GOP)内的分层预测结构来提高译码效率。图4是说明图片组(GOP)大小等于16的示例分层预测结构400的概念图。在图4的示例中,图片I0是未使用帧间预测编码的帧内图片。可以使用帧间预测来编码图4中的其他图片(即,图片B1到B16)。具体来说,图4中从第一图片指向第二图片的每个箭头表示可以使用第一图片对第二图片进行编码。
环路后/环路内滤波是应用于重构图片以减少译码伪影的滤波过程(或此类过程的组合)。滤波过程的输入一般是重构后的图片,它是重构残差信号(其包括量化误差)和预测的组合。如图3所示,在环路内滤波之后的重构图片330被存储并用作后续译码的图片的图片间预测的参考。译码伪影主要由QP决定,因此QP信息一般用于滤波过程的设计。在HEVC中,环路内滤波器包括去块滤波和样本自适应偏移(SAO)滤波。在VVC中,引入了自适应环路滤波器(ALF)作为第三滤波器。ALF的滤波过程如下所示,
R′(i,j)=R(i,j)+((∑k≠0l≠0f(k,l)×K(R(i+k,j+l)-R(i,j),c(k,l))+64)>>7) (1)
在等式(1)中,R(i,j)为应用滤波过程前的样本,R’(i,j)为应用滤波过程后的样本值,f(k,l)表示滤波器系数,K(x,y)是裁剪函数,并且c(k,l)表示裁剪参数。变量k和l在
Figure BDA0004140860930000101
到/>
Figure BDA0004140860930000102
之间变化,其中L表示滤波器长度。裁剪函数K(x,y)=min(y,max(-y,x)),其对应于函数Clip3(-y,y,x)。裁剪操作引入了非线性,以通过减少与当前样本值相差太大的相邻样本值的影响,使ALF更高效。在VVC中,可以在比特流中用信号通知滤波参数,或者可以从预定义的滤波器集中选择滤波参数。ALF滤波过程也可以概括为以下等式。
R′(i,j)=R(i,j)+ALF_residual_ouput(R) (2)
多项工作表明,将神经网络(NN)嵌入到混合视频译码框架中可以提高压缩效率。神经网络已在用于帧内预测和帧间预测的模块中使用,以提高预测效率。近年来,基于NN的环路内滤波器也是一个活跃的研究课题。在一些示例中,滤波过程被应用为后滤波器。在滤波过程作为后滤波器应用的情况下,滤波过程仅应用于输出图片并且未滤波的图片用作参考图片。相比之下,当滤波过程被应用作为环路内滤波器时,滤波过程被应用于用于输出并用作参考图片的重构图片。
基于NN的滤波器可以附加地应用在现有滤波器之上,例如去块滤波器、SAO或ALF。基于NN的滤波器也可以被排他性地应用,其中基于NN的滤波器被设计为替代所有现有的滤波器。
图5是说明具有四层的基于卷积神经网络(CNN)的滤波器500的概念图。基于CNN的滤波器500是一种特定类型的使用卷积层的基于NN的滤波器。如图5所示,基于NN的滤波过程可以将重构的样本作为输入,并且中间输出501是残差样本,残差样本被添加回输入以细化输入样本。基于CNN的滤波器500可以使用所有颜色分量(例如,亮度、Cb色度、Cr色度)作为输入以利用交叉分量相关性。不同的颜色分量可能共享相同的滤波器(包括网络结构和模型参数),或者每个颜色分量可能有自己特定的滤波器。
具体而言,基于CNN的滤波器500的输入包括重构图片的多个样本块502。每个样本块502的大小为N×N。样本块502是样本的矩形阵列。样本块502可以对应于也可以不对应于译码块、预测块、变换块、译码树块或译码过程中使用的其他类型的块。然而,本公开不限于正方形样本块,而是通常可以应用于具有大小NxM的矩形样本块。色度块在垂直方向上的采样数是亮度块的一半,并且在水平方向上的采样数是亮度块的一半。因此,对于每个NxN色度块,滤波器500的输入可以包括四个NxN亮度块。在图5的示例中,亮度块是加阴影的,并且色度块是白色的。因此,作为滤波器500的输入接收的样本块可以表示为Yx4+U+V,其中Y对应于亮度,U对应于第一色度分量,而V对应于第二色度分量。
此外,基于CNN的滤波器500包括输入层504、隐藏层506A到506B(统称为“隐藏层506”)和输出层508。具体地,在图5的示例中,基于CNN的滤波器500包括2个隐藏层,总共4层。输入层504、隐藏层506和输出层508中的每一个都包括卷积层510A到510D中的一个(统称为“卷积层510”)。另外,输入层504和每个隐藏层506包括PReLU激活层512A到512C之一(统称为“PReLU激活层512”)。每个PReLU激活层512将卷积层的输出作为输入并将PReLU激活函数应用于输入。
在整个本公开中,符号axbxcxd用于描述卷积层。值a和b可以对应于输入位置的二维阵列的宽度和高度。每个输入位置都有c个输入通道。因此,卷积层接收axbxc输入值。值d表示卷积层的输出通道数。每个输出通道对应于卷积层所应用的一组不同的可训练权重。与一个输出通道相对应的权重集中的权重数等于axbxc。可以通过将输入值和对应于输出通道的权重集进行卷积来计算输出通道的值(即,输出值)。例如,输出通道的值可以计算为输入值和对应于输出通道的一组权重的点积。因为有d个输出通道,所以卷积层与axbxcxd权重相关联。
为了关于图5的示例说明这一点,卷积层510A被描述为3x3x6x8。因此,卷积层510A的输入可以是与以当前色度样本位置为中心环绕的3x3正方形色度样本位置中的每个色度样本位置相对应的一组6个值。每个色度样本位置对应于块502中的色度样本的位置。在该示例中,色度块是亮度块的一半宽度和一半高度。因此,每个色度样本位置有四个亮度样本位置。每个色度样本位置有两种类型的色度样本,导致每个色度样本位置有6个样本值。卷积层510A具有8个输出通道并因此生成8个输出值。在图5的示例中,PReLU激活层512A将PReLU激活函数应用于卷积层510A所生成的8个输出值。卷积层510A可以将块502的所有或一些色度样本位置作为当前色度样本位置来重复该操作。PReLU激活层512A所输出的一组8个值可以被视为与用作卷积层510B的输入的二维位置阵列中的单个位置相对应的值。卷积层510B、510C和510D以类似的方式操作。卷积层510D具有6个输出通道,与对应于当前色度样本位置的6个样本值(即,4个亮度和2个色度)相对应。在其他示例中,卷积层510A可以具有与3、3、6和8不同的a、b、c和d值。然而,换句话说,本公开不限于3x3色度样本位置的滤波器内核,但可以应用于一般的a x b滤波器内核,包括非正方形滤波器内核。此外,可以在块边界、CTU边界和/或图片边界处使用填充。
基于CNN的滤波器500的输出层508生成中间输出501。中间输出501可以包括残差样本。这些残差样本可能不同于残差生成单元332所生成的残差样本。基于CNN的滤波器500通过将中间输出501的残差样本添加到样本块502的对应样本来生成经滤波的块514。经滤波的块514可以包括两个大小为NxN的色度块和四个大小为NxN的亮度块。
图5的滤波过程可以概括如下:
R′(i,j)=R(i,j)+NN_filter_residual_ouput(R) (3)
图6A是说明ReLU激活函数600的概念图。如图6A所示,ReLU激活函数600可以定义为:
Figure BDA0004140860930000111
图6B是说明PReLU激活函数650的概念图。如图6B所示,PReLU激活函数650可以定义为:
Figure BDA0004140860930000112
在等式5中,a是作为训练包含PReLU激活函数的神经网络的一部分进行训练的值。
基于NN的滤波器的模型结构和模型参数可以预先定义并存储在视频编码器200和视频解码器300中。基于NN的滤波器的模型结构和模型参数也可以在比特流中用信号通知(例如,通过视频编码器200)。举例来说,视频编码器200可对具有指示(例如,基于NN的滤波器的)模型结构和模型参数的值的一个或多个语法元素进行编码,且视频解码器300可对具有指示(例如,基于NN的滤波器的)模型结构和模型参数的值的一个或多个语法元素进行解码。视频编码器200可以以任何合适的语法结构对语法元素进行编码,例如序列参数集(SPS)、图片参数集(PPS)、视频参数集(VPS)、幻灯片标题等。
已经发现在大多数情况下PReLU的性能优于ReLU。然而,PReLU有时也会使训练过程变得不稳定。因此,训练使用PReLU激活函数的基于NN的滤波器可能花费更长的时间,或者可能偏离最优解决方案。
在本公开中,提出使用LeakyReLU作为基于NN的滤波过程中的激活函数。LeakyReLU示出在下面的式(6)中。
Figure BDA0004140860930000113
在等式(6)中,参数Alpha是固定值。也就是说,在包含LeakyReLU激活函数的神经网络的训练过程期间,参数Alpha不会发生变化。相比之下,PReLU中的参数a是一个可训练变量,其可以在训练过程期间改变。
作为一个示例,提出了图7的示例中所示的基于CNN的滤波器。图7是说明根据本公开的一种或多种技术的具有14层和泄漏ReLU作为激活函数的示例基于CNN的滤波器700的概念图。在图7的示例中,基于CNN的滤波器700的输入包括重构图片的多个样本块702。在一些示例中,每个样本块702可以是大小为NxN的正方形样本块。然而,本公开不限于正方形样本块,而是通常可以应用于具有大小NxM的矩形样本块。在图7的示例中,色度块在垂直方向上的样本数是亮度块的一半,并且在水平方向上的样本数是亮度块的一半。因此,对于每个NxN色度块,基于CNN的滤波器700的输入可以包括四个NxN亮度块。在图7的示例中,亮度块是加阴影的,并且色度块是白色的。因此,作为滤波器700的输入接收的样本块702可以表示为Yx4+U+V,其中Y对应于亮度,U对应于第一色度分量,并且V对应于第二色度分量。
此外,基于CNN的滤波器700包括输入层704、隐藏层706A到706N(统称为“隐藏层706”)和输出层708。在图7的示例中,基于CNN的滤波器700包括12个隐藏层,总共14层。在其他示例中,基于CNN的滤波器700的层数可能大于或小于14。输入层704、隐藏层706和输出层708中的每一个都包括卷积层710A到710N(统称为“卷积层710”)之一。另外,输入层704和每个隐藏层706包括LeakyReLU激活层712A到712M(统称为“LeakyReLU激活层712”)之一。LeakyReLU激活层712中的每一个都将卷积层的输出作为输入并将LeakyReLU激活函数应用于输入。
基于CNN的滤波器700的输出层708生成中间输出701。中间输出701可以包括残差样本。这些残差样本可能不同于由残差生成单元332生成的残差样本。基于CNN的滤波器700通过将中间输出701的残差样本添加到样本块702的对应样本来生成经滤波的块714。经滤波的块714可包括两个大小为NxN的色度块和四个大小为NxN的亮度块。
在一个示例中,通过PReLU的可训练值的统计数据来获得Alpha的最优值,并且对所有层使用相同的Alpha值。例如,视频编码器200和视频解码器300可以在基于CNN的滤波器700的所有LeakyReLU激活层712中使用Alpha的相同预定值。在这个示例中,视频编码器200可能没有必要在比特流中用信号通知Alpha的值。在一些示例中,为了基于PReLU的可训练值(例如,a)的值的统计数据来获得Alpha的最优值,系统(例如,通过视频编码器200、视频解码器300或另一设备或系统)可以使用PReLU激活函数训练网络,直到训练已经收敛。然后系统可以使用关于每一层的PReLU激活函数的可训练值(例如,a)的统计数据。例如,系统可以将Alpha的最优值确定为层的PReLU激活函数的可训练值的平均值。
作为另一个示例,Alpha的最优值是通过每一层的PReLU的可训练值的值的统计数据得到的,每一层可以使用自己固定的Alpha值。例如,对于LeakyReLU激活层712中的每一个,视频编码器200和视频解码器300可以在LeakyReLU激活层中使用Alpha的相同预定层特定值,但是Alpha的不同预定值可以在不同的LeakyReLU激活层712中使用。在此示例中,视频编码器200可能没有必要在比特流中用信号通知Alpha值。在一些示例中,为了基于每个层的PReLU的可训练值(例如,a)的值的统计数据来获得Alpha的最优值,系统(例如,通过视频编码器200、视频解码器300或另一设备或系统)可以使用PReLU激活函数训练网络,直到训练已经收敛。然后,系统可以使用关于每一层的PReLU激活函数的可训练值(例如,a)的统计数据。例如,系统可以将一层的Alpha的最优值确定为等于对应层的PReLU激活函数的可训练值。在另一个示例中,系统可以将一层的Alpha的最优值确定为等于两个或更多个层的PReLU激活函数的两个或更多个可训练值的平均值。
作为另一个示例,基于NN的滤波器(例如,基于CNN的滤波器700)中的Alpha值是可以在将基于NN的滤波器应用于图片时指定的参数。例如,在涉及视频译码的一种可能使用情况下,在编码器侧,视频编码器200决定应该使用什么Alpha值。例如,视频编码器200可以应用具有多个不同的预定Alpha值的基于NN的滤波器并且选择Alpha值中的哪一个产生最佳结果。视频编码器200可通过比较(例如,与绝对差之和等)使用不同Alpha值生成的重构块或图片来确定哪个Alpha值产生最佳结果。此外,视频编码器200可将导出Alpha值所需的信息编码为比特流中的语法元素。视频解码器300重构由视频编码器200选择的Alpha值并执行滤波过程。用于发信号通知Alpha值的方式的示例包括在比特流中用信号通知Alpha值或用信号通知预定义集合内的所选Alpha值的索引。Alpha值的典型值可以是1/4,但其他值也是可能的。
图8是说明可执行本公开的技术的示例视频编码器200的框图。图8是出于解释的目的而提供的,并且不应被认为是对本公开中广泛举例说明和描述的技术的限制。为了解释的目的,本公开描述了根据VVC(ITU-T H.266)和HEVC(ITU-T H.265)的技术的视频编码器200。然而,本公开的技术可由配置为其他视频译码标准的视频编码设备来执行。
在图8的示例中,视频编码器200包括视频数据存储器830、模式选择单元802、残差生成单元804、变换处理单元806、量化单元808、逆量化单元810、逆变换处理单元812、重构单元814、滤波器单元816、解码图片缓冲器(DPB)818和熵编码单元820。视频数据存储器830、模式选择单元802、残差生成单元804、变换处理单元806、量化单元808、逆量化单元810、逆变换处理单元812、重构单元814、滤波器单元816、DPB 818和熵编码单元820中的任何一个或所有可以在一个或多个处理器或处理电路中实现。例如,视频编码器200的单元可以实现为一个或多个电路或逻辑元件作为硬件电路的一部分,或者作为处理器、ASIC或FPGA的一部分。此外,视频编码器200可以包括附加的或可替代的处理器或处理电路以执行这些功能和其他功能。
视频数据存储器830可以存储要由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器830中的视频数据。DPB818可充当参考图片存储器,其存储参考视频数据以供视频编码器200预测后续译码的视频数据中使用。视频数据存储器830和DPB 818可由多种存储器设备中的任一者形成,例如动态随机存储器存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻式RAM(RRAM)或其他类型的存储器设备。视频数据存储器830和DPB 818可以由相同的存储器设备或单独的存储器设备提供。在各种示例中,视频数据存储器830可以与视频编码器200的其他组件一起在片上,如所示,或者相对于那些组件在片外。
在本公开中,对视频数据存储器830的引用不应解释为限于视频编码器200内部的存储器(除非如此具体描述)或视频编码器200外部的存储器(除非如此具体描述)。相反,对视频数据存储器830的引用应当被理解为引用存储器,所述引用存储器存储视频编码器200接收以用于编码的视频数据(例如,要被编码的当前块的视频数据)。图1的存储器106还可以提供来自视频编码器200的各个单元的输出的临时存储装置。
图8的各种单元被说明以帮助理解由视频编码器200执行的操作。这些单元可实施为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能的电路,并预先设定了可以执行的操作。可编程电路是指可以被编程以执行各种任务的电路,并在可以执行的操作中提供灵活的功能。例如,可编程电路可以执行使可编程电路以由软件或固件的指令定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,接收参数或输出参数),但固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程的),并且在一些示例中,一个或多个单元可以是集成电路。
视频编码器200可以包括算术逻辑单元(ALU)、初等函数单元(EFU)、数字电路、模拟电路和/或由可编程电路形成的可编程核。在使用由可编程电路执行的软件执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收和执行的软件的指令(例如,目标代码),或者视频编码器200(未示出)内的另一个存储器可以存储这样的指令。
视频数据存储器830被配置为存储接收到的视频数据。视频编码器200可从视频数据存储器830取回视频数据的图片并将视频数据提供给残差生成单元804和模式选择单元802。视频数据存储器830中的视频数据可以是待编码的原始视频数据。
模式选择单元802包括运动估计单元822、运动补偿单元824和帧内预测单元826。模式选择单元802可以包括附加功能单元以根据其他预测模式执行视频预测。作为示例,模式选择单元802可以包括调色板单元、块内复制单元(其可以是运动估计单元822和/或运动补偿单元824的一部分)、仿射单元、线性模型(LM)单元,等等。
模式选择单元802通常协调多遍编码(multiple encoding passes)以测试编码参数的组合和针对此类组合的所得率失真值。编码参数可以包括将CTU分割成CU、CU的预测模式、CU的残差数据的变换类型、CU的残差数据的量化参数等。模式选择单元802可以最终选择具有比其他测试组合更好的率失真值的编码参数的组合。
视频编码器200可以将从视频数据存储器830取回的图片分割成一系列CTU,并且将一个或多个CTU封装在切片内。模式选择单元802可以按照树结构(例如QTBT结构或上述HEVC的四叉树结构)对图片的CTU进行分割。如上所述,视频编码器200可通过根据树结构分割CTU来形成一个或多个CU。这样的CU通常也可以被称为“视频块”或“块”。
一般而言,模式选择单元802还控制其组件(例如,运动估计单元822、运动补偿单元824和帧内预测单元826)生成当前块(例如,当前CU,或者在HEVC中,PU和TU的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元822可执行运动搜索以识别一个或多个参考图片(例如,存储在DPB 818中的一个或多个先前译码的图片)中的一个或多个紧密匹配的参考块。具体而言,运动估计单元822可以例如根据绝对差和(SAD)、平方差和(SSD)、平均绝对差(MAD)、均方差(MSD)等来计算表示潜在参考块与当前块有多相似的值。运动估计单元822通常可以使用当前块和正在考虑的参考块之间的逐样本差异来执行这些计算。运动估计单元822可识别具有由这些计算产生的最低值的参考块,以指示与当前块最匹配的参考块。
运动估计单元822可形成一个或多个运动向量(MV),其定义参考图片中的参考块相对于当前图片中的当前块的位置的位置。运动估计单元822然后可将运动向量提供给运动补偿单元824。例如,对于单向帧间预测,运动估计单元822可提供单个运动向量,而对于双向帧间预测,运动估计单元822可以提供两个运动向量。运动补偿单元824可以然后使用运动向量生成预测块。例如,运动补偿单元824可以使用运动向量来取回参考块的数据。作为另一示例,如果运动向量具有分数样本精度,则运动补偿单元824可根据一个或多个内插滤波器内插预测块的值。此外,对于双向帧间预测,运动补偿单元824可以取回由相应运动向量识别的两个参考块的数据并组合取回的数据,例如,通过逐样本平均或加权平均。
作为另一个示例,对于帧内预测或帧内预测译码,帧内预测单元826可从邻近当前块的样本生成预测块。例如,对于定向模式,帧内预测单元826通常可以在数学上组合相邻样本的值并且在跨当前块的定义方向上填充这些计算值以产生预测块。作为另一示例,对于DC模式,帧内预测单元826可计算当前块的相邻样本的平均值且生成预测块以包含预测块的每个样本的该所得平均值。
模式选择单元802向残差生成单元804提供预测块。残差生成单元804从视频数据存储器830接收当前块的原始、未编码版本并且从模式选择单元802接收预测块。残差生成单元804计算当前块和预测块之间的逐样本差异。所得的逐样本差异定义了当前块的残差块。在一些示例中,残差生成单元804还可以确定残差块中的样本值之间的差异以使用残差差分脉冲码调制(RDPCM)来生成残差块。在一些示例中,残差生成单元804可以使用一个或多个执行二进制减法的减法器电路来形成。
在模式选择单元802将CU分割成PU的示例中,每个PU可与亮度预测单元及对应的色度预测单元相关联。视频编码器200和视频解码器300可支持具有各种大小的PU。如上所述,CU的大小可指CU的亮度译码块的大小且PU的大小可指PU的亮度预测单元的大小。假设特定CU的大小是2Nx2N,视频编码器200可支持2Nx2N或NxN的PU大小用于帧内预测,以及2Nx2N、2NxN、Nx2N、NxN或类似的对称PU大小用于帧间预测。视频编码器200和视频解码器300还可支持2NxnU、2NxnD、nLx2N和nRx2N的PU大小的不对称分割用于帧间预测。
在模式选择单元802不进一步将CU分割成PU的示例中,每个CU可与亮度译码块及对应的色度译码块相关联。如上,CU的大小可以指CU的亮度译码块的大小。视频编码器200和视频解码器300可支持2Nx2N、2NxN或Nx2N的CU尺寸。
对于其他视频译码技术,例如块内复制模式译码、仿射模式译码和线性模型(LM)模式译码,作为一些示例,模式选择单元802经由与译码技术相关联的相应单元生成正在被编码的当前块的预测块。在一些示例中,例如调色板模式译码,模式选择单元802可以不生成预测块,而是生成指示基于所选调色板重构块的方式的语法元素。在此类模式中,模式选择单元802可将这些语法元素提供给熵编码单元820以进行编码。
如上所述,残差生成单元804接收当前块和对应预测块的视频数据。残差生成单元804然后为当前块生成残差块。为了生成残差块,残差生成单元804计算预测块和当前块之间的逐样本差异。
变换处理单元806对残差块应用一个或多个变换以生成变换系数块(本文称为“变换系数块”)。变换处理单元806可将各种变换应用于残差块以形成变换系数块。例如,变换处理单元806可以将离散余弦变换(DCT)、方向变换、Karhunen-Loeve变换(KLT)或概念上类似的变换应用于残差块。在一些示例中,变换处理单元806可以对残差块执行多个变换,例如,初级变换和次级变换,例如旋转变换。在一些示例中,变换处理单元806不对残差块应用变换。
量化单元808可以量化变换系数块中的变换系数,以产生量化的变换系数块。量化单元808可根据与当前块相关联的量化参数(QP)值来量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元802)可通过调整与CU相关联的QP值来调整应用于与当前块相关联的变换系数块的量化程度。量化可能引入信息损失,并且因此,量化的变换系数可能具有比由变换处理单元806产生的原始变换系数更低的精度。
逆量化单元810和逆变换处理单元812可以分别对量化的变换系数块应用逆量化和逆变换,以从变换系数块重构残差块。重构单元814可以基于重构的残差块和由模式选择单元802生成的预测块来产生对应于当前块的重构块(尽管潜在地具有某种程度的失真)。例如,重构单元814可以将重构残差块的样本添加到来自由模式选择单元802生成的预测块的对应样本以产生重构块。
滤波器单元816可以对重构块执行一个或多个滤波器操作。举例来说,滤波器单元816可执行去块操作以减少沿着CU的边缘的块效应伪影(blockiness artifact)。在一些示例中,可以跳过滤波器单元816的操作。在一些示例中,滤波器单元816可以应用使用LeakyReLU激活函数的基于CNN的滤波器,例如基于CNN的滤波器700。因此,在一些示例中,重构单元814可以重构图片的块,其中该块可以是图片的正方形或矩形区域,并且可以对应于也可以不对应于译码块、预测块等。滤波器单元816可以将基于CNN的滤波器700应用于该块,其中基于CNN的滤波器700使用LeakyReLU激活函数。
视频编码器200将重构块存储在DPB 818中。例如,在不执行滤波器单元816的操作的示例中,重构单元814可以将重构块存储到DPB 818。在执行滤波器单元816的操作的示例中,滤波器单元816可将经滤波的重构块存储到DPB 818。运动估计单元822和运动补偿单元824可从DPB 818取回由重构的(且潜在地滤波的)块形成的参考图片以对随后编码的图片的块进行帧间预测。此外,帧内预测单元826可使用当前图片的DPB 818中的重构块来对当前图片中的其他块进行帧内预测。
通常,熵编码单元820可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元820可以对来自量化单元808的量化的变换系数块进行熵编码。作为另一个示例,熵编码单元820可对来自模式选择单元802的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元820可对语法元素执行一个或多个熵编码操作,语法元素是视频数据的另一个示例,以生成熵编码的数据。例如,熵编码单元820可以对数据执行上下文自适应变量长度译码(CAVLC)操作、CABAC操作、变量到变量(V2V)长度译码操作、基于语法的上下文自适应二进制算术译码(SBAC)操作、概率区间分割熵(PIPE)译码操作、指数-哥伦布编码操作或其他类型的熵编码操作。在一些示例中,熵编码单元820可以在语法元素未被熵编码的旁路模式下操作。
视频编码器200可以输出比特流,该比特流包括重构切片或图片的块所需的熵编码的语法元素。例如,熵编码单元820可以输出比特流。
以上描述的操作是关于块描述的。这样的描述应当被理解为针对亮度译码块和/或色度译码块的操作。如上所述,在一些示例中,亮度译码块和色度译码块是CU的亮度和色度分量。在一些示例中,亮度译码块和色度译码块是PU的亮度分量和色度分量。
在一些示例中,不需要针对色度译码块重复针对亮度译码块执行的操作。作为一个示例,不需要重复识别亮度译码块的运动向量(MV)和参考图片的操作来识别色度块的MV和参考图片。相反,可以缩放用于亮度译码块的MV以确定用于色度块的MV,并且参考图片可以是相同的。作为另一示例,帧内预测过程对于亮度译码块和色度译码块可以是相同的。
视频编码器200表示被配置为编码视频数据的设备的示例,其包括被配置为存储视频数据的存储器,以及在电路中实现并被配置为重构视频数据块并将基于CNN滤波器应用于块的一个或多个处理单元,其中基于CNN的滤波器使用LeakyReLU激活函数。
图9是说明可执行本公开的技术的示例视频解码器300的框图。图9是出于解释的目的而提供的,并不限制本公开中广泛举例说明和描述的技术。为了解释的目的,本公开根据VVC(ITU-TH.266,开发中)和HEVC(ITU-T H.265)的技术描述了视频解码器300。然而,本公开的技术可由配置为其它视频译码标准的视频译码设备来执行。
在图9的示例中,视频解码器300包括译码图片缓冲器(CPB)存储器920、熵解码单元902、预测处理单元904、逆量化单元906、逆变换处理单元908、重构单元910、滤波器单元912和解码图片缓冲器(DPB))914。CPB存储器920、熵解码单元902、预测处理单元904、逆量化单元906、逆变换处理单元908、重构单元910、滤波器单元912和DPB 914中的任何一个或全部可以在一个或多个处理器或处理电路中实现。举例来说,视频解码器300的单元可实现为一个或多个电路或逻辑元件作为硬件电路的一部分,或作为处理器、ASIC或FPGA的一部分。此外,视频解码器300可以包括附加的或可替代的处理器或处理电路以执行这些和其他功能。
预测处理单元904包括运动补偿单元916和帧内预测单元918。预测处理单元904可以包括附加单元以根据其他预测模式执行预测。作为示例,预测处理单元904可包含调色板单元、块内复制单元(其可形成运动补偿单元916的一部分)、仿射单元、线性模型(LM)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。
CPB存储器920可以存储要由视频解码器300的组件解码的视频数据,例如编码的视频比特流。存储在CPB存储器920中的视频数据可以例如从计算机可读介质110(图1)获得。CPB存储器920可以包括存储来自编码的视频比特流的编码的视频数据(例如,语法元素)的CPB。此外,CPB存储器920可存储译码的图片的语法元素以外的视频数据,例如表示来自视频解码器300的各个单元的输出的临时数据。DPB 914通常存储视频解码器300可以输出和/或在解码编码视频比特流的后续数据或图片时使用作为参考视频数据的解码图片。CPB存储器920和DPB 914可以由多种存储器设备中的任何一种形成,例如DRAM,包括SDRAM、MRAM、RRAM或其他类型的存储器设备。CPB存储器920和DPB 914可以由相同的存储器设备或单独的存储器设备提供。在各种示例中,CPB存储器920可以与视频解码器300的其他组件一起在片上,或者相对于那些组件在片外。
附加地或可替代地,在一些示例中,视频解码器300可以从存储器120(图1)中取回译码的视频数据。即,存储器120可以存储数据,如上文与CPB存储器920讨论的那样。同样,当视频解码器300的一些或所有功能以软件实现以由视频解码器300的处理电路执行时,存储器120可以存储将由视频解码器300执行的指令。
说明图9中所示的各种单元以帮助理解由视频解码器300执行的操作。这些单元可实现为固定功能电路、可编程电路或其组合。类似于图8,固定功能电路是指提供特定功能的电路,并预先设定了可以执行的操作。可编程电路是指可以被编程以执行各种任务的电路,并在可以执行的操作中提供灵活的功能。例如,可编程电路可以执行使可编程电路以由软件或固件的指令定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程的),并且在一些示例中,一个或多个单元可以是集成电路。
视频解码器300可以包括ALU、EFU、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收和执行的软件的指令(例如,目标代码)。
熵解码单元902可以从CPB接收编码的视频数据并对视频数据进行熵解码以再现语法元素。预测处理单元904、逆量化单元906、逆变换处理单元908、重构单元910和滤波器单元912可以基于从比特流中提取的语法元素来生成解码的视频数据。在一些示例中,滤波器单元912可以应用使用LeakyReLU激活函数的基于CNN的滤波器。
通常,视频解码器300在逐块的基础上重构图片。视频解码器300可以单独地对每个块执行重构操作(其中当前正在重构(即解码)的块可以被称为“当前块”)。
熵解码单元902可以对定义量化的变换系数块的量化的变换系数以及诸如量化参数(QP)和/或变换模式指示的变换信息的语法元素进行熵解码。逆量化单元906可以使用与量化的变换系数块相关联的QP来确定量化程度,并且同样地,确定逆量化单元906要应用的逆量化程度。逆量化单元906可以例如执行按位左移操作以对量化的变换系数进行逆量化。逆量化单元906可由此形成包括变换系数的变换系数块。
在逆量化单元906形成变换系数块之后,逆变换处理单元908可以对变换系数块应用一个或多个逆变换以生成与当前块相关联的残差块。例如,逆变换处理单元908可以对变换系数块应用逆DCT、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换、逆方向变换或另一逆变换。
此外,预测处理单元904根据由熵解码单元902进行熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元916可以生成预测块。在这种情况下,预测信息语法元素可以指示从中取回参考块的DPB 914中的参考图片,以及识别参考图片中参考块相对于当前图片中的当前块的位置的位置的运动向量。运动补偿单元916通常可以以实质上类似于关于运动补偿单元824(图8)所描述的方式的方式来执行帧间预测过程。
作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元918可根据由预测信息语法元素指示的帧内预测模式来生成预测块。同样,帧内预测单元918通常可以以与关于帧内预测单元826(图8)所描述的方式实质上相似的方式来执行帧内预测过程。帧内预测单元918可从DPB 914取回当前块的相邻样本的数据。
重构单元910可以使用预测块和残差块来重构当前块。例如,重构单元910可以将残差块的样本添加到预测块的对应样本以重构当前块。
滤波器单元912可以对重构块执行一个或多个滤波器操作。例如,滤波器单元912可以执行去块操作以减少沿着重构块的边缘的块效应伪影。不一定在所有示例中都执行滤波器单元912的操作。在一些示例中,滤波器单元912可以应用使用LeakyReLU激活函数的基于CNN的滤波器,例如基于CNN的滤波器700。因此,在一些示例中,重构单元910可以重构图片的块,其中该块可以是图片的正方形或矩形区域并且可以对应于或不对应于译码块、预测块等。滤波器单元912可以将基于CNN的滤波器700应用于该块,其中基于CNN的滤波器700使用LeakyReLU激活函数。
视频解码器300可以将重构块存储在DPB 914中。例如,在不执行滤波器单元912的操作的示例中,重构单元910可以将重构块存储到DPB 914。在滤波器单元912的操作被执行的示例中,滤波器单元912可将经滤波的重构块存储到DPB 914。如上所述,DPB 914可向预测处理单元904提供参考信息,例如用于帧内预测的当前图片和用于后续运动补偿的先前解码图片的样本。此外,视频解码器300可以从DPB 914输出解码的图片(例如,解码的视频),以用于随后在诸如图1的显示设备118的显示设备上呈现。
以此方式,视频解码器300表示视频解码设备的示例,其包含被配置为存储视频数据的存储器以及在电路中实施且被配置为重构视频数据的块的一个或多个处理单元;并对块应用基于CNN的滤波器,其中基于CNN的滤波器使用LeakyReLU激活函数。
图10是说明根据本公开的技术对当前块进行编码的示例方法的流程图。当前块可以包括当前CU。尽管针对视频编码器200(图1和图8)进行了描述,但是应当理解,其他设备可以被配置为执行与图10的方法类似的方法。
在此示例中,视频编码器200最初预测当前块(350)。举例来说,视频编码器200可形成当前块的预测块。视频编码器200然后可以计算当前块的残差块(352)。为了计算残差块,视频编码器200可计算当前块的原始未编码块与预测块之间的差异。视频编码器200然后可以对残差块进行变换并对残差块的变换系数进行量化(354)。接下来,视频编码器200可扫描残差块的量化的变换系数(356)。在扫描期间或扫描之后,视频编码器200可对变换系数进行熵编码(358)。例如,视频编码器200可以使用CAVLC或CABAC对变换系数进行编码。视频编码器200然后可以输出块的熵编码数据(360)。
图11是说明根据本公开的技术的用于解码当前视频数据块的示例方法的流程图。当前块可以包括当前CU。尽管关于视频解码器300(图1和图9)进行了描述,但是应当理解,其他设备可以被配置为执行与图11的方法类似的方法。
视频解码器300可以接收当前块的熵编码的数据,例如熵编码预测信息和对应于当前块的残差块的变换系数的熵编码的数据(370)。视频解码器300可对熵编码的数据进行熵解码以确定当前块的预测信息并再现残差块的变换系数(372)。视频解码器300可预测当前块(374),例如,使用如当前块的预测信息所指示的帧内或帧间预测模式,以计算当前块的预测块。视频解码器300然后可以逆扫描再现的变换系数(376),以创建量化变换系数的块。视频解码器300然后可逆量化变换系数并将逆变换应用于变换系数以产生残差块(378)。视频解码器300可以通过组合预测块和残差块来最终解码当前块(380)。在一些示例中,视频解码器300可以进一步将基于CNN的滤波器应用于经解码的块,其中基于CNN的滤波器使用LeakyReLU激活函数。
图12是说明根据本公开的一种或多种技术的视频译码器(例如,视频编码器200或视频解码器300)的示例操作的流程图。在图12的示例中,视频译码器重构视频数据块(1200)。视频数据块可以是样本的矩形阵列。该块可能对应于或可能不对应于变换块、预测块、译码块、译码树块或在译码过程中使用的块类型。例如,视频译码器(例如,重构单元814(图8)或重构单元910(图9))可以通过将残差数据添加到对应的预测块来重构包括该块的图片。
此外,视频译码器将基于CNN的滤波器(例如,基于CNN的滤波器700)应用于重构的块(1202)。基于CNN的滤波器使用LeakyReLU激活函数。如上所述,LeakyReLU激活函数定义为:
Figure BDA0004140860930000181
其中y是CNN卷积层的输出值,并且Alpha是固定参数。在一些示例中,基于CNN的滤波器包括多个卷积层并且Alpha的值对于每个卷积层是相同的。在一些示例中,基于CNN的滤波器包括多个卷积层,并且Alpha值对于两个或更多个卷积层是不同的。
在视频译码器是视频解码器300的一些示例中,视频解码器300可以基于在包括视频数据的编码表示的比特流中用信号通知的一个或多个语法元素来确定Alpha的值。例如,可以在比特流中用信号通知Alpha的值。换句话说,语法元素可以直接指定Alpha的值。在另一个示例中,在比特流中用信号通知预定义集合中的Alpha索引。在此示例中,视频解码器300可确定预定义集合中的与Alpha的索引相对应的Alpha值。
在视频译码器是视频编码器200的一些示例中,基于CNN的滤波器包括多个卷积层(例如,卷积层710)并且视频编码器200可以确定用于应用于卷积层输出值的LeakyReLU激活函数中的Alpha的单个值。视频编码器200可以在包括视频数据的编码表示的比特流中编码提供视频解码器导出Alpha值所需的信息的一个或多个语法元素。在一些示例中,视频编码器200在比特流中用信号通知预定义集合中的Alpha的索引。在此示例中,视频编码器200可确定预定义集合中的与Alpha的索引相对应的Alpha的值。在其他示例中,视频编码器200可以确定用于应用于多个卷积层(例如,卷积层710)中的两个或更多个不同卷积层的输出值的LeakyReLU激活函数中的Alpha的多个值。在此类示例中,视频编码器200可在包含视频数据的编码表示的比特流中编码提供视频解码器导出Alpha值所需的信息的一个或多个语法元素。
以下是可以根据本公开的一个或多个方面的方面的非限制性列表。
方面1A.一种对视频数据进行译码的方法,该方法包括:重构所述视频数据的块;以及将基于卷积神经网络(CNN)的滤波器应用于所述块,其中所述基于CNN的滤波器使用LeakyReLU激活函数。
方面2A.方面1A的方法,其中所述LeakyReLU激活函数被定义为:
Figure BDA0004140860930000191
其中y是CNN的卷积层的输出值,并且Alpha是固定参数。
方面3A.方面2A的方法,其中所述CNN包括多个卷积层并且Alpha的值对于每个卷积层是相同的。
方面4A.方面2A的方法,其中所述CNN包括多个卷积层并且Alpha值对于两个或更多个卷积层是不同的。
方面5A.方面2A-4A中任一方面的方法,还包括:基于在包括所述视频数据的经编码表示的比特流中用信号通知的一个或多个语法元素来确定Alpha的值。
方面6A.方面5A的方法,其中在所述比特流中用信号通知Alpha的值。
方面7A.方面5A的方法,其中在比特流中用信号通知预定义集合内的Alpha的索引。
方面8A.方面1A-7A中任一项的方法,其中译码包括解码。
方面9A.方面1A-7A中任一项的方法,其中译码包括编码。
方面10A.一种用于对视频数据进行译码的设备,该设备包括一个或多个用于执行方面1A-9A的方法的单元。
方面11A.方面10A的设备,其中所述一个或多个模块包括在电路中实现的一个或多个处理器。
方面12A.方面10A和11A中任一方面的设备,还包括用于存储视频数据的存储器。
方面13A.方面10A-12A中任一方面的设备,还包括被配置为显示经解码视频数据的显示器。
方面14A.方面10A-13A中任一项的设备,其中该设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
方面15A.方面10A-14A中任一方面的设备,其中所述设备包含视频解码器。
方面16A.方面10A-15A中任一方面的设备,其中所述设备包含视频编码器。
方面17A.一种其上存储有指令的计算机可读存储介质,指令在被执行时使一个或多个处理器执行方面1A-9A中的任一方面的方法。
方面1B:一种对视频数据进行编码或解码的方法包括:重构所述视频数据的块;以及将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中所述基于CNN的滤波器使用LeakyReLU激活函数。
方面2B:方面1B的方法,其中所述LeakyReLU激活函数被定义为:
Figure BDA0004140860930000192
其中y是基于CNN的滤波器的CNN卷积层的输出值,Alpha是固定参数。
方面3B:方面2B的方法,其中所述CNN包括多个卷积层并且Alpha的值对于每个卷积层是相同的。
方面4B:方面2B的方法,其中所述CNN包括多个卷积层并且Alpha值对于两个或更多个卷积层是不同的。
方面5B:方面2B的方法,还包括:基于在包括所述视频数据的经编码表示的比特流中用信号通知的一个或多个语法元素来确定Alpha的值。
方面6B:方面5B的方法,其中在所述比特流中用信号通知Alpha的值。
方面7B:方面5B的方法,其中在比特流中用信号通知预定义集合中的Alpha的索引,并且其中确定Alpha的值包括确定预定义集合中的Alpha的索引所对应的Alpha的值。
方面8B:方面2B的方法,其中所述CNN包括多个卷积层并且所述方法还包括:确定用于应用于所述卷积层的输出值的所述LeakyReLU激活函数的Alpha的单个值;以及在包括所述视频数据的编码表示的比特流中编码提供视频解码器导出Alpha的值所需的信息一个或多个语法元素。
方面9B.方面8B的方法,其中所述一个或多个语法元素直接指定Alpha的值。
方面10B.方面8B的方法,其中所述一个或多个语法元素指定预定义集合内的Alpha的索引。
方面11B:方面2B的方法,其中所述CNN包括多个卷积层并且所述方法还包括:确定用于应用于所述多个卷积层中的两个或更多个不同卷积层的输出值的LeakyReLU激活函数的Alpha的多个值;以及在包括所述视频数据的经编码表示的比特流中编码提供视频解码器导出Alpha的值所需的信息的一个或多个语法元素。
方面12B.方面11B的方法,其中所述一个或多个语法元素直接指定Alpha的值。
方面13B.方面11B的方法,其中所述一个或多个语法元素指定预定义集合内的Alpha的索引。
方面14B:方面1B的方法,其中该方法包括解码所述视频数据,解码所述视频数据包括重构所述视频数据的块并将基于所述CNN的滤波器应用于重构的块。
方面15B:方面1B的方法,其中该方法包括对所述视频数据进行编码,并且对所述视频数据进行编码包括重构所述视频数据的块并将所述基于CNN的滤波器应用于重构的块。
方面16B:一种对视频数据进行编码或解码的设备包括:用于存储所述视频数据的存储器;以及在电路中实现的一个或多个处理器,所述一个或多个处理器被配置为:重构所述视频数据的块;以及将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中所述基于CNN的滤波器使用LeakyReLU激活函数。
方面17B:方面16B的设备,其中所述LeakyReLU激活函数被定义为:
Figure BDA0004140860930000201
其中y是基于CNN的滤波器的CNN卷积层的输出值,Alpha是固定参数。
方面18B:方面17B的设备,其中所述CNN包括多个卷积层并且Alpha的值对于每个所述卷积层是相同的。
方面19B:方面17B的设备,其中所述CNN包括多个卷积层,并且Alpha的值对于两个或更多个卷积层是不同的。
方面20B:方面17B的设备,其中所述一个或多个处理器进一步被配置为基于在包括所述视频数据的经编码表示的比特流中用信号通知的一个或多个语法元素来确定Alpha的值。
方面21B:方面20B的设备,其中在所述比特流中用信号通知Alpha的值。
方面22B:方面20B的设备,其中在比特流中用信号通知预定义集合中的Alpha的索引,并且其中确定Alpha的值包括确定预定义集合中的Alpha的索引所对应的Alpha的值。
方面23B:方面17B的设备,其中所述基于CNN的滤波器包含多个卷积层且所述一个或多个处理器进一步被配置为:确定用于应用于所述卷积层的输出值的LeakyReLU激活函数的Alpha的单个值;以及在包括所述视频数据的经编码表示的比特流中编码提供视频解码器导出Alpha的值所需的信息的一个或多个语法元素。
方面24B:方面17B的设备,其中所述CNN包括多个卷积层且所述一个或多个处理器进一步被配置为:确定用于应用于所述多个卷积层中的两个或更多个不同卷积层的输出值的LeakyReLU激活函数的Alpha的多个值;以及在包括所述视频数据的经编码表示的比特流中编码提供视频解码器导出Alpha的值所需的信息的一个或多个语法元素。
方面25B:方面16B的设备,还包括:被配置为显示经解码视频数据的显示器。
方面26B:方面16B的设备,其中所述设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
方面27B:方面16B的设备,其中所述设备包括视频解码器。
方面28B:方面16B的设备,其中该设备包括视频编码器。
方面29B:一种用于对视频数据进行译码的设备包括:用于重构视频数据的块的单元;以及用于将基于卷积神经网络(CNN)的滤波器应用于重构的块的单元,其中所述基于CNN的滤波器使用LeakyReLU激活函数。
方面30B:一种计算机可读存储介质,其上存储有指令,所述指令当被执行时,使一个或多个处理器:重构视频数据的块;以及将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中所述基于CNN的滤波器使用LeakyReLU激活函数。
方面1C:一种对视频数据进行编码或解码的方法包括:重构所述视频数据的块;以及将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中所述基于CNN的滤波器使用LeakyReLU激活函数。
方面2C:方面1C的方法,其中所述LeakyReLU激活函数被定义为:
Figure BDA0004140860930000211
其中y是基于CNN的滤波器的CNN卷积层的输出值,Alpha是固定参数。
方面3C:方面2C的方法,其中所述CNN包括多个卷积层并且Alpha的值对于每个卷积层是相同的。
方面4C:方面2C的方法,其中所述CNN包括多个卷积层并且Alpha值对于两个或更多个卷积层是不同的。
方面5C:方面2C-4C中任一方面的方法,还包括:基于在包括所述视频数据的经编码表示的比特流中用信号通知的一个或多个语法元素来确定Alpha的值。
方面6C:方面5C的方法,其中在所述比特流中用信号通知Alpha的值。
方面7C:方面5C的方法,其中在比特流中用信号通知预定义集合中的Alpha的索引,并且其中确定Alpha的值包括确定预定义集合中的Alpha的索引所对应的Alpha的值。
方面8C:方面2C-3C或5C-7C中任一方面的方法,其中所述CNN包括多个卷积层并且所述方法还包括:确定用于应用于所述卷积层的输出值的所述LeakyReLU激活函数的Alpha的单个值;以及在包括所述视频数据的编码表示的比特流中编码提供视频解码器导出Alpha的值所需的信息一个或多个语法元素。
方面9C.方面8C的方法,其中所述一个或多个语法元素直接指定Alpha的值。
方面10C.方面8C的方法,其中所述一个或多个语法元素指定预定义集合内的Alpha的索引。
方面11C:方面2C或4C-7C中任一项的方法,其中所述CNN包括多个卷积层,并且所述方法还包括:确定用于应用于所述多个卷积层中的两个或更多个不同卷积层的输出值的LeakyReLU激活函数的Alpha的多个值;以及在包括所述视频数据的经编码表示的比特流中编码提供视频解码器导出Alpha的值所需的信息的一个或多个语法元素。
方面12C.方面11C的方法,其中所述一个或多个语法元素直接指定Alpha的值。
方面13C.方面11C的方法,其中所述一个或多个语法元素指定预定义集合内的Alpha的索引。
方面14C:方面1C-13C中任一方面的方法,其中该方法包括解码所述视频数据,解码所述视频数据包括重构所述视频数据的块并将基于所述CNN的滤波器应用于重构的块。
方面15C:方面1B-14C中任一方面的方法,其中该方法包括对所述视频数据进行编码,并且对所述视频数据进行编码包括重构所述视频数据的块并将所述基于CNN的滤波器应用于重构的块。
方面16C:一种对视频数据进行编码或解码的设备包括:用于存储所述视频数据的存储器;以及在电路中实现的一个或多个处理器,所述一个或多个处理器被配置为:重构所述视频数据的块;以及将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中所述基于CNN的滤波器使用LeakyReLU激活函数。
方面17C:方面16C的设备,其中所述LeakyReLU激活函数被定义为:
Figure BDA0004140860930000221
其中y是基于CNN的滤波器的CNN卷积层的输出值,Alpha是固定参数。
方面18C:方面17C的设备,其中所述CNN包括多个卷积层并且Alpha的值对于每个所述卷积层是相同的。
方面19C:方面17C的设备,其中所述CNN包括多个卷积层,并且Alpha的值对于两个或更多个卷积层是不同的。
方面20C:方面17C-19C的设备,其中所述一个或多个处理器进一步被配置为基于在包括所述视频数据的经编码表示的比特流中用信号通知的一个或多个语法元素来确定Alpha的值。
方面21C:方面20C的设备,其中在所述比特流中用信号通知Alpha的值。
方面22C:方面20C的设备,其中在比特流中用信号通知预定义集合中的Alpha的索引,并且其中确定Alpha的值包括确定预定义集合中的Alpha的索引所对应的Alpha的值。
方面23C:方面17C-18C或20C-22C中任一方面的设备,其中所述基于CNN的滤波器包含多个卷积层且所述一个或多个处理器进一步被配置为:确定用于应用于所述卷积层的输出值的LeakyReLU激活函数的Alpha的单个值;以及在包括所述视频数据的经编码表示的比特流中编码提供视频解码器导出Alpha的值所需的信息的一个或多个语法元素。
方面24C:方面17C或18C-22C中任一项的设备,其中所述CNN包括多个卷积层且所述一个或多个处理器进一步被配置为:确定用于应用于所述多个卷积层中的两个或更多个不同卷积层的输出值的LeakyReLU激活函数的Alpha的多个值;以及在包括所述视频数据的经编码表示的比特流中编码提供视频解码器导出Alpha的值所需的信息的一个或多个语法元素。
方面25C:方面16C-24C中任一方面的设备,还包括:被配置为显示经解码视频数据的显示器。
方面26C:方面16C-25C中任一项的设备,其中该设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
方面27C:方面16C-26C中任一方面的设备,其中该设备包含视频解码器。
方面28C:方面16C-27C中任一方面的设备,其中该设备包含视频编码器。
方面29C:一种用于对视频数据进行译码的设备包括:用于重构所述视频数据的块的单元;以及用于将基于卷积神经网络(CNN)的滤波器应用于重构的块的单元,其中所述基于CNN的滤波器使用LeakyReLU激活函数。
方面29C':方面29C的设备,包括用于执行权利要求1C-11C中任一项的方法的单元。
方面30C:一种计算机可读存储介质,其上存储有指令,所述指令当被执行时,使一个或多个处理器:重构视频数据的块;以及将基于卷积神经网络(CNN)的滤波器应用于重构的块,其中所述基于CNN的滤波器使用LeakyReLU激活函数。
方面30C':方面26C的计算机可读存储介质,包括用于执行权利要求1C-15C中任一项的方法的单元。
应当认识到,根据示例,本文描述的任何技术的某些动作或事件可以不同的顺序执行,可以添加、合并或完全省略(例如,并非所有描述的动作或事件对于技术的实践是必要的)。此外,在某些示例中,动作或事件可以并发地执行,例如,通过多线程处理、中断处理或多个处理器,而不是顺序执行。
在一个或多个示例中,所描述的功能可以以硬件、软件、固件或其任意组合来实现。如果以软件实现,则功能可以作为计算机可读介质上的一个或多个指令或代码存储或传输,并由基于硬件的处理单元执行。计算机可读介质可以包括:计算机可读存储介质,其对应于诸如数据存储介质之类的有形介质,或通信介质,包括有助于例如根据通信协议将计算机程序从一个地方传输到另一个地方的任何介质。以此方式,计算机可读介质一般可对应于(1)非暂时性的有形计算机可读存储介质或(2)诸如信号或载波的通信介质。数据存储介质可以是任何可用介质,其可以被一台或多台计算机或一个或多个处理器访问以取回指令、代码和/或数据结构以实现本公开中描述的技术。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、闪存或任何可用于以指令或数据结构的形式存储所需程序代码并可由计算机访问的其他介质。此外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或诸如红外线、无线电和微波等无线技术从网站、服务器或其他远程源传输指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或诸如红外线、无线电和微波等无线技术。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是指向非暂时性、有形存储介质。本文所用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘则通过激光以光学方式再现数据。以上的组合也应包括在计算机可读介质的范围内。
指令可以由一个或多个处理器执行,例如一个或多个DSP、通用微处理器、ASIC、FPGA或其他等同的集成或分立逻辑电路。因此,此处使用的术语“处理器”和“处理电路”可以指代任何前述结构或适合于实现此处描述的技术的任何其他结构。此外,在一些方面,本文描述的功能可在配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。此外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
本公开的技术可以在各种各样的设备或装置中实现,包括无线手持机、集成电路(IC)或一组IC(例如,芯片组)。在本公开中描述了各种组件、模块或单元以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单元来实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中或由互操作硬件单元的集合提供,包括如上所述的一个或多个处理器,连同合适的软件和/或固件。
已经描述了各种示例。这些和其他示例在所附权利要求的范围内。

Claims (30)

1.一种对视频数据进行编码或解码的方法,所述方法包括:
重构所述视频数据的块;以及
将基于卷积神经网络(CNN)的滤波器应用于所重构的块,其中,所述基于CNN的滤波器使用LeakyReLU激活函数。
2.如权利要求1所述的方法,其中,所述LeakyReLU激活函数被定义为:
Figure FDA0004140860920000011
其中,y是所述基于CNN的滤波器的CNN的卷积层的输出值,并且Alpha是固定参数。
3.如权利要求2所述的方法,其中,所述CNN包括多个卷积层并且Alpha的值对于所述卷积层中的每一个是相同的。
4.如权利要求2所述的方法,其中,所述CNN滤波器包括多个卷积层,并且Alpha的值对于所述卷积层中的两个或更多个是不同的。
5.如权利要求2所述的方法,还包括:基于在包括所述视频数据的经编码的表示的比特流中用信号通知的一个或多个语法元素来确定Alpha的值。
6.如权利要求5所述的方法,其中,Alpha的所述值在所述比特流中用信号通知。
7.如权利要求5所述的方法,
其中,预定义集合内的Alpha的索引在所述比特流中用信号通知,并且
其中,确定Alpha的所述值包括确定所述预定义集合中的与Alpha的所述索引相对应的Alpha的所述值。
8.如权利要求2所述的方法,其中,所述CNN包括多个卷积层并且所述方法还包括:
确定用于应用于所述卷积层的输出值的所述LeakyReLU激活函数中的Alpha的单个值;以及
在包括所述视频数据的经编码的表示的比特流中编码提供视频解码器导出Alpha的所述值所需的信息的一个或多个语法元素。
9.如权利要求8所述的方法,其中,所述一个或多个语法元素直接指定Alpha的所述值。
10.如权利要求8所述的方法,其中,所述一个或多个语法元素指定预定义集合内的Alpha的索引。
11.如权利要求2所述的方法,其中,所述CNN包括多个卷积层并且所述方法还包括:
确定用于应用于所述多个卷积层中的两个或更多个不同卷积层的输出值的所述LeakyReLU激活函数中的Alpha的多个值;以及
在包括所述视频数据的经编码的表示的比特流中编码提供视频解码器导出Alpha的所述值所需的信息的一个或多个语法元素。
12.如权利要求11所述的方法,其中,所述一个或多个语法元素直接指定Alpha的所述值。
13.如权利要求11所述的方法,其中,所述一个或多个语法元素指定预定义集合内的Alpha的索引。
14.如权利要求1所述的方法,其中,所述方法包括解码所述视频数据,并且解码所述视频数据包括重构所述视频数据的块并且将所述基于CNN的滤波器应用于所重构的块。
15.如权利要求1所述的方法,其中,所述方法包括对所述视频数据进行编码,并且对所述视频数据进行编码包括重构所述视频数据的块并且将所述基于CNN的滤波器应用于所重构的块。
16.一种对视频数据进行编码或解码的设备,所述设备包括:
用于存储所述视频数据的存储器;以及
在电路中实现的一个或多个处理器,所述一个或多个处理器被配置为:
重构所述视频数据的块;以及
将基于卷积神经网络(CNN)的滤波器应用于所重构的块,其中,所述基于CNN的滤波器使用LeakyReLU激活函数。
17.如权利要求16所述的设备,其中,所述LeakyReLU激活函数被定义为:
Figure FDA0004140860920000021
其中,y是所述基于CNN的滤波器的CNN的卷积层的输出值,并且Alpha是固定参数。
18.如权利要求17所述的设备,其中,所述CNN包括多个卷积层并且Alpha的值对于所述卷积层中的每一个是相同的。
19.如权利要求17所述的设备,其中,所述CNN包括多个卷积层,并且Alpha的值对于所述卷积层中的两个或更多个是不同的。
20.如权利要求17所述的设备,其中,所述一个或多个处理器进一步被配置为基于在包括所述视频数据的经编码的表示的比特流中用信号通知的一个或多个语法元素来确定Alpha的值。
21.如权利要求20所述的设备,其中,Alpha的所述值在所述比特流中用信号通知。
22.如权利要求20所述的设备,
其中,预定义集合内的Alpha的索引在所述比特流中用信号通知,并且
其中,确定Alpha的所述值包括确定所述预定义集合中的与Alpha的所述索引相对应的Alpha的所述值。
23.如权利要求17所述的设备,其中,所述CNN包括多个卷积层并且所述一个或多个处理器进一步被配置为:
确定用于应用于所述卷积层的输出值的所述LeakyReLU激活函数中的Alpha的单个值;以及
在包括所述视频数据的经编码的表示的比特流中编码提供视频解码器导出Alpha的所述值所需的信息的一个或多个语法元素。
24.如权利要求17所述的设备,其中,所述CNN包括多个卷积层并且所述一个或多个处理器进一步被配置为:
确定用于应用于所述多个卷积层中的两个或更多个不同卷积层的输出值的所述LeakyReLU激活函数中的Alpha的多个值;以及
在包括所述视频数据的经编码的表示的比特流中编码提供视频解码器导出Alpha的所述值所需的信息的一个或多个语法元素。
25.如权利要求16所述的设备,还包括:被配置为显示经解码的视频数据的显示器。
26.如权利要求16所述的设备,其中,所述设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
27.如权利要求16所述的设备,其中,所述设备包括视频解码器。
28.如权利要求16所述的设备,其中,所述设备包括视频编码器。
29.一种用于对视频数据进行编码或解码的设备,所述设备包括:
用于重构所述视频数据的块的单元;以及
用于将基于卷积神经网络(CNN)的滤波器应用于所重构的块的单元,其中,所述基于CNN的滤波器使用LeakyReLU激活函数。
30.一种计算机可读存储介质,其上存储有指令,所述指令在被执行时,使一个或多个处理器:
重构视频数据的块;以及
将基于卷积神经网络(CNN)的滤波器应用于所重构的块,其中,所述基于CNN的滤波器使用LeakyReLU激活函数。
CN202180065157.0A 2020-09-30 2021-09-30 用于视频译码的基于神经网络的滤波过程中的激活函数设计 Pending CN116325729A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063085936P 2020-09-30 2020-09-30
US63/085,936 2020-09-30
US17/489,459 2021-09-29
US17/489,459 US11647212B2 (en) 2020-09-30 2021-09-29 Activation function design in neural network-based filtering process for video coding
PCT/US2021/052950 WO2022072684A1 (en) 2020-09-30 2021-09-30 Activation function design in neural network-based filtering process for video coding

Publications (1)

Publication Number Publication Date
CN116325729A true CN116325729A (zh) 2023-06-23

Family

ID=80821961

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180065157.0A Pending CN116325729A (zh) 2020-09-30 2021-09-30 用于视频译码的基于神经网络的滤波过程中的激活函数设计

Country Status (6)

Country Link
US (2) US11647212B2 (zh)
EP (1) EP4222954A1 (zh)
JP (1) JP2023543762A (zh)
KR (1) KR20230078658A (zh)
CN (1) CN116325729A (zh)
WO (1) WO2022072684A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11647212B2 (en) 2020-09-30 2023-05-09 Qualcomm Incorporated Activation function design in neural network-based filtering process for video coding
US20220321919A1 (en) * 2021-03-23 2022-10-06 Sharp Kabushiki Kaisha Systems and methods for signaling neural network-based in-loop filter parameter information in video coding

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11113800B2 (en) * 2017-01-18 2021-09-07 Nvidia Corporation Filtering image data using a neural network
EP3451293A1 (en) 2017-08-28 2019-03-06 Thomson Licensing Method and apparatus for filtering with multi-branch deep learning
US11025907B2 (en) * 2019-02-28 2021-06-01 Google Llc Receptive-field-conforming convolution models for video coding
US10999606B2 (en) * 2019-01-08 2021-05-04 Intel Corporation Method and system of neural network loop filtering for video coding
US20200226451A1 (en) 2019-01-11 2020-07-16 Samsung Electronics Co., Ltd. Method and apparatus with neural network layer contraction
KR102646695B1 (ko) 2019-01-15 2024-03-12 포틀랜드 스테이트 유니버시티 비디오 프레임 보간을 위한 특징 피라미드 워핑
EP3706046A1 (en) 2019-03-04 2020-09-09 InterDigital VC Holdings, Inc. Method and device for picture encoding and decoding
GB2618718B (en) 2019-03-20 2024-03-13 V Nova Int Ltd Low complexity enhancement video coding
KR20200114436A (ko) 2019-03-28 2020-10-07 국방과학연구소 스케일러블 영상 부호화를 수행하는 장치 및 방법
US10909728B1 (en) * 2019-05-01 2021-02-02 Amazon Technologies, Inc. Learned lossy image compression codec
US11216917B2 (en) 2019-05-03 2022-01-04 Amazon Technologies, Inc. Video enhancement using a neural network
US10944996B2 (en) 2019-08-19 2021-03-09 Intel Corporation Visual quality optimized video compression
US11647212B2 (en) 2020-09-30 2023-05-09 Qualcomm Incorporated Activation function design in neural network-based filtering process for video coding

Also Published As

Publication number Publication date
EP4222954A1 (en) 2023-08-09
JP2023543762A (ja) 2023-10-18
US11647212B2 (en) 2023-05-09
US20230012661A1 (en) 2023-01-19
KR20230078658A (ko) 2023-06-02
WO2022072684A1 (en) 2022-04-07
US11778213B2 (en) 2023-10-03
US20220103845A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
CN113853784B (zh) 用于视频译码的多个自适应环路滤波器集合的方法和装置
CN113940069A (zh) 用于视频译码中的低频不可分离变换的变换和最后有效系数位置信令
CN114080802A (zh) 用于视频译码中的变换跳过模式和调色板模式的最小允许量化参数
CN116235494A (zh) 用于视频译码的滤波过程
TW202218422A (zh) 用於在視訊譯碼期間進行濾波的多個神經網路模型
CN114223202A (zh) 低频不可分离变换(lfnst)信令
US20220030232A1 (en) Multiple adaptive loop filter sets
CN113557734A (zh) 视频译码中的系数域块差分脉冲译码调制
CN114424570B (zh) 用于视频编解码的变换单元设计
US20200288130A1 (en) Simplification of sub-block transforms in video coding
CN114080805A (zh) 用于视频译码的自适应环路滤波的非线性扩展
CN116508321A (zh) 视频译码期间基于联合分量神经网络的滤波
CN113597762A (zh) 视频译码中具有非线性自适应环路滤波器的固定滤波器
US11778213B2 (en) Activation function design in neural network-based filtering process for video coding
CN114930821A (zh) 视频编解码中的自适应色彩变换的qp偏移的灵活信令通知
CN116235498A (zh) 去块滤波器参数信令
CN114402599A (zh) 用于视频编解码的高级语法中的子图片的信令号
CN114009045A (zh) 视频译码中的dc帧内模式预测
CN116235495A (zh) 用于视频译码中的跨分量线性模型(cclm)模式的固定比特深度处理
CN114731403A (zh) 基于量化参数的残差编解码选择和低层级信令
CN116210222A (zh) 约束用于以不同比特深度对视频数据进行译码的自适应环路滤波的操作比特深度
CN117413514A (zh) 使用重叠块运动补偿、组合帧间帧内预测和/或亮度映射和色度缩放的视频编解码
CN117426097A (zh) 用于视频译码的滤波器的联合截取操作
CN116250233A (zh) 具有最坏情况复杂度处理的扩展低频不可分离变换(lfnst)设计
CN117561712A (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