CN116965032A - 用于视频译码的基于机器学习的流确定 - Google Patents
用于视频译码的基于机器学习的流确定 Download PDFInfo
- Publication number
- CN116965032A CN116965032A CN202280015753.2A CN202280015753A CN116965032A CN 116965032 A CN116965032 A CN 116965032A CN 202280015753 A CN202280015753 A CN 202280015753A CN 116965032 A CN116965032 A CN 116965032A
- Authority
- CN
- China
- Prior art keywords
- current frame
- motion information
- luma component
- chroma components
- component
- 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
Links
- 238000010801 machine learning Methods 0.000 title claims abstract description 63
- 230000033001 locomotion Effects 0.000 claims abstract description 170
- 238000000034 method Methods 0.000 claims abstract description 143
- 241000023320 Luma <angiosperm> Species 0.000 claims abstract description 126
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims abstract description 126
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000015654 memory Effects 0.000 claims description 44
- 239000013598 vector Substances 0.000 claims description 33
- 238000005070 sampling Methods 0.000 claims description 9
- 238000013528 artificial neural network Methods 0.000 description 73
- 230000008569 process Effects 0.000 description 55
- 238000013135 deep learning Methods 0.000 description 44
- 210000002569 neuron Anatomy 0.000 description 32
- 238000013139 quantization Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 21
- 238000013527 convolutional neural network Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 12
- 238000012549 training Methods 0.000 description 12
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 10
- 238000006073 displacement reaction Methods 0.000 description 8
- 238000010606 normalization Methods 0.000 description 8
- 230000000007 visual effect Effects 0.000 description 8
- 230000003190 augmentative effect Effects 0.000 description 7
- 230000004913 activation Effects 0.000 description 6
- 230000006837 decompression Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000005291 magnetic effect Effects 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 4
- 241000288105 Grus Species 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000001537 neural effect Effects 0.000 description 4
- 230000015556 catabolic process Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000011478 gradient descent method Methods 0.000 description 2
- 238000007477 logistic regression Methods 0.000 description 2
- 230000007787 long-term memory Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000023886 lateral inhibition Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013179 statistical model Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000946 synaptic effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000002087 whitening effect Effects 0.000 description 1
Landscapes
- Image Analysis (AREA)
Abstract
本文描述了用于处理视频数据的系统和技术。在一些方面中,一种方法可以包括通过机器学习系统获得输入视频数据。输入视频数据包括用于当前帧的一个或多个亮度分量。该方法可以包括通过机器学习系统,使用用于当前帧的亮度分量来确定用于当前帧的亮度分量的运动信息和用于当前帧的一个或多个色度分量的运动信息。在一些情况下,该方法可以包括基于当前帧的亮度分量和先前帧的至少一个经重构的亮度分量来确定用于亮度分量的运动信息。在一些情况下,该方法还可以包括使用针对当前帧的亮度分量确定的运动信息来确定用于当前帧的色度分量的运动信息。
Description
技术领域
概括而言,本公开内容涉及图像和视频译码,包括对图像和/或视频的编码(或压缩)和解码(解压缩)。例如,本公开内容的各方面涉及用于确定一个或多个图像帧或图片(例如,视频帧/图片)的亮度分量和色度分量的流信息的技术。
背景技术
许多设备和系统允许视频数据被处理和输出以供消费。数字视频数据包括大量数据,以满足消费者和视频提供者的需求。例如,视频数据的消费者期望高质量视频,包括高保真度、高分辨率、高帧速率等。结果,满足这些需求所需要的大量视频数据为处理和存储视频数据的通信网络和设备带来了负担。
各种视频译码技术可以用于对视频数据进行压缩。视频译码的一个目标是将视频数据压缩为使用较低比特率的形式,同时避免或最小化对视频质量的降级。随着不断发展的视频服务变得可用,需要具有更好的译码效率的编码技术。
发明内容
描述了用于使用一个或多个机器学习系统来对图像和//或视频内容进行译码(例如,编码和/或解码)的系统和技术。根据至少一个示例,提供了一种处理视频数据的方法。所述方法包括:通过机器学习系统获得输入视频数据,所述输入视频数据包括用于当前帧的至少一个亮度分量;以及通过所述机器学习系统,使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的运动信息和用于所述当前帧的一个或多个色度分量的运动信息。
在另一示例中,提供了一种用于处理视频数据的装置,包括:至少一个存储器(例如,被配置为存储数据,诸如虚拟内容数据、一个或多个图像等);以及耦合到所述至少一个存储器的一个或多个处理器(例如,在电路中实现)。所述一个或多个处理器被配置为并且能够进行以下操作:使用机器学习系统获得输入视频数据,所述输入视频数据包括用于当前帧的至少一个亮度分量;以及使用所述机器学习系统,使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的运动信息和用于所述当前帧的一个或多个色度分量的运动信息。
在另一示例中,提供了一种具有存储在其上的指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:使用机器学习系统获得输入视频数据,所述输入视频数据包括用于当前帧的至少一个亮度分量;以及使用所述机器学习系统,使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的运动信息和用于所述当前帧的一个或多个色度分量的运动信息。
在另一示例中,提供了一种用于处理视频数据的装置。所述装置包括:用于获得输入视频数据的单元,所述输入视频数据包括用于当前帧的至少一个亮度分量;以及用于使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的运动信息和用于所述当前帧的一个或多个色度分量的运动信息。
在一些方面中,上述方法、装置和计算机可读介质中的一项或多项还包括:通过机器学习系统,使用用于当前帧的至少一个亮度分量的运动信息和用于当前帧的一个或多个色度分量的运动信息,来确定用于当前帧的至少一个亮度分量的扭曲参数和用于当前帧的一个或多个色度分量的一个或多个扭曲参数;以及使用用于当前帧的至少一个亮度分量的扭曲参数和用于当前帧的一个或多个色度分量的一个或多个扭曲参数来确定用于当前帧的一个或多个帧间预测。
在一些方面中,一个或多个帧间预测是至少部分地通过以下操作来确定的:使用用于当前帧的至少一个亮度分量的扭曲参数和用于当前帧的一个或多个色度分量的一个或多个扭曲参数应用插值操作。
在一些方面中,插值操作包括三线性插值操作。
在一些方面中,用于当前帧的至少一个亮度分量的扭曲参数和用于当前帧的一个或多个色度分量的一个或多个扭曲参数包括空间尺度流(SSF)扭曲参数。
在一些方面中,SSF扭曲参数包括所学习到的尺度流向量。
在一些方面中,为了使用用于当前帧的至少一个亮度分量来确定用于当前帧的至少一个亮度分量的运动信息和用于当前帧的一个或多个色度分量的运动信息,上述方法、装置和计算机可读介质中的一项或多项还包括:基于当前帧的至少一个亮度分量和先前帧的至少一个经重构的亮度分量来确定用于当前帧的至少一个亮度分量的运动信息;以及使用针对当前帧的至少一个亮度分量确定的运动信息来确定用于当前帧的一个或多个色度分量的运动信息。
在一些方面中,用于当前帧的一个或多个色度分量的运动信息是使用机器学习系统的卷积层来确定的。
在一些方面中,为了确定用于当前帧的一个或多个色度分量的运动信息,上述方法、装置和计算机可读介质中的一项或多项还包括:对针对当前帧的至少一个亮度分量确定的运动信息进行采样。
在一些方面中,当前帧包括视频帧。
在一些方面中,一个或多个色度分量包括至少一个色度蓝色分量和至少一个色度红色分量。
在一些方面中,当前帧具有亮度-色度(YUV)格式。在一些情况下,YUV格式是YUV4:2:0格式。
在一些方面中,本文描述的装置可以包括以下各者或作为以下各者的一部分:移动设备(例如,移动电话或所谓的“智能电话”、平板电脑或其它类型的移动设备)、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、个人计算机、膝上型计算机、视频服务器、电视机、车辆(或车辆的计算设备)、或其它设备。在一些方面中,所述装置还包括用于捕获一个或多个图像或视频帧的至少一个相机。例如,所述装置可以包括用于捕获包括视频帧的一个或多个图像和/或一个或多个视频的一个相机(例如,RGB相机)或多个相机。在一些方面中,所述装置包括用于显示一个或多个图像、视频、通知或其它可显示数据的显示器。在一些方面中,所述装置包括发射机,其被配置为在传输介质上向至少一个设备发送一个或多个视频帧和/或语法数据。在一些方面中,处理器包括神经处理单元(NPU)、中央处理单元(CPU)、图形处理单元(GPU)或其它处理设备或组件。
该发明内容既不旨在标识所要求保护的主题的关键或必要特征,也不旨在单独用于确定所要求保护的主题的范围。通过参照本专利的整个说明书的适当部分、任何或所有附图以及每个权利要求,应当理解该主题。
在参考以下说明书、权利要求和附图之后,前述内容以及其它特征和实施例将变得更加显而易见。
附图说明
下面参照以下附图来详细地描述本申请的说明性实施例:
图1示出片上系统(SOC)的示例实现;
图2A示出全连接神经网络的示例;
图2B示出局部连接神经网络的示例;
图2C示出卷积神经网络的示例;
图2D示出被设计为从图像中识别视觉特征的深度卷积网络(DCN)的详细示例;
图3是示出深度卷积网络(DCN)的框图;
图4是示出根据一些示例的系统的示例的示意图,该系统包括可操作以使用基于神经网络的系统来执行图像和/或视频译码(编码和解码)的设备;
图5是示出根据一些示例的用于具有红-绿-蓝(RGB)格式的输入的基于端到端神经网络的图像和视频译码系统的示例的示意图;
图6是示出根据一些示例的可以作为基于端到端神经网络的图像和视频译码系统的一部分的空间尺度流(SSF)神经网络架构的示例的示意图,SSF神经网络架构被配置为处理一种或多种亮度-色度(YUV)输入格式(例如,4:2:0YUV输入格式);
图7A是示出根据一些示例的利用亮度输入进行操作的基于机器学习的流引擎的示例的示意图;
图7B是示出根据一些示例的对亮度运动信息进行二次采样以获得色度运动信息的示例的示意图;
图8A是示出根据一些示例的利用YUV(例如,YUV 4:2:0)残差的基于机器学习的架构的示例的示意图;
图8B是示出根据一些示例的1x1卷积层的示例操作的示意图;
图9是示出根据一些示例的(例如,基于端到端神经网络的图像和视频译码系统的)直接利用YUV输入(Y、U和V)(诸如YUV 4:2:0输入)进行工作的基于机器学习的架构的示例的示意图;
图10是示出根据一些示例的(例如,基于端到端神经网络的图像和视频译码系统的)直接利用YUV输入(Y、U和V)(诸如YUV 4:2:0输入)进行工作的基于机器学习的架构的另一示例的示意图;
图11是示出根据一些示例的用于处理视频数据的过程的示例的流程图;以及
图12示出了可以实现本文描述的各种技术的示例计算设备的示例计算设备架构。
具体实施方式
下文提供了本公开内容的某些方面和实施例。如对于本领域技术人员将显而易见的,这些方面和实施例中的一些方面和实施例可以独立地应用,并且其中的一些方面和实施例可以相结合地应用。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本申请的实施例的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实施各个实施例。附图和描述并不旨在是限制性的。
随后的描述仅提供了示例实施例,并且不旨在限制本公开内容的范围、适用性或配置。确切而言,对示例实施例的随后描述将向本领域技术人员提供用于实现示例实施例的可行描述。应当理解的是,在不背离如在所附的权利要求书中阐述的本申请的精神和范围的情况下,可以对元素的功能和布置进行各种改变。
数字视频数据可以包括大量数据,尤其是随着对高质量视频数据的需求持续增长。例如,视频数据的消费者通常期望越来越高质量的、具有高保真度、高分辨率、高帧速率等的视频。然而,满足这样的需求所需要的大量视频数据可能为通信网络以及处理和存储视频数据的设备带来了显著负担。
各种技术可以用于对视频数据进行译码。可以根据特定的视频译码标准来执行视频译码。示例视频译码标准包括高效率视频译码(HEVC)、改进的视频译码(AVC)、运动图像专家组(MPEG)译码、以及多功能视频译码(VVC)等。视频译码通常使用预测方法(诸如帧间预测或帧内预测),预测方法利用在视频图像或序列中存在的冗余。视频译码技术的一个共同目标是将视频数据压缩为使用较低比特率的形式,同时避免或最小化视频质量的降级。随着对视频服务的需求增长以及新的视频服务变得可用,需要具有更好的译码效率、性能和速率控制的译码技术。
基于机器学习(ML)的系统可以用于执行图像和/或视频译码。通常,ML是人工智能(AI)的子集。ML系统可以包括算法和统计模型,计算机系统可以使用这些算法和统计模型,以在无需使用显式指令的情况下通过依赖于模式和推理而执行各种任务。ML系统的一个示例是神经网络(也被称为人工神经网络),其可以包括一组相互连接的人工神经元(例如,神经元模型)。神经网络可以用于各种应用和/或设备,诸如图像和/或视频译码、图像分析和/或计算机视觉应用、互联网协议(IP)相机、物联网(IoT)设备、自主车辆、服务机器人等。
神经网络中的各个节点可以通过采用输入数据并且对数据执行简单运算来模拟生物神经元。对输入数据执行的简单运算的结果被选择性地传递给其它神经元。权重值与网络中的每个向量和节点相关联,并且这些值约束输入数据如何与输出数据相关。例如,可以将每个节点的输入数据乘以相应的权重值,并且可以对乘积求和。可以通过可选的偏置来调整乘积的总和,并且可以将激活函数应用于结果,从而产生节点的输出信号或“输出激活”(有时被称为激活图或特征图)。权重值最初可以由通过网络的训练数据的迭代流来确定(例如,在训练阶段期间建立权重值,在训练阶段中,网络学习如何通过其典型的输入数据特性来识别特定类别)。
存在不同类型的神经网络,诸如卷积神经网络(CNN)、递归神经网络(RNN)、生成性对抗网络(GAN)、多层感知器(MLP)神经网络等。例如,卷积神经网络(CNN)是一种类型的前馈人工神经网络。卷积神经网络可以包括人工神经元的集合,每个人工神经元具有感受野(例如,输入空间的空间局部化区域)并且共同平铺输入空间。RNN的工作原理是保存层的输出,并且将该输出反馈回输入,以帮助预测层的结果。GAN是一种形式的生成性神经网络,其可以学习输入数据中的模式,使得神经网络模型可以生成新的合成输出,这些合成输出可能合理地来自原始数据集。GAN可以包括一起操作的两个神经网络,包括生成合成输出的生成性神经网络和评估输出真实性的判别性神经网络。在MLP神经网络中,可以将数据馈送给输入层,并且一个或多个隐藏层为数据提供抽象层次。然后,可以基于经抽象的数据在输出层上进行预测。
在分层神经网络架构(当存在多个隐藏层时,其被称为深度神经网络)中,第一层人工神经元的输出成为第二层人工神经元的输入,第二层人工神经元的输出成为第三层人工神经元的输入,依此类推。例如,可以对CNN进行训练以识别特征的层次结构。CNN架构中的计算可以分布在可以被配置在一个或多个计算链中的一群处理节点上。这些多层架构可以一次训练一个层,并且可以使用反向传播进行微调。
在许多情况下,基于深度学习的系统被设计为负责学习用于熵译码(解码器子网络)的经量化的隐变量(latent)的概率模型的自动编码器子网络(编码器子网络)和第二子网络(在一些情况下,也被称为超先验网络)的组合。在一些情况下,可能存在解码器的其它子网络。此类基于深度学习的系统架构可以被视为变换加量化模块(或编码器子网络)和熵建模子网络模块的组合。
大多数现有的用于视频压缩的基于深度学习的架构被设计为以非二次采样输入格式进行操作,诸如RGB、YUV 4:4:4或其它非二次采样输入格式。然而,视频译码标准(诸如HEVC和VVC)被设计为在其各自的主简档中支持YUV 4:2:0色彩格式。为了支持4:2:0YUV格式,必须修改被设计为以非二次采样输入格式操作的基于深度学习的架构。
描述了提供基于ML的系统(例如,基于深度学习的系统)的系统、装置、过程(也被称为方法)以及计算机可读介质(统称为“系统和技术”),该基于ML的系统可以使用一个或多个帧(例如,视频帧)的一个色彩分量来估计用于该色彩分量和该帧的另一色彩分量的信息。在一些方面中,基于ML的系统可以被设计用于处理具有亮度-色度(YUV)输入格式的输入数据。在这样的方面中,基于ML的系统可以使用当前帧和先前重构的帧(例如,由基于ML的系统重构的)两者的亮度分量来估计用于亮度分量和一个或多个色度分量的运动信息(例如,流信息,诸如光流信息)。在一些情况下,在学习用于亮度分量的运动信息之后,可以使用具有下采样的卷积层来学习用于一个或多个色度分量的运动信息(例如,流信息)。在一些情况下,可以通过直接对用于亮度分量的运动信息进行二次采样(例如,而不使用卷积层)来获得用于一个或多个色度分量的运动信息。可以针对帧的所有分量执行这样的技术。使用这样的技术,基于ML的系统可以确定色度运动信息(例如,流信息),而无需将色度信息编码为隐数据或比特流的一部分(例如,降低了对于发送具有色度信息的辅助信息的需求)。
如上所述,基于ML的系统可以被设计用于处理具有YUV输入格式的输入数据。YUV格式包括亮度通道(Y)和一对色度通道(U和V)。U通道可以被称为色度(chrominance)(或色度(chroma))-蓝色通道,而U通道可以被称为色度(chrominance)(或色度(chroma))-红色通道。在一些情况下,亮度(Y)通道或分量也可以被称为亮度通道或分量。在一些情况下,色度(U和V)通道或分量也可以被称为色度通道或分量。YUV输入格式可以包括YUV 4:2:0、YUV4:4:4、YUV 4:2:2等。在一些情况下,本文描述的系统和技术可以被设计为处理其它输入格式,诸如具有Y色度蓝(Cb)-色度红(Cr)(YCbCr)格式、红-绿-蓝(RGB)格式和/或其它格式的数据。本文描述的基于ML的系统可以对独立帧(也被称为图像)和/或包括多个帧的视频数据进行编码和/或解码。
将参照附图描述本公开内容的进一步细节和额外方面。
图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(例如,其可以检测和识别手势)。在一种实现中,在CPU 102、DSP 106和/或GPU 104中实现NPU。SOC 100还可以包括传感器处理器114、图像信号处理器(ISP)116和/或导航模块120(其可以包括全球定位系统)。
SOC 100可以是基于ARM指令集的。在本公开内容的一方面中,被加载到CPU 102中的指令可以包括用于在与输入值和滤波器权重的乘法乘积相对应的查找表(LUT)中搜索被存储的乘法结果的代码。被加载到CPU 102中的指令还可以包括用于当检测到乘法乘积的查找表命中时在乘法乘积的乘法运算期间禁用乘法器的代码。另外,被加载到CPU 102中的指令可以包括用于当检测到乘法乘积的查找表未命中时存储输入值和滤波器权重的计算出的乘法乘积的代码。
SOC 100和/或其组件可以被配置为使用根据本文讨论的本公开内容的各方面的机器学习技术来执行视频压缩和/或解压缩(也被称为视频编码和/或解码,其被统称为视频译码)。通过使用深度学习架构来执行视频压缩和/或解压缩,本公开内容的各方面可以提高设备上的视频压缩和/或解压缩的效率。例如,使用所描述的视频译码技术的设备可以使用基于机器学习的技术来对视频更高效地压缩,可以将经压缩的视频发送给另一设备,并且另一设备可以使用本文描述的基于机器学习的技术来对经压缩的视频更高效地解压缩。
如上所述,神经网络是机器学习系统的示例,并且可以包括输入层、一个或多个隐藏层以及输出层。从输入层的输入节点提供数据,由一个或多个隐藏层的隐藏节点执行处理,并且通过输出层的输出节点产生输出。深度学习网络典型地包括多个隐藏层。神经网络的每个层可以包括可以包括人工神经元(或节点)的特征图或激活图。特征图可以包括滤波器、核等。节点可以包括用于指示这些层中的一个或多个层的节点的重要性的一个或多个权重。在一些情况下,深度学习网络可以具有一系列的多个隐藏层,其中初期的层用于确定输入的简单且低级的特性,以及后期的层建立更复杂且抽象的特性的层次结构。
深度学习架构可以学习特征的层次结构。例如,如果被给予了视觉数据,则第一层可以学习识别输入流中的相对简单的特征,诸如边缘。在另一示例中,如果被给予了听觉数据,则第一层可以学习识别特定频率中的频谱功率。采用第一层的输出作为输入的第二层可以学习识别特征的组合,诸如用于视觉数据的简单形状或用于听觉数据的声音的组合。例如,较高层可以学习表示视觉数据中的复杂形状或者听觉数据中的词语。再高层可以学习识别常见的视觉对象或口头短语。
当被应用于具有自然层次结构的问题时,深度学习架构可能表现得尤其好。例如,对机动运载工具的分类可以得益于首先学习识别轮子、挡风玻璃和其它特征。这些特征可以在较高层处以不同的方式进行组合,以识别汽车、卡车和飞机。
神经网络可以被设计为具有多种连接模式。在前馈网络中,信息是从较低层传递到较高层的,其中给定层中的每个神经元与较高层中的神经元进行通信。如上所述,可以在前馈网络的连续层中建立层次表示。神经网络也可以具有循环或反馈(也被称为自顶向下)连接。在循环连接中,来自给定层中的神经元的输出可以被传送给同一层中的另一神经元。循环架构可以有助于识别跨一个以上的输入数据块的模式,输入数据块按顺序被递送给神经网络。从给定层的神经元到较低层的神经元的连接被称为反馈(或自顶向下)连接。当识别高级概念可以辅助辨别输入的特定低级特征时,具有许多反馈连接的网络可以是有帮助的。
神经网络的各层之间的连接可以是全连接的或者局部连接的。图2A示出了全连接神经网络202的示例。在全连接神经网络202中,第一层中的神经元可以将其输出传送给第二层中的每个神经元,使得第二层中的每个神经元将接收来自第一层中的每个神经元的输入。图2B示出了局部连接神经网络204的示例。在局部连接神经网络204中,第一层中的神经元可以连接到第二层中的有限数量的神经元。更一般而言,局部连接神经网络204的局部连接层可以被配置为使得一层中的每个神经元将具有相同或相似的连接模式,但是具有可能带有不同的值(例如,210、212、214和216)的连接强度。局部连接的连接性模式可以在较高层中造成空间上不同的感受野,这是因为给定区域中的较高层神经元可以接收通过训练而调谐到针对网络的总输入的受限部分的属性的输入。
局部连接神经网络的一个示例是卷积神经网络。图2C示出了卷积神经网络206的示例。卷积神经网络206可以被配置为使得与针对第二层中的每个神经元的输入相关联的连接强度被共享(例如,208)。卷积神经网络可以非常适于其中输入的空间位置有意义的问题。根据本公开内容的各方面,卷积神经网络206可以用于执行视频压缩和/或解压缩的一个或多个方面。
一种类型的卷积神经网络是深度卷积网络(DCN)。图2D示出了DCN 200的详细示例,DCN 200被设计为从图像226中识别视觉特征,图像226是从诸如车载相机之类的图像捕获设备230输入的。可以对当前示例的DCN 200进行训练以识别交通标志和在交通标志上提供的数字。当然,DCN 200可以被训练用于其它任务,例如识别车道标线或识别交通灯。
可以利用有监督学习来训练DCN 200。在训练期间,可以向DCN 200呈现图像(诸如限速标志的图像226),并且然后可以计算前向传递以产生输出222。DCN 200可以包括特征提取部分和分类部分。在接收到图像226时,卷积层232可以将卷积核(未示出)应用于图像226以生成第一特征图集合218。作为一示例,用于卷积层232的卷积核可以是生成28x28特征图的5x5核。在本示例中,因为在第一特征图集合218中生成四个不同的特征图,所以在卷积层232处对图像226应用四个不同的卷积核。卷积核也可以被称为滤波器或卷积滤波器。
第一特征图集合218可以由最大池化层(未示出)二次采样以生成第二特征图集合220。最大池化层减小第一特征图集合218的大小。也就是说,第二特征图集合220的大小(诸如14x14)小于第一特征图集合218的大小(诸如28x28)。减小的大小向后续层提供类似的信息,同时减少存储器消耗。第二特征图集合220可以经由一个或多个后续卷积层(未示出)进一步卷积以生成一个或多个后续特征图集合(未示出)。
在图2D的示例中,对第二特征图集合220进行卷积以生成第一特征向量224。此外,对第一特征向量224进一步卷积以生成第二特征向量228。第二特征向量228的每个特征可以包括对应于图像226的可能特征(诸如,“标志”、“60”和“100”)的数字。softmax函数(未示出)可以将第二特征向量228中的数字转换为概率。照此,DCN 200的输出222是关于图像226包括一个或多个特征的概率。
在本示例中,输出222中的针对“标志”和“60”的概率高于输出222的其它项(诸如“30”、“40”、“50”、“70”、“80”、“90”和“100”)的概率。在训练之前,由DCN 200产生的输出222可能是不正确的。因此,可以计算输出222与目标输出之间的误差。目标输出是图像226的地面真值(例如,“标志”和“60”)。然后,可以调整DCN 200的权重,使得DCN 200的输出222与目标输出更紧密地对齐。
为了调整权重,学习算法可以计算针对权重的梯度向量。梯度可以指示关于在权重被调整的情况下误差将增加或减小的量。在顶层,梯度可以直接地对应于将倒数第二层中的激活神经元和输出层中的神经元进行连接的权重的值。在较低层中,梯度可以取决于权重的值和所计算出的较高层的误差梯度。然后可以调整权重以减小误差。这种调整权重的方式可以被称为“反向传播”,因为其涉及通过神经网络的“后向传递”。
在实践中,权重的误差梯度可以通过少量示例来计算,使得所计算出的梯度接近真实误差梯度。这种近似方法可以被称为随机梯度下降法。可以重复随机梯度下降,直到整个系统的可实现误差率已经停止下降或直到误差率已经达到目标水平。在学习之后,可以向DCN给予新图像,并且通过网络的前向传递可以产生可以被认为是DCN的推断或预测的输出222。
深度信念网络(DBN)是包括多层隐藏节点的概率模型。DBN可以用于提取训练数据集的分层表示。DBN可以通过将受限玻尔兹曼机(RBM)的各层进行叠加来获得。RBM是一种类型的人工神经网络,其可以学习在输入集合上的概率分布。由于RBM可以在没有关于每个输入应当被分类到的类别的信息的情况下学习概率分布,因此RBM通常在无监督学习中使用。使用混合的无监督和有监督范式,DBN的底部RBM可以以无监督的方式来训练并且可以充当特征提取器,以及顶部RBM可以以有监督的方式来训练(基于来自前一层的输入和目标类别的联合分布)并且可以充当分类器。
深度卷积网络(DCN)是卷积网络的网络,其被配置有额外的池化和归一化层。DCN在许多任务上都已经实现了最先进的性能。DCN可以使用有监督学习(其中,输入目标和输出目标两者对于许多范例都是已知的)来训练,并且通过使用梯度下降方法来修改网络的权重。
DCN可以是前馈网络。此外,如上所述,从DCN的第一层中的神经元到下一较高层中的一组神经元的连接是在第一层中跨越神经元共享的。DCN的前馈和共享连接可以用于快速处理。例如,DCN的计算负担可以比包括循环或反馈连接的类似大小的神经网络的计算负担小得多。
对卷积网络的每个层的处理可以被认为空间不变模板或基投影。如果首先将输入分解为多个通道(诸如彩色图像的红色、绿色和蓝色通道),则在该输入上训练的卷积网络可以被认为是三维的,其中两个空间维度沿着沿着图像的轴线,以及第三维度捕获色彩信息。卷积连接的输出可以被认为是形成后续层中的特征图,其中,特征图(例如,220)的每个元素接收来自前一层中的一系列神经元(例如,特征图218)和来自多个通道中的每个通道的输入。可以利用非线性(诸如整流max(0,x))来进一步处理特征图中的值。来自邻近神经元的值可以被进一步池化(这对应于下采样),并且可以提供另外的局部不变性和降维。
图3是示出深度卷积网络350的示例的框图。深度卷积网络350可以包括基于连接性和权重共享的多个不同类型的层。如图3所示,深度卷积网络350包括卷积块354A、卷积块354B。卷积块354A、卷积块354B中的各者可以被配置为具有卷积层(CONV)356、归一化层(LNorm)358和最大池化层(MAX POOL)360。
卷积层356可以包括一个或多个卷积滤波器,其可以被应用于输入数据352以生成特征图。尽管仅示出了两个卷积块354A、卷积块354B,但是本公开内容并不限制于此,而相反,根据设计偏好,任何数量的卷积块(例如,块354A、块354B)可以被包括在深度卷积网络350中。归一化层358可以对卷积滤波器的输出进行归一化。例如,归一化层358可以提供白化或横向抑制。最大池化层360可以提供在空间内的下采样聚合以用于局部不变性和降维。
例如,深度卷积网络的并行滤波器组可以被加载在SOC 100的CPU 102或GPU 104上,以实现高性能和低功耗。在替代实施例中,并行滤波器组可以被加载在SOC 100的DSP106或ISP 116上。此外,深度卷积网络350可以访问可以在SOC 100上存在的其它处理块,诸如分别专用于传感器和导航的传感器处理器114和导航模块120。
深度卷积网络350还可以包括一个或多个全连接层,诸如层362A(被标记为“FC1”)和层362B(被标记为“FC2”)。深度卷积网络350可以进一步包括逻辑回归(LR)层364。在深度卷积网络350的每个层356、358、360、362A、362B、364之间是要被更新的权重(未示出)。这些层(例如,356、358、360、362A、362B、364)中的每个层的输出可以充当深度卷积网络350的这些层(例如,356、358、360、362A、362B、364)中的随后层的输入,以从在卷积块354A的开始提供的输入数据352(例如,图像、音频、视频、传感器数据、和/或其它输入数据)学习分层特征表示。深度卷积网络350的输出是针对输入数据352的分类得分366。分类得分366可以是概率集合,其中每个概率是关于输入数据包括来自特征集合的特征的概率。
如上所述,数字视频数据可以包括大量数据,这可能为通信网络以及处理和存储视频数据的设备带来显著负担。例如,记录未经压缩的视频内容通常导致随着所记录的视频内容的分辨率增加而大大增加的大的文件大小。在一个说明性示例中,以1080p/24(例如,在宽度上具有1920个像素和在高度上具有1080个像素的分辨率,其中每秒捕获24个帧)记录的未经压缩的每通道16比特视频可能占用每帧12.4兆字节或每秒297.6兆字节。以每秒24个帧的4K分辨率而记录的未经压缩的每通道16比特视频可能占用每帧49.8兆字节或每秒1195.2兆字节。
网络带宽是大视频文件可能变得有问题的另一约束。例如,视频内容通常在无线网络上(例如,经由LTE、改进的LTE、新无线电(NR)、WiFiTM、蓝牙TM或其它无线网络)递送,并且可能构成消费者互联网流量的很大一部分。尽管在无线网络中的可用带宽量方面取得了进步,但是可能仍然期望减少用于在这些网络中递送视频内容的带宽量。
由于未经压缩的视频内容可能导致大文件,大文件可能涉及用于物理存储的相当大的存储器和用于传输的相当大的带宽,因此可以利用视频译码技术来压缩以及然后解压缩这样的视频内容。
为了减小视频内容的大小——并且因此减小存储视频内容所涉及的存储量以及传送视频内容所涉及的带宽量,可以根据特定的视频译码标准(诸如,HEVC、AVC、MPEG、VVC等等)来执行视频译码技术。视频译码通常使用预测方法(诸如帧间预测、帧内预测等),预测方法利用在视频图像或序列中存在的冗余。视频译码技术的共同目标是将视频数据压缩为使用较低比特率的形式,同时避免或最小化视频质量的降级。随着对视频服务的需求增长以及新的视频服务变得可用,需要具有更好的译码效率、性能和速率控制的译码技术。
一般而言,编码设备根据视频译码标准来对视频数据进行编码,以生成经编码的视频比特流。在一些示例中,经编码的视频比特流(或“视频比特流”或“比特流”)是一系列的一个或多个经译码的视频序列。编码设备可以通过将每个图片分割为多个切片来生成图片的译码表示。一切片是独立于其它切片的,使得对该切片中的信息进行译码,而不依赖于来自在同一图片内的其它切片的数据。切片包括一个或多个切片段,其包括独立的切片段以及(如果存在的话)依赖于先前切片段的一个或多个从属切片段。在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以及对应的语法元素。下文更加详细地描述变换译码。
根据HEVC标准,可以使用TU来执行变换。可以基于在给定CU内的PU的大小来对TU进行大小设定。TU可以具有与PU相同的大小或者小于PU。在一些示例中,可以使用被称为残差四叉树(RQT)的四叉树结构来将与CU相对应的残差样本细分为更小的单元。RQT的叶子节点可以对应于TU。与TU相关联的像素差值可以被变换以产生变换系数。然后可以由编码设备对变换系数进行量化。
一旦视频数据的图片被分割为CU,编码设备就使用预测模式来预测每个PU。然后从原始视频数据中减去预测单元或预测块以获得残差(下文描述)。对于每个CU,可以使用语法数据在比特流内用信号通知预测模式。预测模式可以包括帧内预测(或图片内预测)或帧间预测(或图片间预测)。帧内预测利用在图片内在空间上相邻的样本之间的相关性。例如,使用帧内预测,每个PU是从在相同图片中的相邻图像数据进行预测的,使用例如DC预测以找到用于PU的平均值,使用平面预测以使平面表面适配PU,使用方向预测以从相邻数据进行推断,或者使用任何其它适当的预测类型。帧间预测使用在图片之间的时间相关性,以便推导出用于图像样本块的运动补偿预测。例如,使用帧间预测,每个PU是使用运动补偿预测来从在一个或多个参考图片(按照输出顺序在当前图片之前或之后)中的图像数据进行预测的。例如,可以在CU级别处作出是使用图片间预测还是使用图片内预测来对图片区域进行译码的决策。
在使用帧内预测和/或帧间预测执行预测之后,编码设备可以执行变换和量化。例如,在预测之后,编码设备可以计算与PU相对应的残差值。残差值可以包括在正被译码的当前像素块(PU)与用于预测当前块的预测块(例如,当前块的预测版本)之间的像素差值。例如,在生成预测块(例如,实行帧间预测或帧内预测)之后,编码设备可以通过从当前块中减去由预测单元产生的预测块来生成残差块。残差块包括像素差值集合,其对在当前块的像素值与预测块的像素值之间的差进行量化。在一些示例中,可以用二维块格式(例如,像素值的二维矩阵或阵列)来表示残差块。在这样的示例中,残差块是对像素值的二维表示。
使用块变换来对在执行预测之后可能剩余的任何残差数据进行变换,块变换可以是基于离散余弦变换、离散正弦变换、整数变换、小波变换、其它适当的变换函数、或其任何组合的。在一些情况下,可以将一个或多个块变换(例如,大小32x 32、16x 16、8x 8、4x 4或其它适当的大小)应用于每个CU中的残差数据。在一些实施例中,可以将TU用于由编码设备实现的变换和量化过程。具有一个或多个PU的给定CU也可以包括一个或多个TU。如下文进一步详细描述的,残差值可以使用块变换而被变换为变换系数,并且然后可以使用TU进行量化和扫描,以产生用于熵译码的串行化变换系数。
编码设备可以执行对变换系数的量化。量化通过对变换系数进行量化以减少用于表示系数的数据量来提供进一步的压缩。例如,量化可以减小与系数中的一些或所有系数相关联的比特深度。在一个示例中,具有n比特值的系数可以在量化期间向下舍入为m比特值,其中n大于m。
一旦执行了量化,则经译码的视频比特流包括经量化的变换系数、预测信息(例如,预测模式、运动向量、块向量等)、分割信息以及任何其它适当的数据(诸如其它语法数据)。经译码的视频比特流的不同元素然后可以由编码设备进行熵编码。在一些示例中,编码设备可以利用预定义的扫描顺序来扫描经量化的变换系数,以产生可以被熵编码的串行化向量。在一些示例中,编码设备可以执行自适应扫描。在扫描经量化的变换系数以形成向量(例如,一维向量)之后,编码设备可以对该向量进行熵编码。例如,编码设备可以使用上下文自适应可变长度译码、上下文自适应二进制算术译码、基于语法的上下文自适应二进制算术译码、概率区间分割熵译码或另一种适当的熵编码技术。
编码设备可以存储经编码的视频比特流和/或可以在通信链路上向接收设备(其可以包括解码设备)发送经编码的视频比特流数据。解码设备可以通过熵解码(例如,使用熵解码器)并且提取构成经编码的视频数据的一个或多个经译码的视频序列的元素,从而对经编码的视频比特流数据进行解码。解码设备然后可以重新缩放经编码的视频比特流数据并且对其执行逆变换。残差数据然后被传递给解码设备的预测阶段。解码设备然后使用帧内预测、帧间预测、IBC和/或其它类型的预测来预测像素块(例如,PU)。在一些示例中,将预测与逆变换的输出(残差数据)相加。解码设备可以将经解码的视频输出到视频目标设备,视频目标设备可以包括用于将经解码的视频数据显示给内容的消费者的显示器或其它输出设备。
通过各种视频译码标准定义的视频译码系统和技术(例如,上述HEVC视频译码技术)能够保留原始视频内容中的大部分信息,并且是可以基于信号处理和信息理论概念而先验定义的。然而,在一些情况下,基于机器学习(ML)的图像和/或视频系统可以提供优于非基于ML的图像和视频译码系统(诸如基于深度学习的端到端视频译码(DLEC)系统)的益处。如上所述,许多基于深度学习的系统被设计为自动编码器子网络(编码器子网络)和负责学习在用于熵译码的经量化的隐变量上的概率模型的第二子网络的组合。这种架构可以被视为变换、量化模块(编码器子网络)和熵建模子网络模块的组合。
图4描绘了系统400,其包括被配置为使用基于深度学习的系统来执行视频编码和解码的设备402。设备402耦合到相机407和存储介质414(例如,数据存储设备)。在一些实现中,相机407被配置为将图像数据408(例如,视频数据流)提供给处理器404,以供基于深度学习的系统410进行编码。在一些实现中,设备402可以耦合到和/或可以包括多个相机(例如,双相机系统、三个相机或其它数量的相机)。在一些情况下,设备402可以耦合到麦克风和/或其它输入设备(例如,键盘、鼠标、诸如触摸屏和/或触摸板之类的触摸输入设备、和/或其它输入设备)。在一些示例中,相机407、存储介质414、麦克风和/或其它输入设备可以是设备402的一部分。
设备402还经由传输介质418(例如,一个或多个无线网络、一个或多个有线网络、或其组合)耦合到第二设备490。例如,传输介质418可以包括由无线网络、有线网络、或者有线网络和无线网络的组合提供的信道。传输介质418可以形成基于分组的网络的一部分,诸如局域网、广域网或诸如互联网之类的全球网络。传输介质418可以包括路由器、交换机、基站或可以用于促进从源设备到接收设备的通信的任何其它设备。无线网络可以包括任何无线接口或无线接口的组合,并且可以包括任何合适的无线网络(例如,互联网或其它广域网、基于分组的网络、WiFiTM、射频(RF)、UWB、WiFi直连、蜂窝、长期演进(LTE)、WiMaxTM等)。有线网络可以包括任何有线接口(例如,光纤、以太网、电力线以太网、基于同轴电缆的以太网、数字信号线(DSL)等)。有线网络和/或无线网络可以使用各种设备来实现,诸如基站、路由器、接入点、桥接器、网关、交换机等。经编码的视频比特流数据可以根据诸如无线通信协议之类的通信标准进行调制,并且被发送给接收设备。
设备402包括一个或多个处理器(本文中被称为“处理器”)404,其耦合到存储器406、第一接口(“I/F 1”)412和第二接口(“I/F 2”)416。处理器404被配置为从相机407、从存储器406和/或从存储介质414接收图像数据408。处理器404经由第一接口412(例如,经由存储器总线)耦合到存储介质414,并且经由第二接口416(例如,网络接口设备、无线收发机和天线、一个或多个其它网络接口设备、或其组合)耦合到传输介质418。
处理器404包括基于深度学习的系统410。基于深度学习的系统410包括编码器部分462和解码器部分466。在一些实现中,基于深度学习的系统410可以包括一个或多个自动编码器。编码器部分462被配置为接收输入数据470并处理输入数据470,以至少部分地基于输入数据470来生成输出数据474。
在一些实现中,基于深度学习的系统410的编码器部分462被配置为对输入数据470执行有损压缩以生成输出数据474,使得输出数据474具有与输入数据470相比较少的比特。可以对编码器部分462进行训练以对输入数据470(例如,图像或视频帧)进行压缩,而不使用基于任何先前表示(例如,一个或多个先前重构的帧)的运动补偿。例如,编码器部分462可以仅使用来自视频帧的视频数据来压缩该视频帧,而不使用先前重构的帧的任何数据。由编码器部分462处理的视频帧在本文中可以被称为经帧内预测的帧(I帧)。在一些示例中,可以使用传统视频译码技术(例如,根据HEVC、VVC、MPEG-4或其它视频译码标准)来生成I帧。在这样的示例中,处理器404可以包括被配置为执行基于块的帧内预测(诸如上文关于HEVC标准所述的帧内预测)的视频译码设备(例如,编码设备)或者与其耦合。在这样的示例中,处理器404可以不包括基于深度学习的系统410。
在一些实现中,可以对基于深度学习的系统410的编码器部分462进行训练以使用基于先前表示(例如,一个或多个先前重构的帧)的运动补偿来压缩输入数据470(例如,视频帧)。例如,编码器部分462可以使用来自视频帧的视频数据并且使用先前重构的帧的数据来压缩该视频帧。由编码器部分462处理的视频帧在本文中可以被称为经帧内预测的帧(P帧)。运动补偿可以用于通过描述来自先前重构的帧的像素如何移动到当前帧中的新位置上以及残差信息来确定当前帧的数据。
如图所示,基于深度学习的系统410的编码器部分462包括神经网络463和量化器464。神经网络463可以包括生成中间数据472的一个或多个卷积神经网络(CNN)、一个或多个全连接神经网络、一个或多个门控循环单元(GRU)、一个或多个长短期记忆(LSTM)网络、一个或多个卷积RNN、一个或多个卷积GRU、一个或多个卷积LSTM、一个或多个GAN、其任何组合、和/或其它类型的神经网络架构。中间数据472被输入到量化器464。在图6-图10中示出了可以被包括在编码器部分462中的组件的示例。
量化器464被配置为执行对中间数据472的量化以及在一些情况下执行对其的熵译码,以产生输出数据474。输出数据474可以包括经量化的(并且在一些情况下,经熵译码的)数据。由量化器464执行的量化操作可以导致从中间数据472生成量化码(或表示由基于深度学习的系统410生成的量化码的数据)。量化码(或表示量化码的数据)也可以被称为隐码(latent code)或隐变量(表示为z)。被应用于隐变量的熵模型在本文中可以被称为“先验”。在一些示例中,可以使用当根据现有的视频译码标准来编码和/或解码视频数据时执行的现有的量化和/或熵译码操作,来执行量化和熵译码操作。在一些示例中,量化和/或熵编码操作可以由基于深度学习的系统410来完成。在一个说明性示例中,可以使用有监督训练来训练基于深度学习的系统410,其中在训练期间,残差数据被用作输入,并且量化码和熵码被用作已知输出(标签)。
基于深度学习的系统410的解码器部分466被配置为(例如,直接从量化器464和/或从存储介质414)接收输出数据474。解码器部分466可以处理输出数据474,以至少部分地基于输出数据474来生成对输入数据470的表示476。在一些示例中,基于深度学习的系统410的解码器部分466包括神经网络468,其可以包括一个或多个CNN、一个或多个全连接神经网络、一个或多个GRU、一个或多个长短期记忆(LSTM)网络、一个或多个卷积RNN、一个或多个卷积GRU、一个或多个卷积LSTM、一个或多个GAN、其任何组合、和/或其它类型的神经网络架构。在图6-图10中示出可以被包括在解码器部分466中的组件的示例。
处理器404被配置为将输出数据474发送给传输介质418或存储介质414中的至少一者。例如,可以将输出数据474存储在存储介质414处,以供解码器部分466稍后检索和解码(或解压缩)以生成对输入数据470的表示476作为经重构的数据。经重构的数据可以用于各种目的,诸如以用于回放已被编码/压缩以生成输出数据474的视频数据。在一些实现中,可以在与解码器部分466匹配的另一解码器设备(例如,在设备402中、在第二设备490中或在另一设备中)处解码输出数据474,以生成对输入数据470的表示476作为经重构的数据。例如,第二设备490可以包括与解码器部分466匹配(或基本上匹配)的解码器,并且可以经由传输介质418将输出数据474发送给第二设备490。第二设备490可以处理输出数据474,以生成对输入数据470的表示476作为经重构的数据。
系统400的组件可以包括电路或其它电子硬件和/或可以使用其来实现,电子电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)、和/或其它适当的电子电路),和/或可以包括计算机软件、固件或其任何组合,和/或使用其来实现,以执行本文描述的各种操作。
虽然系统400被示为包括某些组件,但是本领域普通技术人员将明白,系统400可以包括比在图4中所示的组件更多或更少的组件。例如,系统400还可以包括输入设备和输出设备(未示出),或者可以是包括输入设备和输出设备的计算设备的一部分。在一些实现中,系统400还可以包括以下各者或者可以是包括以下各者的计算设备的一部分:一个或多个存储器设备(例如,一个或多个随机存取存储器(RAM)组件、只读存储器(ROM)组件、高速缓存存储器组件、缓冲器组件、数据库组件、和/或其它存储器设备)、与一个或多个存储器设备相通信和/或电连接到其的一个或多个处理设备(例如,一个或多个CPU、GPU和/或其它处理设备)、用于执行无线通信的一个或多个无线接口(例如,包括用于每个无线接口的一个或多个收发机和基带处理器)、用于在一个或多个硬接线连接上执行通信的一个或多个有线接口(例如,诸如通用串行总线(USB)输入之类的串行接口、照明连接器、和/或其它有线接口)、和/或在图4中未示出的其它组件。
在一些实现中,系统400可以由计算设备本地实现和/或被包括在计算设备中。例如,计算设备可以包括移动设备、个人计算机、平板计算机、虚拟现实(VR)设备(例如,头戴式显示器(HMD)或其它VR设备)、增强现实(AR)设备(例如,HMD、AR眼镜或其它AR设备)、可穿戴设备、服务器(例如,在软件作为服务(SaaS)系统中或其它基于服务器的系统)、电视机、和/或具有执行本文描述的技术的资源能力的任何其它计算设备。
在一个示例中,基于深度学习的系统410可以被并入便携式电子设备中,便携式电子设备包括:存储器406,其耦合到处理器404并且被配置为存储可由处理器404执行的指令;以及无线收发机,其耦合到天线和处理器404并且可操作以将输出数据474发送给远程设备。
如上所述,基于深度学习的系统被通常设计为处理非二次采样输入格式,诸如RGB或YUV 4:4:4。在以下文档中描述了针对RGB输入的图像和视频译码方案的示例:J.Balle,D.Minnen,S.Singh,S.J.Hwang,N.Johnston,“Variational image compression with ascale hyperprior”,ICLR,2018(被称为“J.Balle论文”),以及D.Minnen,J.Balle,G.Toderici,“Joint Autoregressive and Hierarchical Priors for Learned ImageCompression”,CVPR 2018(被称为“D.Minnen论文”),据此通过引用的方式将其全部内容并入并且用于所有目的。
图5是示出基于深度学习的系统500的示例的示意图。图5的基于深度学习的系统中的ga和gs子网络分别对应于编码器子网络(例如,编码器部分462)和解码器子网络(例如,解码器部分466)。图5的ga和gs子网络被设计用于三通道RGB输入,其中所有三个R、G和B输入通道都经过相同的神经网络层(卷积层和广义分裂归一化(GDN)层)并且由其处理。神经网络层可以包括执行卷积运算的卷积层(包括卷积层510)和实现局部分裂归一化的GDN和/或逆GDN(IGDN)非线性层。局部分裂归一化是一种类型的变换,其已被证明特别适合于图像的密度建模和压缩。基于深度学习的系统(诸如在图5中所示的系统)以具有类似统计特性的输入通道为目标,诸如RGB数据(其中不同R、G和B通道的统计特性相似)。
尽管基于深度学习的系统被设计为处理RGB输入,但是大多数图像和视频译码系统使用YUV输入格式(例如,在许多情况下,YUV 4:2:0输入格式)。YUV格式的数据的色度(U和V)通道可以相对于亮度(Y)通道进行二次采样。二次采样对视觉质量产生最小的影响(例如,对视觉质量没有显著或明显的影响)。二次采样格式包括YUV 4:2:0格式、YUV 4:2:2格式和/或其它YUV格式。在YUV格式中,通道之间的相关性降低,这可能与其它色彩格式(例如,RGB格式)不同。此外,亮度(Y)和色度(U和V)通道的统计是不同的。例如,与亮度通道相比,U和V通道具有较小的方差,而在例如RGB格式中,不同R、G和B通道的统计特性更相似。视频编码器-解码器(或编解码器)是根据数据的输入特性来设计的(例如,编解码器可以根据数据的输入格式来对数据进行编码和/或解码)。例如,如果帧的色度通道被二次采样(例如,色度通道的分辨率是亮度通道的一半),则当编解码器预测用于运动补偿的帧的块时,亮度块的宽度和高度都将是色度块的两倍。在另一示例中,编解码器可以确定将针对色度和亮度来对多少像素进行编码或解码等等。
为了支持YUV格式(例如,YUV 4:2:0格式),必须修改基于深度学习的架构。例如,如果将(如上所述,大多数基于深度学习的系统被设计为处理的)RGB输入数据替换为YUV4:4:4输入数据(其中所有通道具有相同维度),则由于亮度(Y)和色度(U和V)通道的不同的统计特性,基于深度学习的系统处理输入数据的性能降低。如上所述,色度(U和V)通道以一些YUV格式进行二次采样,诸如在YUV 4:2:0的情况下。例如,对于具有YUV 4:2:0格式的内容,U和V通道分辨率为Y通道分辨率的一半(由于宽度和高度减半,U和V通道的大小为Y通道的四分之一)。这样的二次采样可能导致输入数据与基于深度学习的系统的输入不兼容。输入数据是基于深度学习的系统正在尝试进行编码和/或解码的信息(例如,包括三个通道的YUV帧,通道包括亮度(Y)和色度(U和V)通道)。
在一些端到端视频译码的基于深度学习的系统中,自动编码器用于对帧内帧、运动向量(例如,密集光流)和运动补偿帧相对于原始帧的残差进行译码。在一个示例中,流自动编码器可以用于联合地学习对光流以及尺度空间进行译码,并且残差自动编码器对经扭曲的预测帧与原始帧之间的残差进行译码,所有这些都在RGB域中。
如上所述,本文描述了提供基于ML的系统(例如,包括一个或多个基于深度学习的架构)的系统和技术,基于ML的系统高效地支持一种或多种YUV格式(例如,YUV 4:2:0格式)。基于深度学习的架构可以对独立帧(或图像)和/或包括多个帧的视频数据进行编码和/或解码。例如,基于ML的系统可以获得当前帧的亮度分量和先前重构的帧的亮度分量作为输入,先前重构的帧可以是由基于ML系统的先前实例所重构的。基于ML的系统可以处理当前帧和先前帧的亮度分量,以估计用于当前帧的亮度分量的运动信息(例如,流信息,诸如光流信息)。使用当前帧的亮度分量,基于ML的系统然后可以确定(例如,估计)用于当前帧的一个或多个色度分量的运动估计(例如,流信息,诸如光流信息)。可以针对帧的所有分量执行这样的技术。下文将对进一步的细节进行描述。
图6是示出被配置为执行视频译码的基于深度学习的系统600的神经网络架构的示例的示意图。图6的神经网络架构包括帧内预测引擎602和帧间预测引擎610。帧内预测引擎602和帧间预测引擎610可以包括如图6所示的自动编码器(例如,变分自动编码器(VAE)),然而在其它实现中可以包括其它类型的神经网络架构。如图所示,帧内预测引擎602处理输入帧604的像素信息,以产生输入帧604的隐表示(表示为)。输入帧604包括用于输入帧604的每个像素的亮度分量(表示为/>)和两个色度分量(表示为/>)和/>)。隐表示也可以被称为比特流,其包括作为输入帧604的编码版本的多个比特。基于隐表示/>(或从另一设备接收的隐表示/比特流),帧内预测引擎602的解码器子网络可以生成经重构的帧606(表示为/>),其中分量上的“帽”指示经重构的值),其是输入帧604的重构版本。
帧间预测引擎610包括流引擎618、残差引擎620和扭曲引擎622。如图所示,流引擎618获得当前帧614(在时间t处)的亮度分量(表示为)和先前帧615(在先前时间t-1处)的经重构的亮度分量(表示为/>)作为输入。使用亮度分量/>和亮度分量/>流引擎618生成用于当前帧614的亮度分量/>的运动信息(例如,流信息)的隐表示(表示为/>)。运动信息可以包括光流信息(例如,多个运动或位移向量,并且在一些情况下,是每个像素或样本的尺度分量),其指示当前帧614(在时间t处)的像素相对于先前帧615(在时间t-1处)的移动。隐表示/>也可以被称为比特流,并且可以包括表示用于当前帧614的亮度分量/>的编码版本的多个比特。因为流引擎618处理用于当前帧614的亮度分量/>而不处理色度分量,所以与使用当前帧614的所有分量来确定运动信息相比,减小了隐表示/>(比特流)的大小。
使用亮度分量的隐表示/>(或从另一设备接收的表示帧的亮度分量的隐表示或比特流),流引擎618确定用于当前帧614的亮度分量/>的运动信息(表示为fL)并且还确定用于当前帧614的色度分量/>的运动信息(表示为fC)。下面参照图7A和图7B描述了基于所确定的用于亮度分量的运动信息来确定或估计用于色度分量的运动信息的细节。
扭曲引擎622被配置为使用针对当前帧614(在时间t处)的亮度和色度分量确定的运动信息(fL和fC)来执行扭曲。例如,扭曲引擎622可以将当前帧614(在时间t处)的像素扭曲由用于当前帧614的亮度/>和色度分量/>的运动信息(fL和fC)所指示的量。在一些方面中,扭曲引擎622可以执行空间尺度流(SSF)扭曲。例如,SSF扭曲可以应用三线性插值来从所学习到的尺度流向量生成帧间预测,其中预测器可以如下公式化:
pY:=trilinear(xY,fL)
pU:=trilinear(xU,fC),以及pV:=trilinear(xV,fC)
使得:
等式(1)
以上三线性插值可以是基于一个或多个扭曲参数在每个分量的基础上(例如,对于每个亮度分量以及对于每个单独的U和V色度分量)执行的,一个或多个扭曲参数是基于亮度和色度分量/>的运动信息(fL和fC)来确定的。例如,扭曲参数可以包括:/>其表示运动或位移向量的水平分量(在x方向上);/>其表示运动或移位向量的垂直分量(在y方向上);以及s(被称为尺度域),其表示经重构的帧的与空间运动/位移信息(vx和vy)组合的逐渐平滑版本。
来自扭曲引擎622的输出(在扭曲引擎622执行扭曲之后)包括在图6中表示为pY、pU、pV的预测,其中,pY对应于针对当前帧614的亮度分量亮度的预测,pU对应于针对当前帧614的色度分量/>的预测,并且pV对应于针对当前帧614的色度分量/>的预测。
然后,基于深度学习的系统600可以从当前帧614的对应亮度和色度/>分量中减去预测pY、pU、pV以获得残差信号,残差信号包括用于亮度分量的残差信号rY、用于色度分量/>的残差信号rU以及用于色度分量/>的残差信号rV。残差引擎620可以生成用于残差的隐表示(表示为/>)。使用残差的隐表示/>(或从另一设备接收的残差的隐表示),残差引擎620可以生成用于当前帧的经重构的残差,其包括用于亮度分量的经重构的残差信号/>用于色度分量/>的经重构的残差信号/>以及用于色度分量/>的经重构的残差信号/>基于深度学习的系统600可以将预测pY、pU、pV与经重构的残差/>相加,以生成经重构的帧616。
图7A是示出流引擎718的示例的示意图,流引擎718利用当前帧(在时间t处)的亮度分量和先前帧(在时间t-1处)的经重构的亮度分量/>(其共同被示为亮度分量722)进行操作。如上所述,在一些情况下,流引擎718可以被实现为自动编码器(VAEflow)。在一些情况下,可以设计组合的基于深度学习的架构,其中,如图7A所示,流引擎718使用当前帧的亮度分量/>和先前重构的帧的亮度分量/>两者来估计亮度运动信息(例如,SSFfL)和色度运动信息(例如,SSF fC)。例如,如本文所描述的,可以基于亮度运动信息(例如,fL)来推导色度运动信息(例如,fC)。
如图7A所示,为了确定用于当前帧的亮度分量的运动信息(fL),通过若干卷积层和激活层(统称为前向传递723)来处理当前帧的亮度分量/>和先前帧的经重构的亮度分量/>图7A中的“↓2”和“↑2”记号表示步幅(stride)值,其中↓2是指为2的步幅(用于下采样,如通过“↓”所示),而↑2也是指为2的步幅(用于上采样,如通过“↑”所示)。例如,卷积层724通过在水平和垂直维度上以步幅值2应用5x5卷积滤波器,从而将输入亮度分量/>和/>下采样达四的因数。卷积层724的所产生的输出是表示用于当前帧的亮度分量/>的亮度运动信息(fL)的N个特征值阵列(对应于N个通道)。记号“2/N”表示2个输入通道和N个输出通道。跟随卷积层724的非线性层然后可以处理由卷积层724输出的特征值。连续的卷积层和非线性层中的每一者可以处理由前一层输出的特征,直到前向传递723的最终卷积层725将特征输出到流引擎718的瓶颈部分726。
前向传递723的输出由流引擎718的瓶颈部分726进行处理,以生成表示用于当前帧的亮度分量的亮度运动信息(fL)的比特流或隐变量。瓶颈部分726可以包括前向传递723中的量化引擎和熵编码引擎、以及流引擎718的后向传递728上的熵解码引擎和反量化引擎。例如,量化引擎可以对由前向传递723的最终卷积层725输出的特征执行量化,以生成量化输出。熵编码引擎可以对来自量化引擎的量化输出进行熵编码以生成比特流。在一些情况下,熵编码引擎可以使用由超先验网络生成的先验来执行熵编码。神经网络系统可以输出比特流,以用于存储,用于传输到另一设备、服务器设备或系统,和/或以其它方式输出比特流。
在一些情况下,后向传递728可以是流引擎718的神经网络系统的解码器子网络,或者是(另一设备的)另一流引擎的神经网络系统的解码器子网络。流引擎718的熵解码引擎可以对由瓶颈726的熵编码引擎(或者另一流引擎的瓶颈的熵编码引擎)输出的比特流进行熵解码,并且将经熵解码的数据输出到后向传递728的反量化引擎。熵解码引擎可以使用由超先验网络生成的先验来执行熵解码。反量化引擎可以对数据进行反量化。
后向传递728的卷积层和逆激活层然后可以处理来自瓶颈726的经反量化的数据,以生成用于当前帧的亮度分量的运动信息729(fL)。运动信息729(fL)可以包括运动向量(例如,具有在水平或x方向上的幅度和在垂直或y方向上的幅度),诸如用于当前帧的亮度分量/>的每个样本的运动向量。在一些情况下,运动信息729(fL)还可以包括尺度分量。例如,为了说明性目的,如图7A所示,运动信息729包括/>分量、/>分量和sL分量。如上所述,和sL分量可以由扭曲引擎622在等式(1)中用于对当前帧614(在时间t处)的像素进行扭曲以生成预测pY、pU、pV。
在学习用于当前帧的亮度分量的运动信息729(fL)之后,流引擎718可以确定或预测用于当前帧的色度分量的运动信息731(fC)。例如,流引擎718可以对用于亮度分量的运动信息729(fL)进行二次采样,以便获得用于色度分量的运动信息731(fC)。用于色度分量的运动信息731(fC)可以包括运动向量(例如,具有在水平或x方向上的幅度和在垂直或y方向上的幅度),诸如用于当前帧的色度分量的每个样本的运动向量。在一些情况下,运动信息731(fC)还可以包括尺度分量。例如,为了说明性目的,如图7A所示,用于当前帧的色度分量的运动信息731(fC)包括/>分量、/>分量和sC分量。类似于用于亮度分量的运动信息729(fL),用于色度运动信息731(fC)的/>和sC分量可以由扭曲引擎622在等式(1)中用于对当前帧614(在时间t处)的像素进行扭曲以生成预测pY、pU、pV。
在一些方面中,可以训练具有下采样的卷积层730(例如,使用无监督学习或训练),以基于用于当前帧的亮度分量的运动信息729(f L)来学习用于当前帧的色度分量的运动信息731(f C)。在一个说明性示例中,可用于训练流引擎718的训练集可以包括亮度和色度运动信息(作为地面真值)。亮度运动信息可以被输入到流引擎718的神经网络中,并且从流引擎718输出的所产生的色度运动信息可以使用损失函数(例如,L1或绝对差之和、L2范数或平方差之和或其它损失函数),使用地面真值色度运动信息来进行最小化。
卷积层730在图7A中表示为|3/3|5x5 conv↓2|。记号“3/3”表示存在产生3个输出通道的3个输入通道。如上所述,“↓2”和“↑2”记号是步幅值,其中,↓2是指用于下采样的为2的步幅(如通过“↓”所指示),而↑2是指用于上采样的为2的步幅(如通过“↑”所指示)。例如,卷积层730通过在水平和垂直维度上以步幅值2应用5x5卷积滤波器,从而将用于亮度分量的运动信息729(f L)下采样达四的因数(例如,对于YUV 4:2:0格式)。在一些示例中,卷积层730可以被训练为针对其它格式(例如,YUV 4:2:2格式等)下采样达其它因数。卷积层724的所产生的输出是3x3特征值阵列(对应于3个通道),这是用于亮度分量/>的运动信息729(f L)的下采样版本。
在其它方面(在图7A中未示出)中,用于当前帧的色度分量的运动信息731(f C)可以通过直接对用于亮度分量的运动信息729(f L)进行二次采样来获得。例如,流引擎718可以在不使用卷积层730处理亮度流的情况下确定色度流。在一个说明性示例中,代替卷积层730,流引擎718可以包括二次采样器(其可以与流引擎718的神经网络分离),其可以直接对亮度运动信息729(f L)进行二次采样以获得色度运动信息731(f C)。
图7B是示出用于对(例如,使用图7A的流引擎718)针对当前帧确定的亮度运动信息进行二次采样以获得针对当前帧的色度运动信息的二次采样引擎735的示例的示意图。为了说明性目的,提供了简化示例,其中亮度运动信息732的每个通道N(其中N=2)具有4x4(四行和四列)的分辨率,总共具有十六个流运动或位移向量。二次采样引擎735对亮度运动信息732进行二次采样或下采样以生成或获得色度运动信息738,色度运动信息738是亮度运动信息732的二次采样/下采样版本。
图7B的说明性示例示出了色度运动信息738,色度运动信息738是亮度运动信息732的大小的四分之一。例如,如前所述,对于具有YUV 4:2:0格式的内容,U和V通道分辨率是Y通道分辨率的一半(由于宽度和高度减半,所以U和V通道具有作为Y通道的四分之一的大小)。二次采样引擎735可以被训练或以其它方式配置为处置除了4:2:0格式之外的其它格式,在这种情况下,二次采样可以包括生成具有与在图7A中所示的分辨率不同的分辨率的色度信息。
在一些方面中,如上所述,二次采样引擎735可以包括图7A的卷积层730,其可以被训练(例如,使用无监督学习或训练)为根据亮度运动信息732来确定色度运动信息738。在其它方面中,二次采样引擎735可以包括直接对亮度运动信息732进行二次采样以获得色度运动信息738的二次采样器。
前向传递723和后向传递728的卷积或变换层中以及瓶颈(M)中的通道数量(在图7A中表示为N)可以被设置为任何合适的值。在一个说明性示例中,通道数量N可以被选择为N=192,并且M=128。经重构的帧的连续平滑版本(与尺度域s相关)可以通过使用滤波或平滑算子来获得。在一个示例中,可以使用具有不同宽度的高斯模糊滤波器。在另一示例中,具有连续滤波和插值的高斯金字塔可以用于生成经重构的帧的平滑版本。此外,可以使用任意大的数的尺度S。在一个示例中,尺度S可以被设置为S=3,并且尺度级别可以被选择为其中σ0可以表示高斯滤波器宽度。
尽管出于说明性目的,图7A中的非线性激活层被示为PReLU,但是也可以使用其它类型的非线性激活层,诸如广义分裂归一化(GDN)层、PReLU和GDN层的组合。
在一些示例中,为了有效地支持以一种或多种YUV格式(例如,YUV 4:2:0),图6的帧内预测引擎602和残差引擎620可以基于在图8A、图9或图10中所示的通用神经网络架构来设计。例如,在图8A、图9和图10中所示的架构可以被配置用于处置具有YUV 4:2:0格式的输入数据。在一些示例中,与在图8A、图9或图10中所示的类似的神经网络架构可以用于编码和/或解码其它类型的YUV内容(例如,具有YUV 4:4:4格式、YUV 4:2:2格式等的内容)和/或具有其它输入格式的内容。在一些情况下,在图8A、图9和图10中所示的架构中的每一者包括利用YUV(例如,4:2:0)残差进行操作的残差自动编码器。
图8A是示出被配置为直接利用4:2:0输入(Y、U和V)数据进行工作的前端神经网络系统800的示例的示意图。如图8A所示,在神经网络系统的编码器子网络(也被称为前向传递)处,使用1x1卷积层806来对分支的亮度和色度通道(亮度Y通道802以及U和V色度通道804)进行组合,并且然后应用非线性层808(也被称为非线性算子)。在神经网络系统的解码器子网络(也被称为后向传递)上执行类似的操作,但是以相反的顺序来执行。例如,如图8A所示,应用逆非线性层809(也被称为逆非线性算子),使用1x1卷积层813来分离Y和U、V通道,并且使用相应的逆非线性层815、816和卷积层817、818来处理分离的Y和U、V通道。
图8A的神经网络系统800的编码器子网络中的前两个神经网络层包括第一卷积层811(表示为Nconv|3x3|↓1)、第二卷积层810(表示为Nconv|5x5|↓2)、第一非线性层814和第二非线性层812。图8A的前端神经网络架构的解码器子网络中的最后两个神经网络层包括第一逆非线性层816、第二逆非线性层815、用于生成帧的经重构的色度(U和V)分量的第一卷积层818(表示为2conv|3x3|↑1)、以及用于生成帧的经重构的亮度(Y)分量的第二卷积层817(表示为1conv|5x5|↑2)。“Nconv”记号是指给定卷积层的输出通道数量(N)(对应于输出特征数量)(其中N值定义了输出通道数量)。3x3和5x5记号指示相应的卷积核的大小(例如,3x3核和5x5核)。“↓1”和“↓2”记号是指步幅值,其中↓1是指为1的步幅(用于下采样,如通过“↓”所指示的),而↓2是指为1的步幅(用于下采样)。“↑1”和“↑2”记号是指步幅值,其中↑1是指为1的步幅(用于上采样,如通过“↑”所指示的),而↑2是指为1的步幅(用于上采样)。
例如,卷积层810通过在水平和垂直维度上以步幅值2应用5x5卷积滤波器,从而将输入亮度通道602下采样达四的因数。卷积层810的所产生的输出是N个特征值阵列(对应于N个通道)。卷积层811通过在水平和垂直维度以步幅值1应用3x3卷积滤波器,从而处理输入色度(U和V)通道804。卷积层811的所产生的输出是N个特征值阵列(对应于N个通道)。由卷积层810输出的特征值阵列具有与由卷积层811输出的特征值阵列相同的维度。然后,非线性层812可以处理由卷积层810输出的特征值,并且非线性层814可以处理由卷积层811输出的特征值。
然后,1x1卷积层806可以处理由非线性层812、814输出的特征值。1x1卷积层806可以生成与亮度通道802和色度通道804相关联的特征的线性组合。线性组合操作作为Y分量和UV分量的每值交叉通道混合来进行操作,从而产生增强译码性能的交叉分量(例如,交叉亮度和色度分量)预测。1x1卷积层806的每个1x1卷积滤波器可以包括应用于亮度通道802的对应的第N通道和色度通道804的对应的第N通道的相应的缩放因子。
图8B是示出1x1卷积层838的示例操作的示意图。如上所述,N表示输出通道数量。如图8B所示,提供2N个通道作为1x1卷积层838的输入,包括N通道色度(组合U和V)输出832和N通道亮度(Y)输出834。在图8B的示例中,N的值等于2,其指示针对N通道色度输出832的值的两个通道和针对N通道亮度输出834的值的两个通道。参照图8A,N通道色度输出832可以是来自非线性层814的输出,并且N通道亮度输出834可以是来自非线性层812的输出。
1x1卷积层838处理2N个通道并且执行2N个通道的特征线性组合,并且然后输出N通道特征或系数集合。1x1卷积层838包括两个1x1卷积滤波器(基于N=2)。第一1x1卷积滤波器示为具有s1值,并且第二1x1卷积滤波器示为具有s2值。s1值表示第一缩放因子,并且s2值表示第二缩放因子。在一个说明性示例中,s1值等于3,并且s2值等于4。1x1卷积层838的1x1卷积滤波器中的各者都具有步幅值1,这指示缩放因子s1和缩放因子s2将应用于UV输出832和Y输出834中的每个值。
例如,将第一1x1卷积滤波器的缩放因子s1应用于UV输出832的第一通道(C1)中的每个值和Y输出834的第一通道(C1)中的每个值。一旦通过第一1x1卷积滤波器的缩放因子s1对UV输出832的第一通道(C1)的每个值和Y输出834的第一通道(C1)的每个值进行缩放,就将经缩放的值组合成输出值839的第一通道(C1)。将第二1x1卷积滤波器的缩放因子s2应用于UV输出832的第二通道(C2)中的每个值和Y输出834的第二通道(C2)中的每个值。在通过第二1x1卷积滤波器的缩放因子s2对UV输出832的第二通道(C2)的每个值和Y输出834的第二通道(C2)的每个值进行缩放之后,将经缩放的值组合成输出值839的第二通道(C2)。因此,将四个Y通道和UV通道(两个Y通道和两个组合的UV通道)混合或组合成两个输出通道C1和输出通道C2。
返回到图8A,1x1卷积层806的输出由编码器子网络的额外非线性层和额外卷积层进行处理。瓶颈820可以包括编码器子网络(或前向传递)上的量化引擎和熵编码引擎以及解码器子网络(或后向传递)上的熵解码引擎和反量化引擎。量化引擎可以对编码器子网络的最终神经网络层819输出的特征执行量化,以生成量化输出。熵编码引擎可以对来自量化引擎的量化输出进行熵编码,以生成比特流。在一些情况下,熵编码引擎可以使用超先验网络生成的先验来执行熵编码。神经网络系统可以输出比特流,以用于存储,用于传输到另一设备、服务器设备或系统,和/或以其它方式输出比特流。
神经网络系统的解码器子网络或另一神经网络系统(另一设备)的解码器子网络可以解码比特流。(解码器子网络的)瓶颈820的熵解码引擎可以对比特流进行熵解码,并且将经熵解码的数据输出到解码器子网络的反量化引擎。熵解码引擎可以使用超先验网络生成的先验来执行熵解码。反量化引擎可以对数据进行反量化。经反量化的数据可以由解码器子网络的多个卷积层和多个逆非线性层进行处理。
在由若干卷积和非线性层进行处理之后,1x1卷积层813可以处理由最终逆非线性层809输出的数据。1x1卷积层813可以包括2N个卷积滤波器,其可以将数据划分为Y通道特征和组合的UV通道特征。例如,可以使用1x1卷积层813的2N个1x1卷积(产生缩放)来处理由逆非线性层809输出的N个通道中的每个通道。对于与应用于N个输入通道的输出通道(总共2N个输出通道)相对应的每个缩放因子ni,解码器子网络可以在N个输入通道上执行求和,从而产生2N个输出。在一个说明性示例中,对于缩放因子n1,解码器子网络可以将缩放因子n1应用于N个输入通道,并且可以对结果求和,这产生一个输出通道。解码器子网络可以针对2N个不同的缩放因子(例如,缩放因子n1、缩放因子n2至缩放因子n2N)执行该操作。
由1x1卷积层813输出的Y通道特征可以由逆非线性层815进行处理。由1x1卷积层813输出的组合的UV通道特征可以由逆非线性层816进行处理。卷积层817可以处理Y通道特征并且输出经重构的帧的每像素或样本的经重构的Y通道(例如,亮度样本或像素),其被示为经重构的Y分量824。卷积层818可以处理组合的UV通道特征,并且可以输出经重构的帧的每像素或样本(例如,色度蓝色样本或像素)的经重构的U通道和经重构的帧的每像素或样本(例如,色度红色样本或像素)的经重构的V通道,示为经重构的U和V分量825。
在一些示例中,图8A中的架构的具有不同非线性算子的不同变型可以用作帧内预测引擎602和残差引擎620。例如,图9和图10是示出图8A的被配置用于处理具有YUV格式的数据(例如,具有Y、U和V分量的YUV 4:2:0输入数据)的前端架构的示意图。在图9的神经网络系统900中,在编码器侧,使用1x1卷积层(类似于图8A的卷积层)对分支的亮度和色度通道进行组合,并且然后应用GDN非线性算子。在图10的神经网络系统1000中,在编码器侧,使用1x1卷积层(类似于图8A的卷积层)对分支的亮度和色度通道进行组合,并且然后应用PReLU非线性算子。在一个示例中,VAEres和VAEintra两者可以使用在图9中所示的变型。在另一示例中,VAEres和VAEintra两者可以使用图10中的变型。在另一示例中,VAEres可以使用图9中的变型,而VAEintra可以使用图10中的变型。在另一示例中,VAEintra可以使用图9中的变型,而VAEres可以使用图10中的变型。
图11是示出用于处理视频数据的过程1100的示例的流程图。在框1102处,过程1100包括通过机器学习系统获得输入视频数据。输入视频数据包括用于当前帧的至少一个亮度分量(例如,图7A的当前帧(在时间t处)的亮度分量)。在一些情况下,输入视频数据包括用于先前重构的帧的至少一个亮度分量(例如,图7A的先前帧(在时间t-1处)的经重构的亮度分量/>),其可以被称为至少一个经重构的亮度分量。在一些方面中,当前帧包括视频帧。在一些情况下,一个或多个色度分量包括至少一个色度蓝色分量和至少一个色度红色分量。在一些方面中,当前帧具有亮度-色度(YUV)格式。在一些情况下,YUV格式是YUV4:2:0格式。
在框1104处,该过程包括通过机器学习系统使用用于当前帧的至少一个亮度分量来确定用于当前帧的至少一个亮度分量的运动信息和用于当前帧的一个或多个色度分量的运动信息。在一些方面中,过程1100可以包括基于当前帧的至少一个亮度分量和先前帧的至少一个经重构的亮度分量来确定用于当前帧的至少一个亮度分量的运动信息。在一些情况下,过程1100还可以包括使用针对当前帧的至少一个亮度分量确定的运动信息来确定用于当前帧的一个或多个色度分量的运动信息。在一些情况下,使用机器学习系统的卷积层来确定用于当前帧的一个或多个色度分量的运动信息。例如,参考图7A作为说明性示例,流引擎718可以使用当前帧的亮度分量和先前重构的帧/>的亮度分量两者来估计用于当前帧/>的亮度运动信息(例如,SSF fL)和色度分量信息(例如,SSF fC)。如上所述,可以使用卷积层730,基于亮度运动信息(例如,fL)729来推导色度运动信息(例如,fC)731。在一些情况下,至少部分地通过对针对当前帧的至少一个亮度分量确定的运动信息进行采样来确定用于当前帧的一个或多个色度分量的运动信息。/>
在一些方面中,过程1100包括通过机器学习系统使用用于当前帧的至少一个亮度分量的运动信息和用于当前帧的一个或多个色度分量的运动信息,来确定用于当前帧的至少一个亮度分量的扭曲参数和用于当前帧的一个或多个色度分量的一个或多个扭曲参数。在一些方面中,用于当前帧的至少一个亮度分量的扭曲参数和用于当前帧的一个或多个色度分量的一个或多个扭曲参数包括空间尺度流(SSF)扭曲参数。在一些情况下,空间尺度流(SSF)扭曲参数包括所学习到的尺度流向量。参考图6作为说明性示例,扭曲参数可以包括:其表示运动或位移向量的水平分量(在x方向上);/>其表示运动或位移向量的垂直分量(在y方向上);以及s(被称为尺度域),其表示经重构的帧的与空间运动/位移信息(vx和vy)组合的渐进平滑版本。
过程1100还可以包括使用用于当前帧的至少一个亮度分量的扭曲参数和用于当前帧的一个或多个色度分量的一个或多个扭曲参数来确定用于当前帧的一个或多个帧间预测(例如,图6的预测器pY、pU和pV)。在一些情况下,至少部分地通过使用用于当前帧的至少一个亮度分量的扭曲参数和用于当前帧的一个或多个色度分量的一个或多个扭曲参数应用插值操作,来确定一个或多个帧间预测。在一个说明性示例中,插值操作包括三线性插值操作。
在一些示例中,本文描述的过程可以由计算设备或装置(诸如具有在图11中所示的计算设备架构1200的计算设备)来执行。在一个示例中,一个或多个过程可以由计算设备来执行,其中计算设备架构1200实现在图6中所示的神经网络架构和/或在图7A、图7B、图8A、图9和/或图10中所示的神经网络架构中的任何一者或多者。在一些示例中,计算设备可以包括以下各者或者作为以下各者的一部分:移动设备(例如,移动电话、平板计算设备)、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、个人计算机、膝上型计算机、视频服务器、电视机、车辆(或车辆的计算设备)、机器人设备和/或具有用于执行本文描述的过程的资源能力的任何其它计算设备。
在一些情况下,计算设备或装置可以包括各种组件,诸如一个或多个输入设备、一个或多个输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机、一个或多个发射机、接收机或组合发射机-接收机(例如,被称为收发机)、一个或多个相机、一个或多个传感器和/或被配置为执行本文描述的过程的步骤的其它组件。在一些示例中,计算设备可以包括显示器、被配置为传送和/或接收数据的网络接口、其任何组合和/或其它组件。网络接口可以被配置为传送和/或接收基于互联网协议(IP)的数据或其它类型的数据。
计算设备的组件可以在电路中实现。例如,组件可以包括和/或可以使用电子电路或其它电子硬件来实现,所述电子电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)、神经处理单元(NPU)、和/或其它适当的电子电路),和/或可以包括计算机软件、固件或其任何组合和/或使用其来实现,以执行本文描述的各种操作。
本文描述的过程被示为逻辑流程图,逻辑流程图的操作表示可以用硬件、计算机指令或其组合来实现的一系列操作。在计算机指令的背景下,所述操作表示被存储在一个或多个计算机可读存储介质上的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时,执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序并不旨在被解释为限制,并且可以以任何顺序和/或并行地组合任何数量的所描述的操作以实现过程。
另外,本文描述的过程可以在被配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用),通过硬件来实现,或其组合。如上文所提到,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读或机器可读存储介质上。计算机可读存储介质或机器可读存储介质可以是非暂时性的。
图12示出了可以实现本文描述的各种技术的示例计算设备的示例计算设备架构1200。在一些示例中,计算设备可以包括移动设备、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、个人计算机、膝上型计算机、视频服务器、车辆(或车辆的计算设备)或其它设备。例如,计算设备架构1200可以实现图6的系统。计算设备架构1200的组件被示为使用连接1205(诸如总线)彼此电通信。示例计算设备架构1200包括处理单元(CPU或处理器)1210和计算设备连接1205,计算设备连接1205将包括计算设备存储器1215(诸如只读存储器(ROM)1220和随机存取存储器(RAM)1225)的各种计算设备组件耦合到处理器1210。
计算设备架构1200可以包括高速存储器的高速缓存,高速缓存直接与处理器1210连接、靠近处理器1210或作为处理器1210的一部分集成。计算设备架构1200可以将数据从存储器1215和/或存储设备1230复制到高速缓存1212,以供处理器1210快速访问。以这种方式,高速缓存可以提供性能提升,其避免处理器1210在等待数据时延迟。这些模块和其它模块可以控制或被配置为控制处理器1210以执行各种动作。其它计算设备存储器1215也可以可供使用。存储器1215可以包括具有不同性能特性的多种不同类型的存储器。处理器1210可以包括任何通用处理器以及硬件或软件服务(诸如被存储在存储设备1230中的服务11232、服务2 1234和服务3 1236),硬件或软件服务被配置为控制处理器1210以及其中软件指令被并入处理器设计中的专用处理器。处理器1210可以是自包含系统,其包含多个核或处理器、总线、存储器控制器、高速缓存等。多核处理器可以是对称的或非对称的。
为了实现用户与计算设备架构1200的交互,输入设备1245可以表示任何数量的输入机制,诸如用于语音的麦克风、用于手势或图形输入的触摸屏、键盘、鼠标、运动输入、语音等。输出设备1235还可以是本领域技术人员已知的多种输出机制中的一种或多种,诸如显示器、投影仪、电视机、扬声器设备等。在一些情况下,多模态计算设备可以使得用户能够提供多种类型的输入以与计算设备架构1200进行通信。通信接口1240通常可以控制和管理用户输入和计算设备输出。对在任何特定硬件配置上的操作没有限制,并且因此,此处的基本特征可以容易地被改进的硬件或固件配置(随着它们被开发)所取代。
存储设备1230是非易失性存储器,并且可以是硬盘或可以存储可由计算机访问的数据的其它类型的计算机可读介质,诸如磁带、闪存卡、固态存储器设备、数字通用磁盘、盒式磁带、随机存取存储器(RAM)1225,只读存储器(ROM)1220、以及其混合物。存储设备1230可以包括用于控制处理器1210的服务1232、服务1234、服务1236。预期其它硬件或软件模块。存储设备1230可以连接到计算设备连接1205。在一个方面中,执行特定功能的硬件模块可以包括被存储在计算机可读介质中的软件组件,该软件组件与执行该功能所必要的硬件组件(诸如处理器1210、连接1205、输出设备1235等)相连接。
本公开内容的各方面适用于包括或耦合到一个或多个有源深度感测系统的任何适当的电子设备(诸如安全系统、智能电话、平板计算机、膝上型计算机、车辆、无人机或其它设备)。尽管下文关于具有或耦合到一个光投影器的设备进行了描述,但是本公开内容的各方面适用于具有任何数量的光投影器的设备,并且因此不限于特定设备。
语“设备”不限于一个或特定数量的物理对象(诸如一个智能电话、一个控制器、一个处理系统等)。如本文所使用的,设备可以是具有可以实现本公开内容的至少一些部分的一个或多个部件的任何电子设备。尽管以下描述和示例使用术语“设备”来描述本公开内容的各个方面,但是术语“设备”不限于特定配置、类型或数量的对象。另外地,术语“系统”不限于多个组件或特定实施例。例如,系统可以在一个或多个印刷电路板或其它基板上实现,并且可以具有可移动或静态的组件。尽管以下描述和示例使用术语“系统”来描述本公开内容的各个方面,但是术语“系统”不限于特定配置、类型、或数量的对象。
在以上描述中提供了具体细节以提供对本文提供的实施例和示例的透彻理解。然而,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实施这些实施例。为了解释清楚,在一些情况下,本文的技术可以被呈现为包括包含如下的功能块的单独的功能块,这些功能块包括设备、设备组件、以软件体现的方法中的步骤或例程、或者硬件和软件的组合。除了在各图中所示和/或本文描述的组件之外,还可以使用另外的组件。例如,电路、系统、网络、过程和其它组件可以以框图形式被示为组件,以便不会在不必要的细节上模糊这些实施例。在其它情况下,公知的电路、过程、算法、结构和技术可能被示为不具有不必要的细节,以便避免模糊这些实施例。
上文可能将各个实施例描述为过程或方法,该过程或方法被描绘为流程图、流程示意图、数据流程图、结构图或框图。虽然流程图可以将操作描述为顺序的过程,但是这些操作中的许多操作可以并行或同时执行。另外,可以重新排列操作的顺序。过程在其操作完成时被终止,但是可能具有未被包括在图中的另外步骤。过程(process)可以对应于方法、函数、过程(procedure)、子例程、子程序等。当过程对应于函数时,其终止可以对应于该函数返回到调用函数或主函数。
根据上述示例的过程和方法可以使用计算机可执行指令来实现,计算机可执行指令被存储在计算机可读介质中或者以其它方式可从计算机可读介质得到。这样的指令可以包括例如指令或数据,指令或数据使得通用计算机、专用计算机或处理设备执行或者以其它方式将其配置为执行特定功能或特定的一组功能。可以通过网络访问所使用的计算机资源的部分。计算机可执行指令可以是例如二进制文件、诸如汇编语言之类的中间格式指令、固件、源代码等。
术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光学存储设备以及能够存储、包含或携带指令和/或数据的各种其它介质。计算机可读介质可以包括可以在其中存储数据的非暂时性介质,并且不包括无线地或在有线连接上传播的载波和/或暂时性电子信号。非暂时性介质的示例可以包括但不限于磁盘或磁带、光学存储介质(诸如闪存)、存储器或存储器设备、磁盘或光盘、闪存、提供有非易失性存储器的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、根据方面2所述的方法,其中,所述一个或多个帧间预测是至少部分地通过使用用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数应用插值操作来确定的。
方面4、根据方面3所述的方法,其中,所述插值操作包括三线性插值操作。
方面5、根据方面2至4中任一方面所述的方法,其中,用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数包括空间尺度流(SSF)扭曲参数。
方面6、根据方面5所述的方法,其中,所述SSF扭曲参数包括所学习到的尺度流向量。
方面7、根据方面1至6中任一方面所述的方法,使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的所述运动信息和用于所述当前帧的所述一个或多个色度分量的所述运动信息包括:基于所述当前帧的所述至少一个亮度分量和先前帧的至少一个经重构的亮度分量来确定用于所述当前帧的所述至少一个亮度分量的所述运动信息;以及使用针对所述当前帧的所述至少一个亮度分量确定的所述运动信息来确定用于所述当前帧的所述一个或多个色度分量的所述运动信息。
方面8、根据方面7所述的方法,其中,用于所述当前帧的所述一个或多个色度分量的所述运动信息是使用所述机器学习系统的卷积层来确定的。
方面9、根据方面7所述的方法,其中,用于所述当前帧的所述一个或多个色度分量的所述运动信息是至少部分地通过对针对所述当前帧的所述至少一个亮度分量确定的所述运动信息进行采样来确定的。
方面10、根据方面1至9中任一方面所述的方法,其中,所述当前帧包括视频帧。
方面11、根据方面1至10中任一方面所述的方法,其中,所述一个或多个色度分量包括至少一个色度蓝色分量和至少一个色度红色分量。
方面12、根据方面1至11中任一方面所述的方法,其中,所述当前帧具有亮度-色度(YUV)格式。
方面13、根据方面12所述的方法,其中,所述YUV格式是YUV 4:2:0格式。
方面14、一种用于处理视频数据的装置,包括:至少一个存储器;以及耦合到所述至少一个存储器的一个或多个处理器,所述一个或多个处理器被配置为:使用机器学习系统获得输入视频数据,所述输入视频数据包括用于当前帧的至少一个亮度分量;以及使用所述机器学习系统,使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的运动信息和用于所述当前帧的所述一个或多个色度分量的运动信息。
方面15、根据方面14所述的装置,其中,所述一个或多个处理器被配置为:使用所述机器学习系统,基于用于所述当前帧的所述至少一个亮度分量的所述运动信息和用于所述当前帧的所述一个或多个色度分量的所述运动信息,来确定用于所述当前帧的所述至少一个亮度分量的扭曲参数和用于所述当前帧的一个或多个色度分量的一个或多个扭曲参数;以及使用用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数来确定用于所述当前帧的一个或多个帧间预测。
方面16、根据方面15所述的装置,其中,所述一个或多个帧间预测是至少部分地通过使用用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数应用插值操作来确定的。
方面17、根据方面16所述的装置,其中,所述插值操作包括三线性插值操作。
方面18、根据方面15至17中任一方面所述的装置,其中,用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数包括空间尺度流(SSF)扭曲参数。
方面19、根据方面18所述的装置,其中,所述SSF扭曲参数包括所学习到的尺度流向量。
方面20、根据方面14至19中任一方面所述的装置,其中,为了使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的所述运动信息和用于所述当前帧的所述一个或多个色度分量的所述运动信息,所述一个或多个处理器被配置为:基于所述当前帧的所述至少一个亮度分量和先前帧的至少一个经重构的亮度分量来确定用于所述当前帧的所述至少一个亮度分量的所述运动信息;以及使用针对所述当前帧的所述至少一个亮度分量所确定的所述运动信息来确定用于所述当前帧的所述一个或多个色度分量的所述运动信息。
方面21、根据方面20所述的装置,其中,用于所述当前帧的所述一个或多个色度分量的所述运动信息是使用所述机器学习系统的卷积层来确定的。
方面22、根据方面20所述的装置,其中,为了确定用于所述当前帧的所述一个或多个色度分量的所述运动信息,所述一个或多个处理器被配置为对针对所述当前帧的所述至少一个亮度分量确定的所述运动信息进行采样。
方面23、根据方面14至22中任一方面所述的装置,其中,所述当前帧包括视频帧。
方面24、根据方面14至23中任一方面所述的装置,其中,所述一个或多个色度分量包括至少一个色度蓝色分量和至少一个色度红色分量。
方面25、根据方面14至24所述的装置,其中,所述当前帧具有亮度-色度(YUV)格式。
方面26、根据方面25所述的装置,其中,所述YUV格式是YUV 4:2:0格式。
方面27、根据方面14至26中任一方面所述的装置,还包括:被配置为捕获一个或多个帧的至少一个相机。
方面28、根据方面14至27中任一方面所述的装置,还包括:被配置为显示一个或多个帧的至少一个显示器。
方面29、根据方面14至28中任一方面所述的装置,其中,所述装置包括移动设备。
方面30:一种存储指令的计算机可读存储介质,所述指令在被执行时使得一个或多个处理器执行根据方面1至29所述的操作中的任何操作。
方面31:一种装置,包括用于执行根据方面1至29所述的操作中的任何操作的单元。
Claims (30)
1.一种处理视频数据的方法,所述方法包括:
通过机器学习系统获得输入视频数据,所述输入视频数据包括用于当前帧的至少一个亮度分量;以及
通过所述机器学习系统,使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的运动信息和用于所述当前帧的一个或多个色度分量的运动信息。
2.根据权利要求1所述的方法,还包括:
通过所述机器学习系统,使用用于所述当前帧的所述至少一个亮度分量的所述运动信息和用于所述当前帧的所述一个或多个色度分量的所述运动信息,来确定用于所述当前帧的所述至少一个亮度分量的扭曲参数和用于所述当前帧的一个或多个色度分量的一个或多个扭曲参数;以及
使用用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数来确定用于所述当前帧的一个或多个帧间预测。
3.根据权利要求2所述的方法,其中,所述一个或多个帧间预测是至少部分地通过以下操作来确定的:使用用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数来应用插值操作。
4.根据权利要求3所述的方法,其中,所述插值操作包括三线性插值操作。
5.根据权利要求2所述的方法,其中,用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数包括空间尺度流(SSF)扭曲参数。
6.根据权利要求5所述的方法,其中,所述SSF扭曲参数包括所学习到的尺度流向量。
7.根据权利要求1所述的方法,其中,使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的所述运动信息和用于所述当前帧的所述一个或多个色度分量的所述运动信息包括:
基于所述当前帧的所述至少一个亮度分量和先前帧的至少一个经重构的亮度分量来确定用于所述当前帧的所述至少一个亮度分量的所述运动信息;以及
使用针对所述当前帧的所述至少一个亮度分量所确定的所述运动信息来确定用于所述当前帧的所述一个或多个色度分量的所述运动信息。
8.根据权利要求7所述的方法,其中,用于所述当前帧的所述一个或多个色度分量的所述运动信息是使用所述机器学习系统的卷积层来确定的。
9.根据权利要求7所述的方法,其中,用于所述当前帧的所述一个或多个色度分量的所述运动信息是至少部分地通过对针对所述当前帧的所述至少一个亮度分量所确定的所述运动信息进行采样来确定的。
10.根据权利要求1所述的方法,其中,所述当前帧包括视频帧。
11.根据权利要求1所述的方法,其中,所述一个或多个色度分量包括至少一个色度蓝色分量和至少一个色度红色分量。
12.根据权利要求1所述的方法,其中,所述当前帧具有亮度-色度(YUV)格式。
13.根据权利要求12所述的方法,其中,所述YUV格式是YUV 4:2:0格式。
14.一种用于处理视频数据的装置,包括:
至少一个存储器;以及
耦合到所述至少一个存储器的一个或多个处理器,所述一个或多个处理器被配置为:
使用机器学习系统获得输入视频数据,所述输入视频数据包括用于当前帧的至少一个亮度分量;以及
使用所述机器学习系统,使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的运动信息和用于所述当前帧的一个或多个色度分量的运动信息。
15.根据权利要求14所述的装置,其中,所述一个或多个处理器被配置为:
使用所述机器学习系统,基于用于所述当前帧的所述至少一个亮度分量的所述运动信息和用于所述当前帧的所述一个或多个色度分量的所述运动信息,来确定用于所述当前帧的所述至少一个亮度分量的扭曲参数和用于所述当前帧的一个或多个色度分量的一个或多个扭曲参数;以及
使用用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数来确定用于所述当前帧的一个或多个帧间预测。
16.根据权利要求15所述的装置,其中,所述一个或多个帧间预测是至少部分地通过以下操作来确定的:使用用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数来应用插值操作。
17.根据权利要求16所述的装置,其中,所述插值操作包括三线性插值操作。
18.根据权利要求15所述的装置,其中,用于所述当前帧的所述至少一个亮度分量的所述扭曲参数和用于所述当前帧的所述一个或多个色度分量的所述一个或多个扭曲参数包括空间尺度流(SSF)扭曲参数。
19.根据权利要求18所述的装置,其中,所述SSF扭曲参数包括所学习到的尺度流向量。
20.根据权利要求14所述的装置,其中,为了使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的所述运动信息和用于所述当前帧的所述一个或多个色度分量的所述运动信息,所述一个或多个处理器被配置为:
基于所述当前帧的所述至少一个亮度分量和先前帧的至少一个经重构的亮度分量来确定用于所述当前帧的所述至少一个亮度分量的所述运动信息;以及
使用针对所述当前帧的所述至少一个亮度分量所确定的所述运动信息来确定用于所述当前帧的所述一个或多个色度分量的所述运动信息。
21.根据权利要求20所述的装置,其中,用于所述当前帧的所述一个或多个色度分量的所述运动信息是使用所述机器学习系统的卷积层来确定的。
22.根据权利要求20所述的装置,其中,为了确定用于所述当前帧的所述一个或多个色度分量的所述运动信息,所述一个或多个处理器被配置为对针对所述当前帧的所述至少一个亮度分量确定的所述运动信息进行采样。
23.根据权利要求14所述的装置,其中,所述当前帧包括视频帧。
24.根据权利要求14所述的装置,其中,所述一个或多个色度分量包括至少一个色度蓝色分量和至少一个色度红色分量。
25.根据权利要求14所述的装置,其中,所述当前帧具有亮度-色度(YUV)格式。
26.根据权利要求25所述的装置,其中,所述YUV格式是YUV 4:2:0格式。
27.根据权利要求14所述的装置,还包括:被配置为捕获一个或多个帧的至少一个相机。
28.根据权利要求14所述的装置,还包括:被配置为显示一个或多个帧的至少一个显示器。
29.根据权利要求14所述的装置,其中,所述装置包括移动设备。
30.一种具有存储在其上的指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:
使用机器学习系统获得输入视频数据,所述输入视频数据包括用于当前帧的至少一个亮度分量;以及
使用所述机器学习系统,使用用于所述当前帧的所述至少一个亮度分量来确定用于所述当前帧的所述至少一个亮度分量的运动信息和用于所述当前帧的一个或多个色度分量的运动信息。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/153,475 | 2021-02-25 | ||
US17/676,510 | 2022-02-21 | ||
US17/676,510 US12003734B2 (en) | 2022-02-21 | Machine learning based flow determination for video coding | |
PCT/US2022/017296 WO2022182651A1 (en) | 2021-02-25 | 2022-02-22 | Machine learning based flow determination for video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116965032A true CN116965032A (zh) | 2023-10-27 |
Family
ID=88447764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280015753.2A Pending CN116965032A (zh) | 2021-02-25 | 2022-02-22 | 用于视频译码的基于机器学习的流确定 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116965032A (zh) |
-
2022
- 2022-02-22 CN CN202280015753.2A patent/CN116965032A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11405626B2 (en) | Video compression using recurrent-based machine learning systems | |
US11477464B2 (en) | End-to-end neural network based video coding | |
US20220191523A1 (en) | Front-end architecture for neural network based video coding | |
US20240022761A1 (en) | Learned b-frame coding using p-frame coding system | |
CN117980916A (zh) | 用于媒体的变换译码的基于变换器的架构 | |
US11399198B1 (en) | Learned B-frame compression | |
US12003734B2 (en) | Machine learning based flow determination for video coding | |
US20220272355A1 (en) | Machine learning based flow determination for video coding | |
CN116965032A (zh) | 用于视频译码的基于机器学习的流确定 | |
CN116547965A (zh) | 用于基于神经网络的视频译码的前端架构 | |
EP4298795A1 (en) | Machine learning based flow determination for video coding | |
US20240015318A1 (en) | Video coding using optical flow and residual predictors | |
TW202243476A (zh) | 用於基於神經網路的視訊譯碼的前端架構 | |
US20240013441A1 (en) | Video coding using camera motion compensation and object motion compensation | |
WO2024015665A1 (en) | Bit-rate estimation for video coding with machine learning enhancement | |
TW202404360A (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 |