CN111868751A - 在视频代码化的机器学习模型中使用应用于量化参数的非线性函数 - Google Patents

在视频代码化的机器学习模型中使用应用于量化参数的非线性函数 Download PDF

Info

Publication number
CN111868751A
CN111868751A CN201980019322.1A CN201980019322A CN111868751A CN 111868751 A CN111868751 A CN 111868751A CN 201980019322 A CN201980019322 A CN 201980019322A CN 111868751 A CN111868751 A CN 111868751A
Authority
CN
China
Prior art keywords
block
encoder
training
quantization parameter
machine learning
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.)
Granted
Application number
CN201980019322.1A
Other languages
English (en)
Other versions
CN111868751B (zh
Inventor
克劳迪诺·科埃略
达克·何
阿基·库塞拉
山·李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN111868751A publication Critical patent/CN111868751A/zh
Application granted granted Critical
Publication of CN111868751B publication Critical patent/CN111868751B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/124Quantisation
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/164Feedback from the receiver or from the transmission channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

对图像块进行编码包括:将图像块和与第一量化参数相对应的第一值呈现给机器学习模型;从机器学习模型获得第一模式决策参数;以及使用第一模式决策参数对图像块进行编码。第一值从使用第一量化参数作为输入的非线性函数产生。通过使用训练数据,训练机器学习模型以输出模式决策参数。每个训练数据包括由第二编码器编码的训练块、由第二编码器用于对训练块进行编码的第二模式决策参数以及与第二量化参数相对应的第二值。第二编码器使用第二量化参数对训练块进行编码,并且第二值从使用第二量化参数作为输入的非线性函数产生。

Description

在视频代码化的机器学习模型中使用应用于量化参数的非线 性函数
背景技术
数字视频流可以使用帧或静止图像的序列来表示视频。数字视频可以用于各种应用,包括:例如,视频会议、高清视频娱乐、视频广告或用户生成的视频的共享。数字视频流可以包含大量数据,并且消耗用于处理、传输或存储视频数据的计算设备的大量计算或通信资源。已经提出了各种方法来减少视频流中的数据量,包括压缩和其它编码技术。
多年来,视频编码器的代码化效率已经提高。代码化效率可以意味着以最低可能的比特率对视频进行编码,同时使失真最小化(即,同时维持一定级别的视频质量)。然而,提高的代码化效率已导致了增加的计算复杂度。也就是说,编码器需要更多的计算时间来实现提高的代码化效率。因此,需要以更少的计算时间(即,降低的计算复杂度)获得提高的代码化效率。
发明内容
所公开的实施方式的一方面是一种用于由第一编码器使用第一量化参数对图像块进行编码的方法。该方法包括,向包括机器学习模型的机器学习模块呈现图像块和与第一量化参数对应的第一值;从机器学习模块中获得第一模式决策参数;以及使用第一模式决策参数在压缩比特流中编码图像块。第一值从使用第一量化参数作为输入的非线性函数产生。训练机器学习模型通过使用训练数据作为输入训练机器学习模型而被训练,以输出用于对图像块进行编码的模式决策参数。每个训练数据包括由第二编码器编码的训练块、由第二编码器用于对训练块进行编码的第二模式决策参数以及与第二量化参数对应的第二值。第二编码器使用第二量化参数对训练块进行编码,并且第二值从使用第二量化参数作为输入的非线性函数产生。
另一方面是一种用于使用第一量化参数对图像块进行编码的装置。该装置包括处理器,该处理器向机器学习模型呈现图像块和与第一量化参数对应的第一值;从机器学习模型中获得第一模式决策参数;并使用第一模式决策参数在压缩比特流中对图像块进行编码。第一值从使用第一量化参数作为输入的非线性函数产生。训练机器学习模型通过使用训练数据作为输入训练机器学习模型而被训练,以输出用于对图像块进行编码的模式决策参数。每个训练数据包括由编码器编码的训练块、编码器用于对训练块进行编码的第二模式决策参数以及与第二量化参数对应的第二值。编码器使用第二量化参数对训练块进行编码,并且第二值从使用第二量化参数作为输入的非线性函数产生。
另一方面是一种用于对图像块进行解码的装置。该装置包括处理器,该处理器在压缩比特流中接收将图像块四叉树分割成子块的指示,其中,编码器使用机器学习模型确定图像块的四叉树分割;并使用对图像块的四叉树分割的指示对图像块进行解码。机器学习模型通过使用训练数据作为输入以训练机器学习模型而被训练。每个训练数据包括由编码器编码的训练块、由编码器用于对训练块进行编码的模式决策参数以及与量化参数对应的值。编码器使用量化参数以对训练块进行编码,并且该值从使用量化参数作为输入的非线性函数产生。
另一方面是一种用于对图像块进行解码的方法。该方法包括在压缩比特流中接收将图像块四叉树分割成子块的指示,其中编码器使用机器学习模型确定图像块的四叉树分割。机器学习模型通过使用训练数据作为输入以训练机器学习模型而被训练。每个训练数据包括由编码器编码的训练块、由编码器用于对训练块进行编码的模式决策参数以及与量化参数对应的值。编码器使用量化参数对训练块进行编码,并且该值从使用量化参数作为输入的非线性函数产生。该方法进一步包括使用对图像块的四叉树分割的指示来对图像块进行解码。
在以下对实施例、所附权利要求书和附图的详细描述中公开了本公开的这些和其它方面。
附图说明
本文中的描述参考了附图,其中,贯穿若干视图,相似的附图标记表示相似的部分。
图1是视频编码和解码系统的示意图。
图2是可以实施发送站或接收站的计算设备的示例的框图。
图3是要编码且随后解码的视频流的图。
图4是根据本公开的实施方式的编码器的框图。
图5是根据本公开的实施方式的解码器的框图。
图6是根据本公开的实施方式的帧的部分的表示的框图。
图7是根据本公开的实施方式的块的四叉树表示的示例的框图。
图8是用于搜索用于对块进行代码化的最佳模式的过程的流程图。
图9是估计通过使用预测模式对图像块进行代码化的速率和失真成本的示例的框图。
图10是根据本公开的实施方式的用于使用量化参数的非线性函数进行模式决策的卷积神经网络(CNN)的示例的框图。
图11是根据本公开的实施方式的通过编码器使用第一量化参数对图像块进行编码的过程的流程图。
图12是根据本发明的实施方式的使用线性分段来逼近量化参数的非线性函数的示例。
图13是使用非线性QP函数作为输入的第一机器学习模型和使用线性QP函数的第二机器学习模型的速率失真性能比较的示例。
图14是根据本公开的实施方式的卷积滤波器的示例。
图15是根据本公开的实施方式的感受野的示例。
图16是块的非正方形分割的示例。
具体实施方式
现代视频编解码器(例如,H.264,也称为MPEG-4AVC;VP9;H.265,也称为HEVC;AVS2和AV1)定义并使用大量工具以及被用于改善代码化效率的配置。代码化效率通常是根据速率和失真两者来测量。速率指代指编码(诸如,对块、帧等进行编码)所需的比特数。失真测量例如源视频块和源视频块的重构版本之间的质量损失。通过执行速率失真优化(RDO)过程,视频编解码器针对对视频进行编码所需的速率优化了失真量。
为了确定要被使用的工具和配置(例如,参数)的最佳组合,视频编码器可以使用模式决策过程。模式决策过程可以检查(例如,测试、评估等)至少一些工具的有效组合。在示例中,检查所有可能的组合。
假设参数的第一组合导致第一速率(例如,速率=100)和第一失真(例如,失真=90),并且参数的第二组合导致第二速率(例如,速率=120)和第二失真(例如,失真=80)。需要一种程序(例如,技术等)来评估第一组合和第二组合中的哪一个是参数的最佳组合。为了评估一种组合是否比另一种组合更好,可以为每个检查的组合计算度量,并比较相应度量。在示例中,如下所述,度量可以将速率和失真组合以产生一个单一标量值。在本公开中,速率失真成本被用作诸如标量值。
模式决策过程的示例是帧内预测模式决策过程,其确定用于对编码块进行代码化的最佳帧内预测模式。在HEVC编码器中,例如,对于大于4×4的块,35种帧内预测模式是可能的。每种帧内预测模式指示如何确定相应的预测块。在这种情况下,模式决策过程可以为每种帧内预测模式确定相应的预测块,并选择与最小速率失真成本相对应的帧内预测模式。换句话说,模式决策过程选择提供最佳速率失真性能的帧内预测模式。
模式决策过程的另一个示例是分割决策过程,该分割决策过程确定超级块(也称为代码化树单元或CTU)的最佳子分割。下面参考图7描述分割决定过程。
视频编解码器中的量化参数可以被用于控制速率和失真之间的权衡。通常,较大的量化参数意味着导致较低的速率而较高的失真的较高的量化(诸如变换系数的量化),并且较小的量化参数意味着导致较高的速率而较小的失真的较低的量化。变量QP、q和Q在本公开中可以互换使用以指代量化参数。
量化参数的值可以是固定的。例如,编码器可以使用一个量化参数值来编码视频的所有帧和/或所有块。在其他示例中,量化参数可以例如在帧与帧之间改变。例如,在视频会议应用的情况下,编码器可以基于网络带宽的波动来改变量化参数值。
因为量化参数可以用于控制速率和失真之间的权衡,所以可以使用量化参数来计算与参数的每个组合相关联的度量。如在上面所提及的,度量可以组合编码参数的组合的速率和失真值。
如在上面所提及的,度量可以是速率失真(RD)成本。导致最低成本(例如,最低RD成本)的组合可以用于对例如压缩比特流中的块或帧进行编码。使用量化参数计算RD成本。更一般地,每当编码器决策(例如,模式决策)基于RD成本时,编码器就可以使用QP值来确定RD成本。关于图8至图9描述诸如通过典型的编码器来估计通过使用预测模式mi对图像块X进行代码化的速率和失真成本的示例。
在示例中,QP可用于导出乘数,该乘数用于将速率和失真值组合为一个度量。一些编解码器可以指代将乘数称为拉格朗日乘数(表示为λmode);其他编解码器可以使用称为rdmult的类似乘法器。每个编解码器可能具有不同的计算乘数的方法。除非上下文明确,否则无论编解码器如何,在此都将乘数称为拉格朗日乘数或拉格朗日参数。
重申一下,拉格朗日乘数可以被用于评估竞争模式(即,参数的竞争组合)的RD成本。具体地,让rm表示由使用模式m而产生的速率(以比特为单位),并且让dm表示所产生的失真。选择模式m的速率失真成本可以计算为标量值:dmmoderm。通过使用拉格朗日参数λmode,可以比较两种模式的成本并选择具有较低组合的RD成本的一种模式。这种评估速率失真成本的技术是至少一些视频编解码器中的模式决策过程的基础。
不同的视频编解码器可以使用不同的技术来根据量化参数计算拉格朗日乘数。这是部分由于下述事实,即,不同的编解码器对于量化参数及其使用方法可能具有不同的含义(例如,定义、语义等)。
实现H.264标准的编解码器(在本文中称为H.264编解码器)可以使用公式(1)导出拉格朗日乘数λmode
λmode=0.85×2(QP-12)/3 (1)
实现HEVC标准的编解码器(在本文中称为HEVC编解码器)可以使用与公式(1)相似的公式。实现H.263标准的编解码器(在本文中称为H.263编解码器)可以使用公式(2)导出拉格朗日乘数:
λmode=0.85·QH263 2 (2)
实现VP9标准的编解码器(在本文中称为VP9编解码器)可以使用公式(3)导出乘数rdmult:
rdmult=88·q2/24 (3)
实现AV1标准的编解码器(在本文中称为AV1编解码器)可以使用公式(4)导出拉格朗日乘数λmode
λmode=0.12·QAV1 2/256 (4)
如在以上情况中可以看到,乘法器与量化参数具有非线性关系。在HEVC和H.264的情况下,乘数与QP呈指数关系;并且在H.263、VP9和AV1的情况下,乘数与QP呈二次关系。注意,在用于相应的编解码器之前,乘法器可能会经历进一步的变化,以说明编码器在压缩比特流中包括的附加的辅助信息。辅助信息的示例包括图片类型(例如,帧内对比帧间预测帧)、颜色分量(例如,亮度或色度)和/或兴趣区。在一个示例中,这样的附加变化可以是乘数的线性变化。
如在上面所提及的,最佳模式可以从许多可能的组合中选择。随着可能的工具和参数的数量增加,组合的数量也会增加,从而又增加确定最佳模式所需的时间。例如,AV1编解码器在AV1编解码器上包括大约160个其他工具,从而导致最佳模式的搜索时间显着增加。
因此,可以利用诸如机器学习的技术来减少确定最佳模式所需的时间。机器学习可以很好地适合解决视频代码化中的计算复杂性问题。
例如,可以通过使用蛮力方法进行模式决策来生成大量训练数据。即,可以通过执行标准编码技术的编码器来获得训练数据,诸如参考图4和图6至图9描述的那些编码技术。具体而言,可以用经训练的机器学习模型代替蛮力、即时的模式决策过程,该模型可以推断用于大量视频数据输入的模式决策。可以期望训练有素的机器学习模型以在代码化效率上与蛮力方法紧密地匹配,但是计算成本却大大降低,或者具有规则的或面向数据流的计算成本。
训练数据可以在机器学习的学习阶段期间用于导出(例如,学习、推断等)作为(例如,定义,构成)从输入数据到构成模式决策的输出中的映射的机器学习模型。因此,机器学习模型可以用来代替蛮力计算繁重的编码过程(诸如关于图4和图6-9所描述的那些),从而降低模式决策中的计算复杂度。
机器学习模型的预测能力(即,准确性)与用于训练机器学习模型的输入以及呈现给机器学习模型以预测结果的输入(例如,最佳模式)一样好。因此,当将机器学习用于视频编码时,使用正确的输入集和这种输入的正确(例如,适当、最佳等)形式是至关重要的。一旦机器学习模型被训练,该模型会将输出计算为其输入的确定性函数。因此,对机器学习模型使用正确的输入和输入的适当形式可能是至关重要。在示例中,机器学习模型可以是神经网络模型,诸如卷积神经网络模型。然而,如本公开中所描述的,呈现正确的输入和这种输入的最佳形式可适用于任何机器学习技术。
信息论的众所周知的通用逼近定理陈述,前馈神经网络可以被用于逼近n维实坐标空间Rn的紧凑子集上的任何连续函数。注意,现有神经网络的内在线性本质暗示,如果与非线性函数相比神经网络被任务化(即,被训练))以逼近(例如,映射、求解、推断)线性函数(例如,映射),则可以实现更小的网络或更短的学习时间。还应注意,视频块到模式决策的映射可以表征为连续函数。
通用逼近定理不表征学习阶段的可行性或时间和空间复杂性。也就是说,尽管神经网络在理论上可以逼近非线性函数,但是对于神经网络可能需要不合理的大(例如,就节点和/或层的数量而言)网络和/或不合理的长的训练时间以学会使用线性函数来近似非线性函数。出于实际目的,所需要的不合理的大小和时间可能渲染学习是不可行的。
鉴于上述情况,如果量化参数(即,QP的值)本身用作机器学习系统的输入,则可能会在评估RD成本中如何使用QP与在训练机器学习模型中如何使用QP之间产生脱节。
如上所述,在许多现代视频编解码器中,从量化参数到拉格朗日乘数的映射是非线性的。即,映射在H.263、VP9和AV1中是二次的;并且在H.264和HEVC中是指数的。因此,与使用线性(例如,标量)形式的QP相比,通过使用非线性(例如,指数、二次等)形式的QP作为对机器学习模型的输入,可以实现更好的性能。更好的性能可能意味着更小的网络大小和/或更好的推理性能。
在本公开中描述了量化参数的有效使用作为设计用于视频代码化的机器学习模型的输入。根据本发明的实施方式可在维持蛮力技术的代码化效率的同时显着降低视频编码器的模式决策过程的计算复杂度。另外,与使用QP(即,QP的线性值)作为机器学习的训练和推理阶段的输入的机器学习模型相比,根据本公开的实施方式可以改善机器学习模型的推理性能。
除了使用机器学习模型的正确输入和/或正确输入的形式之外,机器学习模型的架构对于机器学习模型的性能和/或可预测能力也是至关重要的关键。
在高水平且不失一般性的情况下,典型的机器学习模型(诸如分类深度学习模型)包括两个主要部分:特征提取部分和分类部分。特征提取部分检测模型的特征。分类部分试图将检测到的特征分类为期望的响应。每个部分可以包括一个或多个层和/或一个或多个操作。
如在上面所提及的,CNN是机器学习模型的示例。在CNN中,特征提取部分通常包括卷积运算的集合,通常是一系列滤波器,其用于基于滤波器(通常为大小为k的平方,不失一般性)对输入图像进行滤波。例如,在机器视觉的上下文中,这些滤波器可以被用于找到输入图像中的特征。这些特征可以包括例如边缘、拐角、端点等。随着堆叠的卷积运算数量的增加,以后的卷积运算可以找到更高级别的特征。
在CNN中,分类部分通常是全连接层的集合。可以将全连接层视为查看图像的所有输入特征,以便于生成高级分类器。若干级(例如,一系列)的高级分类器最终会生成所需的分类输出。
如所提及的,典型的CNN网络由紧接着许多全连接层的许多卷积运算(例如,特征提取部分)组成。通常在机器学习的训练阶段期间确定每种类型的操作数及其相应的大小。如本领域的技术人员认识到的,在每个部分中可以包括附加层和/或运算。例如,可以将池化、最大池化(MaxPooling)、Dropout、激活、归一化、批量归一化和其它运算的组合与卷积运算(即,在特征提取部分中)和/或全连接运算(即,在分类部分中)分组在一起。全连接层可以称为密集运算。如本领域的技术人员认识到的,卷积运算可以使用SeparableConvolution2D或Convolution2D运算。
如本公开中所使用的,卷积层可以是以Convolution2D或SeparableConvolution2D运算开始紧接着零个或多个运算(例如,池化、Dropout、激活、归一化、批量归一化、其他运算或其组合)直到到达另一个卷积层、密集运算或CNN的输出为止的一组运算。类似地,密集层可以是以密集运算(即,全连接层)开始紧接着零个或多个运算(例如,池化、Dropout、激活、归一化、批量归一化、其他运算或其组合)直到到达另一个卷积层、另一个密集层或网络的输出为止的一组运算。基于卷积网络的特征提取与使用密集运算的特征分类之间的边界可以通过Flatten运算进行标记,该运算将来自特征提取的多维矩阵平坦化为矢量。
在典型的CNN中,每个卷积层都可以由滤波器的集合组成。虽然将滤波器一次性应用于输入数据的子集,但诸如通过在输入上进行扫掠将滤波器应用于完整输入中。由该层执行的操作可以是线性/矩阵乘法。关于图14描述卷积滤波器的示例。可以使用激活函数来对卷积滤波器的输出进行进一步滤波。激活函数可以是线性函数或非线性函数(例如,sigmoid函数、arcTan函数、tanH函数、Relu函数等)。
全连接运算中的每一个是每个输入通过权重连接至每个输出的线性运算。因此,具有N个输入和M个输出的全连接层可总共具有N×M个权重。如在上面所提及的,密集运算通常可以紧接着非线性激活函数,以生成该层的输出。
被用于执行帧和超级块的分析(诸如以推断如本文所描述的分割)的一些CNN网络架构可以包括以不同粒度(例如,以超级块的不同子块大小)提取特征的若干特征提取部分以及接收提取部分中的每一个的最终卷积层的输出的平坦化层(其可以被称为级联层)。平坦化层将由不同特征提取部分提取的所有特征聚合到一个输入集中。可以将平坦化层的输出馈送到分类部分的全连接层中(即,用作分类部分的全连接层的输入)。因此,整个网络的参数的数量可以由特征提取部分(即,卷积层)与分类部分(即,全连接层)之间的接口处的参数的数量决定(例如,限定、设置)。也就是说,网络的参数的数量由平坦化层的参数决定。
包括其输出被馈送到全连接层中的平坦化层的CNN架构可能具有数个缺点。
例如,这种架构的机器学习模型倾向于具有大量的参数和运算。在一些情况下,机器学习模型可能包括超过一百万个参数。可能无法有效地或高效地使用这些大型模型(如果存在的话)来推断可能会受到约束(例如,运算约束、能量约束和/或存储器约束)的设备(例如,移动设备)上的分类。也就是说,一些设备可以不具有足够的运算能力(例如,就速度而言)或内存存储(例如,RAM)来处理(例如,执行)此类大型模型。
作为另一个示例,更重要的是,这种网络架构的全连接层据说具有由特征提取部分提取的所有特征的全局视图。因此,全连接层可能例如失去特征与特征在输入图像中的位置之间的相关性。因此,卷积运算的感受野可以被全连接层混合。感受野可以定义为输入空间中特定特征正在查看和/或受到其影响的区域。参考图15描述感受野的示例。
为了简要地说明问题(即,感受野变成被混合),参考图7,这将在下面更详细地描述。如上所述的CNN(例如,包括平坦化层和全连接层的CNN)可以用于确定图7的块702的分割。CNN可以提取与块702的不同区域和/或子块大小相对应的特征。因此,例如,从块702的块702-1、702-2、702-3和702-4提取的特征被平坦化为全连接层的一个输入矢量。因此,在通过全连接层推断是否将子块702-2分割为块702-5、702-6、702-7和702-8时,可以通过全连接层使用块702-1、702-3、702-4中的至少一个的特征。因此,子块(例如,块702-1、702-3、702-4)的特征与要推断对其的分割决策的子块(例如,块702-2)不相关,可以被用于推断。这是不可取的,因为这可能导致错误的推断和/或基于不相关信息的推断。因此,重要的是,将图像区域的分析限制在图像区域的四叉树表示的边界。
因此,本文中还描述了用于视频代码化的符合感受野的卷积模型。即,当分析图像区域时,诸如用于确定四叉树分割,将针对图像区域提取(例如,运算、推断等)的任何特征的感受野限制在图像区域本身内。根据本公开的实施方式可以确保用于确定块分割的机器学习模型(在训练期间生成并且在推断期间使用)不会错误地基于不相关或无关的特征(诸如来自图像区域外部的像素)。
根据本公开的实施方式导致CNN机器学习模型,其具有数量减少的参数和/或在分析图像块以提取图像块的基于四叉树的特征时遵守图像块(例如,超级块)的感受野。因此,可以显着改善视频编码中的模式决策的推断精度。
在此首先参考其中可以并入教导的系统来描述在用于视频代码化的机器学习模型和用于视频代码化的感受野符合卷积模型中有效使用量化参数。
注意,这里省略机器学习、卷积神经网络的细节和/或本领域的技术人员已知的细节。例如,本领域技术人员认识到,在训练阶段期间,CNN确定卷积滤波器的值和CNN中的节点(即,神经元)之间的连接权重。因此,这里不再详细讨论。
图1是视频编码和解码系统100的示意图。发送站102可以是例如具有硬件(诸如相对于图2所描述的硬件)的内部配置的计算机。然而,发送站102的其它合适的实施方式也是可能的。例如,发送站102的处理可以分布在多个设备之间。
网络104可以连接发送站102和接收站106,以对视频流进行编码和解码。具体地,可以在发送站102中对视频流进行编码,并且可以在接收站106中对编码视频流进行解码。网络104可以是例如互联网。在此示例中,网络104还可以是局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、蜂窝电话网络或将视频流从发送站102传递到接收站106的任何其它组件。
在一个示例中,接收站106可以是具有硬件(诸如相对于图2所描述的硬件)的内部配置的计算机。然而,接收站106的其它合适的实施方式也是可能的。例如,接收站106的处理可以分布在多个设备之间。
视频编码和解码系统100的其它实施方式也是可能的。例如,一种实施方式可以省略网络104。在另一种实施方式中,可以对视频流进行编码,随后将其存储以在稍后的时间传输到接收站106或具有存储器的任何其它设备。在一种实施方式中,接收站106(例如经由网络104、计算机总线和/或某种通信路径)接收编码视频流,并存储该视频流以便稍后进行解码。在示例实施方式中,实时传输协议(RTP)用于通过网络104传输编码视频。在另一种实施方式中,可以使用除RTP以外的传输协议(例如基于HTTP的视频流传输协议)。
例如,当在视频会议系统中使用时,发送站102和/或接收站106可以包括用于对如下文所描述的视频流进行编码和解码的能力。例如,接收站106可以是视频会议参与者,其从视频会议服务器(例如发送站102)接收编码视频比特流,以解码和查看该编码视频比特流并且进一步对其进行编码并将其自身的视频比特流发送给视频会议服务器,以供其它参与者进行解码和查看。
图2是可以实施发送站或接收站的计算设备200的示例的框图。例如,计算设备200可以实施图1的发送站102和接收站106中的一者或两者。计算设备200可以是包括多个计算设备的计算系统的形式或是单个计算设备的形式,例如,移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等。
计算设备200中的CPU 202可以是中央处理单元。可替代地,CPU202可以是任何其它类型的设备或现在存在或以后开发的能够操纵或处理信息的多个设备。尽管所公开的实施方式可以用如图所示的单个处理器(例如CPU 202)来实践,但可以通过使用一个以上的处理器来实现速度和效率上的优点。
在实施方式中,计算设备200中的存储器204可以是只读存储器(ROM)设备或随机存取存储器(RAM)设备。任何其它合适类型的存储设备都可以用作存储器204。存储器204可以包括由CPU 202使用总线212访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,应用程序210包括至少一个程序,该程序允许CPU 202执行本文中所描述的方法。例如,应用程序210可以包括应用1至N,其进一步包括执行本文中所描述的方法的视频代码化应用。计算设备200还可以包括辅助存储设备214,其可以例如是与移动的计算设备200一起使用的记忆卡。因为视频通信会话可以包含大量信息,所以可以将它们全部或部分地存储在辅助存储设备214中,并根据需要将其加载到存储器204中。
计算设备200还可以包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是将显示器与可操作以感测触摸输入的触敏元件组合的触敏显示器。显示器218可以经由总线212耦合到CPU 202。除了显示器218之外或作为显示器218的替代,可以提供允许用户编程或另外使用计算设备200的其它输出设备。当输出设备是显示器或包括显示器时,该显示器可以以各种方式实施,包括实施为液晶显示器(LCD);阴极射线管(CRT)显示器或发光二极管(LED)显示器,诸如有机LED(OLED)显示器。
计算设备200还可以包括图像感测设备220(例如相机)或现在存在的或以后开发的可以感测图像(诸如操作计算设备200的用户的图像)的任何其它图像感测设备220,或与该图像感测设备通信。可以将图像感测设备220定位成使得其朝向操作计算机设备200的用户。在示例中,可以将图像感测设备220的位置和光轴配置成使得视野包括与显示器218直接相邻的区域,并且从该区域可以看到显示器218。
计算设备200还可以包括声音感测设备222(例如麦克风)或现在存在的或以后开发的可以感测计算设备200附近的声音的任何其它声音感测设备,或与该声音感测设备通信。可以将声音感测设备222定位成使得其朝向操作计算设备200的用户,并且可以将其配置为接收在用户操作计算设备200时由用户发出的声音(例如语音或其它话语)。
尽管图2将计算设备200的CPU 202和存储器204描绘为集成到单个单元中,但可以利用其它配置。CPU 202的操作可以分布在可以直接耦合或跨局域网或其它网络耦合的多个机器(每个机器具有一个或多个处理器)上。存储器204可以分布在多个机器上,诸如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器。尽管在此处被描绘为单个总线,但计算设备200的总线212可以由多个总线组成。另外,辅助存储设备214可以直接耦合至计算设备200的其它组件,或可以经由网络访问,并且可以包括单个集成单元(诸如记忆卡)或多个单元,诸如多个记忆卡。因此,可以以各种配置来实施计算设备200。
图3是要编码且随后解码的视频流300的示例的图式。视频流300包括视频序列302。在下一级别处,视频序列302包括若干相邻帧304。虽然将三个帧描绘为相邻帧304,但视频序列302可以包括任何数量的相邻帧304。随后可以将相邻帧304进一步细分为单独帧,例如帧306。在下一级别处,可以将帧306划分成一系列分段308或平面。例如,分段308可以是允许并行处理的帧的子集。分段308也可以是可以将视频数据分离成单独颜色的帧的子集。例如,彩色视频数据的帧306可以包括亮度平面和两个色度平面。可以以不同的分辨率对分段308进行采样。
不管帧306是否被划分成分段308,都可以将帧306进一步细分为块310,其可以包含与例如帧306中的16×16像素对应的数据。也可以将块310布置为包括来自像素数据的一个或多个分段308的数据。块310还可以具有任何其它合适的大小,诸如4×4像素、8×8像素、16×8像素、8×16像素、16×16像素或更大。
图4是根据本公开的实施方式的编码器400的框图。如上文所描述,编码器400可以诸如通过提供存储在存储器(例如存储器204)中的计算机软件程序而实施在发送站102中。计算机软件程序可以包括机器指令,该机器指令在被诸如CPU 202的处理器执行时使发送站102以本文中所描述的方式对视频数据进行编码。也可以将编码器400实施为例如包括在发送站102中的专用硬件。编码器400具有用于在(由实线连接线示出的)正向路径中执行各种功能以使用视频流300作为输入来产生编码或压缩比特流420的以下级:帧内/帧间预测级402、变换级404、量化级406和熵编码级408。编码器400还可以包括用于重构帧以便对未来的块进行编码的(由虚线连接线示出的)重构路径。在图4中,编码器400具有用于在重构路径中执行各种功能的以下级:去量化级410、逆变换级412、重构级414和环路滤波级416。编码器400的其它结构变型可以用于对视频流300进行编码。
当呈现视频流300以进行编码时,可以以块为单位处理帧306。在帧内/帧间预测级402,可以使用帧内预测(也被称为intra-prediction)或帧间预测(也被称inter-prediction)或两者的组合来对块进行编码。在任何情况下,都可以形成预测块。在帧内预测的情况下,可以由当前帧中的先前已被编码和重构的样本形成预测块的全部或一部分。在帧间预测的情况下,可以由使用运动矢量确定的一个或多个先前构造的参考帧中的样本形成预测块的全部或一部分。
接下来,仍然参考图4,可以在帧内/帧间预测级402从当前块减去预测块以产生残差块(也被称为残差)。变换级404使用基于块的变换将残差变换为例如频域中的变换系数。这种基于块的变换(即,变换类型)包括:例如,离散余弦变换(DCT)和非对称离散正弦变换(ADST)。其它基于块的变换是可能的。另外,可以将不同变换的组合应用于单个残差。在变换的一个应用示例中,DCT将残差块变换到频域中,其中,变换系数值是基于空间频率的。最低频率(DC)系数位于矩阵的左上角处,且最高频率系数位于矩阵的右下角处。值得注意的是,预测块的大小以及因此产生的残差块的大小可以与变换块的大小不同。例如,可以将预测块拆分成较小的块,将单独变换应用于该较小的块。
量化级406使用量化器值或量化级别将变换系数转换为离散的量子值,其被称为量化变换系数。例如,可以将变换系数除以量化器值并将其截断。随后,通过熵编码级408对量化变换系数进行熵编码。可以使用包括令牌树和二叉树的任何数量的技术来执行熵代码化。随后,将熵编码的系数以及用于对块进行解码的其它信息(其可以包括:例如,所使用的预测类型、变换类型、运动矢量和量化器值)一起输出至压缩比特流420。可以将用于对块进行解码的信息熵编码为压缩比特流420内的块、帧、切片和/或节头。压缩比特流420也可以被称为编码视频流或编码视频比特流;这些术语在本文中将可互换地使用。
图4中的(由虚线连接线示出的)重构路径可以用于确保编码器400和(下文描述的)解码器500两者都使用相同的参考帧和块来对压缩比特流420进行解码。重构路径执行与在解码过程期间发生且在下文进行更详细讨论的功能类似的功能,这些功能包括在去量化级410对量化变换系数进行去量化以及在逆变换级412对去量化变换系数进行逆变换以产生导数残差块(也被称为导数残差)。在重构级414,可以将在帧内/帧间预测级402所预测的预测块添加到导数残差以创建重构块。可以将环路滤波级416应用于重构块,以减少诸如块效应的失真。
编码器400的其它变型可以用于对压缩比特流420进行编码。例如,基于非变换的编码器400可以在不具有针对某些块或帧的变换级404的情况下直接量化残差信号。在另一实施方式中,编码器400可以将量化级406和去量化级410组合成单个级。
图5是根据本公开的实施方式的解码器500的框图。解码器500可以例如通过提供存储在存储器204中的计算机软件程序而实施在接收站106中。该计算机软件程序可以包括机器指令,该机器指令在被诸如CPU 202的处理器执行时使接收站106以下文所描述的方式对视频数据进行解码。解码器500还可以实施在例如包括在发送站102或接收站106中的硬件中。
类似于上面所讨论的编码器400的重构路径,解码器500在一个示例中包括用于执行各种功能以从压缩比特流420产生输出视频流516的以下级:熵解码级502、去量化级504、逆变换级506、帧内/帧间预测级508、重构级510、环路滤波级512和后置滤波级514。解码器500的其它结构变型可以用于对压缩比特流420进行解码。
当呈现压缩比特流420以进行解码时,压缩比特流420内的数据元素可以由熵解码级502解码以产生一组量化变换系数。去量化级504对量化变换系数进行去量化(例如通过将量化变换系数乘以量化器值),并且逆变换级506使用所选择的变换类型对去量化变换系数进行逆变换以产生可以与由编码器400中的逆变换级412所创建的导数残差相同的导数残差。使用从压缩比特流420解码的报头信息,解码器500可以使用帧内/帧间预测级508来创建与在编码器400(例如在帧内/帧间预测级402)中所创建的相同的预测块。在重构级510,可以将预测块添加到导数残差以创建重构块。可以将环路滤波级512应用于重构块以减少块效应。可以将其它滤波应用于重构块。在示例中,将后置滤波级514应用于重构块以减少块失真,并且将结果作为输出视频流516输出。输出视频流516也可以被称为解码视频流;这些术语在本文中将可互换地使用。
解码器500的其它变型可以用于对压缩比特流420进行解码。例如,解码器500可以在不具有后置滤波级514的情况下产生输出视频流516。在解码器500的一些实施方式中,在环路滤波级512之后应用后置滤波级514。环路滤波级512可以包括可选去块滤波级。另外或可替代地,编码器400包括环路滤波级416中的可选去块滤波级。
编解码器可以使用多种变换类型。例如,变换类型可以是图4的变换级404所使用的变换类型以生成变换块。例如,变换类型(即,逆变换类型)可以是将由图5的去量化级504使用的变换类型。可用的变换类型可以包括一维离散余弦变换(1D DCT)或其近似值、一维离散正弦变换(1D DST)或其近似值、二维DCT(2D DCT)或其近似值、二维DST(2D DST)或其近似值、以及恒等变换。其他转换类型可以是可用的。在示例中,可以在一维(例如,行或列)中应用一维变换(1D DCT或1D DST),并且可以在另一维中应用恒等变换。
在使用1D变换(例如1D DCT,1D DST)(例如,将1D DCT应用于变换块的列(或相应地行))的情况下,可以通过使用逐行(即,光栅)扫描顺序或逐列扫描顺序来对量化系数进行代码化。在使用2D变换(例如,2D DCT)的情况下,可以使用不同的扫描顺序来对量化系数进行代码化。如上所述,可以基于所使用的变换的类型,使用不同的模板来导出用于对非零图的非零标志进行代码化的上下文。因此,在一种实施方式中,可以基于用于生成变换块的变换类型来选择模板。如上所述,变换类型的示例包括:应用于行(或列)的1D DCT和应用于列(或行)的恒等变换;应用于行(或列)的1D DST和应用于列(或行)的恒等变换;应用于行(或列)的1D DCT和应用于列(或行)的1D DST;以及2D DST。变换的其他组合可以包括变换类型。
图6是根据本公开的实施方式的帧(诸如图3的帧306)的部分600的表示的框图。如图所示,帧的部分600包括在矩阵或笛卡尔平面中的两行两列的四个64×64块610,其可以被称为超级块。超级块可以具有较大大小或较小大小。虽然相对于大小为64×64的超级块阐述了图6,但描述可以容易地扩展到较大(例如128×128)或较小超级块大小。
在示例中且在不失一般性的情况下,超级块可以是基本或最大代码化单元(CU)。每个超级块可以包括四个32×32块620。每个32×32块620可以包括四个16×16块630。每个16×16块630可以包括四个8×8块640。每个8×8块640可以包括四个4×4块650。每个4×4块650可以包括16个像素,其可以在笛卡尔平面或矩阵中的每个相应块中以四行和四列表示。像素可以包括表示在帧中捕获到的图像的信息,诸如亮度信息、颜色信息和位置信息。在示例中,诸如如图所示的16×16像素块的块可以包括亮度块660,其可以包括亮度像素662;以及两个色度块670/680,诸如U或Cb色度块670以及V或Cr色度块680。色度块670/680可以包括色度像素690。例如,如图所示,亮度块660可以包括16×16个亮度像素662,并且每个色度块670/680可以包括8×8色度像素690。尽管示出了块的一种布置,但可以使用任何布置。尽管图6示出了N×N块,但在一些实施例中,可以使用N×M(其中,N≠M)块。例如,可以使用32×64块、64×32块、16×32块、32×16块或任何其它大小的块。在一些实施方式中,可以使用N×2N块、2N×N块或其组合。
在一些实施方式中,视频代码化可以包括有序块级别代码化。有序块级别代码化可以包括以诸如光栅扫描顺序的顺序对帧的块进行代码化,其中,可以如下方式识别和处理块:从帧的左上角或帧的一部分中的块开始,并且沿着行从左到右且从顶部行到底部行进行处理,依次识别每个块以进行处理。例如,帧的顶部行左侧列中的超级块可以是所代码化的第一块,且紧接着第一块的右侧的超级块可以是所代码化的第二块。从顶部开始的第二行可以是所代码化的第二行,使得可以在第一行的最右列中的超级块之后对第二行的左列中的超级块进行代码化。
在示例中,对块进行代码化可以包括:使用四叉树代码化,该四叉树代码化可以包括以光栅扫描顺序对具有块的较小块单元进行代码化。可以使用以下四叉树代码化来对例如图6中所示的帧的部分的左下角中所示的64×64超级块进行代码化,在该四叉树代码化中,可以对左上角的32×32块进行代码化,随后可以对右上角的32×32块进行代码化,随后可以对左下角的32×32块进行代码化,且随后可以对右下角的32×32块进行代码化。可以使用以下四叉树代码化来对每个32×32块进行代码化,在该四叉树代码化中,可以对左上角的16×16块进行代码化,随后可以对右上角的16×16块进行代码化,随后可以对左下角的16×16块进行代码化,且随后可以对右下角的16×16块进行代码化。可以使用以下四叉树代码化来对每个16×16块进行代码化,在该四叉树代码化中,可以对左上角的8×8块进行代码化,随后可以对右上角的8×8块进行代码化,随后可以对左下角的8×8块进行代码化,且随后可以对右下角的8×8块进行代码化。可以使用以下四叉树代码化来对每个8×8块进行代码化,在该四叉树代码化中,可以对左上角的4×4块进行代码化,随后可以对右上角的4×4块进行代码化,随后可以对左下角的4×4块进行代码化,且随后可以对右下角的4×4块进行代码化。在一些实施方式中,针对16×16块,可以省略8×8块,并且可以使用以下四叉树代码化来对16×16块进行代码化,在该四叉树代码化中,可以对左上角的4×4块进行代码化,且随后可以以光栅扫描顺序对16×16块中的其它4×4块进行代码化。
在示例中,视频代码化可以包括:通过从对应编码帧中省略原始或输入帧中的一些信息来压缩在该原始或输入帧中所包括的信息。例如,代码化可以包括:减少频谱冗余;减少空间冗余;减少时间冗余;或其组合。
在示例中,减少频谱冗余可以包括:使用基于亮度分量(Y)和两个色度分量(U和V或Cb和Cr)的颜色模型,其可以被称为YUV或YCbCr颜色模型或颜色空间。使用YUV颜色模型可以包括:使用相对大量的信息来表示帧的部分的亮度分量以及使用相对少量的信息来表示帧的该部分的每个对应色度分量。例如,帧的部分可以由高分辨率亮度分量(其可以包括16×16像素块)表示并且可以由两个较低分辨率色度分量表示,该较低分辨率色度分量中的每一个将帧的部分表示为8×8像素块。像素可以指示值(例如在0至255的范围内的值),并且可以使用例如八个比特来存储或发送。尽管参考YUV颜色模型描述了本公开,但可以使用任何颜色模型。
减少空间冗余可以包括:将块变换到如上文所描述的频域中。例如,编码器的单元(诸如图4的熵编码级408)可以使用基于空间频率的变换系数值来执行DCT。
减少时间冗余可以包括:使用帧之间的相似性,以基于一个或多个参考帧使用相对少量的数据来对帧进行编码,该参考帧可以是视频流的先前编码的、解码的和重构的帧。例如,当前帧的块或像素可以与参考帧的空间上对应的块或像素类似。当前帧的块或像素可以与不同空间位置处的参考帧的块或像素类似。因此,减少时间冗余可以包括:生成指示空间差异的运动信息(例如当前帧中的块或像素的位置与参考帧中的块或像素的对应位置之间的平移)。
减少时间冗余可以包括:识别参考帧中的块或像素或参考帧的与当前帧的当前块或像素对应的部分。例如,可以在可存储在存储器中的参考帧或参考帧的部分中搜索用于对当前帧的当前块或像素进行编码的最佳块或像素。例如,搜索可以识别参考块与当前块之间的像素值的差被最小化的参考帧的块,并且可以被称为运动搜索。可以限制所搜索的参考帧的部分。例如,所搜索的参考帧的部分(其可以被称为搜索区域)可以包括参考帧的有限数量的行。在示例中,识别参考块可以包括:计算在搜索区域中的块的像素与当前块的像素之间的成本函数,诸如绝对差之和(SAD)。
可以将参考帧中的参考块与当前帧中的当前块的位置之间的空间差异表示为运动矢量。参考块与当前块之间的像素值的差可以被称为差分数据、残差数据或残差块。在一些实施方式中,生成运动矢量可以被称为运动估计,且可以基于使用笛卡尔坐标(诸如fx,y)的位置来指示当前块的像素。类似地,可以基于使用笛卡尔坐标(诸如rx,y)的位置来指示参考帧的搜索区域的像素。可以基于例如当前帧的像素与参考帧的对应像素之间的SAD来确定当前块的运动矢量(MV)。
如在上面所提及的,可以使用四叉树代码化来对超级块进行代码化。图7是根据本发明的实施方式的块的四叉树表示的示例700的框图。示例700包括块702。如在上面所提及的,块702可以被称为超级块或CTB。示例700图示框702的分割。然而,框702可以诸如通过编码器(例如,图4的编码器400)或机器学习模型(诸如关于图10-图11所描述的)被不同地分割。通过诸如图4的编码器400的编码器对块进行分割在本文中称为蛮力编码的方法。
示例700图示将块702被分割成四个块,即,块702-1、702-2、702-3和702-4。块702-2被进一步分割成块702-5、702-6、702-7和702-8。因此,例如,如果块702的大小为N×N(例如,128×128),则块702-1、702-2、702-3和702-4的大小均为N/2×N/2(例如,64×64),并且块702-5、702-6、702-7和702-8的大小分别为N/4×N/4(例如,32×32)。如果块被分割,其将被分割成四个大小相等、不重叠的正方形子块。
四叉树数据表示用于描述如何将块702分割成子块,诸如块702-1、702-2、702-3、702-4、702-5、702-6、702-7和702-8。示出块702的分割的四叉树703。如果将四叉树703的每个节点进一步拆分成四个子节点,则向该节点分配标记“1”,如果不对节点进行拆分,则向该节点分配标记“0”。标记可以被称为拆分比特(例如,1)或停止比特(例如,0),并且被代码化在压缩比特流中。在四叉树中,节点具有四个子节点或不具有子节点。不具有子节点的节点与不进行进一步拆分的块对应。拆分块的子节点中的每一个与子块对应。
在四叉树703中,每个节点与块702中的子块对应。在括号之间示出了对应子块。例如,节点704-1(其具有值0)与块702-1对应。
根节点704-0与块702对应。因为将块702拆分成四个子块,所以根节点704-0的值是拆分比特(例如,1)。在中间级别处,标记指示是否将块702中的子块进一步拆分成四个子子块。在这种情况下,因为将块702-2拆分成块702-5、702-6、702-7和702-8,所以节点704-2包括标记“1”。因为不对对应块进行拆分,所以节点704-1、704-3和704-4中的每一个包括标记“0”。因为节点704-5、704-6、704-7和704-8位于四叉树的底部级别,所以标记“0”或“1”对于这些节点是不必要的。可以根据不存在与块702-5、702-6、702-7和702-8对应的附加标记来推断不对这些块进行进一步拆分。
四叉树703的四叉树数据表示可以由二进制数据“10100”表示,其中,每个比特表示四叉树703的节点704。二进制数据向编码器和解码器指示块702的分割。在编码器需要将二进制数据传送到解码器(诸如图5的解码器500)的情况下,编码器可以对压缩比特流(诸如图4的压缩比特流420)中的二进制数据进行编码。
可以将与四叉树703的叶节点对应的块用作预测的基础。也就是说,可以针对块702-1、702-5、702-6、702-7、702-8、702-3和702-4(在本文中被称为代码化块)中的每一个执行预测。如关于图6所提及的,代码化块可以是亮度块或色度块。应注意,在示例中,可以相对于亮度块确定超级块分割。相同分割可以与色度块一起使用。
在代码化块(例如,块702-1、702-5、702-6、702-7、702-8、702-3或702-4)级处确定预测类型(例如,帧内预测或帧间预测)。也就是说,代码化块是用于预测的决策点。
如在上面所提及的模式决策过程(例如,分割决策过程)确定代码化块(诸如块700)的四叉树分割。分割决策过程计算代码化参数的不同组合的RD成本。也就是说,例如,检查预测块与预测(例如帧内预测、帧间预测等)的不同组合以确定最佳分割。
如本领域的技术人员应认识到,许多模式决策过程可以由编码器执行。
图8是用于搜索对块进行代码化的最佳模式的过程800过程的流程图。过程800是确定最佳模式的模式决策过程的说明性高级过程。为了便于描述,相对于选择用于对预测块进行编码的帧内预测模式来描述过程800。可以由与过程800类似的过程确定的最佳模式的其它示例包括:确定变换类型和确定变换大小。过程800可以由编码器(诸如图4的编码器400)使用蛮力方法进行模式决策来实施。
在802中,过程800接收图像块。在相对于确定帧内预测模式来描述过程800时,图像块可以是预测单元。如相对于图7所描述的,可以将叶节点代码化块(例如,块702-1、702-5、702-6、702-7、702-8、702-3或702-4)中的每一个分割成一个或多个预测单元。因此,图像块可以是一个这种预测单元。
在804中,过程800确定(例如,选择、计算、选取等)模式列表。模式列表可以包括K个模式,其中,K是整数。模式列表可以表示成{m1、m2、……、mk}。编码器可以具有可用的帧内预测模式列表。例如,可用的帧内预测模式列表可以是{DC_PRED、V_PRED、H_PRED、D45_PRED、D135_PRED、D117_PRED、D153_PRED、D207_PRED、D63_PRED、SMOOTH_PRED、SMOOTH_V_PRED和SMOOTH_H_PRED、PAETH_PRED}。由于对这些帧内预测模式的描述与本公开的理解不相关,因此省略了此描述。在804中确定的模式列表可以是可用的帧内预测模式列表的任何子集。
在806中,过程800将BEST_COST变量初始化为高值(例如INT_MAX,其可以等于2,147,483,647)并且将循环变量i初始化为1,其与要检查的第一模式对应。
在808中,过程800计算(例如,运算)modei的RD_COSTi。在810中,过程800测试处于检查中的当前模式modei的RD成本RD_COSTi是否小于当前最佳成本BEST_COST。如果测试为肯定的,则在812中,过程800将最佳成本更新为当前模式的成本(即,BEST_COST=RD_COSTi),并且将当前最佳模式索引(BEST_MODE)设置为循环变量i(BEST_MODE=i)。过程800然后继续进行至814,以对循环变量i进行增量(即,i=i+1),以准备好检查下一模式(若存在)。如果测试是否定的,则过程800继续进行至814。
在816中,如果存在更多模式要检查,则过程800返回至808;否则,过程800继续进行至816。在818中,过程800输出最佳模式BEST_MODE的索引。输出最佳模式可以是指将最佳模式返回至过程800的调用者。输出最佳模式可以是指使用最佳模式对图像进行编码。输出最佳模式可以具有其它语义。过程800在输出最佳模式之后终止。
图9是估计通过使用预测模式mi对图像块X进行代码化的速率和失真成本的示例900的框图。过程900可以由编码器(诸如图4的编码器400)执行。过程900包括:使用预测模式mi执行图像块X的假设编码,以确定对块进行编码的RD成本。过程900可以由过程800在808中使用。
假设编码过程是实施代码化步骤但不将比特输出到压缩比特流(诸如图4的压缩比特流420)中的过程。由于目的是估计速率(也被称为比特率),因此可以将假设编码过程视为或称为速率估计过程。假设编码过程计算对图形块X进行编码所需的比特数量(RATE)。示例900还基于图像块X与图像块X的重构版本之间的差异来计算失真(DISTORTION)。
在904中,使用模式mi来确定预测。可以如相对于图4的帧内/帧间预测级402所述确定预测。在906中,将残差确定为图像块902与预测之间的差。在908和910中,诸如分别相对于图4的变换级404和量化级406所述对残差进行变换和量化。通过执行假设编码的速率估计器912计算速率(RATE)。在示例中,速率估计器912可以执行熵编码,诸如相对于图4的熵编码级408所描述的。
在914中将量化残差去量化(诸如(例如)相对于图4的去量化级410所描述的),在916中对量化残差进行逆变换(诸如(例如)相对于图4的逆变换级412所描述的),并且在918中对量化残差进行重构(诸如(例如)相对于图4的重构级414所描述的),以生成重构块。失真估计器920计算图像块X与重构块之间的失真(即,视频质量的损失)。在示例中,失真可以是图像块X与重构块的像素值之间的均方误差。失真可以是图像块X与重构块的像素值之间的绝对差误差之和。可以使用任何其它合适的失真测量。
然后通过使用如公式(5)中所示的拉格朗日乘数将速率RATE和失真DISTORTION组合成标量值(即,RD成本)。
DISTORTION+λmode×RATE, (5)
可以取决于执行示例900的操作的编码器,如本文中所述计算公式5的拉格朗日乘数λmode
图8和图9图示用于模式决策的传统(即,蛮力)方法在很大程度上是串行过程,该串行过程基本上通过使用候选模式来对图像块X进行代码化以确定具有最佳成本的模式。已经使用技术来减少模式决策的复杂性。例如,某些条件一满足,例如,速率失真成本低于阈值,就已经使用早期终止技术来终止图8的过程800的循环。其他技术包括例如基于启发法来选择可用候选模式的子集或在候选模式上使用多遍。但是,这样的技术可能不足以降低模式决策的复杂度。
机器学习可以用于降低模式决策中的计算复杂度。如在上面所提及的,编码器可以执行数个模式决策过程。如果模式决策需要使用QP(例如,确定RD成本),则在机器学习的学习阶段和推理阶段使用QP的正确形式(即,函数)是至关重要的。图10是将QP的非线性函数与机器学习模型一起使用的说明性示例。
图10是根据本公开的实施方式的用于使用量化参数(QP)的非线性函数的模式决策的卷积神经网络(CNN)1000的示例的框图。更具体地,CNN 1000可以用于确定图像块的块分割。块可以是超级块。例如,CNN可以用于确定在图4的帧内/帧间预测级402中所使用的块大小。分割可以是诸如相对于图7所描述的四叉树分割。CNN 1000可以用于确定帧内代码化块的分割。因此,块可以是帧内代码化帧(诸如图3的帧304)的块。CNN 1000可以由编码器(其中,最小的可能块分割是8×8分割)使用。因此,需要针对16×16或更大的块(即,超级块的子块)做出是否要拆分块的确定。
关于图10描述CNN 1000的架构。参考图11描述CNN 1000的训练和使用(即,用于推断)。
如下文进一步描述的,CNN 1000的特征提取部分的并行分支的数量可以是可参数化的(例如可配置的)。例如,在配置中,可以仅使用1个分支(例如线性分支)。只要维持如下文进一步描述的感受野一致性特性,这就是可能的。除了块的顶部行和左侧行之外,感受野一致性特性意味着块的感受野边界不跨越块的边界。
将要编码的块1002(即,图像块)呈现给CNN 1000。块1002可以是一个彩色平面块。因此,块1002可以是亮度块。块是一个彩色平面块通过图10中的“64×64×1”中的“×1”来示出。如所提及的,块1002可以是超级块。虽然示出了大小为64×64的超级块并且该超级块用于描述CNN 1000,但是块1002可以具有任何大小。例如,块1002可以是128×128、32×32或任何大小的块,通常由编码器为该块确定了四叉树分割。如在上面所提及的,编码器可以是H.264、VP9、HEVC、H.263、AV1或任何其他在模式决策确定中使用QP的编码器。在另一示例中,并且因为预测模式可以取决于要分割的块的相邻(即,外围)像素,所以块1002(即,用作CNN 1000的输入的块)可以包括在要确定分割的块的外部的像素。例如,如果要确定64×64的分割,则可以将大小为65×65×1的块用作CNN 1000的输入。也就是说,例如,可以将要确定分割的块的左侧和顶部邻近像素包括在CNN 1000的输入块中。在这种情况下,并且为了保持如下所述的感受野属性,第一滤波器(例如,特征提取层的每个分支中的第一滤波器)的大小可以为2k+1,并且步幅可以为2k
如所示的特征提取层1003包括三个分支,即,分支1003-A、分支1003-B和分支1003-C。特征提取层中的分支的数量可以配置为包括更多或更少的分支。分支中的每一个可以包括一个或多个层。在每一层处,提取相应特征映射。在以下描述中,特征映射(诸如特征映射1004)被称为具有A×B×C的尺寸。例如,特征映射1004的大小为8×8×256。这应解释为如下:特征映射1004包括256个特征映射,并且256个特征映射中的每一个的大小为8×8像素(或特征)。因此,可以将特征映射1004视为256个矩阵的集合,其中,每个矩阵的大小为8×8。在CNN1000的一种配置中,可以分离每种分割类型的特征提取,而不是共享如图10中的特征提取。
特征映射处的特征数量可以是可配置的。例如,虽然将示出的特征映射1004为8×8×256,但其可以是8×8×N,其中,N是任何期望数量的特征。在一些示例中,可以将特征压缩率应用于机器学习模型以扩大或减小模型中的特征数量。例如,可以将特征压缩率乘以所有特征映射以用于特征扩大(或减小)。
分支1003-A在分支1003-A的第一层中提取与块1002的8×8块对应的特征。分支1003-A使256个滤波器(也被称为内核)与块1002一起卷积。每个滤波器的大小为8×8。使用等于滤波器大小的步幅(即,等于8的步幅)。因此,提取了大小均为8×8的256个特征映射(即,特征映射1004)。大小为8×8的滤波器由相同大小的内核限定,其中,内核中的每个条目都可以是实数。在示例中,条目可以是大于1的非负整数。因此,可以通过计算块与相同大小的滤波器内核之间的内积来实现对8×8块进行滤波。在机器学习中,可以在训练过程中学习滤波器内核(即,构成内核值的实数)。
分支1003-B提取大小均为8×8的256个特征映射(即,特征映射1008)。分支1003-B首先在分支1003-B的第一层处通过使块1002与大小均为4×4的128个滤波器卷积并且使用步幅4(即,等于滤波器大小的步幅)来提取特征映射1006。在分支1003-B的第二层处,使特征映射1006中的128个特征映射中的每一个与使用步幅2的两个2×2滤波器卷积,从而产生特征映射1008。
分支1003-C提取大小均为8×8的256个特征映射(即,特征映射1014)。分支1003-C首先在分支1003-C的第一层处通过使块1002与大小均为2×2的64个滤波器卷积并且使用步幅2来提取特征映射1010。在分支1003-B的第二层处,使特征映射1010的64个中的每一个与使用步幅2的两个2×2滤波器卷积,从而产生128个特征映射(即,特征映射1012)。在分支1003-C的第三层处,使特征映射1012中的128个中的每一个与使用步幅2的两个2×2滤波器卷积,从而产生特征映射1014。
应注意,每当将滤波器应用于单元(例如,块1002或特征映射)时,单元在每个维度上缩小了滤波器的大小(即,向下采样)。
特征映射1010是块1002中的32×32块的特征映射。特征映射1006是块1002中的16×16块的特征映射。特征映射1004是块1002中的8×8块的特征映射。特征映射1008将特征映射1006归一化为比如大小为8×8的特征映射1004。同样,特征映射1012紧接着特征映射1014将特征映射1010归一化为类似地具有大小8×8。
在示例中,可以经由连续卷积将特征映射归一化为可以由编码器使用的最小可能分割的特征映射。因此,当使用图10的CNN 1000时,由编码器可以使用与最小可能分割类型对应的大小8×8。类似地,如果最小可能分割是4×4,则特征提取层1003可以将特征映射归一化为具有大小4×4。在示例中,特征提取层1003可以包括附加分支,并且分支中的每一个将经由连续卷积生成大小均为4×4的特征映射。在另一示例中,可以将特征映射归一化为不一定与最小分割大小对应的大小。例如,可以将特征映射归一化为大于或等于8×8的任何大小。
级联层1016接收特征映射1004、1008和1014。另外,因为CNN1000用于确定(例如推断、提供等)要进行帧内预测的块1002的分割时,并且因为帧内预测使用邻近块的至少一些样本(即,像素),还可以将邻近块的至少一些样本用作级联层1016的输入。虽然出于说明性目的示出了来自顶部邻近块的采样(在图10中用顶部指示)和来自左侧邻近块的采样(在图10中用左侧指示),但可以根据用于处理视频帧的块的扫描顺序来使用其它邻近块。例如,在光栅扫描顺序的情况下使用了左侧和顶部。在实施方式中,将顶部和左侧邻近块的所有样本用作级联层1016的输入。然而,且如上文所提及,可以将顶部和左侧邻近块的样本包括在输入块(例如图10的块1002)中。另外,在用于确定其它模式决策参数(例如,帧间预测参数)的CNN中,可以或可以不将来自邻近块的样本用作CNN的输入。
在实施方式中,并且如本领域的技术人员应了解,顶部可以是在块1002的顶部边缘外围的先前重构的像素的行;并且左侧可以是在块1002的左侧边缘外围的先前重构的像素的列。可以存在与顶部对应的多达64个样本和与左侧对应的多达64个样本。如上文所提及,可以将顶部和左侧添加至呈现给CNN的输入块,替代或者除了该输入块之外。
QP的非线性函数也被用作级联层1016的输入。在图10中图示二次函数(即,QP2)。然而,如上所述,所使用的函数取决于编解码器;更具体地,所使用的函数取决于由编解码器实施的标准。例如,在实施H.263、VP9或AV1的编解码器的情况下可以使用二次函数;并且在实施H.264或HEVC的编解码器的情况下可以使用指数函数。
因此,并且在将顶部和左侧直接馈送到级联层1016的情况下,级联层1016可以接收总共897个输入。897个输入对应于:256(即,特征映射)1004)+256(即,特征映射1008)+256(即,特征映射1014)+64(即,顶部)+64(即,左侧)+1(即,QP的非线性值,诸如QP2)=897。在一些实施方式中,也可以将与块1002的左上角相邻的样本(即,像素)用作级联层1016的输入。在这样的情况下,级联层1016接收898个输入。
CNN 1000包括三个分类器;即,分类器1018、1020和1022。分类器1018、1020、1022中的每一个包括分类层的集合并且使用卷积,如下文进一步描述的。
分类器1018针对块1002中的大小为16×16的子块推断(即,输出)分割决策。应注意,可以将块1002分割成4×4个块,每个块的大小为16×16。因此,分类器1018将从级联层1016接收到的特征映射(其大小均为8×8)减小至4×4的大小。
首先,特征映射1019通过使用2×2可分离卷积滤波器应用非重叠卷积来从自级联层1016接收到的特征映射中获得以将一些特征映射组合成一个,从而产生大小均为4×4的256个特征映射。
其次,连续地应用一系列1×1卷积以将特征尺寸大小逐渐减小到1。因此,将1×1×128卷积(其中,128为滤波器的数量)应用于特征映射1019,从而产生4×4×128特征映射,对4×4×128特征映射应用1×1×64卷积(其中,64为滤波器的数量),从而产生4×4×64特征映射,对4×4×64特征映射应用1×1×32卷积,从而产生4×4×32特征映射,对4×4×32特征映射应用1×1×1卷积,从而产生4×4×1特征映射,即,特征映射1025。
对于块1002中的每个16×16子块,分类器1018推断是拆分子块还是不拆分子块。因此,分类器1018输出分别与块1002中的16×16子块中的每一个对应的16个决策。16个决策可以是二进制决策。也就是说,可以将特征映射1025视为二进制决策的矩阵。例如,零(0)可以与不拆分子块的决策对应,而一(1)可以与拆分子块的决策对应。分类器1018的输出的顺序可以与块1002中的16×16子块的光栅扫描顺序对应。在另一示例中,决策可以与概率(即,介于0到1的范围内的值)或一些其它值(诸如介于0到100的范围内的值)对应。当决策大于适合于决策值的范围(例如0.9、0.75、90%等)的阈值时,可以将其视为与二进制决策1对应。
分类器1020针对块1002中的大小为32×32的子块推断(即,输出)分割决策。分类器1020接收特征映射1019并且使特征映射中的每一个与2×2可分离卷积滤波器卷积,以将特征映射1019中的特征映射组合成一个,从而产生特征映射1021。应注意,可以将块1002分割成大小分别为32×32的2×2块。因此,分类器1020通过使用1×1滤波器的一系列非重叠卷积将特征映射1019(其大小分别为4×4)减小到2×2的大小,以将特征尺寸大小逐渐减小到1(如上文相对于特征映射1019所描述的),从而产生特征映射1027。针对块1002中的每个32×32子块,分类器1020推断是拆分子块还是不拆分子块。因此,分类器1020输出分别与块1002中的32×32子块中的每一个对应的4个决策。
分类器1022针对块1002本身推断(即,输出)分割决策。分类器1022接收特征映射1021并且使特征映射中的每一个与2×2可分离卷积滤波器卷积,从而产生特征映射1023,这将特征映射1021中的一些特征映射组合成1。应注意,可以将块1002分割成大小为64×64的仅一个1×1块。因此,分类器1022通过使用1×1滤波器的一系列非重叠卷积将特征映射1023(其大小分别为1×1)减小到1×1的大小,以将特征尺寸大小逐渐减小到1(如上文相对于特征映射1019所描述的),从而产生特征映射1029。针对块1002,分类器1022推断是拆分块1002还是不拆分块1002。因此,分类器1022输出与是否要将块1002拆分成四个32×32子块对应的1个决策。
描述了大小为2×2的可分离卷积滤波器,以获得(分别为分类器1018、1020和1022的)特征映射1019、1021和1023,以便针对大小为64×64的块分别最终确定4×4 16×16分割(即,特征映射1025)、2×232×32分割(即,特征映射1027)和1×1 64×64分割(即,特征映射1029)。然而,在一般情况下,只要分类器1018、1020和1022如所描述确定了4×4 16×16分割(即,特征映射1025)、2×2 32×32分割(即,特征映射1027)和1×1 64×64分割(即,特征映射1029)就可以使用大小为2k的任何卷积滤波器。
在分类器1018中,将具有4×4×1的尺寸的特征映射1025示出为从特征映射1034(其大小为4×4×32)直接导出(即,不存在附加中间卷积运算)。然而,不需如此,且可以在特征映射1034与特征映射1025之间使用任何数量的附加卷积运算。这通过点划线1036示出。同样的情况可以相对于特征映射1027和特征映射1029分别适用于分类器1020和1022。
在示例中,可以将参数用作CNN的可配置参数(即,阈值参数)。如果剩余特征的数量小于或等于阈值参数,则可以将下一层的特征数量设置为1。在图10的CNN 1000的示例中,将阈值参数设置为32。因此,因为特征映射1034的特征数量等于阈值参数(即32),所以随后下一层与产生具有特征尺寸为1的特征映射1025的层对应。在示例中,分类器中的每一个可以配置有不同的相应阈值参数。在另一示例中,所有分类器可以配置为使用相同的阈值参数。
在示例中,可以使用特征减少参数F来降低分类器内的特征映射维度(即,特征映射的最终维度)。例如,分类器可以根据级数IncomingFeature、IncomingFeature/F、IncomingFeature/F2、......、1(其中,IncomingFeature是由层最初接收到的特征的数量)来减少信道的数量。在示例中,分类器中的每一个可以配置有不同的相应特征减少参数。在另一示例中,所有分类器可以配置为使用相同的特征减少参数。
现在使用分类器1018来说明阈值参数和特征减少参数。相对于分类器1018,IncomingFeature是256(如由大小为4×4×256的特征映射1019所图示),特征减少参数F是2,并且阈值参数是32。因此,分类器1018根据级数256、256/2、256/22、256/23和1来减少信道的数量。也就是说,分类器1018根据级数256、128、64、32和1来减少信道的数量。分类器1018不包括信道的数量为256/24(即,16)的层,因为在级数256/23(即,32)处,达到信道的数量的阈值参数32。
CNN 1000可以扩展为针对其它块大小推断分割决策。
例如,编码器可以允许最小分割具有4×4的大小。因此,为了针对大小为8×8的子块推断分割决策,可以将分支添加到特征提取层1003,以使得特征提取层1003的每个分支可以生成大小均为4×4的特征映射,作为级联层1016的输入。另外,可以在级联层1016与分类器1018之间添加分类器。所添加的分类器针对块1002中的大小为8×8的子块推断(即,输出)分割决策。应注意,可以将块1002分割成大小均为8×8的8×8子块。在此示例中,所添加的分类器通过使用2×2滤波器的一系列非重叠卷积将从级联层1016接收到的特征映射减小到8×8×1的大小。
例如,CNN 1000可以配置为推断128×128块的分割决策。针对128×128块,CNN可以配置为包括分类器,该分类器分别确定1个(即,1×1输出矩阵)128×128决策(即,与是否要对块进行拆分对应的一个决策)、4个(即,2×2输出矩阵)64×64决策、16个(即,4×4输出矩阵)32×32决策和64个(即,8×8输出矩阵)16×16决策。
在一些实施方式中,CNN 1000可以包括早期终止特征。例如,如果分类器1022推断出块1002将不进行拆分,则通过分类器1020和1018的处理不需要继续。类似地,如果分类器1020推断出块1002中的32×32子块中没有任何一个将被拆分,则通过分类器1020的处理不需要继续。
图11是根据本公开的实施方式的用于由编码器(即,第一编码器)使用第一量化参数对图像块进行编码的过程1100的流程图。过程1100使用输入数据来训练机器学习模型,以推断模式决策。过程1100随后使用经训练机器学习模型来针对要使用量化参数(即,第一量化参数)编码的图像块推断模式决策。在示例中,模式决策可以是图像块的四叉树分割决策。图像块可以是使用帧内预测进行编码的图像(例如视频帧)的块。在另一示例中,模式决策可以是分割,其包括相对于图16所描述的分割。如下文进一步描述的,图16的一些分割包括正方形和非正方形子分割;且正方形子分割中的每一个可以根据图16的分割中的一个进行进一步分割。
在1102中,过程1100训练机器学习(ML)模型。可以使用训练数据1112来训练ML模型。训练数据1112中的每个训练数据可以包括通过诸如关于图4以及图6-9所描述的传统编码方法(例如,通过第二编码器)编码的视频块;与第二编码器使用的量化参数(即,第二量化参数)相对应的值(即,第二值);与在确定用于对视频块进行编码的模式决策中由第二编码器使用的输入相对应的零或者多个附加输入;以及由第二编码器确定的所得模式决策。在训练阶段,生成ML模型的参数,使得对于至少一些训练数据,ML模型可以针对训练数据推断用于包括视频块、与量化参数对应的值以及训练数据的零个或多个附加输入的输入集合的训练数据的所得模式决策。
如上文所描述,对应于第二量化参数的第二值与第二量化参数具有非线性关系。也就是说,第二值基于第二量化参数的非线性函数来从第二量化参数中导出。
在示例中,非线性函数可以是第二量化参数的指数函数。当第二编码器是H.264或者HEVC编码器时可以使用指数函数。例如,可以使用非线性函数f(Q)=cQP,其中,c是常数。在示例中,c=1/3。在示例中,非线性函数可以是第二量化参数的二次函数。当第二编码器是H.263、AV1或VP9编码器时,可以使用二次函数。例如,可以使用非线性函数f(QP)=QPα,其中,α是不等于0或1的整数(即,α≠0且α≠1)。在示例中,α=2。在一般情况下,如上文所描述,非线性函数与由第二编码器用于确定在速率失真运算中使用的乘数的函数具有相同类型。
在使用ML模型来推断块与块的相应四叉树分割之间的关系的情况下,由第二编码器确定的所得模式决策可以指示训练数据的训练块的四叉树分割。四叉树分割的许多指示(例如表示)是可能的。在示例中,可以使用如相对于四叉树703所描述的二进制标记的矢量(例如序列)。
在使用ML模型来推断帧内预测的块与该块的相应四叉树分割之间的关系的情况下,与由第二编码器在确定用于对视频块进行编码的模式决策时使用的输入相对应的零个或多个附加输入可以包括顶部邻近块的至少一些样本(即,第一样本)、输入块的左侧邻近块的至少一些样本(即,第二样本)、左上角邻近块的至少一些样本或其组合。为了简洁并且在不失一般性的情况下,可以将左上角邻近块视为顶部邻近块或左侧邻近块中的任一个的一部分。因此,在示例中,可以将第一样本或第二样本视为包括来自左上角邻近块的样本。
在训练阶段期间(即,在1102中),ML模型学习(例如,训练、构建、导出等)映射(即,函数),该映射接受块(诸如图10的块1002)和量化参数的非线性值(例如图10中所示的QP2)作为输入并且输出块的分割。
在训练阶段期间,为了使已学习函数尽可能地有用,优选地,使用大范围的输入块和大范围的可能QP值(诸如用于表示现实应用的QP值)来训练ML模型。
例如,相对于输入块,如果训练数据集仅包括暗(例如具有低强度值的像素)训练块,则ML模型可以良好地学习如何确定暗块的模式决策,但是当在推断阶段期间用非暗块呈现时提供不可靠输出。例如,如果第二编码器使用一组离散的QP值,则优选的是,在训练数据集中良好地表示QP值中的每一个。例如,如果QP值可以在0到1之间变化,则优选的是,训练数据包括在0到1范围内的变化的QP值。如果在训练数据中不使用QP值(例如丢失的QP值),则当在推断阶段期间将丢失的QP值提供给ML模型时,ML模型可以发生故障(例如提供错误输出)。在另一示例中,如果在推断阶段期间使用了丢失的QP值(即,在训练阶段期间不使用的QP值),则可以从在训练阶段期间使用的QP值内插丢失的QP,随后可以在推断阶段期间使用内插的QP值。
ML模型随后可以由过程1100在推断阶段期间使用。推断阶段包括操作1104和1106。分隔1110指示训练阶段和推断阶段可以在时间上分离。因此,推理阶段可以由第一编码器执行,并且训练数据1112可以由第二编码器生成。在示例中,第一编码器和第二编码器是相同编码器。也就是说,训练数据1112可以由执行推断阶段的相同编码器生成。在任一种情况下,推断阶段使用如相对于1102所述训练的机器学习模型。
在1104中,将输入呈现给ML模块。也就是说,将输入呈现给包含、包括、执行、实施等ML模型的模块。输入包括图像块(例如,如关于图10的块1002所描述的)以及与第一量化参数相对应的值(即,第一值)的非线性函数。如上文所描述,将第一量化参数用作非线性函数的输入从非线性函数中导出(即,产生)第一值。在示例中,关于图10的QP2描述第一值。输入还可以包括附加输入,如相对于零个或多个附加输入所描述。
在1106中,过程1100从机器学习模型获得第一模式决策参数。在示例中,过程1100获得如关于图10所描述的第一模式决策参数。即,例如,对于块1002,图10的CNN 1000提供指示块1002的四叉树分割的输出。
在1108中,过程1100使用第一模式决策参数对图像块进行编码。即,并且继续于推断块分割的示例,对于每个子块(即,根据指示四叉树划分的输出),过程1100可以如关于图4的帧内/帧间预测级402描述的那样对块进行帧内预测,并且与图4的描述一致,如关于熵编码级408所描述的,最终对诸如图4的比特流420的压缩比特流中的图像块进行熵编码。
在示例中,非线性函数可以由线性段逼近。相对于图12图示通过分段线性段逼近非线性函数。
图12是根据本公开的实施方式的使用线性段来逼近量化参数的非线性函数的示例1200。二次函数用于描述非线性函数。然而,如上所述的其它非线性函数类型也是可能的。示例1200以虚线形式示出量化参数的非线性函数1202。非线性函数1202是QP2。在示例1200中,QP值在0到1的范围内。示例1200图示将0到1的范围拆分成若干分段;即,分段1204、1206和1808。虽然图示三个分段,但可以使用更多或更少但多于1个分段。
可以将0到1的范围拆分成包括0到0.25的QP值的第一范围、包括0.25到0.75的QP值的第二范围和包括0.75到1的QP值的第三范围。分段1204对应于函数QP1=0.25QP;分段1206对应于函数QP3=QP-0.1875;且分段1208对应于函数QP3=1.75QP-0.75。因此,根据相应QP值,使用函数QP1、QP2或QP3中的哪一者来导出在训练阶段期间使用的第二值和在推断阶段期间使用的第一值。例如,如果第一量化参数为0.8,则使用函数QP3。例如,如果第二量化参数是0.2,则使用函数QP1
图13是使用非线性QP函数作为输入的第一机器学习模型1316和使用线性QP函数的第二机器学习模型1326的速率失真性能比较的示例1300。将峰值信噪比(PSNR)用作失真度量。也就是说,在曲线图1910和1920中,x轴指示以kbps为单位测量的用于对样本视频序列进行编码的数据速率,而y轴指示以分贝(dB)为单位测量的PSNR质量。曲线图1310和1320的结果是通过如下文所描述的实验获得的。
第一机器学习模型1316是具有如相对于图10(在上面和下面)所描述的架构的CNN的模型。尽管第二机器学习模型1326的全连接层具有120万个参数,但第一机器学习模型1316(其为全卷积模型并且不包括全连接分类层)要小得多,仅有300,000个参数(使用0.5的特征压缩率)。因此,并且至少部分地由于较小模型大小,能够使用第一机器学习模型1316对功率和/或容量受限平台(例如移动设备)执行推断。减小的模型大小部分地由于使用QP的非线性值(在此示例中为QP2)与CNN架构中的每一个或两者的组合,该CNN架构具有本文中所描述的感受野一致特性。
将第一机器学习模型1316和第二机器学习模型1326描绘为具有输入层、内部层和输出层的通用机器学习模型。仅描绘第一机器学习模型1316和第二机器学习模型1326,以说明第一机器学习模型1316使用QP的非线性函数,即,QP2,而第二机器学习模型1326使用QP的线性函数,即,QP值本身。
曲线图1310和1320的曲线1312描绘了VP9编码器的速率失真性能,如相对于图4所描述的。也就是说,曲线1312是基于蛮力编码(即,不基于机器学习模型的编码)生成的。曲线图1310的曲线1314描绘了由于使用第一机器学习模型1316推断要在VP9软件编码器中使用的块分割而产生的速率失真性能。曲线图1320的曲线1324描绘了由于使用第二机器学习模型1326推断要在VP9软件编码器中使用的块分割而产生的速率失真性能。
应注意,在曲线图1310和1320中,较高QP值通常对应于较低数据速率。曲线图1320示出了当使用QP的线性函数时,PSNR性能随着QP值的增加而降低。然而,当使用QP2时,如曲线图1310中所示,获得了在各个QP值间的更一致的速率失真性能。
曲线图示出,平均而言,在使用QP2时可以实现更高的速率失真性能。当使用QP2时,在BD速率下的性能比蛮力编码差了约1.78%;而当使用QP时,其性能比蛮力编码差了约3.6%。
如关于图11的1108在上面所描述的,使用诸如关于图10所描述的ML模型的机器学习模型推断针对图像块的图像决策参数的编码器在诸如图4的比特流420的压缩比特流中对模式决策参数进行编码。如在上面所提提及的,图像块可以是超级块并且模式决策参数可以指示超级块的四叉树分割。
因此,解码器(诸如图5的解码器500)可以使用在压缩比特流中接收的模式决策参数来对图像块进行解码。
因此,对图像块进行解码的过程可以包括:在压缩比特流(诸如图5的压缩比特流420)中接收对将图像块四叉树分割成子块的指示;以及使用对图像块的四叉树分割的指示对图像块进行解码。
如关于图10-11在上面所描述的,可以通过编码器使用机器学习模型来确定四叉树分割,该机器学习模型通过使用训练数据作为训练机器学习模型的输入来训练。每个训练数据可以包括由编码器编码的训练块、由编码器用于对训练块进行编码的模式决策参数以及与量化参数相对应的值。模式决策参数可以指示训练块的四叉树分割。编码器使用量化参数对训练块进行编码,该值是使用量化参数作为输入的非线性函数的结果。如上所述,非线性函数可以是与编码器用于确定在速率失真计算中使用的乘数的函数相同类型的函数。
图14是根据本公开的实施方式的卷积滤波器的示例1400。示例1400包括图像区域1402。出于此示例的目的,将该区域1402示出为6×6区域。然而,应理解,可以将卷积滤波器应用于任何大小的块、超级块、图像区域或图像。如关于图10所提及的,卷积运算可以被用于生成特征映射1004、1006、1008、1010等中的任何一个。
在此示例中使用大小为3×3的滤波器1404。然而,滤波器可以具有不同大小。示例1400使用步幅等于滤波器大小的非重叠卷积运算。因此,在水平方向和垂直方向中的每一个上的步幅大小为3。将滤波器1404示出为包括二进制(即,零和一)值。然而,滤波器的值可以是任何值(例如,正和/或负实数值)。如上文所提及,可以在机器学习模型的训练阶段期间诸如在图11的1102处通过机器学习模型来确定滤波器的值。特征映射1114是使区域1402和滤波器1404卷积的输出。
首先(例如,使用矩阵乘法运算)使滤波器1404与子区域1406卷积。因此,可以将特征映射1414的像素1416计算为(0×0+9×1+3×0+9×0+4×1+8×1+5×0+1×0+2×1)=23。随后使滤波器1404与子区域1408卷积。因此,可以将像素1418计算为(4×0+8×1+3×0+0×0+0×1+0×1+9×0+9×0+10×1)=18。随后使滤波器1404与子区域1410卷积。因此,可以将像素1420计算为(9×0+5×1+1×0+5×0+9×1+3×1+8×0+3×0+6×1)=23。随后使滤波器1404与子区域1412卷积。因此,可以将像素1422计算为(5×0+1×1+6×0+2×0+7×1+7×1+8×0+10×0+3×1)=18。
图15是根据本公开的实施方式的感受野的示例1500。示例1500包括输入1502。示例1500和本文中的说明改编自Dang Ha The Hien,“卷积神经网络的感受野算术指南(Aguide to receptive field arithmeticfor Convolutional Neural Networks)”,2017年4月,[于2018年8月6日检索]。从互联网中检索:<URL:https://medium.com/mlreview/a-guide-to-receptive-field-arithmetic-for-convolutional-neural-networks-e0f514068807>。
输入1502可以是需要提取特征(例如,特征映射)的图像的一部分。输入1502可以是例如块702;块702-1、702-2、702-3和702-4中的一个;或块702-5、702-6、702-7和702-8中的一个。将输入1502示出为具有5×5像素的大小。然而,输入1502的大小与对感受野的概念的描述不相关。
示例1500图示使用大小k=3×3(也被称为内核大小为3)、填充大小p=1×1且步幅s=2×2的滤波器的卷积运算。本文中省略了对填充、步幅和内核(即,滤波器)大小的概念的描述,这是由于此类概念对于本领域的技术人员是众所周知的。相对于图14的滤波器1404图示了大小k=3×3的滤波器的示例。
示例1500图示作为使输入1502与第一滤波器卷积的结果的第一特征映射1504和作为使第一特征映射与第二滤波器卷积的结果的第二特征映射1506。第一滤波器和第二滤波器可以具有不同的值。在机器学习中,可以在训练阶段期间确定(例如,学习)滤波器的值。
第一特征映射1504的像素1508(其也可以被称为特征)是由输入1502的像素的卷积产生的。此类像素是像素1508的感受野。应注意,在示例1500中,因为卷积使用填充,所以用于生成像素1508的一些像素(例如,填充像素)在输入外部。像素1508的感受野由正方形限定,该正方形的边角由诸如黑色正方形1513的正方形标记。诸如短虚线1512并且从像素1508的边角发散的短虚线也图示像素1508的感受野。短虚线的终点是黑色正方形。
第二特征映射1506的像素1510(其也可以被称为特征)是由第一特征映射1504的像素的卷积产生的。此类像素是第一特征映射1504中的像素1510的感受野并且可以进一步投影到输入1502上,以确定输入1502中的感受野。注意,在示例1500中,因为卷积使用填充,所以用于生成像素1510的一些像素在第一特征映射1504的外部。未示出第一特征映射1504的填充像素使得没有进一步使图15混乱。输入1502中的像素1510的感受野由正方形限定,该正方形的边角由黑色圆圈(诸如黑色圆圈1515)标记。从像素1510的边角发散的两个点划线(诸如两个点划线1514)还图示了像素1510的输入1202中的感受野。两个点划线的端点是黑色圆圈。
可以看出并且可以理解,在视频编码期间,感受野可以在图像分析中发挥重要作用。可以将一系列卷积层的感受野解释为在计算每个像素(例如,特征)时该像素(例如,特征)“看到”(例如,受到影响、概述等)的图像的“区域”(例如,图像的块、超级块、帧或任何其它部分)。
初始输入层处的像素(例如,输入1502)变成CNN的后续层(例如包括第二特征映射1506的第二层)的特征(经由一系列卷积),该特征将协助CNN分析初始输入层。
当使用CNN来分析模型以使用如本文描述的四叉树表示确定分割时,每个分析区域变成限制于其四叉树表示的边界可以是至关重要的。也就是说,例如,描述图像区域并且用于推断图像区域的分割的特征不混合来自其它图像区域的像素可以是至关重要的。即,例如并且参考图7,描述块700-2和/或块702-5、702-6、702-7和702-8的特征在其相应野中不包括来自块702-1、702-3或702-4中的任何一个的像素可以是至关重要的。
以下四个等式可以用于计算CNN的每一层中的感受野。
Figure BDA0002682001950000461
jout=jin×s (2)
rout=rin+(k-1)×j_in (3)
Figure BDA0002682001950000462
nout是层中的输出特征的数量。在示例1500中,第一层对应于(例如,包括)第一特征映射1504,且第二层对应于(例如,包括)第二特征映射1506。nin是层的输入特征的数量。例如,第二层的输入特征的数量是第一特征映射1504中的特征的数量,即,9个。变量k、p和s(被统称为卷积特性)分别是卷积内核大小、卷积填充大小和卷积步幅大小。
等式(1)基于输入特征的数量和卷积特性来计算层的输出特征的数量。等式(2)计算输出特征映射中的两个相邻特征之间的距离(即,跳跃jout)。等式(3)计算输出特征映射的感受野大小(即,rout),将该感受野大小限定为由k个输入特征覆盖的区域和由边界上的输入特征的感受野覆盖的额外区域。等式(4)计算第一输出特征的感受野的中心位置(即,startout)(例如,像素1508和像素1510分别对应于第一特征映射1504和第二特征映射1506中的第一输出特征)。
已经描述了感受野的概念,再次参考图10以描述图10的CNN1000的附加特征。首先,注意,CNN 1000是全卷积网络。即,特征提取和分类层使用卷积运算。然而,如上所述的典型的CNN包括用于分类的全连接层,而CNN 1000使用卷积层进行分类。
在特征提取层(即,特征提取层1003)中,通过将步幅值设置为与内核大小相同对每一层处的输入执行非重叠卷积运算。在特征提取层中,每个卷积层使用步幅为2的2×2内核。这种非重叠卷积运算确保了在最终特征提取层处(即,紧接在级联层1016之前),N×N信道(即,大小为N×N的特征映射)中的每一个(其中,在图10的示例中N=8)仅从其大小为(64/N)×(64/N)的相应子块中看到信息(例如使用信息、受到信息影响等),其中,在图10的示例中,64×64对应于块1002(即,输入块)的大小。在示例中,N可以是2k
在分类层(即,分类器1018、1020和1022中的每一个的层)中,代替全连接层,执行具有1×1内核的卷积减少,直至达到期望输出的数量为止。在分类层中使用卷积层,因此,遵守(例如保持)感受野。例如,在CNN 1000中,为了针对大小为16×16的子块(即,作为特征映射1025,其为分类器1018的输出)(即,通过分类器1018)推断分割决策,执行内核大小为2的非重叠卷积运算(即,在级联层1016与分类器1018的第一层之间),以将信道的数量从8×8(即,如上文所描述的级联层1016的特征映射中的每一个的大小)减少到4×4(即,特征映射1019中的每一个的大小),并且从那时起应用内核大小1×1并且将特征尺寸大小逐渐减小到1(即,特征映射1025,其大小为4×4×1)。最后一个分类层的输出是4×4×1,其为输入块1002的16个子块的分割确定。16个子块中的每一个的大小为16×16像素。
类似地,可以通过分类器1020推断针对32×32子块中的每一个的分割决策;且可以通过分类器1022推断64×64块的分割。
如本领域的技术人员应认识到,大小为1×1的内核可以用于减少特征映射的维度。例如,当与大小为1×1的1个滤波器卷积时,具有32个特征映射的其大小为4×4的输入(例如,特征映射1034,其大小为4×4×32)将产生大小为4×4×1的特征映射(例如,特征映射1025)。因此,大小为1×1的内核可以用于池化(例如,组合)来自多个特征映射的信息。
如本文中所使用,大小为1×1的内核不混合来自输入的不同位置的值。也就是说,例如,当确定特征映射1025的位置(x,y)处的值时,仅使用特征映射1034的32个映射中的每一个的位置(x,y)处的32个值。因此,通过使用1×1卷积,可以保持(例如遵守)感受野。
通过使用非重叠内核大小与遵守感受野的全卷积网络(用于特征提取和分类)的组合提供(分析图像数据,诸如确定块分割)的最先进技术。内核大小可以是偶数(即,2的倍数)。
为了简单起见,描述了CNN 1000,用于确定(使用分类器1022)对64×64块(即,块1002)的从64×64分割向下的分割以是否应(使用分类器1018)将每个16×16子块进一步分割成8×8块。然而,本文中的公开内容不限于此。根据本公开的实施方式的CNN架构可以概括如下。
用于确定视频代码化中的块分割的卷积神经网络(CNN)可以包括特征提取层(例如,特征提取层1003)、级联层(例如,级联层1016)和分类器(例如,分类器1018、1020、1022),其中,块的大小为N×N(例如,64×64、128×128),并且由CNN确定的最小分割的大小为S×S(例如,4×4、8×8)。分类器包括全卷积层。N和S的其他值也是可能的。在一些示例中,N可以是32、64或128,而S可以是4、8或16。
级联层从特征提取层接收块的第一特征映射。每个第一特征映射的大小为S×S(例如,8×8)。第一特征映射可以如关于图10的特征映射1004、1008和1014所描述的。
分类器中的每一个都包括一个或多个分类层。每个分类层接收具有相应特征尺寸的第二特征映射。例如,并且参考图10,分类器1018包括5个分类层(由表示每一层的特征映射的5个正方形图示),分类器1020包括4个分类层,并且分类器1022包括3个分类层。
分类器中的每一个可以配置为针对特定大小的子块推断分割决策。也就是说,分类器可以配置为针对块中的大小为(αS)×(αS)的子块推断分割决策,其中,α是2的幂,且α=2、……、N/S。因而,当N=64且S=8时,α可以具有值2、4和8中的任一者。例如,相对于分类器1018,α=2,且分类器1018针对大小为(2×8)×(2×8)=16×16的块推断分割决策;相对于分类器1020,α=4,且分类器1018针对大小为(4×8)×(4×8)=32×32的块推断分割决策;且相对于分类器1022,α=8,且分类器1018针对大小为(8×8)×(8×8)=64×64的块推断分割决策。
分类器可以通过指令针对块中的大小为(αS)×(αS)的子块推断分割决策,该指令包括:在分类层的每个连续分类层处应用大小为1×1的内核,以将相应特征尺寸减小一半;以及通过分类层中的最终层来输出与N/(αS)×N/(αS)×1输出映射对应的输出。即,将分类器1022用作α=8的示例,分类器1022使特征映射1023与大小均为1×1的32个内核卷积,从而产生特征映射1031,该特征映射具有1×1×32的尺寸。特征映射1029(其大小为N/(αS)×N/(αS)×1=64/(8×8)×64/(8×8)×1=1×1×1)对应于是否应拆分大小为N×N的块的决策。
第一分类器(例如,图10的分类器1018)可以从级联层(例如,级联层1016)接收第一特征映射,并且应用使用第一2×2内核的第一非重叠卷积运算,以将第一特征映射减小到(S/2)×(S/2)的大小。例如,如相对于分类器1018所描述的,分类器1018的第一层从级联层1016接收8×8特征映射并且将其减小到4×4的大小(即,特征映射1019)。在分类器1018的示例中,将特征映射1019示出为具有256的尺寸。然而,在此示例中,只要分类器中的每一个的最终层的尺寸为N/(αS)×N/(αS)×1,就不需如此。
为了说明的目的,特征映射1019被示出为包括特征维数256。然而,不需要是这种情况。在每个分类器的第一层接收到的特征映射的数量可以是可配置的。对于一些k,可以使用遵守规则内核=步幅大小=(2k,2k)的内核大小。
在第一层的输入中包括N个邻近行和N个邻近列使得块1002的大小为(64+N)×(64×N)、(128+N×128+N)等的情况下,大小为(2k+N,2k+N)且步幅大小为(2k,2k)的内核可以被用于传播N个左侧/顶部信息并观察(例如,保留)感知场。
CNN包括针对大小为(βS)×(βS)的子块推断分割决策的第二分类器。例如,第二分类器可以是图10的分类器1022。因此,β=8。第二分类器可以从第三分类器接收大小均为M×M的第三特征映射。第三分类器可以是分类器1020。因而,M=2,并且第三特征映射可以是特征映射1021。第二分类器可以应用使用第二2×2内核的第二非重叠卷积运算,以将第三特征映射减小到(M/2)×(M/2)的大小。例如,分类器1022从分类器1020接收特征映射1021,并且应用使用第二2×2内核的第二非重叠卷积运算,以生成特征映射1023。
虽然将分类层的输出描述为形式为B×B×1(例如4×4×1、2×2×1或1×1×1)的矩阵,但应理解,分类层输出B*B=B2值,以使得输出B2中的每一个对应于矩阵中的笛卡尔位置。输出值中的每一个对应于块位置,并且可以是指示是否应当对该位置处的子块进行分割的值。例如,值0可以指示不对子块进行分割,且值1可以指示对子块进行分割。当前,其它值也是可能的。
特征提取层可以包括第一特征提取层,该第一特征提取层将(N/S)×(N/S)非重叠卷积滤波器应用于该块,以生成该块的第一特征映射的第一子集。例如,第一特征提取层可以是特征提取层1003-A,其将(64/8)×(64/8)=8×8非重叠卷积滤波器应用于块1002以生成特征映射1004。
特征提取层可以进一步包括第二特征提取层,该第二特征提取层被配置成,将M×M非重叠卷积滤波器应用于块以生成大小均为(N/M)×(N/M)的映射,其中,M小于S,大于1,并且是2的幂;并且将非重叠2×2卷积滤波器连续地应用于映射以生成块的第一特征映射的第二子集。特征提取层1003-B和1003-C可以是第二特征提取层的示例。
如上文所描述,可以将量化参数(QP)的非线性值用作CNN的输入。在图10中,将QP的非线性值示出为级联层1016的输入。然而,不需如此,并且可以将QP的非线性值用作CNN的其它层的输入。例如,可以将QP的非线性值用作分类层中的至少一个的输入。
如在上面所提及的,如上文所述配置的CNN可以由编码器(诸如图4的编码器400)使用,以推断块分割。因此,块分割不是通过本领域中已知的蛮力方法导出的。在示例中,可以通过帧内/帧间预测级402来使用CNN。
在推断块分割之后,编码器可以使用已知预测技术(诸如帧间预测、帧内预测、其它技术或其组合)来预测分割的块。
如本领域中已知的,可以在压缩比特流(诸如图4的比特流420)中输出诸如相对于图7所描述的四叉树。解码器(诸如图5的解码器500)可以在对块(即,超级块)进行解码的过程中从压缩比特流对四叉树进行解码。因此,可以使用如上文所述配置的CNN在编码器中确定(例如推断)四叉树,并且在压缩比特流中输出四叉树。因而,解码器从压缩比特流中对由CNN推断的四叉树进行解码,该CNN如相对于图10所述进行配置。
虽然描述了推断块的四叉树分割,但根据本公开的实施方式的CNN可以用于推断可以或可以不由四叉树表示的非正方形分割。也就是说,例如,非正方形分割可以对应于四叉树的内部节点,该内部节点具有大于或等于两个子节点的子节点的数量。图16是块的非正方形分割的示例1600。一些编码器可以将超级块(诸如大小为64×64、128×128的超级块或者任何其它大小的超级块的正方形子块)分割成示例1600的分割中的一个。
分割类型1602(其可以被称为PARTITION_VERT_A)将N×N代码化块拆分成大小均为N/2×N/2的两个水平相邻的正方形块1602A、1602B和大小为N×N/2的矩形预测单元。分割类型1608(其可以被称为PARTITION_VERT_B)将N×N代码化块拆分成大小为N×N/2的矩形预测单元和大小均为N/2×N/2的两个水平相邻的正方形块1608A、1608B。
分割类型1604(其可以被称为PARTITION_HORZ_A)将N×N代码化块拆分成大小均为N/2×N/2的两个垂直相邻的正方形块1604A、1604B和大小为N/2×N的矩形预测单元。分割类型1610(其可以被称为PARTITION_HORZ_B)将N×N代码化块拆分成大小为N/2×N的矩形预测单元和大小均为N/2×N/2的两个垂直相邻的正方形块1610A、1610B。
分割类型1606(其可以被称为PARTITION_VERT_4)将N×N代码化块拆分成大小均为N×N/4的四个垂直相邻的矩形块。分割类型1612(其可以被称为PARTITION_HORZ_4)将N×N代码化块拆分成大小均为N/4×N的四个水平相邻的矩形块。
众所周知,其它分割类型可以由编解码器使用。示例1600图示了在编码器处可用的四种分割类型。分割类型1614(在本文中也被称为PARTITION_SPLIT分割类型和分割拆分分割类型)将N×N代码化块拆分成四个大小相等的正方形子块。例如,如果代码化块的大小为N×N,那么PARTITION_SPLIT分割类型的四个子块中的每一个(诸如子块1614A)的大小均为N/4×N/4。
分割类型1616(在本文中也被称为PARTITION_VERT分割类型)将代码化块拆分成大小均为N×N/2的两个相邻的矩形预测单元1616A、1616B。分割类型1618(在本文中也被称为PARTITION_HORZ分割类型)将代码化块拆分成大小均为N/2×N的两个相邻的矩形预测单元。分割类型1620(在本文中也被称为PARTITION_NONE分割类型和无分割的分割类型)针对代码化块使用一个预测单元,以使得预测单元具有与代码化块相同的大小(即,N×N)。
分割类型1614至1620在本文中被称为基本分割类型,且分割1602至1612在本文中被称为扩展分割类型。
分割可以由树表示。树可以由矢量表示。让P表示所有有效分割的集合(或等效地,表示分割的相应表示)。因此,可以训练CNN以推断到集合P中的映射。配置CNN以推断相对于图16所描述的分割包括:限定适合的集合P并且使用适合的训练数据。
假设存在N个可能结果,那么为了简单起见,存在N*M个可能决策(在示例中,M=21且N=4),并且每个p(n,j)可以由softmax函数组合,使得对于某些j,sum(范围(N)内的n)p(n,j)==1。
例如,在使用64×64的代码化单元大小和四种基本分割类型的VP9的情况下,仅针对四叉树分割,存在如上所述的对应于一个64×64、四个32×32和16个16×16决策的21个决策(即,1+4+16=21个决策)。在CNN还用于确定非四叉树分割的情况下,则存在21*4=84个可能决策,其中,21对应于四叉树分割,并且4对应于基本分割类型;即,PARTITION_SPLIT、PARTITION_VERT、PARTITION_HORZ和PARTITION_NONE。
例如,在使用128×128的代码化单元大小以及基本和扩展分割类型(总共10种分割类型)的AV1的情况下,仅针对四叉树分割,每分割类型存在85个决策(对应于1个128×128、4个64×64、16个32×32和64个16×16=1+4+16+64=85决策)。在CNN还用于确定非四叉树分割的情况下,则存在850个决策(对应于85个决策乘以10个分割类型=850个决策)。
出于简单说明起见,过程800和1100均被描绘和描述为一系列框、步骤或操作。然而,根据本公开的框、步骤或操作可以以各种顺序和/或同时发生。另外,可以使用本文中未提出和描述的其它步骤或操作。此外,要实现根据所公开的主题的技术可能不需要所有图示的步骤或操作。
上文所描述的编码和解码方面说明了一些编码和解码技术。然而,应当理解,“编码”和“解码”(如在权利要求中使用的那些术语)可以表示对数据的压缩、解压缩、变换或任何其它处理或改变。
词语“示例”或“实施方式”在本文中用来表示充当示例、实例或说明。本文中作为“示例”或“实施方式”描述的任何方面或设计不必理解为比其它方面或设计更优选或有利。相反,词语“示例”或“实施方式”的使用旨在以具体方式呈现构思。如本申请中所使用的,术语“或”旨在表示包括性的“或”而不是排它性的“或”。也就是说,除非另有说明或通过上下文另外清楚地指示,“X包括A或B”旨在表示任何自然的包含性排列。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在前述情况中的任一者下均满足“X包括A或B”。另外,在本申请和所附权利要求书中使用的冠词“一”和“一个”通常应被解释为意指“一个或多个”,除非另有说明或从上下文清楚地指向单数形式。此外,贯穿全文,除非如此描述,否则术语“实施方式”或“一种实施方式”并不旨在表示相同的实施例或实施方式。
发送站102和/或接收站106的实施方式(以及存储在其上和/或由其执行(包括由编码器400和解码器500执行)的算法、方法、指令等)可以用硬件、软件或其任何组合来实现。硬件可以包括:例如,计算机、知识产权(IP)核、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其它合适的电路。在权利要求中,术语“处理器”应被理解为单独地或组合地包括任何前述硬件。术语“信号”和“数据”可互换使用。另外,发送站102和接收站106的部分不必一定要以相同的方式实施。
另外,在一个方面中,例如,可以使用具有计算机程序的通用计算机或通用处理器来实施发送站102或接收站106,该计算机程序在被执行时执行本文中所描述的各种方法、算法和/或指令中的任何一种。另外或可替代地,例如,可以利用专用计算机/处理器,其可以包含用于执行本文中所描述的任何方法、算法或指令的其它硬件。
例如,发送站102和接收站106可以在视频会议系统中的计算机上实施。可替代地,发送站102可以在服务器上实施,而接收站106可以在与服务器分离的设备(例如手持通信设备)上实施。在这种情况下,发送站102可以使用编码器400将内容编码成编码视频信号,并且将编码视频信号发送到通信设备。继而,通信设备然后可以使用解码器500对编码视频信号进行解码。可替代地,通信设备可以对本地存储在通信设备上的内容进行解码,例如,不是由发送站102发送的内容。其它发送站102和接收站106实施方案也是可用的。例如,接收站106可以是大体上固定的个人计算机,而不是便携式通信设备,和/或包括编码器400的设备也可以包括解码器500。
另外,本公开的全部或部分实施方式可以采取可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是例如可以有形地包含、存储、通信或传输程序以供任何处理器使用或与其结合使用的任何设备。介质可以是例如电子、磁性、光学、电磁或半导体设备。其它合适的介质也是可用的。
已经描述了上述实施例、实施方式和方面,以允许容易地理解本公开并且不限制本公开。相反,本公开旨在覆盖包括在所附权利要求书的范围内的各种修改和等效布置,该范围应被赋予如根据法律所允许的最广泛的解释,以涵盖所有此类修改和等效布置。

Claims (19)

1.一种用于由第一编码器使用第一量化参数对图像块进行编码的方法,包括:
向包括机器学习模型的机器学习模块呈现所述图像块和与所述第一量化参数对应的第一值,其中:
所述第一值从使用所述第一量化参数作为输入的非线性函数产生,并且
通过以下操作训练所述机器学习模型以输出用于对所述图像块进行编码的模式决策参数:
使用训练数据作为输入以对所述机器学习模型进行训练,每个训练数据包括:
由第二编码器编码的训练块;
由所述第二编码器用于对所述训练块进行编码的第二模式决策参数;以及
与第二量化参数对应的第二值,其中:
所述第二编码器使用所述第二量化参数以用于对所述训练块进行编码,并且
所述第二值从使用所述第二量化参数作为输入的所述非线性函数产生;
从所述机器学习模块中获取第一模式决策参数;以及
使用所述第一模式决策参数在压缩比特流中编码所述图像块。
2.根据权利要求1所述的方法,其中,所述图像块是帧内预测的。
3.根据权利要求2所述的方法,其中,所述训练数据进一步包括:
所述图像块的顶部邻近块的第一样本;和
所述图像块的左邻近块的第二样本。
4.根据权利要求1至3中的任一项所述的方法,其中,所述第一模式决策参数指示所述图像块的四叉树分割。
5.根据权利要求1至4中的任一项所述的方法,其中,所述机器学习模型是卷积神经网络模型。
6.根据权利要求1至5中的任一项所述的方法,其中,所述非线性函数通过线性段来逼近。
7.根据权利要求1至6中的任一项所述的方法,其中,所述非线性函数是量化参数的指数函数。
8.根据权利要求7所述的方法,其中,所述第二编码器是H.264或HEVC编码器。
9.根据权利要求1至6中的任一项所述的方法,其中,所述非线性函数是量化参数的二次函数。
10.根据权利要求9所述的方法,其中,所述第二编码器是H.263、AV1或VP9编码器。
11.根据权利要求1至10中的任一项所述的方法,其中,所述非线性函数与所述第二编码器用于确定在速率失真计算中使用的乘数的函数的类型相同。
12.一种用于使用第一量化参数对图像块进行编码的装置,包括:
处理器,所述处理器被配置成:
向机器学习模型呈现所述图像块和与所述第一量化参数对应的第一值,其中:
所述第一值从使用所述第一量化参数作为输入的非线性函数产生,并且
通过以下操作训练所述机器学习模型以输出用于对所述图像块进行编码的模式决策参数:
使用训练数据作为输入以对所述机器学习模型进行训练,每个训练数据包括:
由编码器编码的训练块;
由所述编码器用于对所述训练块进行编码的第二模式决策参数;以及
与第二量化参数对应的第二值,其中:
所述编码器使用所述第二量化参数以用于对所述训练块进行编码,并且
所述第二值从使用所述第二量化参数作为输入的所述非线性函数产生;
从所述机器学习模型中获取第一模式决策参数;并且
使用所述第一模式决策参数在压缩比特流中编码所述图像块。
13.根据权利要求12所述的装置,其中,所述图像块是作为帧内预测的图像的图像的块,并且所述训练数据进一步包括:
所述图像块的顶部邻近块的第一样本;和
所述图像块的左邻近块的第二样本。
14.根据权利要求12或者13所述的装置,其中,所述第一模式决策参数指示所述图像块的四叉树分割。
15.根据权利要求12至14中的任一项所述的装置,其中,所述非线性函数通过线性段来逼近。
16.根据权利要求12至15中的任一项所述的装置,其中,所述非线性函数是量化参数的指数函数或者量化参数的二次函数。
17.一种用于对图像块进行解码的装置,包括:
处理器,所述处理器配置成:
在压缩比特流中,接收将所述图像块四叉树分割成子块的指示,其中编码器使用机器学习模型来确定所述图像块的四叉树分割,所述机器学习模型通过以下操作来训练:
使用训练数据作为输入以训练所述机器学习模型,每个训练数据包括:
由所述编码器编码的训练块,
由所述编码器用于对所述训练块进行编码的模式决策参数,以及
与量化参数对应的值,其中:
所述编码器使用所述量化参数以用于对所述训练块进行编码,并且
所述值从使用所述量化参数作为输入的非线性函数产生;并且
使用对所述图像块的四叉树分割的指示来对所述图像块进行解码。
18.根据权利要求17所述的装置,其中,所述非线性函数与所述编码器用于确定在速率失真计算中使用的乘数的函数的类型相同。
19.一种用于对图像块进行解码的方法,所述方法包括:
在压缩比特流中,接收将所述图像块四叉树分割成子块的指示,其中编码器使用机器学习模型来确定所述图像块的四叉树分割,所述机器学习模型通过以下操作来训练:
使用训练数据作为输入以训练所述机器学习模型,每个训练数据包括:
由所述编码器编码的训练块,
由所述编码器用于对所述训练块进行编码的模式决策参数,以及
与量化参数对应的值,其中:
所述编码器使用所述量化参数以用于对所述训练块进行编码,并且
所述值从使用所述量化参数作为输入的非线性函数产生;并且
使用对所述图像块的四叉树分割的指示来对所述图像块进行解码。
CN201980019322.1A 2018-09-18 2019-09-17 在视频代码化的机器学习模型中使用应用于量化参数的非线性函数 Active CN111868751B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/134,134 2018-09-18
US16/134,134 US10674152B2 (en) 2018-09-18 2018-09-18 Efficient use of quantization parameters in machine-learning models for video coding
PCT/US2019/051453 WO2020061005A1 (en) 2018-09-18 2019-09-17 Use of non-linear function applied to quantization parameters in machine-learning models for video coding

Publications (2)

Publication Number Publication Date
CN111868751A true CN111868751A (zh) 2020-10-30
CN111868751B CN111868751B (zh) 2024-05-28

Family

ID=68084969

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980019322.1A Active CN111868751B (zh) 2018-09-18 2019-09-17 在视频代码化的机器学习模型中使用应用于量化参数的非线性函数

Country Status (5)

Country Link
US (2) US10674152B2 (zh)
EP (1) EP3746944A1 (zh)
JP (1) JP7110370B2 (zh)
CN (1) CN111868751B (zh)
WO (1) WO2020061005A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112653892A (zh) * 2020-12-18 2021-04-13 杭州当虹科技股份有限公司 一种利用视频特征实现转码测试评估的方法
CN116508319A (zh) * 2021-06-18 2023-07-28 腾讯美国有限责任公司 神经图像压缩中的逐块熵编码方法

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189641A1 (en) 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Hardware accelerator engine
CA3066838A1 (en) * 2019-01-08 2020-07-08 Comcast Cable Communications, Llc Processing media using neural networks
US10886943B2 (en) * 2019-03-18 2021-01-05 Samsung Electronics Co., Ltd Method and apparatus for variable rate compression with a conditional autoencoder
US10984560B1 (en) * 2019-03-29 2021-04-20 Amazon Technologies, Inc. Computer vision using learnt lossy image compression representations
CN111818346B (zh) 2019-04-11 2023-04-18 富士通株式会社 图像编码方法和装置、图像解码方法和装置
US10996306B2 (en) * 2019-04-25 2021-05-04 General Electric Company MRI system and method using neural network for detection of patient motion
CN110113614B (zh) * 2019-05-13 2022-04-12 格兰菲智能科技有限公司 图像处理方法及图像处理装置
CN111988629B (zh) * 2019-05-22 2024-02-09 富士通株式会社 图像编码装置和图像解码装置
TWI745697B (zh) * 2019-05-24 2021-11-11 創鑫智慧股份有限公司 用於神經網路參數的運算系統及其壓縮方法
JP2021047711A (ja) * 2019-09-19 2021-03-25 キオクシア株式会社 演算装置、演算方法、及び学習方法
US10699715B1 (en) * 2019-12-27 2020-06-30 Alphonso Inc. Text independent speaker-verification on a media operating system using deep learning on raw waveforms
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US11948090B2 (en) * 2020-03-06 2024-04-02 Tencent America LLC Method and apparatus for video coding
US11496151B1 (en) * 2020-04-24 2022-11-08 Tencent America LLC Neural network model compression with block partitioning
US11790566B2 (en) * 2020-05-12 2023-10-17 Tencent America LLC Method and apparatus for feature substitution for end-to-end image compression
CN111736845B (zh) * 2020-06-09 2024-07-09 阿里巴巴集团控股有限公司 一种编码方法和装置
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
EP4173292A4 (en) * 2020-06-25 2024-03-27 Telefonaktiebolaget Lm Ericsson (Publ) METHOD AND SYSTEM FOR IMAGE COMPRESSION AND CODING WITH DEEP LEARNING
US11451790B2 (en) * 2020-10-09 2022-09-20 Tencent America LLC Method and apparatus in video coding for machines
US20210067785A1 (en) * 2020-11-17 2021-03-04 Intel Corporation Video encoding rate control for intra and scene change frames using machine learning
US20220337854A1 (en) * 2021-04-16 2022-10-20 Tencent America LLC Interaction between transform partitioning and primary/secondary transform type selection
JPWO2022225025A1 (zh) * 2021-04-23 2022-10-27
US11568634B2 (en) * 2021-04-28 2023-01-31 Intuit Inc. Machine learning pipeline for document image quality detection and correction
US20220417547A1 (en) 2021-06-17 2022-12-29 Tencent America LLC Skip transform flag coding
WO2023056364A1 (en) * 2021-09-29 2023-04-06 Bytedance Inc. Method, device, and medium for video processing
WO2023198057A1 (en) * 2022-04-12 2023-10-19 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2024008815A2 (en) * 2022-07-05 2024-01-11 Telefonaktiebolaget Lm Ericsson (Publ) Generating encoded video data and decoded video data
WO2024081872A1 (en) * 2022-10-14 2024-04-18 Bytedance Inc. Method, apparatus, and medium for video processing

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5568414A (en) * 1993-03-22 1996-10-22 Fuji Xerox Co., Ltd. Nonlinear operation unit and data processing apparatus using the nonlinear operation unit
WO2006096162A2 (en) * 2005-03-04 2006-09-14 Jacob Yadegar Method for content driven image compression
CN101068355A (zh) * 2007-06-05 2007-11-07 南京大学 Mpeg-2到h.264码的快速转换方法
US20080205515A1 (en) * 2007-01-25 2008-08-28 Florida Atlantic University Video encoding with reduced complexity
US20080225945A1 (en) * 2007-03-13 2008-09-18 Ping-Hao Wu Constant-quality rate control system and algorithm for regions of interest
US7788196B2 (en) * 2003-09-09 2010-08-31 Semeion Artificial neural network
JP2012186763A (ja) * 2011-03-08 2012-09-27 Mitsubishi Electric Corp 動画像符号化装置、動画像復号装置、動画像符号化方法及び動画像復号方法
CN103546759A (zh) * 2013-10-29 2014-01-29 沈阳工业大学 一种基于小波包和矢量量化相结合的图像压缩编码方法
US20150016510A1 (en) * 2013-07-10 2015-01-15 Microsoft Corporation Region-of-Interest Aware Video Coding
US20160065959A1 (en) * 2014-08-26 2016-03-03 Lyrical Labs Video Compression Technology, LLC Learning-based partitioning for video encoding
US20160360196A1 (en) * 2015-06-08 2016-12-08 Canon Kabushiki Kaisha Image processing apparatus, and image processing method
CN107277520A (zh) * 2017-07-11 2017-10-20 中国科学技术大学 帧内预测的码率控制方法
EP3370424A1 (en) * 2017-03-02 2018-09-05 Thomson Licensing A method and a device for picture encoding and decoding

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970183B1 (en) * 2000-06-14 2005-11-29 E-Watch, Inc. Multimedia surveillance and monitoring system including network configuration
CN1206864C (zh) * 2002-07-22 2005-06-15 中国科学院计算技术研究所 结合率失真优化的码率控制的方法及其装置
EP1464988B1 (en) * 2003-04-03 2008-06-11 Mitsubishi Electric Information Technology Centre Europe B.V. Determination of time difference of arrival in distributed sensor networks
DE602004014674D1 (de) * 2003-05-09 2008-08-14 Matsushita Electric Ind Co Ltd Videowiedergabesystem und Fahrzeugnavigationsvorrichtung in einem Fahrzeug
US7154392B2 (en) * 2004-07-09 2006-12-26 Rastegar Jahangir S Wide-area intruder detection and tracking network
US7409295B2 (en) * 2004-08-09 2008-08-05 M/A-Com, Inc. Imminent-collision detection system and process
US8548055B2 (en) * 2005-03-10 2013-10-01 Qualcomm Incorporated Encoding of multimedia data
US20080002031A1 (en) * 2005-05-06 2008-01-03 John-Paul P. Cana Multi-axis control of a fixed or moving device based on a wireless tracking location of one or many target devices
US20070132577A1 (en) * 2005-12-09 2007-06-14 Honeywell International Inc. Method and apparatus for estimating the location of a signal transmitter
CN101317458B (zh) 2006-03-16 2012-04-18 华为技术有限公司 在编码过程中实现自适应量化的方法及装置
CA2706695C (en) * 2006-12-04 2019-04-30 Lynx System Developers, Inc. Autonomous systems and methods for still and moving picture production
US7719418B2 (en) * 2007-03-21 2010-05-18 E-Novative, Inc. System and method for locating objects
US8643719B2 (en) * 2008-02-29 2014-02-04 The Boeing Company Traffic and security monitoring system and method
US8334775B2 (en) * 2008-05-23 2012-12-18 Guardian Technologies RFID-based asset security and tracking system, apparatus and method
EP2286595A1 (en) * 2008-06-16 2011-02-23 Dolby Laboratories Licensing Corporation Rate control model adaptation based on slice dependencies for video coding
TW201004361A (en) 2008-07-03 2010-01-16 Univ Nat Cheng Kung Encoding device and method thereof for stereoscopic video
WO2011084916A1 (en) * 2010-01-06 2011-07-14 Dolby Laboratories Licensing Corporation Multiple-pass rate control for video coding applications
CN103109244B (zh) * 2010-07-02 2016-08-24 汤姆森特许公司 用于物体跟踪和识别的方法和装置
US8484253B2 (en) 2010-12-31 2013-07-09 Microsoft Corporation Variational mode seeking
JP6327435B2 (ja) * 2011-03-03 2018-05-23 サン パテント トラスト 画像符号化方法、画像復号方法、画像符号化装置、及び、画像復号装置
US8804820B2 (en) * 2011-04-21 2014-08-12 Dialogic Corporation Rate control with look-ahead for video transcoding
US8787454B1 (en) * 2011-07-13 2014-07-22 Google Inc. Method and apparatus for data compression using content-based features
KR20130040641A (ko) * 2011-10-14 2013-04-24 삼성테크윈 주식회사 레이다 연동 감시 시스템
CN103051868B (zh) * 2011-10-14 2018-10-19 韩华泰科株式会社 通过使用雷达存储和搜索图像的设备和方法
WO2013069253A1 (ja) * 2011-11-09 2013-05-16 パナソニック株式会社 周波数拡散型レーダ装置及びその制御方法
US8704904B2 (en) * 2011-12-23 2014-04-22 H4 Engineering, Inc. Portable system for high quality video recording
AR087816A1 (es) * 2012-09-07 2014-04-16 Permingeat Alejandro SISTEMA RASTREADOR DE PERSONAS Y OBJETOS POR Wi-Fi
US9615401B2 (en) 2012-12-11 2017-04-04 Qualcomm Incorporated Methods and apparatus for updating a device configuration
US9270933B1 (en) * 2013-11-23 2016-02-23 Yuan Qing Jiang System and method for face-to-face video communication
US9813992B2 (en) * 2013-12-06 2017-11-07 Mcp Llc Tracking systems and methods for remotely tracking a location of a person on a map of a monitored premise
US9288510B1 (en) * 2014-05-22 2016-03-15 Google Inc. Adaptive video transcoding based on parallel chunked log analysis
SG10201405182WA (en) 2014-08-25 2016-03-30 Univ Singapore Technology & Design Method and system
US20160377709A1 (en) * 2014-08-27 2016-12-29 Aviacomm Inc. Determining an object distance using radio frequency signals
JP2016116175A (ja) * 2014-12-17 2016-06-23 富士通株式会社 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム
WO2016125604A1 (ja) * 2015-02-06 2016-08-11 ソニー株式会社 画像符号化装置および方法
JP6502739B2 (ja) * 2015-04-28 2019-04-17 キヤノン株式会社 画像符号化装置、画像処理装置、画像符号化方法
US10489703B2 (en) 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US9807416B2 (en) 2015-09-21 2017-10-31 Google Inc. Low-latency two-pass video coding
US10068171B2 (en) 2015-11-12 2018-09-04 Conduent Business Services, Llc Multi-layer fusion in a convolutional neural network for image classification
KR102309910B1 (ko) 2015-11-19 2021-10-08 한국전자기술연구원 비디오 부호화기의 최적 모드 결정 장치 및 최적 모드 결정을 이용한 비디오 부호화 방법
WO2017165538A1 (en) 2016-03-22 2017-09-28 Uru, Inc. Apparatus, systems, and methods for integrating digital media content into other digital media content
CN105791826B (zh) 2016-05-11 2019-03-08 南京大学 一种基于数据挖掘的hevc帧间快速模式选择方法
US10677887B2 (en) * 2016-05-11 2020-06-09 H4 Engineering, Inc. Apparatus and method for automatically orienting a camera at a target
US10778999B2 (en) 2016-09-30 2020-09-15 Qualcomm Incorporated Frame rate up-conversion coding mode with affine motion model
US10542262B2 (en) * 2016-11-15 2020-01-21 City University Of Hong Kong Systems and methods for rate control in video coding using joint machine learning and game theory
US10382770B2 (en) * 2017-02-06 2019-08-13 Google Llc Multi-level machine learning-based early termination in partition search for video encoding
EP3364342A1 (en) * 2017-02-17 2018-08-22 Cogisen SRL Method for image processing and video compression
US11373266B2 (en) 2017-05-05 2022-06-28 Intel Corporation Data parallelism and halo exchange for distributed machine learning
US10522186B2 (en) 2017-07-28 2019-12-31 Adobe Inc. Apparatus, systems, and methods for integrating digital media content
US10721471B2 (en) * 2017-10-26 2020-07-21 Intel Corporation Deep learning based quantization parameter estimation for video encoding
US11227214B2 (en) 2017-11-14 2022-01-18 Advanced Micro Devices, Inc. Memory bandwidth reduction techniques for low power convolutional neural network inference applications
US10839564B2 (en) 2018-02-08 2020-11-17 Uber Technologies, Inc. Leveraging JPEG discrete cosine transform coefficients in neural networks
CN109146072B (zh) 2018-08-01 2021-03-23 上海天数智芯半导体有限公司 基于卷积神经网络加速器的数据重用方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5568414A (en) * 1993-03-22 1996-10-22 Fuji Xerox Co., Ltd. Nonlinear operation unit and data processing apparatus using the nonlinear operation unit
US7788196B2 (en) * 2003-09-09 2010-08-31 Semeion Artificial neural network
WO2006096162A2 (en) * 2005-03-04 2006-09-14 Jacob Yadegar Method for content driven image compression
US20080205515A1 (en) * 2007-01-25 2008-08-28 Florida Atlantic University Video encoding with reduced complexity
US20080225945A1 (en) * 2007-03-13 2008-09-18 Ping-Hao Wu Constant-quality rate control system and algorithm for regions of interest
CN101068355A (zh) * 2007-06-05 2007-11-07 南京大学 Mpeg-2到h.264码的快速转换方法
JP2012186763A (ja) * 2011-03-08 2012-09-27 Mitsubishi Electric Corp 動画像符号化装置、動画像復号装置、動画像符号化方法及び動画像復号方法
US20150016510A1 (en) * 2013-07-10 2015-01-15 Microsoft Corporation Region-of-Interest Aware Video Coding
CN103546759A (zh) * 2013-10-29 2014-01-29 沈阳工业大学 一种基于小波包和矢量量化相结合的图像压缩编码方法
US20160065959A1 (en) * 2014-08-26 2016-03-03 Lyrical Labs Video Compression Technology, LLC Learning-based partitioning for video encoding
US20160360196A1 (en) * 2015-06-08 2016-12-08 Canon Kabushiki Kaisha Image processing apparatus, and image processing method
EP3370424A1 (en) * 2017-03-02 2018-09-05 Thomson Licensing A method and a device for picture encoding and decoding
CN107277520A (zh) * 2017-07-11 2017-10-20 中国科学技术大学 帧内预测的码率控制方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CLAUDIO A. PEREZ 等: "GENETIC SELECTION OF NON-LINEAR PRODUCT TERMS IN THE INPUTS TO A LINEAR CLASSIFIER FOR HANDWEITTEN DIGIT RECOGNITION", 《IEEE INTERNATIONAL CONFERENCE ON SYSTEMS》, pages 2337 - 2342 *
FRANCK GALPIN 等: "AHG9:CNN-based driving of block partitioning for intra slices encoding", 《JVET MEETING》, pages 1 - 10 *
YUN ZHANG 等: "Machine Learning-Based Coding Unit Depth Decisions for Flexible Complexity Allocation in High Efficiency Video Coding", 《MACHINE LEARNING-BASED CODING UNIT DEPTH DECISIONS FOR FLEXIBLE COMPLEXITY ALLOCATION IN HIGH EFFICIENCY VIDEO CODING》, vol. 24, no. 7, pages 2225 - 2238, XP011578748, DOI: 10.1109/TIP.2015.2417498 *
ZHENYU LIU 等: "CU Partition Mode Decision for HEVC Hardwired Intra Encoder Using Convolution Neural Network", 《IEEE TRANSACTIONS ON IMAGE PROCESSING》, vol. 25, no. 11, pages 5088 - 5103, XP011622937, DOI: 10.1109/TIP.2016.2601264 *
李晓辉: "改进的降低空间分辨率视频编码转换算法", 《电子与信息学报》, vol. 29, no. 8, pages 1900 - 1902 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112653892A (zh) * 2020-12-18 2021-04-13 杭州当虹科技股份有限公司 一种利用视频特征实现转码测试评估的方法
CN112653892B (zh) * 2020-12-18 2024-04-23 杭州当虹科技股份有限公司 一种利用视频特征实现转码测试评估的方法
CN116508319A (zh) * 2021-06-18 2023-07-28 腾讯美国有限责任公司 神经图像压缩中的逐块熵编码方法

Also Published As

Publication number Publication date
WO2020061005A1 (en) 2020-03-26
JP2021520082A (ja) 2021-08-12
US10674152B2 (en) 2020-06-02
EP3746944A1 (en) 2020-12-09
JP7110370B2 (ja) 2022-08-01
CN111868751B (zh) 2024-05-28
US20200092556A1 (en) 2020-03-19
US20200275101A1 (en) 2020-08-27
US11310501B2 (en) 2022-04-19

Similar Documents

Publication Publication Date Title
CN111868751B (zh) 在视频代码化的机器学习模型中使用应用于量化参数的非线性函数
US11310498B2 (en) Receptive-field-conforming convolutional models for video coding
US11025907B2 (en) Receptive-field-conforming convolution models for video coding
US11689726B2 (en) Hybrid motion-compensated neural network with side-information based video coding
US10848765B2 (en) Rate/distortion/RDcost modeling with machine learning
US11956447B2 (en) Using rate distortion cost as a loss function for deep learning
CN111837140A (zh) 视频代码化的感受野一致卷积模型
CN111066326A (zh) 机器学习视频处理系统和方法
CN116648906A (zh) 通过指示特征图数据进行编码
US11558619B2 (en) Adaptation of scan order for entropy coding
CN116965029A (zh) 使用卷积神经网络对图像进行译码的装置和方法
US20230007284A1 (en) Ultra Light Models and Decision Fusion for Fast Video Coding
US20240244207A1 (en) Adaptation of scan order for entropy coding
US20230131228A1 (en) Debanding Using A Novel Banding Metric

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
GR01 Patent grant
GR01 Patent grant