CN116325742A - 用于并行译码的双向数据块的联合终止 - Google Patents

用于并行译码的双向数据块的联合终止 Download PDF

Info

Publication number
CN116325742A
CN116325742A CN202180068899.9A CN202180068899A CN116325742A CN 116325742 A CN116325742 A CN 116325742A CN 202180068899 A CN202180068899 A CN 202180068899A CN 116325742 A CN116325742 A CN 116325742A
Authority
CN
China
Prior art keywords
parcel
byte
termination
bits
value
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
CN202180068899.9A
Other languages
English (en)
Inventor
A·赛义德
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 CN116325742A publication Critical patent/CN116325742A/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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/188Methods 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 video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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
    • 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)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本文描述了用于处理视频数据的技术。例如,过程可以包括:获得经编码的视频数据。该过程可以包括:确定用于经编码的视频数据的第一包裹的第一终止字节的值与用于经编码的视频数据的第二包裹的第二终止字节的值之间的值交集。该过程可以进一步包括:确定用于第一包裹的第一终止字节和第二包裹的第二终止字节的联合终止字节。用于联合终止字节的值是基于值交集的。该过程可以包括:生成经熵译码的数据,经译码的数据包括用于第一包裹和第二包裹的联合终止字节。经熵译码的数据可以是使用算术译码或二进制译码来生成的。

Description

用于并行译码的双向数据块的联合终止
背景技术
许多设备和系统允许视频数据被处理和输出以供消费。数字视频数据包括大量数据,以满足消费者和视频提供者的需求。例如,视频数据的消费者期望包括高保真度、分辨率、帧速率等的高质量的视频。结果,为了满足这些需求所需要的大量视频数据为处理和存储视频数据的通信网络和设备带来了负担。
视频译码技术可以用于压缩视频数据。视频译码的目标是将视频数据压缩为使用较低比特率的形式,同时避免或最小化视频质量的降级。随着不断发展的视频服务变得可用,需要具有更好的译码效率的编码技术。
发明内容
描述了用于对图像和/或视频内容进行译码(例如,编码和/或解码)的系统和技术。在一个说明性的示例中,提供了一种处理视频数据的方法。所述方法包括:获得经编码的视频数据;确定用于所述经编码的视频数据的第一包裹的第一终止字节的值与用于所述经编码的视频数据的第二包裹的第二终止字节的值之间的值交集;确定用于所述第一包裹的所述第一终止字节和所述第二包裹的所述第二终止字节的联合终止字节,其中,用于所述联合终止字节的值是基于所述值交集的;以及生成经熵译码的数据,所述经熵译码的数据包括用于所述第一包裹和所述第二包裹的所述联合终止字节。
在另一示例中,提供一种用于处理视频数据的装置,其包括:被配置为存储视频数据的存储器;以及耦合到所述存储器的处理器(例如,在电路中实现)。在一些示例中,一个以上的处理器可以耦合到所述存储器并且可以用于执行所述操作中的一个或多个操作。所述一个或多个处理器被配置为:获得经编码的视频数据;确定用于所述经编码的视频数据的第一包裹的第一终止字节的值与用于所述经编码的视频数据的第二包裹的第二终止字节的值之间的值交集;确定用于所述第一包裹的所述第一终止字节和所述第二包裹的所述第二终止字节的联合终止字节,其中,用于所述联合终止字节的值是基于所述值交集的;以及生成经熵译码的数据,所述经熵译码的数据包括用于所述第一包裹和所述第二包裹的所述联合终止字节。
在另一示例中,提供一种具有被存储在其上的指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时,使得所述一个或多个处理器进行以下操作:获得经编码的视频数据;确定用于所述经编码的视频数据的第一包裹的第一终止字节的值与用于所述经编码的视频数据的第二包裹的第二终止字节的值之间的值交集;确定用于所述第一包裹的所述第一终止字节和所述第二包裹的所述第二终止字节的联合终止字节,其中,用于所述联合终止字节的值是基于所述值交集的;以及生成经熵译码的数据,所述经熵译码的数据包括用于所述第一包裹和所述第二包裹的所述联合终止字节。
在另一示例中,提供一种用于处理视频数据的装置。所述装置包括:用于获得经编码的视频数据的单元;用于确定用于所述经编码的视频数据的第一包裹的第一终止字节的值与用于所述经编码的视频数据的第二包裹的第二终止字节的值之间的值交集的单元;用于确定用于所述第一包裹的所述第一终止字节和所述第二包裹的所述第二终止字节的联合终止字节的单元,其中,用于所述联合终止字节的值是基于所述值交集的;以及用于生成经熵译码的数据的单元,所述经熵译码的数据包括用于所述第一包裹和所述第二包裹的所述联合终止字节。
在一些方面中,所述经熵译码的数据是使用算术译码来生成的。
在一些方面中,用于所述第一终止字节的值包括允许解码的第一范围的终止字节值,其中,用于所述第二终止字节的值包括允许解码的第二范围的终止字节值,并且其中,所述值交集包括在所述第一范围和所述第二范围中的值。
在一些方面中,所述经熵译码的数据是使用二进制译码来生成的。
在一些方面中,用于所述第一终止字节的值包括第一数量的比特,用于所述第二终止字节的值包括第二数量的比特,并且所述值交集包括:在所述第一数量的比特和所述第二数量的比特中的公共值、以及来自所述第一数量的比特的值子集和来自所述第二数量的比特的值子集中的至少一者。在一些情况下,与所述第一终止字节中的所述第一数量的比特的顺序和所述第二终止字节中的所述第二数量的比特的顺序相比,在所述联合终止字节中,所述第一数量的比特的顺序和所述第二数量的比特的顺序不改变。
在一些方面中,生成所述经熵译码的数据包括执行对所述第一包裹和所述第二包裹的并行熵编码。
在一些方面中,所述第一包裹是使用第一编码器来进行编码的,以及所述第一包裹是使用第二编码器来进行编码的。
在一些方面中,上述方法、装置和计算机可读介质包括:将所述第一包裹存储在第一缓冲区中;以及将所述第二包裹存储在第二缓冲区中。
在一些方面中,上述方法、装置和计算机可读介质包括:发送包括所述经熵译码的数据的比特流。
在一些方面中,上述方法、装置和计算机可读介质包括:存储包括所述经熵译码的数据的比特流。
在一些方面中,上述方法、装置和计算机可读介质包括:使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
在一些方面中,上述方法、装置和计算机可读介质包括:以正向顺序来读取所述第一包裹;以及以反向顺序来读取所述第二包裹。
在一些方面中,上述方法、装置和计算机可读介质包括:将所述第二包裹的字节转换为相反顺序。
在一些方面中,所述联合终止字节是用于处理的所述第一包裹和所述第二包裹的最终终止字节。
在一些方面中,所述经编码的视频数据包括视频比特流的一个或多个语法元素。在一些方面中,所述一个或多个语法元素指示定义用于对所述经编码的视频数据进行解码的神经网络的一个或多个参数。在一些方面中,定义所述神经网络的所述一个或多个参数包括所述神经网络的权重和所述神经网络的激活函数中的至少一者。
在另一说明性的示例中,提供一种处理视频数据的方法。所述方法包括:获得经熵译码的数据的第一包裹和经熵译码的数据的第二包裹,所述第一包裹和所述第二包裹共享联合终止字节,其中,用于所述联合终止字节的值是基于用于所述第一包裹的第一终止字节的值与用于所述第二包裹的第二终止字节的值之间的值交集的;以及使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
在另一示例中,提供一种用于处理视频数据的装置,其包括:被配置为存储视频数据的存储器;以及耦合到所述存储器的处理器(例如,在电路中实现)。在一些示例中,一个以上的处理器可以耦合到所述存储器以及可以用于执行所述操作中的一个或多个操作。所述一个或多个处理器被配置为:获得经熵译码的数据的第一包裹和经熵译码的数据的第二包裹,所述第一包裹和所述第二包裹共享联合终止字节,其中,用于所述联合终止字节的值是基于用于所述第一包裹的第一终止字节的值与用于所述第二包裹的第二终止字节的值之间的值交集的;以及使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
在另一示例中,提供一种具有被存储在其上的指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时,使得所述一个或多个处理器进行以下操作:获得经熵译码的数据的第一包裹和经熵译码的数据的第二包裹,所述第一包裹和所述第二包裹共享联合终止字节,其中,用于所述联合终止字节的值是基于用于所述第一包裹的第一终止字节的值与用于所述第二包裹的第二终止字节的值之间的值交集的;以及使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
在另一示例中,提供一种用于处理视频数据的装置。所述装置包括:用于获得经熵译码的数据的第一包裹和经熵译码的数据的第二包裹的单元,所述第一包裹和所述第二包裹共享联合终止字节,其中,用于所述联合终止字节的值是基于用于所述第一包裹的第一终止字节的值与用于所述第二包裹的第二终止字节的值之间的值交集的;以及用于使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码的单元。
在一些方面中,所述经熵译码的数据是使用算术译码来进行编码的。
在一些方面中,用于所述第一终止字节的值包括允许解码的第一范围的终止字节值,用于所述第二终止字节的值包括允许解码的第二范围的终止字节值,并且所述值交集包括在所述第一范围和所述第二范围中的值。
在一些方面中,所述经熵译码的数据是使用二进制译码来生成的。
在一些方面中,用于所述第一终止字节的值包括第一数量的比特,用于所述第二终止字节的值包括第二数量的比特,并且所述值交集包括:在所述第一数量的比特和所述第二数量的比特中的公共值、以及来自所述第一数量的比特的值子集和来自所述第二数量的比特的值子集中的至少一者。
在一些方面中,与所述第一终止字节中的所述第一数量的比特的顺序和所述第二终止字节中的所述第二数量的比特的顺序相比,在所述联合终止字节中,所述第一数量的比特的顺序和所述第二数量的比特的顺序不改变。
在一些方面中,上述方法、装置和计算机可读介质包括:从第一缓冲区获得所述第一包裹;以及从第二缓冲区获得所述第二包裹。
在一些方面中,上述方法、装置和计算机可读介质包括:以正向顺序来读取所述第一包裹;以及以反向顺序来读取所述第二包裹。
在一些方面中,上述方法、装置和计算机可读介质包括:将所述第二包裹的字节转换为相反顺序。
在一些方面中,所述联合终止字节是用于处理的所述第一包裹和所述第二包裹的最终终止字节。
在一些方面中,上述方法、装置和计算机可读介质包括:接收视频比特流,所述视频比特流包括所述第一包裹、所述第二包裹和一个或多个语法元素。在一些方面中,所述一个或多个语法元素指示定义用于对所述经编码的视频数据进行解码的神经网络的一个或多个参数。在一些方面中,定义所述神经网络的所述一个或多个参数包括所述神经网络的权重和所述神经网络的激活函数中的至少一者。
在一些方面中,所述装置包括移动设备(例如,移动电话或所谓的“智能电话”、平板计算机、或其它类型的移动设备)、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、个人计算机、膝上型计算机、视频服务器、电视机(例如,网络连接的电视机)、车辆(或车辆的计算设备)、或其它设备。在一些方面中,所述装置包括用于捕捉视频帧的一个或多个图像的至少一个照相机。例如,所述装置可以包括用于捕捉包括视频帧的一个或多个图像和/或一个或多个视频的一个照相机(例如,RGB照相机)或多个照相机。在一些方面中,所述装置包括用于显示一个或多个图像、视频、通知或其它可显示数据的显示器。在一些方面中,所述装置包括发射机,其被配置为在传输介质上向至少一个设备发送一个或多个视频帧和/或语法数据。在一些方面中,处理器包括神经处理单元(NPU)、中央处理单元(CPU)、图形处理单元(GPU)或其它处理设备或组件。
该发明内容既不旨在标识所要求保护的主题的关键或必要特征,也不旨在单独用于确定所要求保护的主题的范围。通过参照本专利的整个说明书的适当的部分、任何或所有附图以及每个权利要求,应当理解该主题。
在参考以下说明书、权利要求和附图之后,前述内容以及其它特征和实施例将变得更加显而易见。
附图说明
下面参照以下附图来详细地描述本申请的说明性的实施例:
图1示出根据一些示例的片上系统(SOC)的示例实现方式;
图2是示出根据一些示例的编码设备和解码设备的方框图;
图3是示出根据一些示例的系统的示例的示意图,该系统包括可操作以使用基于神经网络的系统来执行图像和/或视频译码(编码和解码)的设备;
图4是示出根据一些示例的用于双向字节打包的数据组织和译码过程的示例的示意图;
图5是示出根据一些示例的扩展双向字节打包以支持并行熵编码和解码的示例的示意图;
图6是以图形方式示出根据一些示例的用于正确的算术译码终止的因素的示意图;
图7A是示出根据一些示例的当在反向流中的字节内以相反顺序写入比特时双向字节打包中的字节终止的示例的示意图,其中使用了字节串接;
图7B是示出根据一些示例的当在反向流中的字节内以相反顺序写入比特时双向字节打包中的字节终止的示例的示意图,其中,如果在所使用的比特位置不存在重叠,则将比特复制到共享终止字节;
图8A是示出根据一些示例的当针对两个流以相同的顺序写入比特时双向字节打包中的字节终止的示例的示意图,其中,使用了字节串接;
图8B是示出根据一些示例的当针对两个流以相同的顺序写入比特时双向字节打包中的字节终止的示例的示意图,其中,如果第一比特值是相同的,则将比特复制到共享终止字节;
图9A是示出根据一些示例的有效算术译码终止字节值(灰色区域)和相等值(虚线)的范围的示例的示意图,其中存在非空交集(虚线的加粗部分);
图9B是示出根据一些示例的有效算术译码终止字节值(灰色区域)和相等值(虚线)的范围的示例的示意图,其中存在空交集;
图10A是示出根据一些示例的由可允许的终止字节集合定义的经算术译码的流的双向字节打包的示例的示意图,其中在集合之间不存在交集;
图10B是示出根据一些示例的由可允许的终止字节集合定义的经算术译码的流的双向字节打包的示例的示意图,其中交集中的一个字节用于共享终止;
图11A和图11B是示出根据一些示例的当存在算术编码进位运算的可能性时如何可以拆分针对终止字节的范围区间的示例的示意图;
图12A和图12B是示出根据一些示例的与图9A和图9B的示例类似、但其中反向流中的比特以相反顺序保存的示例的示意图;
图13是示出根据一些示例的用于处理视频数据的过程的示例的流程图;
图14是示出根据一些示例的用于处理视频数据的过程的另一示例的流程图;
图15A示出根据一些示例的完全连接的神经网络的示例;
图15B示出根据一些示例的局部连接的神经网络的示例;
图15C示出根据一些示例的卷积神经网络的示例;
图15D示出根据一些示例的被设计为从图像中识别视觉特征的深度卷积网络(DCN)的详细示例;
图16是示出根据一些示例的深度卷积网络(DCN)的方框图;
图17示出可以实现本文描述的各种技术的示例计算设备的示例计算设备架构。
具体实施方式
下文提供本公开内容的某些方面和实施例。如对于本领域技术人员将显而易见的,这些方面和实施例中的一些项可以独立地应用,并且它们中的一些项可以相组合地应用。在以下描述中,出于解释的目的,阐述具体细节以便提供对本申请的实施例的透彻的理解。然而,将显而易见的是,各个实施例可以在没有这些具体细节的情况下实施。附图和描述不旨在是限制性的。
随后的描述仅提供示例实施例,以及不旨在限制本公开内容的范围、适用性或配置。确切地说,对示例实施例的随后的描述将向本领域技术人员提供用于实现示例实施例的使能的描述。应当理解的是,在不背离如在所附的权利要求书中阐述的本申请的精神和范围的情况下,可以对元素的功能和排列进行各种改变。
数字视频数据可以包括大量数据,尤其是随着对高质量视频数据的需求持续增长。例如,视频数据的消费者通常期望越来越高质量的视频,具有高保真度、高分辨率、高帧速率等。然而,满足这样的需求所需要的大量视频数据可能给通信网络以及处理和存储视频数据的设备带来显著的负担。
各种技术可以用于对视频数据进行译码。视频译码可以根据特定的视频译码标准来执行或者可以使用一个或多个机器学习系统或算法来执行。示例视频译码标准包括通用视频译码(VVC)、高效率视频译码(HEVC)、改进的视频译码(AVC)、运动图像专家组(MPEG)译码(例如,MPEG-5基本视频译码(EVC)或其它基于MPEG的译码)、开放媒体联盟视频1(AV1)等。视频译码通常使用预测方法(比如帧间预测或帧内预测),所述预测方法利用在视频图像或序列中存在的冗余。视频译码技术的共同目标是将视频数据压缩为使用较低比特率的形式,同时避免或最小化视频质量的降级。随着对视频服务的需求增长以及新的视频服务变得可用,需要具有更好的译码效率、性能和速率控制的译码技术。
视频译码设备实现视频压缩技术以高效地对视频数据进行编码和解码。视频压缩技术可以包括应用不同的预测模式,包括空间预测(例如,帧内预测(intra-frameprediction)或帧内预测(intra-prediction))、时间预测(例如,帧间预测(inter-frameprediction)或帧间预测(inter-prediction))、层间预测(跨视频数据的不同层)、和/或用于减少或去除视频序列中固有的冗余的其它预测技术。视频编码器可以将原始的视频序列的每个图片分割为多个矩形区域,这些矩形区域被称为视频块或译码单元(下文将更详细地进行描述)。这些视频块可以是使用特定的预测模式来进行编码的。
视频块可以以一种或多种方式被划分为一组或多组较小的块。块可以包括译码树块、预测块、变换块和/或其它合适的块。除非另外指定,否则通常对“块”的引用可以指代这样的视频块(例如,如本领域普通技术人员将理解的,译码树块、译码块、预测块、变换块、或其它适当的块或子块)。此外,这些块中的每个块在本文中也可以被互换地称为“单元”(例如,译码树单元(CTU)、译码单元、预测单元(PU)、变换单元(TU)等)。在一些情况下,单元可以指示在比特流中编码的译码逻辑单元,而块可以指示视频帧缓冲区中的过程所针对的一部分。
对于帧间预测模式,视频编码器可以在位于另一时间位置的帧(或图片)(其被称为参考帧或参考图片)中搜索与经编码的块相似的块。视频编码器可以将搜索限制为距要被编码的块一定的空间位移。可以使用包括水平位移分量和垂直位移分量的二维(2D)运动矢量来定位最佳匹配。对于帧内预测模式,视频编码器可以基于来自相同图片内的先前编码的邻近块的数据,使用空间预测技术来形成预测块。
视频编码器可以确定预测误差。例如,可以将预测确定为正被编码的块和预测块中的像素值之间的差。预测误差也可以称为残差。视频编码器还可以使用变换译码(例如,使用离散余弦变换(DCT)的形式、离散正弦变换(DST)的形式或其它合适的变换)来将变换应用于预测误差,以生成变换系数。在变换之后,视频编码器可以对变换系数进行量化。经量化的变换系数和运动矢量可以使用语法元素来表示,并且与控制信息一起形成对视频序列的经译码的表示。在一些情况下,视频编码器可以对语法元素进行熵译码,从而进一步减少用于其表示所需要的比特数量。
视频解码器可以使用以上讨论的语法元素和控制信息来构造用于解码当前帧的预测数据(例如,预测块)。例如,视频解码器可以将预测块和经压缩的预测误差相加。视频解码器可以通过使用经量化的系数对变换基函数进行加权来确定经压缩的预测误差。在经重构的帧与原始帧之间的差被称为重构误差。
算术译码被许多视频压缩标准使用,包括VVC、HEVC、VP9和AV1。这样的广泛的使用至少部分地由于算术译码实现强大的数据建模并且产生非常接近理论限制的压缩。关于将算术译码用于视频译码/压缩的一个问题在于,随着视频分辨率和帧速率持续增加,顺序译码引起了吞吐量瓶颈,这可能将成本增加到接近当前的硬件的限制的点。抵消这样的问题的一个解决方案是通过例如将比特流划分为可以并发地处理的独立数据块来采用并行化。进一步地,正在开发基于机器学习技术的新译码(编码和解码)方法(例如,使用神经网络或其它机器学习工具)以满足译码需求。这样的机器学习技术也可以采用算术译码和/或并行化。虽然将比特流划分为数据块实现对数据的并发处理,但是其可能使压缩严重地降级。例如,当算术译码终止时,需要额外的比特来保证正确的解码,并且在一些情况下用于填充到下一字节边界。
如下文更详细地描述的,本文描述了用于执行算术译码(例如,编码、解码、或者编码和解码两者)的系统、装置、方法(也被称为过程)和计算机可读介质(被统称为“系统和技术”)。本文描述的系统和技术可以显著地减少上述开销和由此产生的压缩损失。在一些情况下,本文描述的系统和技术的各方面是基于以下发现的:利用对于拆分比特流更高效的双向数据打包的形式,有可能联合地优化对各对算术译码比特流的终止,从而导致比传统的终止更高效的结果。下文提供了理论分析和真实译码条件的仿真,并且确认了所提出的系统和技术的有效性。
将关于各图来描述本公开内容的各个方面。图1示出片上系统(SOC)100的示例实现方式,SOC 100可以包括被配置为执行本文描述的功能中的一个或多个功能的中央处理单元(CPU)102或多内核CPU。参数或变量(例如,神经信号和突触权重)、与计算设备(例如,具有权重的神经网络)相关联的系统参数、延迟、频段信息、任务信息以及其它信息可以被存储在与神经处理单元(NPU)108相关联的存储器块中,被存储在与CPU 102相关联的存储器块中,被存储在与图形处理单元(GPU)104相关联的存储器块中,被存储在与数字信号处理器(DSP)106相关联的存储器块中,被存储在存储器块118中,和/或可以分布在多个块中。在CPU 102处执行的指令可以是从与CPU 102相关联的程序存储器加载的,或者可以是从存储器块118加载的。
SOC 100还可以包括为特定功能定制的另外的处理块,诸如GPU 104、DSP 106、连接块110(其可以包括第五代(5G)连接、第四代长期演进(4G LTE)连接、Wi-Fi连接、USB连接、蓝牙连接等)、以及多媒体处理器112(例如,其可以检测和识别手势)。在一种实现方式中,NPU是在CPU 102、DSP 106和/或GPU 104中实现的。SOC 100还可以包括传感器处理器114、图像信号处理器(ISP)116和/或导航模块120(其可以包括全球定位系统)。
SOC 100可以是基于ARM指令集的。在本公开内容的一方面中,加载到CPU 102中的指令可以包括用于在与输入值和滤波器权重的乘法乘积相对应的查找表(LUT)中搜索所存储的乘法结果的代码。加载到CPU 102中的指令还可以包括用于当检测到乘法乘积的查找表命中时在乘法乘积的乘法运算期间禁用乘法器的代码。另外,加载到CPU 102中的指令可以包括用于当检测到乘法乘积的查找表缺失时存储输入值和滤波器权重的计算出的乘法乘积的代码。
SOC 100和/或其组件可以被配置为使用基于标准的视频译码和/或使用机器学习技术来执行视频压缩和/或解压缩(也被称为视频编码和/或解码,统称为视频译码)。关于图2和图3描述了基于标准和基于机器学习的视频译码系统的示例。
图2是示出包括编码设备204和解码设备212(其可以分别根据本文描述的示例来对视频数据进行编码和解码)的系统200的示例的方框图。在一些示例中,编码设备204和/或解码设备212可以包括图1的SOC 100。编码设备204可以是源设备的一部分,并且解码设备212可以是接收设备(也被称为客户端设备)的一部分。在一些示例中,源设备还可以包括类似于解码设备212的解码设备。在一些示例中,接收设备还可以包括类似于编码设备204的编码设备。源设备和/或接收设备可以包括电子设备,诸如移动或固定电话手机(例如,智能电话、蜂窝电话等)、台式计算机、膝上型计算机或笔记本计算机、平板计算机、机顶盒、电视机、照相机、显示设备、数字媒体播放器、视频游戏主控台、互联网协议(IP)照相机、服务器系统中的服务器设备(包括一个或多个服务器设备(例如,视频流服务器系统、或其它合适的服务器系统))、头戴式显示器(HMD)、平视显示器(HUD)、智能眼镜(例如,虚拟现实(VR)眼镜、增强现实(AR)眼镜、或其它智能眼镜)、或任何其它合适的电子设备。
系统200的组件可以包括和/或可以使用电子电路或其它电子硬件来实现,其可以包括SOC 100和/或一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)、神经处理单元(NPU)、和/或其它合适的电路),和/或可以包括和/或使用计算机软件、固件或其任何组合来实现以执行本文描述的各种操作。
虽然系统200被示为包括某些组件,但是本领域普通技术人员将明白的是,系统200可以包括比图2中所示的组件更多或更少的组件。例如,在一些情况下,系统200还可以包括除了存储装置208和存储装置218之外的一个或多个存储器设备(例如,一个或多个随机存取存储器(RAM)组件、只读存储器(ROM)组件、高速缓存存储器组件、缓冲区组件、数据库组件、和/或其它存储器设备)、与一个或多个存储器设备相通信和/或电连接到其的一个或多个处理设备(例如,一个或多个CPU、GPU、NPU、和/或其它处理设备)、用于执行无线通信的一个或多个无线接口(例如,包括用于每个无线接口的一个或多个收发机和基带处理器)、用于在一个或多个硬接线连接上执行通信的一个或多个有线接口(例如,诸如通用串行总线(USB)输入之类的串行接口、照明连接器、和/或其它有线接口)、和/或在图2中未示出的其它组件。
本文描述的译码技术适用于各种多媒体应用中的视频译码,包括流式视频传输(例如,通过互联网)、电视广播或传输、对数字视频的编码以用于存储在数据存储介质上、对被存储在数据存储介质上的数字视频进行解码、或其它应用。在一些示例中,系统200可以支持单向或双向视频传输,以支持诸如视频会议、视频流、视频回放、视频广播、游戏和/或视频电话之类的应用。
在一些示例中,编码设备204(或编码器)可以用于使用视频译码标准或协议来对视频数据进行编码,以生成经编码的视频比特流。视频译码标准的示例包括ITU-T H.261、ISO/IEC MPEG-1视频、ITU-T H.262、或ISO/IEC MPEG-2视频、ITU-T H.263、ISO/IEC MPEG-4视频、ITU-T H.264(也被称为ISO/IEC MPEG-4AVC)(包括其可伸缩视频译码(SVC)和多视图视频译码(MVC)扩展)、高效率视频译码(HEVC)或ITU-T H.265、通用视频译码(VVC)或ITU-T H.266、和/或其它视频译码标准。视频译码标准中的一者或多者具有与视频译码的其它方面相关联的扩展。例如,对HEVC的各种扩展处理多层视频译码,包括范围和屏幕内容译码扩展、3D视频译码(3D-HEVC)和多视图扩展(MV-HEVC)和可伸缩扩展(SHVC)。
可以使用诸如VVC、HEVC、AVC和/或其扩展之类的视频编解码器来执行本文描述的许多实施例。然而,本文描述的技术和系统也可以适用于其它译码标准,诸如MPEG、JPEG(或用于静态图像的其它译码标准)、VP9、AV1、其扩展、或已经可用或尚不可用或开发的其它合适的译码标准(诸如下文描述的基于机器学习的视频译码)。因此,尽管可以参考特定的视频译码标准来描述本文描述的技术和系统,但是本领域的普通技术人员将明白的是,不应当将描述解释为仅适用于该特定的标准。
参考图2,视频源102可以将视频数据提供给编码设备204。视频源202可以是源设备的一部分,或者可以是除了源设备之外的设备的一部分。视频源202可以包括视频捕捉设备(例如,摄像机、照相电话、视频电话等),包含被存储的视频的视频存档、提供视频数据的视频服务器或内容提供商、从视频服务器或内容提供商接收视频的视频馈送接口、用于生成计算机图形视频数据的计算机图形系统、对这样的源的组合、或任何其它合适的视频源。
来自视频源202的视频数据可以包括一个或多个输入图片。图片还可以被称为“帧”。图片或帧是静态图像,其在一些情况下是视频的一部分。在一些示例中,来自视频源202的数据可以是不作为视频的一部分的静态图像。在HEVC、VVC和其它视频译码规范中,视频序列可以包括一系列图片。图片可以包括三个样本阵列,其被表示为SL、SCb和SCr。SL是亮度样本的二维阵列,SCb是Cb色度样本的二维阵列,并且SCr是Cr色度样本的二维阵列。色度样本在本文中也可以被称为“色度(chroma)”样本。在其它情况下,图片可以是单色的,并且可以仅包括亮度样本的阵列。
编码设备204的编码器引擎206(或编码器)对视频数据进行编码以生成经编码的视频比特流。在一些示例中,经编码的视频比特流(或“视频比特流”或“比特流”)是一系列的一个或多个经译码的视频序列。根据HEVC,经译码的视频序列(CVS)包括一系列访问单元(AU),这一系列访问单元从在基本层中具有随机访问点图片并且具有某些属性(例如,RASL标志(例如,NoRaslOutputFlag)等于1)的AU开始,直到在基本层中具有随机访问点图片并且具有某些属性的下一个AU并且不包括该下一个AU。AU包括一个或多个经译码的图片以及与共享相同的输出时间的经译码的图片相对应的控制信息。图片的经译码的切片在比特流级别被封装为数据单元,该数据单元被称为网络抽象层(NAL)单元。例如,HEVC视频比特流可以包括一个或多个CVS,其包括NAL单元。NAL单元中的每个NAL单元具有NAL单元报头。NAL单元报头中的语法元素采用指定的比特,并且因此对于所有种类的系统和传输层(诸如传输流、实时传输(RTP)协议、文件格式以及其它)都是可见的。
在HEVC标准中存在两类NAL单元,包括视频译码层(VCL)NAL单元和非VCL NAL单元。VCL NAL单元包括形成经译码的视频比特流的经译码的图片数据。例如,在VCL NAL单元中存在形成经译码的视频比特流的比特序列。VCL NAL单元可以包括经译码的图片数据的一个切片或切片段(下文描述),并且非VCL NAL单元包括与一个或多个经译码的图片有关的控制信息。在一些情况下,NAL单元可以被称为分组。HEVC AU包括:包含经译码的图片数据的VCL NAL单元、以及与经译码的图片数据相对应的非VCL NAL单元(如果有的话)。除了其它信息之外,非VCL NAL单元还可以包含具有与经编码的视频比特流有关的高级信息的参数集。例如,参数集可以包括视频参数集(VPS)、序列参数集(SPS)和图片参数集(PPS)。在一些情况下,比特流的每个切片或其它部分可以参考单个有效的PPS、SPS和/或VPS,以允许解码设备212访问可以用于对比特流的切片或其它部分进行解码的信息。
NAL单元可以包含形成对视频数据的经译码的表示的比特序列(例如,经编码的视频比特流、比特流的CVS等),诸如对在视频中的图片的经译码的表示。编码器引擎206通过将每个图片分割为多个切片来生成对图片的经译码的表示。一切片是独立于其它切片的,使得可以对该切片中的信息进行译码,而不依赖于来自在相同的图片内的其它切片的数据。切片包括一个或多个切片段,其包括独立的切片段以及(如果存在的话)依赖于先前切片段的一个或多个从属切片段。
在HEVC中,将切片分割为亮度样本和色度样本的译码树块(CTB)。亮度样本的CTB和色度样本的一个或多个CTB连同用于样本的语法一起被称为译码树单元(CTU)。CTU还可以被称为“树块”或“最大译码单元”(LCU)。CTU是用于HEVC编码的基本处理单元。CTU可以被拆分为大小不同的多个译码单元(CU)。CU包含被称为译码块(CB)的亮度和色度样本阵列。
亮度和色度CB可以被进一步拆分为预测块(PB)。PB是亮度分量或色度分量的样本块,其使用相同的运动参数来进行帧间预测或块内复制(IBC)预测(当可用或被启用时)。亮度PB和一个或多个色度PB连同相关联的语法一起形成预测单元(PU)。对于帧间预测,运动参数集合(例如,一个或多个运动矢量、参考索引等)是在用于每个PU的比特流中用信号通知的,以及用于亮度PB和一个或多个色度PB的帧间预测。运动参数也可以被称为运动信息。CB也可以被分割为一个或多个变换块(TB)。TB表示色彩分量的样本的正方形块,其中对其应用了残差变换(例如,在一些情况下,相同的二维变换)以对预测残差信号进行译码。变换单元(TU)表示亮度和色度样本的TB以及相应的语法元素。下文更加详细地描述了变换译码。
CU的大小对应于译码模式的大小并且可以是正方形形状。例如,CU的大小可以是8x 8个样本、16x 16个样本、32x 32个样本、64x 64个样本、或高达对应的CTU的大小的任何其它适当的大小。短语“N x N”在本文中用于指代视频块在垂直和水平维度方面的像素尺寸(例如,8个像素x 8个像素)。块中的像素可以是按行和列来排列的。在一些实施例中,块在水平方向上可以不具有与垂直方向上相同数量的像素。与CU相关联的语法数据可以描述例如将CU分割为一个或多个PU。分割模式可以在CU是经帧内预测模式编码的还是经帧间预测模式编码的之间而不同。PU可以被分割为非正方形形状。与CU相关联的语法数据还可以例如描述根据CTU将CU分割为一个或多个TU。TU可以是正方形或非正方形形状。
根据HEVC,可以使用变换单元(TU)来执行变换。对于不同的CU,TU可以不同。可以基于给定的CU内的PU的大小来设定TU的大小。TU可以具有与PU相同的大小或者小于PU。在一些示例中,可以使用被称为残差四叉树(RQT)的四叉树结构来将与CU相对应的残差样本细分为更小的单元。RQT的叶节点可以对应于TU。与TU相关联的像素差值可以被变换以产生变换系数。可以由编码器引擎206对变换系数进行量化。
一旦视频数据的图片被分割为CU,编码器引擎206就使用预测模式来预测每个PU。从原始视频数据中减去预测单元或预测块以获得残差(下文描述)。对于每个CU,可以使用语法数据在比特流内用信号通知预测模式。预测模式可以包括帧内预测(或图片内预测)或帧间预测(或图片间预测)。帧内预测利用在图片内的空间上相邻的样本之间的相关性。例如,使用帧内预测,每个PU是使用例如DC预测来从相同的图片中的相邻图像数据进行预测的以找到用于PU的平均值,使用平面预测以使平面表面适配PU,使用方向预测来从相邻数据进行推断,或者使用任何其它合适的预测类型。帧间预测使用在图片之间的时间相关性,以便推导出用于图像样本块的运动补偿预测。例如,使用帧间预测,每个PU是使用运动补偿预测来从一个或多个参考图片(按照输出次序在当前图片之前或之后)中的图像数据预测的。例如,可以在CU级别处作出是使用图片间预测还是使用图片内预测来对图片区域进行译码的决定。
如上文所述,在一些情况下,编码器引擎206和解码器引擎216(下文更加详细地描述)可以被配置为根据VVC进行操作。根据VVC,视频译码器(诸如编码器引擎206和/或解码器引擎216)将图片分割为多个译码树单元(CTU)(其中亮度样本的CTB和色度样本的一个或多个CTB连同用于样本的语法一起被称为CTU)。视频译码器可以根据树结构(诸如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构)来分割CTU。QTBT结构去除了多种分割类型(诸如在HEVC的CU、PU和TU之间的区分)的概念。QTBT结构包括两个级别,包括根据四叉树分割而被分割的第一级别、以及根据二叉树分割而被分割的第二级别。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于译码单元(CU)。
在MTT分割结构中,可以使用四叉树分割、二叉树分割以及一种或多种类型的三叉树分割来对块进行分割。三叉树分割是其中块被分为三个子块的分割。在一些示例中,三叉树分割将块划分为三个子块,而不将原始块划分为通过中心。MTT中的分割类型(例如,四叉树、二叉树和三叉树)可以是对称的或不对称的。
在一些示例中,视频译码器可以使用单个QTBT或MTT结构来表示亮度和色度分量中的各者,而在其它示例中,视频译码器可以使用两个或更多个QTBT或MTT结构,诸如用于亮度分量的一个QTBT或MTT结构以及用于两个色度分量的另一QTBT或MTT结构(或者用于相应的色度分量的两个QTBT和/或MTT结构)。
视频译码器可以被配置为使用每HEVC的四叉树分割、QTBT分割、MTT分割、或其它分割结构。出于说明性的目的,本文的描述可以参考QTBT分割。然而,应当理解的是,本公开内容的技术还可以应用于被配置为使用四叉树分割或者还使用其它类型的分割的视频译码器。
如上文所述,图片内预测利用图片内的在空间上相邻的样本之间的相关性。存在多种帧内预测模式(也被称为“帧内模式”)。在一些示例中,亮度块的帧内预测包括35种模式,其包括平面模式、DC模式和33种角度模式(例如,对角线帧内预测模式和与对角线帧内预测模式相邻的角度模式)。如以下表1所示,对帧内预测的35种模式进行索引。在其它示例中,可以定义更多的帧内模式,包括可能尚未由33种角度模式表示的预测角度。在其它示例中,与角度模式相关联的预测角度可以不同于在HEVC中使用的那些预测角度。
帧内预测模式 相关联的名称
0 INTRA_PLANAR
1 INTRA_DC
2..34 INTRA_ANGULAR2..INTRA_ANGULAR34
表1-帧内预测模式和相关联的名称的规范
图片间预测使用在图片之间的时间相关性,以便推导针对图像样本块的运动补偿预测。使用平移运动模型,在先前经解码的图片(参考图片)中块的位置由运动矢量(Δx,Δy)表示,其中Δx指定参考块相对于当前块的位置的水平位移,以及Δy指定参考块相对于当前块的位置的垂直位移。在一些情况下,运动矢量(Δx,Δy)可以是整数样本精确度(也被称为整数精确度),在这种情况下,运动矢量指向参考帧的整数像素网格(或整数像素采样网格)。在一些情况下,运动矢量(Δx,Δy)可以具有分数样本精确度(也被称为分数像素精确度或非整数精确度),以更加准确地捕捉基础对象的运动,而不受限于参考帧的整数像素网格。运动矢量的精确度可以通过运动矢量的量化水平来表达。例如,量化水平可以是整数精确度(例如,1像素)或分数像素精确度(例如,1/4像素、1/2像素或其它像素以下的值)。当对应的运动矢量具有分数样本精确度时,将插值应用于参考图片以推导预测信号。例如,可以对在整数位置处可用的样本进行滤波(例如,使用一个或多个插值滤波器)以估计在分数位置处的值。先前经解码的参考图片由针对参考图片列表的参考索引(refIdx)来指示。运动矢量和参考索引可以被称为运动参数。可以执行两种图片间预测,其包括单向预测和双向预测。
在使用双向预测进行帧间预测的情况下,使用两个运动参数集(Δx0,y0,refIdx0和Δx1,y1,refIdx1)来生成两个运动补偿预测(来自同一参考图片或可能来自不同的参考图片)。例如,在双向预测的情况下,每个预测块使用两个运动补偿预测信号,并且生成B个预测单元。将两个运动补偿预测进行组合以获得最终的运动补偿预测。例如,可以通过进行平均来组合两个运动补偿预测。在另一示例中,可以使用加权预测,在这种情况下,可以将不同的权重应用于每个运动补偿预测。可以在双向预测中使用的参考图片被存储在两个单独的列表中,分别被表示为列表0和列表1。可以在编码器处使用运动估计过程来推导运动参数。
在使用单向预测进行帧间预测的情况下,使用一个运动参数集(Δx0,y0,refIdx0)来从参考图片生成运动补偿预测。例如,在单向预测的情况下,每个预测块最多使用一个运动补偿预测信号,以及生成P个预测单元。
PU可以包括与预测过程相关的数据(例如,运动参数或其它合适的数据)。例如,当PU是使用帧内预测来编码的时,PU可以包括描述用于PU的帧内预测模式的数据。作为另一示例,当PU是使用帧间预测来编码的时,PU可以包括定义用于PU的运动矢量的数据。定义用于PU的运动矢量的数据可以描述例如运动矢量的水平分量(Δx)、运动矢量的垂直分量(Δy)、用于运动矢量的分辨率(例如,整数精度、四分之一像素精度、或八分之一像素精度)、运动矢量所指向的参考图片、参考索引、用于运动矢量的参考图片列表(例如,列表0、列表1或列表C)、或其任何组合。
在使用帧内预测和/或帧间预测执行预测之后,编码设备204可以执行变换和量化。例如,在预测之后,编码器引擎206可以计算与PU相对应的残差值。残差值可以包括在正被译码的当前像素块(PU)与用于预测当前块的预测块(例如,当前块的预测版本)之间的像素差值。例如,在生成预测块(例如,使用帧间预测或帧内预测)之后,编码器引擎206可以通过从当前块中减去由预测单元产生的预测块来生成残差块。残差块包括像素差值集合,其对在当前块的像素值与预测块的像素值之间的差进行量化。在一些示例中,可以用二维块格式(例如,像素值的二维矩阵或阵列)来表示残差块。在这样的示例中,残差块是对像素值的二维表示。
使用块变换来对在执行预测之后可能剩余的任何残差数据进行变换,块变换可以是基于离散余弦变换(DCT)、离散正弦变换(DST)、整数变换、小波变换、其它合适的变换函数、或其任何组合的。在一些情况下,可以将一个或多个块变换(例如,具有大小32x 32、16x16、8x 8、4x 4或其它合适的大小的内核)应用于每个CU中的残差数据。在一些示例中,可以将TU用于由编码器引擎206实现的变换和量化过程。具有一个或多个PU的给定的CU也可以包括一个或多个TU。如下文进一步详细描述的,残差值可以使用块变换而被变换为变换系数,以及可以使用TU进行量化和扫描,以产生用于熵译码的串行化变换系数。
在一些实施例中,在使用CU的PU进行帧内预测或帧间预测译码之后,编码器引擎206可以计算用于CU的TU的残差数据。PU可以包括空间域(或像素域)中的像素数据。如先前所述,残差数据可以对应于在未经编码的图片的像素与对应于PU的预测值之间的像素差值。编码器引擎206可以形成包括用于CU(其包括PU)的残差数据的一个或多个TU,以及可以对TU进行变换以产生用于CU的变换系数。TU可以包括在应用块变换之后在变换域中的系数。
编码器引擎206可以执行对变换系数的量化。量化通过对变换系数进行量化以减少用于表示系数的数据量来提供进一步的压缩。例如,量化可以减小与系数中的一些或所有系数相关联的比特深度。在一个示例中,具有n比特的值的系数可以在量化期间向下舍入为m比特的值,其中n大于m。
一旦执行了量化,则经译码的视频比特流包括经量化的变换系数、预测信息(例如,预测模式、运动矢量、块矢量等)、分割信息以及任何其它合适的数据(诸如其它语法数据)。经译码的视频比特流的不同的元素可以由编码器引擎206进行熵编码。在一些示例中,编码器引擎206可以利用预定义的扫描顺序来扫描经量化的变换系数,以产生可以被熵编码的串行化矢量。在一些示例中,编码器引擎206可以执行自适应扫描。在扫描经量化的变换系数以形成矢量(例如,一维矢量)之后,编码器引擎206可以对该矢量进行熵编码。例如,编码器引擎206可以使用上下文自适应可变长度译码、上下文自适应二进制算术译码、基于语法的上下文自适应二进制算术译码、概率区间分割熵译码或另一合适的熵编码技术。
编码设备204的输出210可以在通信链路220上将构成经编码的视频比特流数据的NAL单元发送给接收设备的解码设备212。解码设备212的输入214可以接收NAL单元。通信链路220可以包括由无线网络、有线网络或有线网络和无线网络的组合提供的信道。无线网络可以包括任何无线接口或无线接口的组合,并且可以包括任何合适的无线网络(例如,互联网或其它广域网、基于分组的网络、WiFiTM、射频(RF)、UWB、WiFi直连、蜂窝、长期演进(LTE)、WiMaxTM等)。有线网络可以包括任何有线接口(例如,光纤、以太网、电力线以太网、同轴电缆以太网、数字信号线(DSL)等)。可以使用各种装置来实现有线和/或无线网络,诸如基站、路由器、接入点、网桥、网关、交换机等。可以根据诸如无线通信协议之类的通信标准来调制经编码的视频比特流数据,并且将其发送给接收设备。
在一些示例中,编码设备204可以将经编码的视频比特流数据存储在存储装置208中。输出210可以从编码器引擎206或从存储装置208取得经编码的视频比特流数据。存储装置208可以包括各种分布式或本地访问的数据存储介质中的任何一种。例如,存储装置208可以包括硬盘驱动器、存储盘、闪速存储器、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它合适的数字存储介质。存储装置208还可以包括用于存储供在帧间预测中使用的参考图片的经解码的图片缓冲区(DPB)。在进一步的示例中,存储装置208可以对应于文件服务器或可以存储由源设备生成的经编码的视频的另一中间存储设备。在这样的情况下,包括解码设备212的接收设备可以经由流式传输或下载来从存储设备访问被存储的视频数据。文件服务器可以是能够存储经编码的视频数据并且将该经编码的视频数据发送给接收设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、FTP服务器、网络附加存储(NAS)设备或本地磁盘驱动器。接收设备可以通过任何标准数据连接(包括互联网连接)来访问经编码的视频数据。访问可以包括适于访问被存储在文件服务器上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或这两者的组合。经编码的视频数据从存储装置208的传输可以是流式传输、下载传输或其组合。
解码设备212的输入214接收经编码的视频比特流数据,以及可以将视频比特流数据提供给解码器引擎216,或者提供给存储装置218以供解码器引擎216稍后使用。例如,存储装置218可以包括用于存储供在帧间预测中使用的参考图片的DPB。包括解码设备212的接收设备可以经由存储装置208来接收要被解码的经编码的视频数据。可以根据诸如无线通信协议之类的通信标准来对经编码的视频数据进行调制,以及将其发送给接收设备。用于发送经编码的视频数据的通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,诸如局域网、广域网或诸如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站、或可以用于促进从源设备到接收设备的通信的任何其它装置。
解码器引擎216可以通过熵解码(例如,使用熵解码器)并且提取构成经编码的视频数据的一个或多个经译码的视频序列的元素,从而对经编码的视频比特流数据进行解码。解码器引擎216可以重新缩放经编码的视频比特流数据并且对其执行逆变换。残差数据被传递到解码器引擎216的预测阶段。解码器引擎216预测像素块(例如,PU)。在一些示例中,将预测与逆变换的输出(残差数据)相加。
视频解码设备212可以将经解码的视频输出到视频目标设备322,视频目标设备322可以包括用于将经解码的视频数据显示给内容的消费者的显示器或其它输出设备。在一些方面中,视频目标设备222可以是包括解码设备212的接收设备的一部分。在一些方面中,视频目标设备222可以是不同于接收设备的单独的设备的一部分。
在一些实施例中,视频编码设备204和/或视频解码设备212可以分别与音频编码设备和音频解码设备整合。视频编码设备204和/或视频解码设备212还可以包括用于实现上文描述的译码技术所必需的其它硬件或软件,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件或其任何组合。视频编码设备204和视频解码设备212可以被整合为在相应的设备中的组合的编码器/解码器(编解码器)的一部分。
在图2中示出的示例系统是可以在本文中使用的一个说明性示例。用于使用本文描述的技术来处理视频数据的技术可以由任何数字视频编码和/或解码设备来执行。尽管一般来说,本公开内容的技术是由视频编码设备或视频解码设备来执行的,但是所述技术还可以由通常被称为“CODEC”的组合的视频编码器-解码器来执行。此外,本公开内容的技术还可以由视频预处理器来执行。源设备和接收设备仅仅是这样的译码设备的示例,其中,源设备生成经译码的视频数据以用于传输给接收设备。在一些示例中,源设备和接收设备可以以基本上对称的方式进行操作,使得这些设备中的每个设备包括视频编码和解码组件。因此,示例系统可以支持在视频设备之间的单向或双向视频传输,例如,以用于视频流式传输、视频回放、视频广播或视频电话。
如上文所述,在一些示例中,SOC 100和/或其组件可以被配置为使用机器学习技术来执行视频压缩和/或解压缩(也被称为视频编码和/或解码,统称为视频译码)。例如,编码设备204(或编码器)可以用于使用具有深度学习架构的机器学习系统(例如,通过利用图1的SOC 100的NPU 108)来对视频数据进行编码。在一些情况下,使用深度学习架构来执行视频压缩和/或解压缩可以提高设备上的视频压缩和/或解压缩的效率。例如,编码设备204可以使用基于机器学习的视频译码技术来更高效地压缩视频,可以将经压缩的视频发送给解码设备212,并且解码设备212可以使用基于机器学习的技术来对经压缩的视频进行解压缩。
神经网络是机器学习系统的示例,并且可以包括输入层、一个或多个隐藏层以及输出层。数据是从输入层的输入节点提供的,处理是由一个或多个隐藏层的隐藏节点执行的,以及输出是通过输出层的输出节点产生的。深度学习网络典型地包括多个隐藏层。神经网络的每个层可以包括特征图或激活图,所述特征图或激活图可以包括人工神经元(或节点)。特征图可以包括滤波器、内核等。节点可以包括用于指示所述层中的一个或多个层的节点的重要性的一个或多个权重。在一些情况下,深度学习网络可以具有一系列的多个隐藏层,其中初期的层是用于确定输入的简单且低级的特性,以及后期的层建立更复杂且抽象的特性的层次结构。
深度学习架构可以学习特征的层次结构。例如,如果利用视觉数据来介绍,则第一层可以学习识别在输入流中的相对简单的特征,比如边缘。在另一示例中,如果利用听觉数据来介绍,则第一层可以学习识别在特定的频率中的频谱功率。采用第一层的输出作为输入的第二层可以学习识别特征的组合,比如用于视觉数据的简单形状或用于听觉数据的声音的组合。例如,较高层可以学习表示在视觉数据中的复杂形状或者在听觉数据中的词语。再高层可以学习识别常见的视觉对象或口头短语。
当应用于具有自然层次结构的问题时,深度学习架构可能表现得尤其好。例如,对机动车辆的分类可以得益于首先学习识别轮子、挡风玻璃和其它特征。这些特征可以在较高层处以不同的方式进行组合,以识别汽车、卡车和飞机。
神经网络可以是利用具有多种连接模式进行设计的。在前馈网络中,信息是从较低层传递到较高层的,其中在给定层中的每个神经元与在较高层中的神经元进行通信。如上文所描述的,可以在前馈网络的连续层中建立层次表示。神经网络也可以具有循环或反馈(也称为自顶向下)连接。在循环连接中,来自在给定层中的神经元的输出可以被传送给在同一层中的另一神经元。循环架构可以有助于识别横跨一个以上的按顺序被递送给神经网络的输入数据块的模式。从在给定层中的神经元到在较低层中的神经元的连接称为反馈(或自顶向下)连接。当对高级概念的识别可以辅助辨别输入的特定的低级特征时,具有许多反馈连接的网络可以是有帮助的。神经网络的各层之间的连接可以是完全连接的或者局部连接的。下文关于图15A-图16描述神经网络架构的各个示例。
图3描绘包括被配置为使用机器学习译码系统310来执行视频编码和解码的设备302的系统300。设备302耦合到照相机307和存储介质314(例如,数据存储设备)。在一些实现方式中,照相机307被配置为向处理器304提供图像数据308(例如,视频数据流),以由机器学习译码系统310进行编码。在一些实现方式中,设备302可以耦合到和/或可以包括多个照相机(例如,双照相机系统、三个照相机或其它数量的照相机)。在一些情况下,设备302可以耦合到麦克风和/或其它输入设备(例如,键盘、鼠标、诸如触摸屏和/或触摸板之类的触摸输入设备、和/或其它输入设备)。在一些示例中,照相机307、存储介质314、麦克风和/或其它输入设备可以是设备302的一部分。
设备302还经由传输介质318(诸如一个或多个无线网络、一个或多个有线网络、或其组合)耦合到第二设备390。例如,传输介质318可以包括由无线网络、有线网络、或者有线网络和无线网络的组合提供的信道。传输介质318可以形成基于分组的网络(诸如局域网、广域网或比如互联网之类的全球网络)的一部分。传输介质318可以包括路由器、交换机、基站或可以用于促进从源设备到接收设备的通信的任何其它装置。无线网络可以包括任何无线接口或无线接口的组合,以及可以包括任何合适的无线网络(例如,互联网或其它广域网、基于分组的网络、WiFiTM、射频(RF)、UWB、WiFi直连、蜂窝、长期演进(LTE)、WiMaxTM等)。有线网络可以包括任何有线接口(例如,光纤、以太网、电力线以太网、基于同轴电缆的以太网、数字信号线(DSL)等)。有线网络和/或无线网络可以是使用各种装置(诸如基站、路由器、接入点、网桥、网关、交换机等)来实现的。经编码的视频比特流数据可以根据通信标准(比如无线通信协议之类的)进行调制,并且被发送给接收设备。
设备302包括耦合到存储器306、第一接口(“I/F 1”)312和第二接口(“I/F 2”)316的一个或多个处理器(本文称为“处理器”)304。处理器304被配置为从照相机307、从存储器306和/或从存储介质314接收图像数据308。处理器304经由第一接口312(例如,经由存储器总线)耦合到存储介质314,并且经由第二接口316(例如,网络接口设备、无线收发机和天线、一个或多个其它网络接口设备、或其组合)耦合到传输介质318。
处理器304包括机器学习译码系统310。机器学习译码系统310包括编码器部分362和解码器部分366。在一些实现方式中,机器学习译码系统310可以包括一个或多个自编码器。编码器部分362被配置为接收输入数据370并且处理输入数据370,以至少部分地基于输入数据370来生成输出数据374。
在一些实现方式中,机器学习译码系统310的编码器部分362被配置为对输入数据370执行有损压缩以生成输出数据374,使得输出数据374具有与输入数据370相比要少的比特。可以对编码器部分362进行训练以对输入数据370(例如,图像或视频帧)进行压缩,而不使用基于任何先前的表示(例如,一个或多个经先前重构的帧)的运动补偿。例如,编码器部分362可以仅使用来自视频帧的视频数据来压缩该视频帧,而不使用经先前重构的帧的任何数据。由编码器部分362处理的视频帧在本文中可以称为经帧内预测的帧(I帧)。在一些示例中,可以使用传统的视频译码技术(例如,根据HEVC、VVC、MPEG-4或其它视频译码标准)来生成I帧。在这样的示例中,处理器304可以包括被配置为执行基于块的帧内预测(比如上文关于HEVC标准所述的帧内预测)的视频译码设备(例如,编码设备),或者与所述视频译码设备耦合。在这样的示例中,处理器304可以不包括机器学习译码系统310。
在一些实现方式中,可以对机器学习译码系统310的编码器部分362进行训练以使用基于先前的表示(例如,一个或多个经先前重构的帧)的运动补偿来压缩输入数据370(例如,视频帧)。例如,编码器部分362可以使用来自视频帧的视频数据并且使用经先前重构的帧的数据来压缩该视频帧。由编码器部分362处理的视频帧在本文中可以称为经帧内预测的帧(P帧)。运动补偿可以用于通过描述来自经先前重构的帧的像素如何移动到在当前帧中的新位置上以及残差信息来确定当前帧的数据。
如图所示,机器学习译码系统310的编码器部分362可以包括神经网络363和量化器364。神经网络363可以包括生成中间数据372的一个或多个卷积神经网络(CNN)、一个或多个完全连接的神经网络、一个或多个门控循环单元(GRU)、一个或多个长短期记忆(LSTM)网络、一个或多个ConvRNN、一个或多个ConvGRU、一个或多个ConvLSTM、一个或多个GAN、其任何组合、和/或其它类型的神经网络架构。中间数据372被输入到量化器364。量化器364可以使用机器学习系统(例如,使用神经网络系统)来实现,或者可以使用基于标准的量化和/或熵译码技术(例如,算术译码)来实现。例如,在一些情况下,编码器部分362可以使用本文描述的神经网络技术来压缩输入数据370,并且可以将中间数据372输出到量化器364以执行基于标准的量化和/或熵译码(例如,算术译码)。
量化器364被配置为对中间数据372执行量化以及在一些情况下执行熵译码,以产生输出数据374。输出数据374可以包括经量化的(并且在一些情况下,经熵译码的)数据。由量化器364执行的量化操作可以导致根据中间数据372生成量化码(或表示由机器学习译码系统310生成的量化码的数据)。量化码(或表示量化码的数据)也可以称为潜码(latentcode)或潜数据(latent)(被表示为z)。应用于潜数据的熵模型在本文中可以称为“先验(prior)”。在一些示例中,量化和/或熵译码操作可以是使用当根据现有的视频译码标准来对视频数据进行编码和/或解码时执行的现有的量化和熵译码操作来执行的。在一些示例中,量化和/或熵译码操作可以由机器学习译码系统310来完成。在一些说明性的示例中,机器学习译码系统310可以使用有监督的训练来进行训练,其中在训练期间,残差数据被用作输入,并且量化码和熵码被用作已知的输出(标签)。
机器学习译码系统310的解码器部分366被配置为(例如,直接地从量化器364和/或从存储介质314)接收输出数据374。解码器部分366可以处理输出数据374,以至少部分地基于输出数据374来生成对输入数据370的表示376。在一些示例中,机器学习译码系统310的解码器部分366包括神经网络368,其可以包括一个或多个CNN、一个或多个完全连接的神经网络、一个或多个GRU、一个或多个长短期记忆(LSTM)网络、一个或多个ConvRNN、一个或多个ConvGRU、一个或多个ConvLSTM、一个或多个GAN、其任何组合、和/或其它类型的神经网络架构。
处理器304被配置为向传输介质318或存储介质314中的至少一者发送输出数据374。例如,输出数据374可以存储在存储介质314,以由解码器部分366稍后取得和解码(或解压缩)以生成对输入数据370的表示376作为经重构的数据。经重构的数据可以用于各种目的,诸如用于回放已被编码/压缩以生成输出数据374的视频数据。在一些实现方式中,输出数据374可以在与解码器部分366匹配的另一解码器设备(例如,在设备302中、在第二设备390、或在另一设备中)处进行解码,以生成对输入数据370的表示376作为经重构的数据。例如,第二设备390可以包括与解码器部分366匹配(或基本上匹配)的解码器,并且输出数据374可以经由传输介质318来发送给第二设备390。第二设备390可以处理输出数据374,以生成对输入数据370的表示376作为经重构的数据。
系统300的组件可以包括电子电路或其它电子硬件,和/或可以使用电子电路或其它电子硬件来实现,所述电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)、和/或其它合适的电子电路),和/或可以包括计算机软件、固件或其任何组合,和/或可以使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。
虽然系统300被示为包括某些组件,但是本领域普通技术人员将明白的是,系统300可以包括与在图3中所示出的组件相比更多或更少的组件。例如,系统300还可以包括输入设备和输出设备(未示出),或者可以是包括输入设备和输出设备的计算设备的一部分。在一些实现方式中,系统300还可以包括以下各项或者可以是包括以下各项的计算设备的一部分:一个或多个存储器设备(例如,一个或多个随机存取存储器(RAM)组件、只读存储器(ROM)组件、高速缓存存储器组件、缓冲区组件、数据库组件、和/或其它存储器设备)、与一个或多个存储器设备相通信和/或电连接到存储器设备的一个或多个处理设备(例如,一个或多个CPU、GPU和/或其它处理设备)、用于执行无线通信的一个或多个无线接口(例如,包括用于每个无线接口的一个或多个收发机和基带处理器)、用于通过一个或多个硬接线连接来执行通信的一个或多个有线接口(例如,比如通用串行总线(USB)输入的串行接口、照明连接器、和/或其它有线接口)、和/或在图3中未示出的其它组件。
在一些实现方式中,系统300可以由计算设备本地实现和/或被包括在计算设备中。例如,计算设备可以包括移动设备、个人计算机、平板计算机、虚拟现实(VR)设备(例如,头戴式显示器(HMD)或其它VR设备)、增强现实(AR)设备(例如,HMD、AR眼镜或其它AR设备)、可穿戴设备、服务器(例如,在软件作为服务(SaaS)系统或其它基于服务器的系统中)、电视机、和/或具有执行本文描述的技术的资源能力的任何其它计算设备。
在一个示例中,机器学习译码系统310可以被并入便携式电子设备中,便携式电子设备包括:存储器306,其耦合到处理器304并且被配置为存储可由处理器304执行的指令,以及无线收发机,其耦合到天线并且耦合到处理器304并且可操作以将输出数据374发送给远程设备。
如上文所述,熵译码是编码(压缩)的最后阶段之一(以及在一些情况下是最后阶段),其定义要被添加到经压缩的数据比特流中的比特的值和数目。基于现代标准的视频编码方法(例如,VVC、HEVC、AV1等)采用自适应算术译码,以实现高质量压缩性能。由自适应算术译码生成的比特流仅可以按顺序来编码和解码。例如,数据元素仅可以通过首先解码所有先前的元素来恢复,因为解码器需要达到在编码器对该元素进行译码时其具有的相同的状态。
可以执行并行熵译码,其中吞吐量要求被划分以由不太复杂的电路处理。为了实现并行熵译码,经压缩的数据被分成经独立编码的比特流段,这些比特流段可以被并发地编码和解码。这样的经独立编码的比特流段在本文中被称为数据包裹(parcel)或包裹。假设包裹可以在没有来自任何其它包裹的信息的情况下解码(该要求是关于解码过程的;对包裹中的数据的解释可能取决于来自另一包裹的信息),并且每个包裹都扩展到整数个字节。
每当存在要被并发地解码的一个以上的比特流时,除了使用经压缩的数据外,还可以提供指示入口点的信息(例如,解码可以开始的字节位置)以用于解码。包括入口点的数据结构在本文中被称为包裹索引。在一些情况下,包括入口点的包裹索引可以被包括在视频数据的报头、参数集(例如,视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS)等)和/或与视频数据相关联的任何其它消息或信令中。
双向字节打包是一种可以用于处理包裹的技术。例如,双向字节打包可以用于减少需要在包裹索引中指定的入口点数量。双向字节打包是基于如下的事实的:在解码开始之前必须知道入口点的位置,但不需要存储终止位置。
图4是示出用于双向字节打包的数据组织和译码过程的示例的示意图。如图所示,来自两个经编码的比特流(包括比特流402和比特流404)的数据首先被保存到存储器缓冲区(包括用于比特流402的存储器缓冲区406和用于比特流404的存储器缓冲区408)中。当编码完成并且对于每个流所需要的最终字节数量(用于比特流402的字节la和用于比特流404的字节lb)已知时,创建具有la+lb个字节的经压缩的数据字节阵列410。正向流(在图4中被表示为“正向”)以传统的递增字节顺序(在图4中从左到右)从经压缩的数据字节阵列410的开头开始复制,而反向流(在图4中被表示为“反向”)以字节位置的相反顺序(在图4中从右到左)从经压缩的数据字节数组410的结尾开始复制。因为解码器知道经压缩的数据字节的数量(la+lb),所以其可以从经压缩的数据字节阵列410的开头和结尾并发地开始解码。
图5是示出扩展双向字节打包方法以支持并行熵编码和解码的示例的示意图。类似于图4的示例,经编码的(或经压缩的)比特流被例如由多个编码器(例如,编码器502、编码器504等)或由单个编码器划分为若干独立包裹(例如,包裹l1、l2、l3至lN)。独立包裹可以被存储在单独的缓冲区中(例如,包裹l1被存储在缓冲区506中)。可以使用双向字节打包来将各对包裹进行组合。例如,双向字节打包可以用于对包裹l1和包裹l2、包裹l3和包裹l4进行组合,以此类推。图5中的经压缩的数据字节阵列510的经压缩的数据排列实现并行熵译码。经压缩的数据被组织成多个双向字节阵列,包括双向字节阵列512、双向字节阵列514至双向字节阵列516。
在图5中还示出了多个解码器(例如,解码器518、解码器520等)。如图所示,正向解码器(FDEC)和反向解码器(BDEC)可以用于每个双向字节阵列。例如,解码器518(其是FDEC)和解码器520(其是BDEC)可以用于对双向字节阵列512进行解码。FDEC和BDEC解码器可以仅在它们读取经压缩的数据字节的顺序上有所不同。经压缩的数据字节阵列510伴随着包裹索引522。包裹索引522是包括对每个包裹中的字节数量的指示(并且因此被表示为“入口点位置”的解码入口点)的数据结构。可以用于高效地对入口点信息进行译码的一种技术(被称为“NBC”方法)是基于如下概念的:具有每个包裹中的字节数量的序列:
Figure BDA0004165958020000161
可以利用近似等于以下项的每包裹的平均比特数量来进行编码:
Figure BDA0004165958020000162
当使用双向字节打包时,需要替代地对以下序列进行编码(为了简单起见,假设N为偶数):
Figure BDA0004165958020000163
对应的平均比特数量为:
Figure BDA0004165958020000164
这意味着双向字节打包可以将由于对包裹索引522进行编码导致的开销近似减半。
算术译码流终止是算术译码的一个方面。由于各种原因,算术译码不同于其它形式的熵译码。例如,算术译码在编码和解码期间保持“范围”状态(半闭合区间),在信息论意义上,该状态对应于分数数量的未决比特。此外,当分数比特的数量达到某个门限时,整数数量的比特被写入输出流中,并且状态被更新以保留与该分数的剩余的比特相对应的信息。在编码完成时,可能有必要“刷新”未决比特,并且添加比特以将未决信息转换为整数数量的输出流比特。为了提高效率并且避免在每次读取字节时检查流结束条件,解码器可以预加载若干字节,这些字节最终包括在当前流的结束之外的一些字节。流终止的目标是保证解码是正确的,而与流终止之外的比特的值无关。
图6是以图形方式示出用于正确的算术译码终止的因素的示意图。在图6中,区间[u,v)表示算术编码器的最终状态。例如,由u和v定义的区间[u,v)表示分数字节数量(例如,34个比特的数据集包括4.2个字节,并且u和v表示0.2个字节)。区间[u,v)内的任何比特值对于终止字节是有效的。为了简化呈现,可以假设使用了具有字节输出(基于字节的重新归一化)的实现,并且u和v是实数,使得:
0≤u<v<2,2-8≤v-u<1 (5)
保证正确解码所需要的额外比特的最小数量等于满足以下条件的指数s的最小值:
Figure BDA0004165958020000171
终止字节的s最高有效比特可以通过以下方式来定义:
b*=n 28-s (7)
以及剩余的8–s个比特的值是任意的(本文被称为“不关心比特”)。
然而,当有可能选择终止字节中的所有比特时,对于满足以下条件的任何终止字节值b,都获得正确解码:
Figure BDA0004165958020000174
存在一些特殊情况,诸如与进位运算相关的情况以及当s>8时需要额外字节的情况。
注意的是:
s≥-log2(v-u), (9)
并且由于v–u<1,所以条件s≥1始终保持不变(始终存在需要被添加到输出流中的至少一个另外的比特)。
针对每次终止引起的开销是不同的,并且等于s+log2(v-u)。可以根据译码仿真来计算平均值。对于高精度实现方式,平均值可以被度量为等于:
Figure BDA0004165958020000172
如上文所述,本文描述了可以减少这样的开销和由此产生的压缩损失的系统和技术。例如,所述系统和技术解决了在对包裹的编码完成时发生的比特开销。进一步地,文件和数据流格式要求将比特分组为8位字节,在这种情况下,除了与包裹索引和译码终止相关联的开销之外,还存在由字节边界定义的另外的开销。在单向字节打包的情况下,每数据包裹的平均开销(例如,基于未使用的比特)为(此处,不考虑用于正确地终止算术编码所需要的另外的比特;必须将这样的另外的比特加上该值以获得每数据包裹的总平均开销):
Figure BDA0004165958020000173
存在与双向字节打包相关联的两种选择。第一种选择是将字节串接,并且每包裹具有相同的平均开销。图7A是示出将字节串接的示例的示意图。例如,如图7A所示,第一终止字节702包括值11011,并且第二终止字节704包括值0010。利用“x”标识的比特被称为“不关心”比特。在一个说明性的示例中,视频数据可以利用37个比特来译码。一字节包括8个比特。在利用37个比特译码的视频的说明性的示例中,将存在4个字节(包括32个总比特)和剩余的5个比特。剩余的5个比特和3个“不关心”比特可以被包括在一字节中(例如,被包括在图7A的第一终止字节702中的比特值11011和“xxx”比特)。编码器和/或解码器可以(并且在一些情况下必须)写入和/或读取所有五个8比特字节,包括最后一个包括“不关心”比特的字节,但是解码器将解析比特仅到“不关心”比特,并且出于该原因,编码器可以将这些比特设置为任何值。如通过比特流706所示,将第一终止字节702与第二终止字节704串接。
第二种选择是还在每个字节内以相反顺序对反向流中的比特进行编码,使得在所使用的比特的模式不重叠时可以使用单个共享终止字节(也被称为联合终止字节)。这与图7A的示例(其中在比特流706中使用两个字节)形成对比。图7B是示出使用共享终止字节716的示例的示意图。例如,如图7B所示,共享终止字节716包括来自第一终止字节712的比特0和1、来自第二终止字节714的比特1、1和1以及三个不关心比特。因为存在来自第一终止字节712和第二终止字节714的总共5个比特(少于8比特),所以这些比特可以被组合为共享终止字节716。
当使用第二选项时(例如,如图7B所示),共享的终止字节的分数为:
Figure BDA0004165958020000181
并且每包裹的平均开销被减少为:
Figure BDA0004165958020000182
本文描述的系统和技术提出了上述问题的新解决方案,并且在一些情况下考虑了针对大规模并行化的应用(当终止开销很重要时)和针对至少两种情况的应用。在第一种情况下,当对“原始”比特进行编码时,在字节内以相反顺序写入比特可能相对容易,但是这不总是方便的。例如,在算术译码的情况下,比特的顺序来自算术运算,并且因此,对于反向流,每个字节必须在写入之前和在读取之后将比特反转。在第二种情况下,如下文解释的,算术译码的正确的终止不是唯一的。在单向字节打包的情况下,在许多正确的选项之间进行选择没有任何优势。然而,如下文所述,在双向字节打包的情况下,选择的子集允许共享终止字节,并且因此减少平均开销。
在一些情况下,本文描述的系统和技术可以应用于联合二进制译码终止。例如,当在正向流和反向流中使用用于在字节内填充比特的相同的约定时,可以使用共享终止字节的概念。图8A是示出使用串接的示例的示意图,以及图8B是示出使用本文描述的技术来使用共享终止字节的示例的示意图。例如,如果用于两个流(例如,用于两个流的两个终止字节)的比特位置具有相同的比特值,并且所得到的共享终止字节不改变正向流和反向流的终止字节的比特的顺序,则可以共享字节值。在一些情况下,编码器可以基于确定在第一包裹的第一个终止字节(用于正向流)中使用的比特位置和在第二包裹的第二终止字节(用于反向流)中使用的比特位置具有相同的(或公共的)比特值并且所得到的共享终止字节不改变第一终止字节和第二终止字节的比特顺序,来确定可以使用共享终止字节。在一些示例中,编码器可以通过确定第一终止字节和第二终止字节的值的交集来确定第一终止字节中的比特位置具有与第二终止字节中的比特位置共同的值。编码器可以在共享终止字节中包括公共比特值(例如,发现其是相交的),之后跟随着第一和第二终止字节的其它值。
在图8A的示例中,在正向流的第一终止字节802和反向流的第二终止字节804两者中使用了三个比特位置,包括前三个比特位置的值(值“101”)。然而,如果使用了共享终止字节,则在共享终止字节中所得到的比特将为“101100”,这改变了反向流的第二终止字节804(其具有值“10100”)中的比特的顺序。必须保持每个终止字节中的比特的顺序,使得解码器可以执行正确的解码。
在图8B中,在正向流的第一终止字节812和反向流的第二终止字节814两者中使用三个比特位置,包括前三个比特位置的值(值“100”)。因为第一终止字节812和第二终止字节814两者具有等于“100”的前三个比特值,所以如果复制了所有占用的位置中的比特值并且保持(或不改变)终止字节812和814中的比特的顺序,则可以共享(在共享终止字节816中)终止字节。在图8B的示例中存在这样的情况。共享终止字节816的第一组比特818(具有值“100”)包括来自第一终止字节812和第二终止字节814的三个公共比特(前三个比特)。下一组比特820(具有值“1011”)包括来自第二终止字节814的相对于第一终止字节812唯一(非公共)的比特。共享终止字节816的最后一个比特是“不关心”比特(由“x”表示)。如图所示,在共享终止字节816中保持了来自正向流的终止字节812中的比特(“100”)和来自反向流的终止字节814中的比特(“1001011”)的顺序。
解码器知道用于(正向流的)终止字节812的比特在共享终止字节816中位于何处,以及知道用于(反向流的)终止字节814的比特在共享终止字节816位于何处。例如,解码器根据正在读取的数据以及其解释来处理比特。在一个说明性的示例中,解码器可以以其将确切地读取1024个值的方式来定义,并且根据这些值,利用不同数量的比特来对每个值进行熵译码(例如,值0是使用2个比特来译码,值+1、-1是利用4比特来译码,等等)。由于解码器必须知道针对每个值使用了多少比特,因此在其对编号为1024的值解码之后,解码器知道其已经到达特定流的结尾(例如,正向流的结尾并且因此终止字节812的结尾,反向流的结尾并且因此终止字节814的结尾,等等)。继续这样的示例,可以存在1024个值的两个阵列,它们是以相同的方式进行独立译码的,并且使用双向打包来放在一起。每个流的解码器可以解码其自己的1024个值的集合,并且可以顺序地处理比特。当解码器已经解码1024个值时,每个解码器将结束。在一些情况下,解码器事先不知道要读取多少比特,但是它们必须解码的数据元素的数量是明确定义的,在这种情况下,解码器可以继续从输入流读取比特,直到它们知道其必须停止为止。
在图8B中所示的技术取决于多组随机比特值相等的事件。这种巧合对于其中“不关心”比特(或“浪费比特”)的数量最大的情况是最常见的。例如,如果在每个流中仅存在一个另外的比特,则在50%的情况下,可以共享终止字节。这可以意味着,针对这些情况来说不是总是具有14个未被使用的比特,而是在一半的情况下,可以存在7个未被使用的比特,平均10.5个未被使用的比特。可以共享的终止字节的确切分数可以如下所示:
Figure BDA0004165958020000191
并且每包裹的平均开销可以被计算为:
Figure BDA0004165958020000192
在一些情况下,本文描述的系统和技术可以应用于联合算术译码终止(具有相同的比特顺序)。例如,如果使用上面的等式(7)执行算术译码的终止,则直接使用关于等式(11)–(13)和图7A-图7B所描述的技术和/或关于图8A-图8B所描述的技术,并且基于“不关心”比特的概念来使用共享终止字节。
然而,如上文关于等式(5)–(10)和图6所描述的,可以根据等式(8)来自由地选择终止字节。对于单向字节打包,选择特定值可能没有优势。在双向字节打包的情况下,本文描述的系统和技术可以通过选择可以减少平均开销的值来利用选择终止字节的自由度。图9A和图9B提供两个示例,其示出这种概念。
在图9A中,灰色区域表示用于正向流和反向流的两个集合或范围F和B(灰色区域920表示集合F,并且灰色区域922表示集合B),其具有允许正确解码的终止字节值的范围,如在等式(8)中所定义的(其定义关于bmin和bmax的范围)。集合F和B可以被如下定义:
Figure BDA0004165958020000193
图9A和图9B中的虚线925表示在正向流(在图9A和图9B的x轴上表示)和反向流(在y轴上表示)两者中使用相同的终止字节值。在图9A的示例中,在集合F和B之间存在交集(集合F和B的交集不是空的),并且该交集中的所有字节值(被示为沿着虚线的粗体实线段926)可以用于共享终止字节。在图9B的示例中,集合F和B之间的交集是空的(因为虚线925没有同时通过集合F和B),这意味着不能将共享终止字节共享。
可以如下确定对范围交集的计算:
Figure BDA0004165958020000201
其中∩表示交集运算。图10A和图10B是示出基于在图9A和图9B中示出的概念的终止字节选择过程的示意图。图10A示出在集合F和B之间不存在交集的示例。在图10B中,编码器可以基于关于在第一包裹(图10B的正向流)的第一终止字节1012的比特值与第二包裹(图10B的反向流)的第二终止字节1014之间存在交集的确定来确定可以使用共享终止字节1016。例如,可以通过确定第一终止字节1012的值与第二终止字节1014的值之间的值交集来计算用于共享终止字节1016的值。共享终止字节1016在图10B中被表示为字节c,并且包括相交的集合或范围F’和B’(由图9A中的段926表示)内的所有值,在图10B中如下表示:
字节c∈F′∩B′。
因此,可以被包括在共享终止字节1016中的值包括来自第一终止字节1012和第二终止字节1014的相交值。
通过最大化对共享终止字节的使用(例如,使用关于图8A-图10B描述的技术),本文描述的系统和技术可以减少比特流的开销和压缩损失。例如,经编码的比特流将包括较少的字节,从而导致比特流中的开销减少。这样的解决方案可以导致并行熵译码(其中许多正向和反向流被包括在比特流中(例如,诸如图5所示,包括双向字节阵列512、双向字节阵列514至双向字节阵列516))中的大开销减少。
注意的是,在图7A、图7B、图8A和图8B中示出的示例中,唯一考虑的因素是比特值。在关于算术译码的图10A和图10B的示例中,存在有效终止字节集合的更一般的概念。例如,如图10A和图10B所示,存在记法a∈F′,b∈B′,因为在等式(16)中定义的范围可以具有大于256的
Figure BDA0004165958020000202
和/>
Figure BDA0004165958020000203
这种情况发生是因为在算术译码加法中(包括在终止期间)可能发生进位。因此,这些集合被定义为:
Figure BDA0004165958020000204
并且在终止期间,可能有必要识别与进位相对应的终止字节值。图11A和图11B示出发生这种情况的示例。在图11A和图11B中可以观察到,对交集的确定稍微较复杂(例如,与图9A和图9B的图示相比),因为其需要考虑四种可能的条件(即,针对正向流和反向流的进位或不进位),这意味着等式(17)必须针对每种具体情况进行修改。
根据仿真结果,可能需要在仅24.6%的终止中针对每个流考虑这样的进位情况,并且在5.5%的终止中发生进位。
在一些情况下,本文描述的系统和技术可以适用于联合算术译码终止(具有不同的比特顺序)。例如,如果使用函数R(n)将由反向流中的算术译码生成的字节转换为相反比特顺序,则在图10A和图10B中所示的有效终止字节集合通过以下等式来定义:
Figure BDA0004165958020000205
图12A和图12B示出使用与图9A和图9B中的示例相同的终止范围、基于相反的比特顺序的新集合。可以观察到的是,在实践中,反向流的字节中的比特的反转将有效终止字节的值“扩展”在区间[0,255]中,从而增加了有效交集的出现。这在下面描述的仿真结果中得到了证实。在一些情况下,当函数R(n)是字节值的随机生成的排列时,可以获得相同的结果。
在一些示例中,本文描述的用于确定共享(或联合)终止字节的系统和技术可以用于使用传统的基于标准的译码和/或使用基于机器学习的译码对用于视频译码的语法元素(例如,经编码的视频比特流中的语法元素)进行编码。例如,可以确定联合终止字节,以用于用信号通知比特流中的语法元素的比特。
现在讨论仿真结果。在具有32比特精度的算术译码的实现方式中,使用来自23个符号的字母表的随机数据以及等于2.61比特/符号的熵,测试了本文描述的双向字节打包和终止技术。平均值是在对225(3300万)个包裹进行译码之后测量的。
下面的表I示出仿真结果。从结果可以观察到,使用本文描述的系统和技术在正向比特流和反向比特流中执行算术译码(AC)的联合终止显著地增加了可以共享的终止字节的比率,并且因此减少了每包裹的平均开销。
Figure BDA0004165958020000211
表I–从仿真测量的共享终止字节的平均比率和平均终止开销
下面的表II示出用于对包裹索引进行译码的双向字节打包、联合终止和高效的NBC方法(关于等式(1)–(4)所描述的)的总体优势。相对开销是平均开销比特数量除以包裹中的数据比特数量。
Figure BDA0004165958020000212
表II–使用在参考文献[5]中描述的索引译码方法的包裹索引译码加上包裹终止的平均包裹开销、以及来自表I的终止开销结果
从表I和表II中的仿真结果可以观察到,在将单向字节打包以及通用译码(例如指数-Golomb)一起使用的传统的方法中,对于小型包裹大小,定义包裹索引译码加上包裹终止的开销的比特数量是相当大的,并且以每包裹的平均字节数量的对数的两倍增长。
相比之下,使用本文描述的系统和技术,用于具有少量字节的包裹的开销被减少了显著的比率,并且开销比特数量以每包裹平均字节数量的对数的一半增长。实际上,以上仿真结果表明,使用本文描述的系统和技术,并行化的范围可以被扩展为用于熵译码,从而减少用于实现高数据吞吐量的成本,而不损害压缩效率。
图13是示出使用本文描述的联合终止技术来处理视频的过程1300的示例的流程图。在方框1302处,过程1300包括:获得经编码的视频数据。在一些情况下,经编码的视频数据可以包括已经使用基于机器学习的视频译码系统(例如,其中视频帧是使用一个或多个神经网络来译码的)和/或其它视频译码技术、根据特定的视频译码标准(例如,HEVC、VVC、AVC、EVC等)而编码的视频数据。当在方框1302处获得时,经编码的视频数据不是熵译码的。在方框1304处,过程1300包括:确定用于经编码的视频数据的第一包裹的第一终止字节的值与用于经编码的视频数据的第二包裹的第二终止字节的值之间的值交集。参考图9A作为说明性的示例,沿着虚线的粗体实线段926指示在反向流的终止字节与正向流的终止字节之间的值交集。
在方框1306处,过程1300包括:确定用于第一包裹的第一终止字节和第二包裹的第二终止字节的联合(或共享)终止字节,其中,用于联合终止字节的值是基于值交集的。联合终止字节可以是用于处理的第一包裹和第二包裹的最终终止字节。例如,参考图10B作为说明性的示例,共享(或联合)终止字节1016是正向流和反向流的最终终止字节。
在方框1308处,过程1300包括:生成经熵译码的数据,其包括用于第一包裹和第二包裹的联合终止字节。在一些示例中,经熵译码的数据是使用算术译码来生成的。例如,在一些情况下,用于第一终止字节的值包括允许解码的第一范围的终止字节值,并且用于第二终止字节的值包括允许解码的第二范围的终止字节值。在这种情况下,在方框1304处确定的值交集包括在第一范围和第二范围内的值。例如,参考图10B作为说明性的示例,可以将交集确定为范围F′与范围或集合B′之间的交集,在这种情况下,可以将联合终止字节确定为字节c∈F′∩B′,如上文所述。
在一些示例中,经熵译码的数据是使用二进制译码来生成的。在一些情况下,用于第一终止字节的值包括第一数量的比特,并且用于第二终止字节的值包括第二数量的比特。在这样的情况下,在方框1304处确定的值交集包括在第一数量的比特和第二数量的比特中的公共值、以及来自第一数量的比特的值子集和来自第二数量的比特的值子集中的至少一者。在一些示例中,与第一终止字节中的第一数量的比特的顺序和第二终止字节中的第二数量的比特的顺序相比,在联合终止字节中第一数量的比特的顺序和第二数量的比特的顺序不改变。例如,参考图8B作为说明性的示例,值“100”对于第一终止字节812和第二终止字节814两者是公共的。公共比特“100”被包括在联合或共享终止字节816的第一组比特818(具有值“100”)中。共享终止字节816的下一组比特820(具有值“1011”)包括来自第二终止字节814的相对于第一终止字节812唯一(非公共)的比特。共享终止字节816的最终比特是“不关心”比特(由“x”表示)。如图所示,在共享终止字节816中,来自正向流的终止字节812中的比特(“100”)和来自反向流的终止字节814中的比特(“1001011”)的顺序不改变。
在一些示例中,过程1300可以通过对第一包裹和第二包裹执行并行熵编码来生成经熵译码的数据。例如,可以使用第一编码器来对第一包裹进行编码,并且可以使用第二编码器来对第二包裹进行编码。参考图5作为说明性的示例,可以由编码器502对第一包裹进行编码(例如,以生成经熵译码的数据的包裹l1),并且可以由编码器504对第二包裹进行编码(例如,以生成经熵译码的数据的包裹l2)。
在一些示例中,过程1300包括:将第一包裹存储在第一缓冲区中以及将第二包裹存储在第二缓冲区中。参考图5作为说明性的示例,可以将经熵译码的数据的第一包裹(例如,由编码器502编码的包裹l1)存储在缓冲区506中。
在一些示例中,过程1300可以包括:发送包括经熵译码的数据的比特流(例如,使用图2的编码设备204的发射机)。在一些示例中,过程1300可以包括:存储包括经熵译码的数据的比特流(例如,存储在图2的编码设备204的存储装置208中)。
在一些示例中,过程1300可以包括:使用用于第一包裹和第二包裹的联合终止字节来执行对第一包裹和第二包裹的并行熵解码。可以使用上述技术来执行并行熵解码。例如,过程1300可以包括:以正向顺序读取第一包裹以及以反向顺序读取第二包裹。在一些情况下,过程1300可以包括将第二包裹的字节转换为相反顺序。在一些情况下,一旦数据被熵解码,就可以执行其它解码操作(例如,通过执行帧内预测、帧间预测等)。
在一些情况下,经编码的视频数据包括视频比特流的一个或多个语法元素。在一些方面中,一个或多个语法元素指示定义用于对经编码的视频数据进行解码的神经网络的一个或多个参数。例如,定义神经网络的一个或多个参数可以包括神经网络的权重(例如,如下所述,使用反向传播来训练)、神经网络的一个或多个激活函数和/或神经网络的其它参数。
图14是示出使用本文描述的联合终止技术来处理视频的过程1400的另一示例的流程图。在方框1402处,过程1400包括:获得经熵译码的数据的第一包裹和经熵译码的数据的第二包裹。在一些示例中,过程1400包括:从第一缓冲区获得第一包裹以及从第二缓冲区获得第二包裹。参考图5作为说明性的示例,可以从缓冲区506获得经熵译码的数据的第一包裹(例如,由编码器502编码的包裹l1)。在一些示例中,经熵译码的数据包括视频数据。在一些示例中,经熵译码的数据包括图像数据。
第一包裹和第二包裹共享联合(或共享)终止字节。用于联合终止字节的值是基于用于第一包裹的第一终止字节的值与第二包裹的第二终止字节的值之间的值交集的。参考图9A作为说明性示例,沿着虚线的粗体实线段926指示反向流的终止字节与正向流的终止字节之间的值交集。
在一些情况下,过程1400包括:接收包括第一包裹和第二包裹的经编码的视频比特流。在一些示例中,经编码的视频比特流包括一个或多个语法元素。在一些方面中,一个或多个语法元素指示定义用于对经编码的视频数据进行解码的神经网络的一个或多个参数。例如,定义神经网络的一个或多个参数可以包括神经网络的权重(例如,如下所述,使用反向传播来训练,)、神经网络的一个或多个激活函数和/或神经网络的其它参数。
在一些示例中,经熵译码的数据可以是使用算术译码来生成的。例如,在一些情况下,用于第一终止字节的值包括允许解码的第一范围的终止字节值,并且用于第二终止字节的值包括允许解码的第二范围的终止字节值。在这样的情况下,值交集包括在第一范围和第二范围内的值。例如,参考图10B作为说明性的示例,可以将交集确定为范围F′与范围或集合B′之间的交集,在这种情况下,可以将联合终止字节确定为字节c∈F′∩B′,如上文所述。
在一些示例中,经熵译码的数据是使用二进制译码来生成的。在一些情况下,用于第一终止字节的值包括第一数量的比特,并且用于第二终止字节的值包括第二数量的比特。在这样的情况下,值交集包括在第一数量的比特和第二数量的比特中的公共值、以及来自第一数量的比特的值子集和来自第二数量的比特的值子集中的至少一者。在一些示例中,与第一终止字节中的第一数量的比特的顺序和第二终止字节中的第二数量的比特的顺序相比,在联合终止字节中第一数量的比特的顺序和第二数量的比特的顺序不改变。例如,参考图8B作为说明性的示例,值“100”对于第一终止字节812和第二终止字节814两者是公共的,并且被包括在联合或共享终止字节816的第一组比特818(具有值“100”)中。共享终止字节816的下一组比特820(具有值“1011”)包括来自第二终止字节814的相对于第一终止字节812唯一(非公共)的比特。共享终止字节816的最终比特还“不关心”比特(通过“x”来表示的)。如图所示,在共享终止字节816中,来自正向流的终止字节812中的比特(“100”)和来自反向流的终止字节814中的比特(“1001011”)的顺序不改变。
在一些示例中,经熵译码的数据的第一部分可以使用第一解码器来解码,并且经熵译码的数据的第二部分可以使用第二解码器来解码。参考图5作为说明性的示例,第一包裹可以由解码器518来解码,并且第二包裹可以由解码器520来编码。
在方框1404处,过程1400包括:使用用于第一包裹和第二包裹的联合终止字节来执行对第一包裹和第二包裹的并行熵解码。可以使用本文描述的技术来执行并行熵解码。例如,过程1400可以包括:以正向顺序读取第一包裹以及以反向顺序读取第二包裹。在一些情况下,过程1400可以包括将第二包裹的字节转换为相反顺序。一旦数据被熵解码,就可以执行其它解码操作(例如,通过执行帧内预测、帧间预测等)。
在一些示例中,本文描述的过程(例如,过程1300、过程1400和/或本文描述的其它过程)可以由计算设备或装置(比如具有在图17中所示出的计算设备架构1700的计算设备)来执行。在一些示例中,计算设备可以包括移动设备(例如,移动电话、平板计算设备等)、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、个人计算机、膝上型计算机、视频服务器、电视机、车辆(或车辆的计算设备)、机器人设备和/或具有执行本文描述的过程(包括过程1300和/或1400)的资源能力的任何其它计算设备。
在一些情况下,计算设备或装置可以包括各种组件,比如一个或多个输入设备、一个或多个输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机、一个或多个发射机、接收机或组合的发射机-接收机(例如,称为收发机)、一个或多个照相机、一个或多个传感器和/或被配置为执行本文描述的过程的步骤的其它组件。在一些示例中,计算设备可以包括显示器、被配置为传送和/或接收数据的网络接口、其任何组合和/或其它组件。网络接口可以被配置为传送和/或接收基于互联网协议(IP)的数据或其它类型的数据。
计算设备的组件可以在电路中实现。例如,组件可以包括电子电路或其它电子硬件,和/或可以使用电子电路或其它电子硬件来实现,所述电子电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)、神经处理单元(NPU)、和/或其它适当的电子电路),和/或可以包括计算机软件、固件或其任何组合,和/或使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。
过程1300和过程1400被示为逻辑流程图,所述逻辑流程图的操作表示可以用硬件、计算机指令或其组合来实现的一系列操作。在计算机指令的背景下,所述操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时执行所记载的操作。通常地,计算机可执行指令包括执行特定的功能或实现特定的数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序并不旨在被解释为限制,并且可以以任何顺序和/或并行地组合所描述的操作中的任何数量的操作以实现所述过程。
另外地,本文描述的过程(包括过程1300、过程1400和/或本文描述的其它过程)可以在被配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用),通过硬件来实现,或其组合。如上文所述,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读或机器可读存储介质上。计算机可读存储介质或机器可读存储介质可以是非暂时性的。
如前所述,一些视频译码系统利用神经网络或其它机器学习系统来压缩视频和/或图像数据。神经网络利用具有多种连接模式进行设计。在前馈网络中,信息是从较低层传递到较高层的,其中在给定层中的每个神经元与在较高层中的神经元进行通信。如上文所描述的,可以在前馈网络的连续层中建立层次表示。神经网络也可以具有循环或反馈(也称为自顶向下)连接。在循环连接中,来自在给定层中的神经元的输出可以被传送给在同一层中的另一神经元。循环架构可以有助于识别横跨一个以上的按顺序被递送给神经网络的输入数据块的模式。从在给定层中的神经元到在较低层中的神经元的连接称为反馈(或自顶向下)连接。当对高级概念的识别可以辅助辨别输入的特定的低级特征时,具有许多反馈连接的网络可以是有帮助的。
在神经网络的层之间的连接可以是完全连接的或者局部连接的。图15A示出完全连接的神经网络1502的示例。在完全连接的神经网络1502中,在第一层中的神经元可以将其输出传送给在第二层中的每个神经元,使得在第二层中的每个神经元将接收来自在第一层中的每个神经元的输入。图15B示出局部连接的神经网络1504的示例。在局部连接的神经网络1504中,在第一层中的神经元可以连接到在第二层中的有限数量的神经元。更普遍地,局部连接的神经网络1504的局部连接层可以被配置为使得在一层中的每个神经元将具有相同或相似的连接模式,但是具有可能带有不同的值(例如,1510、1512、1514和1516)的连接强度。局部连接的连接性模式可以在较高层中造成空间上不同的感受野,因为在给定区域中的较高层神经元可以接收通过训练而被调谐到网络的总输入的受限部分的属性的输入。
局部连接的神经网络的一个示例是卷积神经网络。图15C示出卷积神经网络1506的示例。卷积神经网络1506可以被配置为使得与针对第二层中的每个神经元的输入相关联的连接强度被共享(例如,1508)。卷积神经网络可以非常适于在其中输入的空间位置有意义的问题。根据本公开内容的各方面,卷积神经网络1506可以用于执行视频压缩和/或解压缩的一个或多个方面。
一种类型的卷积神经网络是深度卷积网络(DCN)。图15D示出DCN 1500的详细示例,DCN 1500被设计为根据从图像捕捉设备1530(比如车载相机)的输入的图像1526来识别视觉特征。当前的示例的DCN 1500可以被训练为识别交通标志和在交通标志上提供的数字。当然,DCN 1500可以被训练用于其它任务,比如识别车道标线或识别交通灯。
DCN 1500可以利用有监督学习来训练。在训练期间,可以向DCN 1500呈现图像(比如限速标志的图像1526),并且然后可以计算前向传递以产生输出1522。DCN 1500可以包括特征提取部分和分类部分。一旦接收到图像1526,卷积层1532就可以将卷积内核(未示出)应用于图像1526以生成特征图的第一集合1518。作为示例,用于卷积层1532的卷积内核可以是生成28x28特征图的5x5内核。在本示例中,因为在特征图的第一集合1518中生成四个不同的特征图,所以在卷积层1532处对图像1526应用四个不同的卷积内核。卷积内核也可以称为滤波器或卷积滤波器。
特征图的第一集合1518可以由最大池化层(未示出)二次采样以生成特征图的第二集合1520。最大池化层减小特征图的第一集合1518的大小。也就是说,特征图的第二集合1520的大小(比如14x14)小于特征图的第一集合1518的大小(比如28x28)。减小的大小向后续层提供类似的信息,同时减少存储器消耗。特征图的第二集合1520可以经由一个或多个后续卷积层(未示出)进一步进行卷积以生成一个或多个后续特征图集合(未示出)。
在图15D的示例中,对特征图的第二集合1520进行卷积以生成第一特征向量1524。此外,对第一特征向量1524进一步卷积以生成第二特征向量1528。第二特征向量1528的每个特征可以包括与图像1526的可能的特征(诸如“标志”、“60”和“100”)相对应的数字。softmax函数(未示出)可以将在第二特征向量1528中的数字转换为概率。照此,DCN 1500的输出1522是图像1526包括一个或多个特征的概率。
在本示例中,在输出1522中的用于“标志”和“60”的概率高于输出1522的其它项(诸如“30”、“40”、“50”、“70”、“80”、“90”和“100”)的概率。在训练之前,由DCN 1500产生的输出1522可能是不正确的。因此,可以计算输出1522和目标输出之间的误差。目标输出是图像1526的地面真值(例如,“标志”和“60”)。然后,可以调整DCN 1500的权重,以便DCN 1500的输出1522与目标输出更紧密地对准。
为了调整权重,学习算法可以计算用于权重的梯度向量。梯度可以指示如果调整权重则误差将增加或减少的量。在顶层,梯度可以直接地与连接在倒数第二层中的激活的神经元和在输出层中的神经元的权重的值相对应。在较低层中,梯度可以取决于权重的值和所计算出的较高层的误差梯度。然后可以调整权重以减小误差。这种调整权重的方式可以称为“反向传播”,因为其涉及通过神经网络的“后向传递”。
在实践中,权重的误差梯度可以通过少量示例来计算,使得所计算出的梯度接近真实误差梯度。这种近似方法可以称为随机梯度下降。可以重复随机梯度下降,直到整个系统的可实现的误差率已经停止下降或直到误差率已经达到目标水平。在学习之后,可以向DCN呈现新图像,并且通过网络的前向传递可以产生可以被认为是DCN的推断或预测的输出1522。
深度信念网络(DBN)是包括多层隐藏节点的概率模型。DBNs可以用于提取对训练数据集合的层次表示。DBN可以通过将受限玻尔兹曼机(RBM)的各层进行叠加来获得。RBM是一种类型的可以通过输入集合来学习概率分布的人工神经网络。由于RBM可以在没有关于每个输入应当被分类到的类别的信息的情况下学习概率分布,因此RBM通常在无监督学习中使用。使用混合的无监督和有监督范式,DBN的底部RBM可以以无监督的方式来训练并且可以充当特征提取器,以及顶部RBM可以以有监督的方式来训练(基于来自前一层的输入和目标类别的联合分布)并且可以充当分类器。
深度卷积网络(DCN)是卷积网络的网络,被配置有另外的池化和归一化层。DCN在许多任务上都已经实现最先进的性能。DCN可以使用有监督学习来训练,在所述有监督学习中,输入和输出目标两者对于许多范例是已知的并且用于通过使用梯度下降方法来修改网络的权重。
DCN可以是前馈网络。此外,如上文所描述的,从在DCN的第一层中的神经元到在下一较高层中的一组神经元的连接是跨越在第一层中的神经元而共享的。DCN的前馈和共享连接可以用于快速处理。例如,DCN的计算负担可以比包括循环或反馈连接的类似大小的神经网络的计算负担小得多。
对卷积网络的每个层的处理可以被认为空间不变的模板或基本预测。如果首先将输入分解为多个通道(比如彩色图像的红色、绿色和蓝色通道),则在该输入上训练的卷积网络可以被认为是三维的,其中两个空间维度沿着沿着图像的轴线,以及第三维度捕捉色彩信息。卷积连接的输出可以被认为形成在后续层中的特征图,其中,特征图(例如,1520)的每个元素接收来自在前一层中的一系列神经元(例如,特征图1518)和来自多个通道中的每个通道的输入。在特征图中的值可以利用非线性(比如整流max(0,x))来进一步处理。来自邻近的神经元的值可以进一步进行池化,这对应于下采样并且可以提供另外的局部不变性和维数约简。
图16是示出深度卷积网络1650的示例的方框图。深度卷积网络1650可以包括基于连接性和权重共享的多个不同类型的层。如在图16中所示出的,深度卷积网络1650包括卷积块1654A、1654B。卷积块1654A、1654B中的各者可以被配置为具有卷积层(CONV)1656、归一化层(LNorm)1658和最大池层(MAX POOL)1660。
卷积层1656可以包括一个或多个卷积滤波器,所述一个或多个卷积滤波器可以被应用于输入数据1652以生成特征图。虽然仅示出两个卷积块1654A、1654B,但是本公开内容并不受限于此,而相反,根据设计偏好,任何数量的卷积块(例如,方框1654A、1654B)可以被包括在深度卷积网络1650中。归一化层1658可以将卷积滤波器的输出进行归一化。例如,归一化层1658可以提供白化或横向抑制。最大池化层1660可以提供在空间上的下采样聚合以得到局部不变性和维数约简。
例如,深度卷积网络的并行滤波器组可以被加载在SOC 100的CPU 102或GPU 104上,以实现高性能和低功耗。在替代的实施例中,并行滤波器组可以被加载在SOC 100的DSP106或ISP 116上。此外,深度卷积网络1650可以访问可以在SOC 100上存在的其它处理块,比如分别专用于传感器和导航的传感器处理器114和导航模块120。
深度卷积网络1650还可以包括一个或多个完全连接层,比如层1662A(被标记为“FC1”)和层1662B(被标记为“FC2”)。深度卷积网络1650可以进一步包括逻辑回归(LR)层1664。在深度卷积网络1650的每个层1656、1658、1660、1662A、1662B、1664之间是要被更新的权重(未示出)。这些层(例如,1656、1658、1660、1662A、1662B、1664)中的每个层的输出可以充在当深度卷积网络1650的这些层(例如,1656、1658、1660、1662A、1662B、1664)中的随后一个层的输入,以从在最初的卷积块1654A处提供的输入数据1652(例如,图像、音频、视频、传感器数据、和/或其它输入数据)学习层次特征表示。深度卷积网络1650的输出是针对输入数据1652的分类得分1666。分类得分1666可以是概率集合,其中每个概率是输入数据包括来自特征集合的一特征的概率。
图17示出可以实现本文描述的各种技术的示例计算设备的示例计算设备架构1700。在一些示例中,计算设备可以包括移动设备、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、个人计算机、膝上型计算机、视频服务器、车辆(或车辆的计算设备)、或其它设备。例如,计算设备架构1700可以用作图2的系统200和/或图3的系统300的一部分。计算设备架构1700的组件被示为使用连接1705(比如总线)彼此电通信。示例计算设备架构1700包括处理单元(CPU或处理器)1710和计算设备连接1705,所述计算设备连接1705将包括计算设备存储器1715(比如只读存储器(ROM)1720和随机存取存储器(RAM)1725)的各种计算设备组件耦合到处理器1710。
计算设备架构1700可以包括直接与处理器1710连接、靠近处理器1710或被整合为处理器1710的一部分的高速存储器的高速缓存。计算设备架构1700可以将数据从存储器1715和/或存储设备1730复制到高速缓存1712,以由处理器1710快速访问。以这种方式,高速缓存可以提供性能提升,其避免处理器1710在等待数据时延迟。这些模块和其它模块可以控制或被配置为控制处理器1710以执行各种动作。其它计算设备存储器1715也可以可供使用。存储器1715可以包括具有不同的性能特性的多种不同类型的存储器。处理器1710可以包括任何通用处理器和被配置为控制处理器1710的硬件或软件服务(比如存储在存储设备1730中的服务1 1732、服务2 1734和服务3 1736),以及其中软件指令被并入处理器设计中的专用处理器。处理器1710可以是包含多个内核或处理器、总线、存储器控制器、高速缓存等的自包含系统。多内核处理器可以是对称的或非对称的。
为了实现用户与计算设备架构1700的交互,输入设备1745可以表示任何数量的输入机制,比如用于语音的麦克风、用于手势或图形输入的触敏屏、键盘、鼠标、运动输入、语音等。输出设备1735还可以是本领域技术人员已知的数种输出机制中的一种或多种输出机制,比如显示器、投影仪、电视机、扬声器设备等。在一些情况下,多模式计算设备可以使得用户能够提供多种类型的输入以与计算设备架构1700进行通信。通信接口1740通常可以控制和管理用户输入和计算设备输出。对在任何特定的硬件布置上操作没有限制,并且因此,此处的基本特征可以容易地被经改善的硬件或固件布置(因为它们是先进的)所取代。
存储设备1730是非易失性存储器,并且可以是可以存储可由计算机访问的数据的硬盘或其它类型的计算机可读介质,比如磁带、闪存卡、固态存储器设备、数字多功能磁盘、盒式磁带、随机存取存储器(RAM)1725,只读存储器(ROM)1720、以及其混合。存储设备1730可以包括用于控制处理器1710的服务1732、1734、1736。预期其它硬件或软件模块。存储设备1730可以连接到计算设备连接1705。在一个方面中,执行特定的功能的硬件模块可以包括被存储在与必要的硬件组件(比如处理器1710、连接1705、输出设备1735等)相连接的计算机可读介质中的软件组件,以执行该功能。
本公开内容的各方面可应用于任何适当的电子设备(比如安全系统、智能电话、平板计算机、膝上型计算机、车辆、无人机或其它设备),所述电子设备包括或耦合到一个或多个有源深度感测系统。虽然下文是关于具有或耦合到一个光投影器的设备进行描述的,但是本公开内容的各方面可应用于具有任何数量的光投影器的设备,并且因此不受限于特定的设备。
术语“设备”不受限于一个或特定数量的物理对象(比如一个智能电话、一个控制器、一个处理系统等)。如本文中所使用的,设备可以是具有可以实现本公开内容的至少一些部分的一个或多个部件的任何电子设备。虽然以下描述和示例使用术语“设备”来描述本公开内容的各个方面,但是术语“设备”不受限于特定的配置、类型或对象数量。另外地,术语“系统”不受限于多个组件或特定的实施例。例如,系统可以在一个或多个印刷电路板或其它基板上实现,并且可以具有可移动或静态的组件。虽然以下描述和示例使用术语“系统”来描述本公开内容的各个方面,但是术语“系统”不受限于特定的配置、类型、或对象数量。
在以上描述中提供具体细节以提供对本文中所提供的实施例和示例的透彻理解。然而,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实施所述实施例。为了解释清楚,在一些实例中,本文的技术可以被呈现为包括单独的功能块,所述单独的功能块包括功能块,所述功能块包括设备、设备组件、在以软件体现的方法中的步骤或例程、或者硬件和软件的组合。除了在附图中所示和/或本文描述的那些组件之外,还可以使用另外的组件。例如,电路、系统、网络、过程和其它组件可以以方框图的形式被示为组件,以便不在不必要的细节上模糊所述实施例。在其它实例中,众所周知的电路、过程、算法、结构和技术可能被示为不具有不必要的细节,以便避免模糊所述实施例。
上文可能将各个实施例描述为过程或方法,所述过程或方法被描绘为流程图、流程示意图、数据流程图、结构图或方框图。虽然流程图可能将操作描述为顺序的过程,但是这些操作中的许多操作可以并行或并发地执行。另外,可以重新排列操作的顺序。过程在其操作完成时被终止,但是可能具有未被包括在图中的另外的步骤。过程可以对应于方法、函数、程序、子例程、子程序等。当过程与函数相对应时,其终止可以与该函数到调用函数或主函数的返回相对应。
根据上文描述的示例的过程和方法可以使用计算机可执行指令来实现,所述计算机可执行指令被存储在计算机可读介质中或者以其它方式可从计算机可读介质得到。这样的指令可以包括例如使得或者以其它方式配置通用计算机、专用计算机或处理设备执行特定的功能或特定的一组功能的指令或数据。可以通过网络访问所使用的计算机资源的各部分。计算机可执行指令可以是例如二进制文件、中间格式指令(比如汇编语言、固件、源代码等)。
术语“计算机可读介质”包括但不受限于便携式或非便携式存储设备、光学存储设备以及能够存储、包含或携带指令和/或数据的各种其它介质。计算机可读介质可以包括可以在其中存储数据的非暂时性介质,并且不包括无线地或在有线连接上传播的载波和/或暂时性电子信号。非暂时性介质的示例可以包括但不受限于磁盘或磁带、光学存储介质(比如闪速存储器)、存储器或存储器设备、磁盘或光盘、闪速存储器、被提供有非易失性存储器的USB设备、网络存储设备、压缩光盘(CD)或数字多功能光盘(DVD)、其任何合适的组合等。计算机可读介质可以具有存储在其上的代码和/或机器可执行指令,所述机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、引数、参数或存储器内容来耦合到另一代码段或硬件电路。信息、引数、参数、数据等可以经由任何适当的手段(包括存储器共享、消息传递、令牌传递、网络传输等)来传递、转发或发送。
在一些实施例中,计算机可读存储设备、介质和存储器可以包括电缆或包含比特流等的无线信号。然而,当被提及时,非暂时性计算机可读存储介质明确地不包括比如能量、载波信号、电磁波和信号本身之类的介质。
根据这些公开内容来实现过程和方法的设备可以包括硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合,并且可以采用多种形状因子中的任何形状因子。当用软件、固件、中间件或微代码来实现时,用于执行必要的任务的程序代码或代码段(例如,计算机程序产品)可以被存储在计算机可读或机器可读介质中。处理器可以执行必要的任务。形状因子的典型的示例包括膝上型计算机、智能电话、移动电话、平板设备或其它小型形状因子的个人计算机、个人数字助理、机架式设备、独立设备等。本文描述的功能还可以体现在外围设备或插件卡中。通过进一步的示例的方式,除了在单个设备中执行的不同的芯片和不同的过程之外,这样的功能还可以在电路板上实现。
指令、用于传送这样的指令的介质、用于执行它们的计算资源以及用于支持这样的计算资源的其它结构是用于提供在本公开内容中描述的功能的示例单元。
在前面的描述中,本申请的各方面是参考其特定的实施例来描述的,但是本领域技术人员将认识到的是,本申请不受限于此。因此,虽然本文已经详细描述了本申请的说明性的实施例,但是要理解的是,发明构思可以以其它方式不同地体现和采用,并且所附的权利要求旨在被解释为包括这样的变型,除了由现有技术所限制的变形之外。可以单独地或共同地使用上文描述的应用的各个特征和方面。进一步地,在不背离本说明书的更宽泛的精神和范围的情况下,实施例可以在除了本文描述的环境和应用之外的任何数量的环境和应用中使用。因此,说明书和附图被认为是说明性的而不是限制性的。出于说明的目的,方法是以特定的次序描述的。应当领会的是,在替代的实施例中,所述方法可以以与所描述的次序不同的次序来执行。
本领域普通技术人员将领会的是,在不背离本说明书的范围的情况下,本文中使用的小于(“<”)和大于(“>”)符号或术语可以分别用小于或等于(“≤”)以及大于或等于(“≥”)符号来替换。
在将组件描述为“被配置为”执行某些操作的情况下,这样的配置可以例如通过以下方式来实现:通过设计电子电路或其它硬件以执行该操作,通过对可编程电子电路(例如,微处理器或其它适当的电路)进行编程以执行该操作,或其任何组合。
短语“耦合到”是指直接地或者间接地物理连接到另一组件的任何组件、和/或直接地或者间接地与另一组件相通信(例如,通过有线或无线连接和/或其它适当的通信接口而连接到另一组件)的任何组件。
记载集合中的“至少一个”和/或集合中的“一个或多个”的权利要求语言或其它语言指示该集合中的一个成员或者该集合中(以任何组合)的多个成员满足该权利要求。例如,记载“A和B中的至少一个”或“A或B中的至少一个”的权利要求语言意指A、B、或者A和B。在另一示例中,记载“A、B和C中的至少一个”或“A、B或C中的至少一个”的权利要求语言意指A、B、C、或A和B、或A和C、或B和C、或A和B和C。关于集合中的“至少一个”和/或集合中的“一个或多个”的语言不将该集合限制为在该集合中列出的条目。例如,记载“A和B中的至少一个”或“A或B中的至少一个”的权利要求语言可以意指A、B、或A和B,并且可以另外地包括在A和B的集合中未列出的项。
结合本文中公开的实施例描述的各种说明性的逻辑方块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件、固件或其组合。为了清楚地说明硬件和软件的这种可互换性,上文已经对各种说明性的组件、方框、模块、电路和步骤围绕其功能进行总体描述。这样的功能被实现为硬件还是软件取决于特定的应用和施加在整个系统上的设计约束。本领域技术人员可以针对每种特定的应用以不同的方式来实现所描述的功能,但是这样的实现方式的决策不应当被解释为导致背离本申请的范围。
本文描述的技术还可以用电子硬件、计算机软件、固件或其任何组合来实现。这样的技术可以在各种设备中的任何设备中实现,比如通用计算机、无线通信设备手机或具有多种用途(包括在无线通信设备手机和其它设备中的应用)的集成电路设备。被描述为模块或组件的任何特征都可以在集成逻辑器件中一起实现,或者分别作为分立但是可互操作的逻辑器件来实现。如果用软件来实现,则所述技术可以至少部分地通过包括程序代码的计算机可读数据存储介质来实现,所处程序代码包括在被执行时执行上文描述的方法中的一种或多种方法的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,所述计算机程序产品可以包括包装材料。计算机可读介质可以包括存储器或数据存储介质,比如随机存取存储器(RAM)(比如同步动态随机存取存储器(SDRAM))、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、磁或光数据存储介质等。另外地或替代地,所述技术可以至少部分地通过以指令或数据结构的形式携带或传送程序代码并且可以由计算机访问、读取和/或执行的计算机可读通信介质(比如经传播的信号或波)来实现。
程序代码可以由处理器执行,所述处理器可以包括一个或多个处理器,比如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或分立逻辑电路。这样的处理器可以被配置为执行在本公开内容中描述的技术中的任何技术。通用处理器可以是微处理器,但是在替代的方式中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合、或任何其它这样的配置。因此,如本文中所使用的,术语“处理器”可以是指前述结构中的任何前述结构、前述结构的任何组合、或适于实现本文描述的技术的任何其它结构或装置。
本公开内容的说明性方面包括:
方面1:一种处理视频数据的方法。所述方法包括:获得经编码的视频数据;确定用于所述经编码的视频数据的第一包裹的第一终止字节的值与用于所述经编码的视频数据的第二包裹的第二终止字节的值之间的值交集;确定用于所述第一包裹的所述第一终止字节和所述第二包裹的所述第二终止字节的联合终止字节,其中,用于所述联合终止字节的值是基于所述值交集的;以及生成经熵译码的数据,所述经熵译码的数据包括用于所述第一包裹和所述第二包裹的所述联合终止字节。
方面2:根据方面1所述的方法,还包括:使用算术译码来生成所述经熵译码的数据。
方面3:根据方面1或方面2中任一项所述的方法,其中,用于所述第一终止字节的值包括允许解码的第一范围的终止字节值,其中,用于所述第二终止字节的值包括允许解码的第二范围的终止字节值,并且其中,所述值交集包括在所述第一范围和所述第二范围中的值。
方面4:根据方面1所述的方法,其中,所述经熵译码的数据是使用二进制译码来生成的。
方面5:根据方面1或方面4中任一项所述的方法,其中,用于所述第一终止字节的值包括第一数量的比特,其中,用于所述第二终止字节的值包括第二数量的比特,并且其中,所述值交集包括:在所述第一数量的比特和所述第二数量的比特中的公共值、以及来自所述第一数量的比特的值子集和来自所述第二数量的比特的值子集中的至少一者。
方面6:根据方面5所述的方法,其中,与所述第一终止字节中的所述第一数量的比特的顺序和所述第二终止字节中的所述第二数量的比特的顺序相比,在所述联合终止字节中,所述第一数量的比特的顺序和所述第二数量的比特的顺序不改变。
方面7:根据方面1至6中任一项所述的方法,其中,生成所述经熵译码的数据包括执行对所述第一包裹和所述第二包裹的并行熵编码。
方面8:根据方面1至7中任一项所述的方法,其中,所述第一包裹是使用第一编码器来编码的,并且其中,所述第二包裹是使用第二编码器来编码的。
方面9:根据方面1至8中任一项所述的方法,还包括:将所述第一包裹存储在第一缓冲区中;以及将所述第二包裹存储在第二缓冲区中。
方面10:根据方面1至9中任一项所述的方法,还包括:发送包括所述经熵译码的数据的比特流。
方面11:根据方面1至10中任一项所述的方法,还包括:存储包括所述经熵译码的数据的比特流。
方面12:根据方面1至11中任一项所述的方法,还包括:使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
方面13:根据方面1至12中任一项所述的方法,还包括:以正向顺序来读取所述第一包裹;以及以反向顺序来读取所述第二包裹。
方面14:根据方面1至13中任一项所述的方法,还包括:将所述第二包裹的字节转换为相反顺序。
方面15:根据方面1至14中任一项所述的方法,其中,所述联合终止字节是用于处理的所述第一包裹和所述第二包裹的最终终止字节。
方面16:根据方面1至15中任一项所述的方法,其中,所述经编码的视频数据包括视频比特流的一个或多个语法元素。
方面17:根据方面16所述的方法,其中,所述一个或多个语法元素指示定义用于对所述经编码的视频数据进行解码的神经网络的一个或多个参数。
方面18:根据方面17所述的方法,其中,定义所述神经网络的所述一个或多个参数包括所述神经网络的权重和所述神经网络的激活函数中的至少一者。
方面19:一种用于处理视频数据的装置。所述装置包括:被配置为存储视频数据的存储器;以及耦合到所述存储器的处理器或多个处理器(例如,在电路中实现)。所述一个或多个处理器被配置为:获得经编码的视频数据;确定用于所述经编码的视频数据的第一包裹的第一终止字节的值与用于所述经编码的视频数据的第二包裹的第二终止字节的值之间的值交集;确定用于所述第一包裹的所述第一终止字节和所述第二包裹的所述第二终止字节的联合终止字节,其中,用于所述联合终止字节的值是基于所述值交集的;以及生成经熵译码的数据,所述经熵译码的数据包括用于所述第一包裹和所述第二包裹的所述联合终止字节。
方面20:根据方面19所述的装置,其中,所述一个或多个处理器被配置为使用算术译码来生成所述经熵译码的数据。
方面21:根据方面19或方面20中任一项所述的装置,其中,用于所述第一终止字节的值包括允许解码的第一范围的终止字节值,其中,用于所述第二终止字节的值包括允许解码的第二范围的终止字节值,并且其中,所述值交集包括在所述第一范围和所述第二范围中的值。
方面22:根据方面19所述的装置,其中,所述一个或多个处理器被配置为使用二进制译码来生成所述经熵译码的数据。
方面23:根据方面19或方面22中任一项所述的装置,其中,用于所述第一终止字节的值包括第一数量的比特,其中,用于所述第二终止字节的值包括第二数量的比特,并且其中,所述值交集包括:在所述第一数量的比特和所述第二数量的比特中的公共值、以及来自所述第一数量的比特的值子集和来自所述第二数量的比特的值子集中的至少一者。
方面24:根据方面23所述的装置,其中,与所述第一终止字节中的所述第一数量的比特的顺序和所述第二终止字节中的所述第二数量的比特的顺序相比,在所述联合终止字节中,所述第一数量的比特的顺序和所述第二数量的比特的顺序不改变。
方面25:根据方面19至方面24中任一项所述的装置,其中,为了生成所述经熵译码的数据,所述一个或多个处理器被配置为执行对所述第一包裹和所述第二包裹的并行熵编码。
方面26:根据方面19至方面25中任一项所述的装置,还包括:第一编码器,其被配置为对所述第一包裹进行编码;以及第二编码器,其被配置为对所述第二包裹进行编码。
方面27:根据方面19至方面26中任一项所述的装置,还包括:第一缓冲区,其被配置为存储所述第一包裹;以及第二缓冲区,其被配置为存储所述第二包裹。
方面28:根据方面19至方面27中任一项所述的装置,其中,所述一个或多个处理器被配置为:发送包括所述经熵译码的数据的比特流。
方面29:根据方面19至方面28中任一项所述的装置,其中,所述一个或多个处理器被配置为:存储包括所述经熵译码的数据的比特流。
方面30:根据方面19至方面29中任一项所述的装置,其中,所述一个或多个处理器被配置为:使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
方面31:根据方面19至方面30中任一项所述的装置,其中,所述一个或多个处理器被配置为:以正向顺序来读取所述第一包裹;以及以反向顺序来读取所述第二包裹。
方面32:根据方面19至方面31中任一项所述的装置,其中,所述一个或多个处理器被配置为:将所述第二包裹的字节转换为相反顺序。
方面33:根据方面19至方面32中任一项所述的装置,其中,所述联合终止字节是用于处理的所述第一包裹和所述第二包裹的最终终止字节。
方面34:根据方面19至方面33中任一项所述的装置,其中,所述经编码的视频数据包括视频比特流的一个或多个语法元素。
方面35:根据方面34所述的装置,其中,所述一个或多个语法元素指示定义用于对所述经编码的视频数据进行解码的神经网络的一个或多个参数。
方面36:根据方面35所述的装置,其中,定义所述神经网络的所述一个或多个参数包括所述神经网络的权重和所述神经网络的激活函数中的至少一者。
方面37:根据方面19至方面36中任一项所述的装置,其中,所述处理器包括神经处理单元(NPU)。
方面38:根据方面19至方面37中任一项所述的装置,其中,所述装置是移动设备。
方面39:根据方面19至方面37中任一项所述的装置,其中,所述装置是扩展现实设备。
方面40:根据方面19至方面37中任一项所述的装置,其中,所述装置是电视机。
方面41:根据方面19至方面40中任一项所述的装置,还包括显示器。
方面42:根据方面19至方面41中任一项所述的装置,其中,所述装置包括:照相机,其被配置为捕捉一个或多个视频帧。
方面43:一种存储指令的计算机可读存储介质,所述指令在被执行时,使得一个或多个处理器执行根据方面1至方面42所述的操作中的任何操作。
方面44:一种装置,包括用于执行根据方面1至方面42所述的操作中的任何操作的单元。
方面45:一种处理视频数据的方法,所述方法包括:获得经熵译码的数据的第一包裹和经熵译码的数据的第二包裹,所述第一包裹和所述第二包裹共享联合终止字节,其中,用于所述联合终止字节的值是基于用于所述第一包裹的第一终止字节的值与用于所述第二包裹的第二终止字节的值之间的值交集的;以及使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
方面46:根据方面45所述的方法,其中,所述经熵译码的数据是使用算术译码来进行编码的。
方面47:根据方面45或方面46中任一项所述的方法,其中,用于所述第一终止字节的值包括允许解码的第一范围的终止字节值,其中,用于所述第二终止字节的值包括允许解码的第二范围的终止字节值,并且其中,所述值交集包括在所述第一范围和所述第二范围中的值。
方面48:根据方面45所述的方法,其中,所述经熵译码的数据是使用二进制译码来生成的。
方面49:根据方面45或方面48中任一项所述的方法,其中,用于所述第一终止字节的值包括第一数量的比特,其中,用于所述第二终止字节的值包括第二数量的比特,并且其中,所述值交集包括:在所述第一数量的比特和所述第二数量的比特中的公共值、以及来自所述第一数量的比特的值子集和来自所述第二数量的比特的值子集中的至少一者。
方面50:根据方面49所述的方法,其中,与所述第一终止字节中的所述第一数量的比特的顺序和所述第二终止字节中的所述第二数量的比特的顺序相比,在所述联合终止字节中,所述第一数量的比特的顺序和所述第二数量的比特的顺序不改变。
方面51:根据方面45至方面50中任一项所述的方法,还包括:从第一缓冲区获得所述第一包裹;以及从第二缓冲区获得所述第二包裹。
方面52:根据方面45至方面51中任一项所述的方法,还包括:以正向顺序来读取所述第一包裹;以及以反向顺序来读取所述第二包裹。
方面53:根据方面45至方面52中任一项所述的方法,还包括:将所述第二包裹的字节转换为相反顺序。
方面54:根据方面45至方面53中任一项所述的方法,其中,所述联合终止字节是用于处理的所述第一包裹和所述第二包裹的最终终止字节。
方面55:根据方面45至方面54中任一项所述的方法,还包括:接收视频比特流,所述视频比特流包括所述第一包裹、所述第二包裹和一个或多个语法元素。
方面56:根据方面55所述的方法,其中,所述一个或多个语法元素指示定义用于对所述经编码的视频数据进行解码的神经网络的一个或多个参数。
方面57:根据方面56所述的方法,其中,定义所述神经网络的所述一个或多个参数包括所述神经网络的权重和所述神经网络的激活函数中的至少一者。
方面58:一种用于处理视频数据的装置。所述装置包括:被配置为存储视频数据的存储器;以及耦合到所述存储器的处理器或多个处理器(例如,在电路中实现)。所述一个或多个处理器被配置为:获得经熵译码的数据的第一包裹和经熵译码的数据的第二包裹,所述第一包裹和所述第二包裹共享联合终止字节,其中,用于所述联合终止字节的值是基于用于所述第一包裹的第一终止字节的值与用于所述第二包裹的第二终止字节的值之间的值交集的;以及使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
方面59:根据方面58所述的装置,其中,所述经熵译码的数据是使用算术译码来进行编码的。
方面60:根据方面58或方面59中任一项所述的装置,其中,用于所述第一终止字节的值包括允许解码的第一范围的终止字节值,其中,用于所述第二终止字节的值包括允许解码的第二范围的终止字节值,并且其中,所述值交集包括在所述第一范围和所述第二范围中的值。
方面61:根据方面58所述的装置,其中,所述经熵译码的数据是使用二进制译码来生成的。
方面62:根据方面58或方面61中任一项所述的装置,其中,用于所述第一终止字节的值包括第一数量的比特,其中,用于所述第二终止字节的值包括第二数量的比特,并且其中,所述值交集包括:在所述第一数量的比特和所述第二数量的比特中的公共值、以及来自所述第一数量的比特的值子集和来自所述第二数量的比特的值子集中的至少一者。
方面63:根据方面62所述的装置,其中,与所述第一终止字节中的所述第一数量的比特的顺序和所述第二终止字节中的所述第二数量的比特的顺序相比,在所述联合终止字节中,所述第一数量的比特的顺序和所述第二数量的比特的顺序不改变。
方面64:根据方面58至方面63中任一项所述的装置,其中,所述一个或多个处理器被配置为:从第一缓冲区获得所述第一包裹;以及从第二缓冲区获得所述第二包裹。
方面65:根据方面58至方面64中任一项所述的装置,其中,所述一个或多个处理器被配置为:以正向顺序来读取所述第一包裹;以及以反向顺序来读取所述第二包裹。
方面66:根据方面58至方面65中任一项所述的装置,其中,所述一个或多个处理器被配置为:将所述第二包裹的字节转换为相反顺序。
方面67:根据方面58至方面66中任一项所述的装置,其中,所述联合终止字节是用于处理的所述第一包裹和所述第二包裹的最终终止字节。
方面68:根据方面58至方面67中任一项所述的装置,其中,所述一个或多个处理器被配置为:获得视频比特流,所述视频比特流包括所述第一包裹、所述第二包裹和一个或多个语法元素。
方面69:根据方面68所述的装置,其中,所述一个或多个语法元素指示定义用于对所述经编码的视频数据进行解码的神经网络的一个或多个参数。
方面70:根据方面69所述的装置,其中,定义所述神经网络的所述一个或多个参数包括所述神经网络的权重和所述神经网络的激活函数中的至少一者。
方面71:根据方面58至方面70中任一项所述的装置,其中,所述处理器包括神经处理单元(NPU)。
方面72:根据方面58至方面71中任一项所述的装置,其中,所述装置是移动设备。
方面73:根据方面58至方面71中任一项所述的装置,其中,所述装置是扩展现实设备。
方面74:根据方面58至方面71中任一项所述的装置,其中,所述装置是电视机。
方面75:根据方面58至方面74中任一项所述的装置,还包括显示器。
方面76:根据方面58至方面75中任一项所述的装置,其中,所述装置包括:照相机,其被配置为捕捉一个或多个视频帧。
方面77:一种存储指令的计算机可读存储介质,所述指令在被执行时,使得一个或多个处理器执行根据方面58至方面76所述的操作中的任何操作。
方面78:一种装置,包括用于执行根据方面58至方面76所述的操作中的任何操作的单元。
方面79:一种方法,其被配置为执行根据方面1至方面42和方面58至方面76的操作中的任何操作。
方面80:一种用于处理视频数据的装置。所述装置包括:被配置为存储视频数据的存储器;以及耦合到所述存储器的一个处理器或多个处理器(例如,在电路中实现)。所述一个或多个处理器被配置为执行根据方面1至方面42和方面58至方面76所述的操作中的任何操作。
方面81:一种存储指令的计算机可读存储介质,所述指令在被执行时使得一个或多个处理器执行方面1至42和方面58至76所述的操作中的任何操作。
方面82:一种装置,包括用于执行根据方面1至方面42和方面58至方面76所述的操作中的任何操作的单元。

Claims (30)

1.一种处理视频数据的方法,所述方法包括:
获得经编码的视频数据;
确定用于所述经编码的视频数据的第一包裹的第一终止字节的值与用于所述经编码的视频数据的第二包裹的第二终止字节的值之间的值交集;
确定用于所述第一包裹的所述第一终止字节和所述第二包裹的所述第二终止字节的联合终止字节,其中,用于所述联合终止字节的值是基于所述值交集的;以及
生成经熵译码的数据,所述经熵译码的数据包括用于所述第一包裹和所述第二包裹的所述联合终止字节。
2.根据权利要求1所述的方法,其中,所述经熵译码的数据是使用算术译码来生成的。
3.根据权利要求2所述的方法,其中,用于所述第一终止字节的所述值包括允许解码的第一范围的终止字节值,其中,用于所述第二终止字节的所述值包括允许解码的第二范围的终止字节值,并且其中,所述值交集包括在所述第一范围和所述第二范围中的值。
4.根据权利要求1所述的方法,其中,所述经熵译码的数据是使用二进制译码来生成的。
5.根据权利要求4所述的方法,其中,用于所述第一终止字节的所述值包括第一数量的比特,其中,用于所述第二终止字节的所述值包括第二数量的比特,并且其中,所述值交集包括:在所述第一数量的比特和所述第二数量的比特中的公共值、以及来自所述第一数量的比特的值子集和来自所述第二数量的比特的值子集中的至少一者。
6.根据权利要求5所述的方法,其中,与所述第一终止字节中的所述第一数量的比特的顺序和所述第二终止字节中的所述第二数量的比特的顺序相比,在所述联合终止字节中,所述第一数量的比特的顺序和所述第二数量的比特的顺序不改变。
7.根据权利要求1所述的方法,其中,生成所述经熵译码的数据包括执行对所述第一包裹和所述第二包裹的并行熵编码。
8.根据权利要求7所述的方法,其中,所述第一包裹是使用第一编码器来进行编码的,并且其中,所述第二包裹是使用第二编码器来进行编码的。
9.根据权利要求1所述的方法,还包括:
使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
10.根据权利要求9所述的方法,还包括:
以正向顺序来读取所述第一包裹;以及
以反向顺序来读取所述第二包裹。
11.根据权利要求10所述的方法,还包括:
将所述第二包裹的字节转换为相反顺序。
12.根据权利要求1所述的方法,其中,所述联合终止字节是用于处理的所述第一包裹和所述第二包裹的最终终止字节。
13.根据权利要求1所述的方法,其中,所述经编码的视频数据包括视频比特流的一个或多个语法元素。
14.根据权利要求13所述的方法,其中,所述一个或多个语法元素指示定义用于对所述经编码的视频数据进行解码的神经网络的一个或多个参数。
15.根据权利要求14所述的方法,其中,定义所述神经网络的所述一个或多个参数包括所述神经网络的权重和所述神经网络的激活函数中的至少一者。
16.一种用于处理视频数据的装置,包括:
存储器,其被配置为存储视频数据;以及
一个或多个处理器,其耦合到所述存储器并且被配置为进行以下操作:
获得经编码的视频数据;
确定用于所述经编码的视频数据的第一包裹的第一终止字节的值与用于所述经编码的视频数据的第二包裹的第二终止字节的值之间的值交集;
确定用于所述第一包裹的所述第一终止字节和所述第二包裹的所述第二终止字节的联合终止字节,其中,用于所述联合终止字节的值是基于所述值交集的;以及
生成经熵译码的数据,所述经熵译码的数据包括用于所述第一包裹和所述第二包裹的所述联合终止字节。
17.根据权利要求16所述的装置,其中,所述一个或多个处理器被配置为使用算术译码来生成所述经熵译码的数据。
18.根据权利要求17所述的装置,其中,用于所述第一终止字节的所述值包括允许解码的第一范围的终止字节值,其中,用于所述第二终止字节的所述值包括允许解码的第二范围的终止字节值,并且其中,所述值交集包括在所述第一范围和所述第二范围中的值。
19.根据权利要求16所述的装置,其中,所述一个或多个处理器被配置为使用二进制译码来生成所述经熵译码的数据。
20.根据权利要求19所述的装置,其中,用于所述第一终止字节的所述值包括第一数量的比特,其中,用于所述第二终止字节的所述值包括第二数量的比特,并且其中,所述值交集包括:在所述第一数量的比特和所述第二数量的比特中的公共值、以及来自所述第一数量的比特的值子集和来自所述第二数量的比特的值子集中的至少一者。
21.根据权利要求20所述的装置,其中,与所述第一终止字节中的所述第一数量的比特的顺序和所述第二终止字节中的所述第二数量的比特的顺序相比,在所述联合终止字节中,所述第一数量的比特的顺序和所述第二数量的比特的顺序不改变。
22.根据权利要求16所述的装置,其中,为了生成所述经熵译码的数据,所述一个或多个处理器被配置为执行对所述第一包裹和所述第二包裹的并行熵编码。
23.根据权利要求22所述的装置,还包括:
第一编码器,其被配置为对所述第一包裹进行编码;以及
第二编码器,其被配置为对所述第二包裹进行编码。
24.根据权利要求16所述的装置,其中,所述一个或多个处理器被配置为进行以下操作:
使用用于所述第一包裹和所述第二包裹的所述联合终止字节来执行对所述第一包裹和所述第二包裹的并行熵解码。
25.根据权利要求24所述的装置,其中,所述一个或多个处理器被配置为进行以下操作:
以正向顺序来读取所述第一包裹;以及
以反向顺序来读取所述第二包裹。
26.根据权利要求16所述的装置,其中,所述联合终止字节是用于处理的所述第一包裹和所述第二包裹的最终终止字节。
27.根据权利要求16所述的装置,其中,所述经编码的视频数据包括视频比特流的一个或多个语法元素。
28.根据权利要求27所述的装置,其中,所述一个或多个语法元素指示定义用于对所述经编码的视频数据进行解码的神经网络的一个或多个参数。
29.根据权利要求28所述的装置,其中,定义所述神经网络的所述一个或多个参数包括所述神经网络的权重和所述神经网络的激活函数中的至少一者。
30.根据权利要求16所述的装置,其中,所述装置是移动设备、扩展现实设备或电视机中的一者,并且其中,所述装置还包括以下各项中的至少一项:显示器,以及被配置为捕捉一个或多个视频帧的照相机。
CN202180068899.9A 2020-10-15 2021-09-20 用于并行译码的双向数据块的联合终止 Pending CN116325742A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063092443P 2020-10-15 2020-10-15
US63/092,443 2020-10-15
US17/224,812 2021-04-07
US17/224,812 US11677987B2 (en) 2020-10-15 2021-04-07 Joint termination of bidirectional data blocks for parallel coding
PCT/US2021/051124 WO2022081307A1 (en) 2020-10-15 2021-09-20 Joint termination of bidirectional data blocks for parallel coding

Publications (1)

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

Family

ID=81185899

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180068899.9A Pending CN116325742A (zh) 2020-10-15 2021-09-20 用于并行译码的双向数据块的联合终止

Country Status (8)

Country Link
US (1) US11677987B2 (zh)
EP (1) EP4229868A1 (zh)
JP (1) JP2023546039A (zh)
KR (1) KR20230087474A (zh)
CN (1) CN116325742A (zh)
BR (1) BR112023006362A2 (zh)
TW (1) TW202220444A (zh)
WO (1) WO2022081307A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11683514B2 (en) * 2020-12-22 2023-06-20 Tencent America LLC Method and apparatus for video coding for machine
US11375242B1 (en) 2021-01-27 2022-06-28 Qualcomm Incorporated Compression of bitstream indexes for parallel entropy 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
WO2023028965A1 (en) * 2021-09-02 2023-03-09 Nvidia Corporation Hardware codec accelerators for high-performance video encoding
CN116489458B (zh) * 2023-06-26 2023-09-01 深圳麦风科技有限公司 一种基于文件字节分析的mp4修复方法、装置、终端及介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX341828B (es) 2012-08-09 2016-09-05 Panasonic Ip Corp America Metodo decodificador de imagen, metodo codificador de imagen, aparato decodificador de imagen, aparato codificador de imagen, y aparato codificador y decodificador de imagen.
GB2530311B (en) * 2014-09-19 2017-01-11 Imagination Tech Ltd Data compression
US20170311003A1 (en) * 2016-04-20 2017-10-26 Mediatek Inc. Method and apparatus for performing entropy encoding with sign data removal and associated method and apparatus for performing entropy decoding with sign data recovery
US10430585B2 (en) 2017-01-06 2019-10-01 Crowdstrike, Inc. Binary search of byte sequences using inverted indices
US11228767B2 (en) 2017-12-13 2022-01-18 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding

Also Published As

Publication number Publication date
EP4229868A1 (en) 2023-08-23
KR20230087474A (ko) 2023-06-16
WO2022081307A1 (en) 2022-04-21
US20220124376A1 (en) 2022-04-21
BR112023006362A2 (pt) 2023-05-09
US11677987B2 (en) 2023-06-13
TW202220444A (zh) 2022-05-16
JP2023546039A (ja) 2023-11-01

Similar Documents

Publication Publication Date Title
KR20230074137A (ko) 머신 러닝 시스템들을 이용한 인스턴스 적응적 이미지 및 비디오 압축
US11677987B2 (en) Joint termination of bidirectional data blocks for parallel coding
KR102578967B1 (ko) 단대단 신경망 기반 비디오 코딩
JP7478911B2 (ja) 並列エントロピーコーディングのためのビットストリームインデックスの圧縮
US20220191523A1 (en) Front-end architecture for neural network based video coding
KR102633254B1 (ko) 학습된 비디오 압축을 위한 다중 스케일 광학 흐름
CN117980916A (zh) 用于媒体的变换译码的基于变换器的架构
WO2020042853A1 (en) Method and apparatus for intra prediction
US20240214578A1 (en) Regularizing neural networks with data quantization using exponential family priors
US11825090B1 (en) Bit-rate estimation for video coding with machine learning enhancement
US20240015318A1 (en) Video coding using optical flow and residual predictors
US20240013441A1 (en) Video coding using camera motion compensation and object motion compensation
KR20230117346A (ko) 뉴럴 네트워크 기반 비디오 코딩을 위한 프론트-엔드 아키텍처
CN116547965A (zh) 用于基于神经网络的视频译码的前端架构
WO2024015665A1 (en) Bit-rate estimation for video coding with machine learning enhancement
CN116965032A (zh) 用于视频译码的基于机器学习的流确定
KR20230150274A (ko) 비디오 코딩을 위한 기계 학습 기반 플로우 결정

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