CN113874916A - Ai辅助的可编程硬件视频编解码器 - Google Patents
Ai辅助的可编程硬件视频编解码器 Download PDFInfo
- Publication number
- CN113874916A CN113874916A CN202080039129.7A CN202080039129A CN113874916A CN 113874916 A CN113874916 A CN 113874916A CN 202080039129 A CN202080039129 A CN 202080039129A CN 113874916 A CN113874916 A CN 113874916A
- Authority
- CN
- China
- Prior art keywords
- input video
- programmable hardware
- controller
- processing device
- video processing
- 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
- 238000012545 processing Methods 0.000 claims abstract description 141
- 238000000034 method Methods 0.000 claims abstract description 110
- 230000008569 process Effects 0.000 claims abstract description 93
- 230000033001 locomotion Effects 0.000 claims description 81
- 239000013598 vector Substances 0.000 claims description 61
- 238000005192 partition Methods 0.000 claims description 35
- 238000004422 calculation algorithm Methods 0.000 claims description 34
- 238000010801 machine learning Methods 0.000 claims description 13
- 238000013139 quantization Methods 0.000 claims description 13
- 230000011218 segmentation Effects 0.000 claims description 13
- 238000000638 solvent extraction Methods 0.000 claims description 6
- 230000002787 reinforcement Effects 0.000 claims description 4
- 238000013473 artificial intelligence Methods 0.000 abstract description 65
- 230000015654 memory Effects 0.000 description 63
- 238000010586 diagram Methods 0.000 description 23
- 238000013528 artificial neural network Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 14
- 230000002123 temporal effect Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000006641 stabilisation Effects 0.000 description 5
- 238000011105 stabilization Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/56—Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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 slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/40—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Medical Informatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Molecular Biology (AREA)
- Biodiversity & Conservation Biology (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了人工智能辅助的可编程硬件视频编解码器。根据某些实施例,视频处理装置包括可编程硬件编码器,其被配置为对多个输入视频帧执行编码处理。所述视频处理装置还包括与所述可编程硬件编码器耦合的控制器。所述控制器被配置为执行指令集,以使视频处理设备:确定所述多个输入视频帧的第一信息,并基于所述第一信息调整所述编码处理。
Description
交叉引用相关申请
本申请要求优先于2019年5月26日提交的第62/853,049号美国临时专利申请,并享有优先权;上述文件全文引用至本文件。
技术领域
本发明主要涉及视频处理,特别是人工智能(AI)辅助的可编程硬件视频编解码器。
背景技术
现代视频传输系统不断地对视频数据进行编码(例如,压缩)和解码(解压缩)。例如,为了提供快速、高质量的云视频流服务,视频编码器被用于压缩数字视频信号,以减少与此类信号相关的传输带宽消耗,同时尽可能保持图像质量。同时,接收视频流的用户终端可以使用视频解码器对编码的视频信号进行解压缩,然后显示解压缩后的视频图像。
视频编码器和解码器(统称为“编解码器”)可以以软件或硬件实现。例如,编解码器可以作为运行在一个或多个中央处理单元(cpu)上的软件实现。许多商业应用程序(apps)使用基于CPU的编解码器,因为所述基于CPU的编解码器不需要特定的硬件环境,可以方便地设计用于播放高质量的视频。但是基于CPU的编解码器由于频繁访问内存,运行速度通常很慢,功耗也很高。
发明内容
本申请披露的实施例涉及人工智能辅助的可编程硬件视频编解码器。在某些实施例中,提供了一种视频处理装置。所述视频处理装置包括被配置为对多个输入视频帧执行编码处理的可编程硬件编码器。所述视频处理装置还包括与所述可编程硬件编码器耦合的控制器。所述控制器被配置为执行一组指令集,以使所述视频处理装置:确定所述多个输入视频帧的第一信息,并根据所述第一信息调整编码处理。
在一些实施例中,提供了一种视频处理装置。所述视频处理装置包括被配置为对编码视频数据执行解码处理以生成解码数据的可编程硬件解码器。所述视频处理装置还包括与所述可编程硬件解码器耦合的控制器。所述控制器被配置为执行一组指令集,以使所述视频处理装置:确定所述编码视频数据的第一信息;并基于所述第一信息调整解码过程
上述被披露的实施例各个方面可能包括存储有软件指令的非临时性、有形的计算机可读介质,并被一个或多个处理器执行,所述计算机可读介质被配置并适于履行和执行与前述披露相一致的一个或多个方法,操作等。此外,公开的实施例的各个方面可以由一个或多个处理器执行,这些处理器配置为基于用逻辑和指令编写的软件指令的专用处理器,在处理时,执行与公开的实施例一致的一个或多个操作的指令。
所公开实施例的附加对象和优点将部分在下列描述中阐述,部分从描述中可见,或可通过实施例的实践学习。所公开实施例的对象和优点可以通过权利要求中所述的要素和组合来实现和获得。
需要理解的是,如上所述的一般描述和下面的详细描述都只是示例性和解释性的,并且不限制所公开的实施例,如所述。
附图说明
图1示出AI辅助和基于硬件的视频处理系统的原理图,与本发明实施例一致。
图2示出与本申请实施例一致的示例性硬件视频编码器的原理图。
图3示出与本申请实施例一致的示例性硬件视频解码器的原理图。
图4A示出与本申请实施例一致的控制器与可编程硬件编码器相互作用的原理图。
图4B示出与本申请实施例一致的控制器和可编程硬件编码器的交互作用的原理图。
图5是与本申请实施例一致的使用ROI区域信息来指导编码过程的过程流程图。
图6是与本申请公开的实施例一致的使用语义分割来指导编码处理的过程的流程图,。
图7是与本申请公开的实施例一致的示出在转码处理中估计计算复杂度的过程的示意图。
图8是与本申请公开的实施例一致的说明在转码处理中映射编码参数的过程的示意图。
图9是与本申请公开的实施例一致的说明在转码处理中增强像素的过程的示意图。
图10是与本申请公开的实施例一致的示出在并行编码处理中映射编码参数的过程的示意图,该过程。
图11是与本申请公开的实施例一致的示出在已解码的视频数据中执行视频稳定的过程的示意图。
图12是示出适用于图1中的人工智能辅助和基于硬件的视频处理系统的示例AI控制器架构的示意图,该示意图与本申请公开的实施例一致。
图13是示出与本公开的实施例一致的示例性硬件加速器核心架构的示意图。
图14是示出包含神经网络处理架构的示范性云系统的示意图,与本申请公开的实施例一致。
具体实施方式
现在将详细参考示例性实施例,其示例在附图中说明。下列说明是指在附图中,除非另有说明,不同附图中的相同数字代表相同或类似的要素。下列示例性实施例描述中所述的实施方式并不表示与本发明一致的所有实施方式。相反,它们仅仅是与所附权利要求书中所述的与本发明有关的方面相一致的装置和方法的例子。除非另有特别说明,“或”一词包括所有可能的组合,但不可行的情况除外。例如,如果表述为,一个组件可能包括A或B,则除非另有特别说明或不可行,组件可能包括A,或B,A和B。第二个例子,如果表述为,一个组件可能包括A,B或C,则除非另有特别说明或不可行,组件可能包括,A,或B,或C,或A和B,或A和C,或B和C,或A和B和C。
视频是一组按时间顺序排列的静态图片(或“帧”),用来存储可视化信息。视频采集设备(如摄影机)可以用来以一个时间序列来捕获和储存这些图片,而视频播放设备(如电视、电脑,智能手机,平板电脑,,视频播放器,或任何具有显示功能的用户终端)可以用来以所述时间序列显示这些图片。此外,在某些应用中,视频采集设备可以将已采集视频实时传输到视频播放设备(如,带有监视器的计算机),用于监视、会议或直播。
为了减少此类应用所需的存储空间和传输带宽,可以在存储和传输前对视频进行压缩,并在显示前进行解压。压缩和解压缩可以由处理器(例如,通用计算机的处理器)或专用硬件执行的软件来实现。用于压缩的模块通常被称为“编码器”,用于解压的模块通常被称为“解码器”。编码器和解码器可以统称为“编解码器”。编码器和解码器可以为任何一种合适的硬件、软件或其组合实现。例如,编码器和解码器的硬件实现可以包括电路,如一个或多个微处理器、数字信号处理器(DSPs)、专用集成电路(ASIC)、现场可编程门阵列(FPGAs)、分立元件逻辑电路或它们的任何组合。编码器和解码器的软件实现可以包括程序代码、计算机可执行指令、固件或任何适于计算机实现的算法或固定在计算机可读介质中的进程。视频压缩解压缩可以通过多种算法或标准实现,如MPEG-1、MPEG-2、MPEG-4、H.26x系列等。在某些应用中,编解码器可以从第一编码标准解压缩视频,并使用第二编码标准重新压缩解压缩后的视频,在这种情况下,编解码器可以被称为“转码器”。
正在编码的图像(称为“当前图像”)的有用信息包括相对于参考图像(例如,先前编码和重构的图像)的变化。这些变化包括像素的位置变化、亮度变化或颜色变化,其中位置变化最为被关注。表示物体的一组像素的位置变化可以反映物体在参考图像和当前图像之间的运动
一幅没有引用另一幅图片(即它是自己的参考图片)的图像被称为“I-picture”或“I-frame”(I帧)。使用先前图片作为参考图片进行编码的图片称为“P-picture”或“P-frame”(P帧)。使用先前图片和后序图片作为参考图片(即,参考是“双向的”)的图片被称为“B-picture”或“B-frame”(B帧)。
如上所述,视频处理受限于基于CPU的编解码器的容量。为了缓解这些问题,可以在专用图形处理单元(GPUs)上实现基于软件的编解码器。GPUs可以执行并行计算,因此可以比CPU更快地渲染图像。然而,GPU的比特率效率在物理上是有限的,可能会限制可以显示的视频分辨率。
基于硬件的编解码器是专门为执行特定的视频编码和/或解码过程而设计的专用硬件块。基于硬件的编解码器通常比基于软件的编解码器消耗更少的能量,处理速度更高。但是传统的基于硬件的编解码器的功能不能被重新编程以提供新的特性或适应新的需求
本公开的实施例提供了对传统编解码器设计的改进。
根据某些公开的实施例,图1示出AI辅助和基于硬件的视频处理系统100的原理图。如图1所示,系统100包括一个可编程硬件编解码器110,它可以是一个硬件编码器,一个硬件解码器,或两者的组合。可编程硬件编解码器110可以包含任何可重构的硬件组件,如现场可编程门阵列(FPGAs),可编程逻辑器件(PLDs)等。可编程硬件编解码器110中的电路(如逻辑门)可以用软件编程。与所述已公开的实施例一致,可编程硬件编解码器110可以对输入数据130执行视频编码或解码处理并生成输出数据140。例如,可编程硬件编解码器110可以实现为编码器来编码(例如,压缩)源视频数据和输出已编码(例如,已压缩)数据。此外,可编程硬件编解码器110可以实现为解码器来解码(例如,解压缩)已编码视频数据和输出已解码(例如,已解压缩)视频数据用于播放。
仍参照图1,控制器120与可编程硬件编解码器110耦合并与之通信。控制器120可以是被配置为执行程序代码(例如,AI算法122)的处理器,以分析可编程硬件编解码器110的输入数据130或输出数据140。AI算法122可能包括但不限于机器学习算法、人工神经网络、卷积神经网络、深度神经网络等。
在某些公开的实施例中,控制器120可执行AI算法122以确定编码或解码决策150并基于编码或解码决策150编程可编程硬件编解码器110。例如,控制器120可以根据硬件编码器输入的视频数据,确定编码模式(如帧间预测或帧内预测)或运动矢量,并使用该编码模式来指导所述硬件编码器的编码处理。
在某些公开的实施例中,控制器120还可以执行AI算法122以从输入数据130或输出数据140中生成视频分析信息160。例如,控制器120可以确定已解码视频数据的内容或跟踪已解码视频数据中的物体。再如,控制器120可以在硬件编码器的输入视频帧中识别ROI区域,并对硬件编码器进行规划,使其对ROI区域使用更高的图像质量,以及,对非ROI区域使用较低的图像质量。
图2示出与披露的实施例一致的示例性硬件视频编码器200的原理图。例如,视频编码器200可以作为系统100中可编程硬件编解码器110的一部分(图1)。视频编码器200可以对视频帧中的块进行帧内或帧间的编码,包括视频块,或视频块的分区或子分区。在给定的视频帧中,帧内编码可以依靠空间预测来减少或去除视频中的空间冗余。帧间编码可以依赖时间预测来减少或消除视频序列中相邻帧内的时间冗余。帧内模式可能是一些基于空间的压缩模式,而帧间模式(如单一预测或双预测)可能是一些基于时间的压缩模式。
如图2所示,可以对输入视频信号202进行分块处理。例如,视频块单元可能是16×16像素块(例如宏块(MB))。在HEVC中,扩展块大小(例如编码单元(CU))可用于压缩分辨率较高的视频信号,如108Gp或更高。在HEVC中,一个CU可能包括高达64x64的亮度样本和相应的色度样本。在VVC中,CU的大小可以进一步增大,包括128x128的亮度样本和相应的色度样本。一个CU可以被划分为多个预测单元(PUs),每个单元可以应用不同的预测方法。每个输入视频块(如MB、CU、PU等)可以使用空间预测单元260或时间预测单元262处理。
空间预测单元260使用包含当前CU的同一图片/切片上的信息对当前CU执行空间预测(例如,内部预测)。空间预测可以使用来自同一视频图像/切片中已经编码的相邻块的像素来预测当前视频块。空间预测可以降低视频信号固有的空间冗余度。时间预测(例如,内部预测或运动补偿预测)可以使用来自已编码视频图像的样本来预测当前视频块。时间预测可以降低视频信号固有的时间冗余。
时间预测单元262使用与包含当前CU的图片/片段不同的图片/片段信息对当前CU进行时间预测(例如,帧间预测)。视频块的时间预测可以由一个或多个运动向量发出信号。运动向量可以示出当前块与参考帧中的一个或多个预测块之间的运动量和运动方向。如果支持多个参考图片,则可以为一个视频块发送一个或多个参考图片索引。一个或多个参考索引可用于识别参考图像来自参考图像库或解码图像缓冲区(DPB)264中的哪个参考图像,时域预测信号可能来自于哪儿。经过空间或时间预测后,编码器中的模式决策和编码器控制单元280可以选择所述预测模式,例如,基于率失真优化方法。预测块可以从加法器216处的当前视频块中减去。预测残差可通过变换单元204进行变换,并通过量化单元206进行量化。量化后的残差系数可在反量化单元210处进行反量化,并在反变换单元212处进行反变换,以形成重构残差。所述重构块可添加到加法器226处的预测块中,以形成重构视频块。在将所述重构视频块放入参考图像库264并用于编码未来视频块之前,可以对其进行循环滤波,如去块滤波器和自适应循环滤波器266。为了形成输出视频比特流220,可以将编码模式(如帧间或帧内)、预测模式信息、运动信息、量化残差系数等发送到熵编码单元208进行压缩打包,形成比特流220。
与所述公开的实施例一致,上述视频编码器200的单元是作为硬件部件实现的,例如,用于执行各自功能的不同电路模块。
图3示出与公开的实施例一致的示例性硬件视频解码器300的原理图。例如,视频解码器300可以在系统100中用作可编程硬件编解码器110(图1)。请参考图3,视频比特流302可以在熵解码单元308中被打开或者熵解码,所述编码模式或预测信息可能被发送到空间预测单元360(例如,如果为帧内编码)或时间预测单元362(例如,如果为帧间编码),以形成预测块。如为帧间编码,预测信息可以包括预测块规格、一个或多个运动向量(例如,可以示出运动方向和运动量)或一个或多个参考索引(例如,可以示出从哪个参考图像获得预测信号)。
运动补偿预测可由时间预测单元362实施,以形成时间预测块。将残差变换系数发送到反量化单元310和反变换单元312以重构所述残差块。预测块和残差块可以在326相加。所述重构块在被存储到参考图片库364之前,可以经过循环滤波(通过循环滤波器366)。参考图片库364中的所述重建视频可用于驱动显示设备或用于预测后续视频块。已解码视频320可以显示在显示器上。
在某些公开的实施例中,上述视频解码器300的单元是以硬件组件实现的,例如,用于执行各自功能的不同电路块。
与公开的实施例一致,控制器120(图1)可以经常访问可编程硬件编码器200(图2)执行的编码处理,访问可编程硬件解码器300执行的解码处理(图3)。控制器120可以从编码/解码处理中确定非像素信息,并基于所述非像素信息,对可编程硬件编码器200和可编程硬件解码器300编程。
图4A示出与公开的实施例一致的控制器120与可编程硬件编码器200相互作用的示意图。如图4A所示,控制器120执行人工智能算法,以分析输入到可编程硬件编码器200中源视频数据132,并基于源视频数据132确定非像素信息(如ROI区域、分割信息、预测模式、运动向量等)。控制器120可以将所述非像素信息作为编码器输入202提供给可编程硬件编码器200,使可编程硬件编码器200可以根据编码器输入202执行编码处理。此外,控制器120可以执行人工智能算法以提取非像素信息(如编码处理中使用的预测模式和运动向量)作为编码器输出204,用于指导后续的编码或解码过程。
图4B是示出与本申请公开的实施例一致的控制器120与可编程硬件解码器300相互作用的原理图。如图4B所示,控制器120可以将所述非像素信息作为解码器输入302(如,编码视频帧中出现的错误的信息)提供给可编程硬件编码器200,使可编程硬件解码器300可以基于解码器输入302执行解码处理。此外,控制器120可以提取非像素信息(如,编码过程确定的预测模式和运动向量)作为解码器输出304,用于指导后续编码或解码处理。
以下,详细描述利用人工智能指导编码和解码过程的各种实施例。
在某些实施例中,控制器120可以确定用于视频编码处理的参数,然后将所述参数发送到可编程硬件编码器200,后者使用这些参数执行编码处理。与这些实施例一致,可编程硬件编码器200只允许做出有限的编码决策,而大多数编码决策是由控制器120在例如人工智能算法等的协助下做出的。控制器120提供编码决策作为编码器的输入,以指导可编程硬件编码器200的编码处理。
例如,控制器120可以确定编码块的初始运动向量,并确定所述运动向量的搜索范围。而后,控制器120可以将已确定参数输入到可编程硬件编码器200,编码器使用所述初始运动向量和所述搜索范围来执行所述编码处理。
如另一个例子,控制器120可以从可编程硬件编码器200接收到估算运动向量或估算速率失真。控制器120可以根据已接收的估算运动向量或估算速率失真确定优化编码模式或优化运动向量。控制器120将优化后的编码模式或优化后的运动矢量发送到可编程硬件编码器200,引导编码过程。
作为另一个例子,控制器120可以为可编程硬件编码器200提供一个编码树单元(CTU)建议。特别地,控制器120可以确定一个CTU结构,并将有关所述CTU结构的信息发送给可编程硬件编码器200。
在某些实施例中,控制器120可以为可编程硬件编码器200识别输入视频帧中的ROI区域。然后将ROI区域信息作为编码器输入提供给可编程硬件编码器200,可编程硬件编码器200被规划为对ROI区域使用更高的图像质量(即更高的计算复杂度),对非ROI区域使用较低的图像质量(即较低的计算复杂度)。计算复杂度决定了搜索运动模式(例如,帧间预测或帧内预测)、运动向量、代码单元(CU)分区、转换单元分区等所分配的CPU数量。
与所披露实施例相符,图5是使用ROI区域信息来指导编码处理的过程流程图。参照图5,控制器120接收到某个输入视频帧(步骤502),并识别输入的视频帧中是否有任何ROI区域(步骤504)。对于ROI区域,控制器120可以对可编程硬件编码器200编程,为搜索编码参数分配更多的计算时间(步骤506)。与此相反,对于非ROI区域,控制器120可以对可编程硬件编码器200编程,为搜索编码参数分配较少的计算时间(步骤508)。
在某些实施例中,控制器120可以确定输入视频帧的语义分割映射。而后,关于所述分割的信息作为编码器输入提供给可编程硬件编码器200,该编码器可以根据所述分割图,编程选择分区尺寸或编码模式。例如,控制器120可以对可编程硬件编码器200编程,在分割边界周围使用较小的CU/TU,而在分割内部使用较大的CU/TU(除非所述分割是一个非刚性对象)。再如,控制器120可以对可编程硬件编码器200编程,使同一分割内的编码模式或运动向量具有更高的相关性。
与被披露实施例相符,图6是使用语义分割来指导编码过程的过程流程图。如图6所示,控制器120接收到输入视频帧(步骤602),并确定所述输入视频帧的语义分割映射。控制器120可以将分割图的信息发送给可编程硬件编码器200,并对可编程硬件编码器200编程以识别分割的边界(步骤604)。可编程硬件编码器200可以在所述分割边界周围使用较小的CU/TU分区尺寸(步骤606)。此外,可编程硬件编码器200可以基于同一分割内其他编码块使用的编码模式,预测该分割内编码块的编码模式(步骤608)。
在某些实施例中,在转码处理中,控制器120可以从解码器中提取非像素信息,并使用该非像素信息来指导可编程硬件编码器200中的编码处理。例如,如图7所示,控制器120可以基于先前编码的比特流估算适合转码图像的计算复杂度。具体而言,当解码器用于解码所述先前编码的位流时,控制器120从解码器接收示出用于编码视频帧的比特数和平均量化参数的信息。控制器120可以根据比特数或平均量化参数估计图像复杂度(例如,计算复杂度)。最后,控制器120对可编程硬件编码器200编程以执行基于所述图像复杂度的速率控制。
在某些实施例中,在转码处理中,控制器120可以将用于先前编码比特流的编码参数映射到用于新编码比特流的编码参数,从而减少在转码处理中搜索帧间或帧内预测所需的时间。例如,如图8所示,当解码器用于解码所述先前编码比特流时,控制器120从解码器接收到指示用于视频帧的至少一种初始运动向量或初始编码模式的信息。控制器120然后根据转码视频数据的目标格式或定义,将初始运动向量或初始编码模式分别调整为目标运动向量或目标编码模式。最后,控制器120对可编程硬件编码器200编程,以使用所述目标运动向或所述目标编码模式去执行运动估算或模式判定。
在某些实施例中,在转码处理中,控制器120可以使用部分解码的信息来指导后续编码。例如,如图9中所示,当解码器被用于解码之前编码的比特流,控制器120从解码器接收解码信息,如运动向量或量化参数(步骤902)。控制器120可以基于已解码信息识别已解码视频帧中的ROI区域(步骤904)。然后,在针对新的视频格式或视频清晰度的后续编码中,控制器120对可编程硬件编码器200编程,以基于ROIs区域对图像进行自适应增强。具体来说,控制器120可以对硬件编码器200进行编程,以分配更多的计算时间去增强ROI区域中的像素(step 906),而用更少的计算时间去增强非ROI区域中的像素(step908)。
在某些实施例中,当多个编码器被用于执行并行视频编码时,控制器120可以提取并行编码的公共信息,并在多个编码器之间共享,从而提高编码效率。例如,如图10所示,控制器120可以接收并行视频编码处理中所涉及的第一个可编程硬件编码器所使用的编码参数(例如,运动向量或编码模式)。由于编码不同比特流的编码参数可能相似,控制器120可以将从第一个可编程硬件编码器接收的编码参数映射到并行视频编码过程中涉及的其他可编程硬件编码器中适用的编码参数。而后,控制器120可以将已映射编码参数发送给其他可编程硬件编码器,以指导各自的编码过程
在某些实施例中,控制器120可以使用音频提示来指导可编程硬件编码器200的编码处理。例如,控制器120可以基于与视频帧相关联的音频信息为输入视频帧分配权重。而后,控制器120确定一个正比于所述权重的图像质量,并根据所确定的视频质量对可编程硬件编码器200编程,由其对输入视频帧进行编码。例如,当相关的音频提示令人兴奋时,控制器120可能会选择执行更高质量的压缩。
在某些实施例中,控制器120可以确定一个图片组(GOP)来指导可编程硬件编码器200中的所述编码处理。具体地说,控制器120可以确定多个输入视频帧中的第一非编码I帧。例如,这个初始I帧可以被人工智能算法识别。或者,如果涉及转码处理,控制器120可以根据已解码信息确定所述多个输入视频帧的内部CUs,并依据所述内部CUs确定第一未编码II帧。在确定第一未编码I帧之后,控制器120确定所述多个输入视频帧中的一个或多个附加未编码I帧。控制器120进一步索引所述第一和附加未编码I帧,并基于所述未编码I帧的索引确定图片组。最后,控制器120对可编程硬件编码器200编程,以使用所确定的图片组对所述多个输入视频帧进行编码。
在一些实施例中,控制器120可以使用人工智能算法(如强化学习算法)来分析可编程硬件编码器200的不同输入视频帧之间的相似性,并根据相似性评估比特预算。具体来说,控制器120可以确定编码器的多个输入视频帧的相似性。然后,控制器120可以根据所述多个输入视频帧的相似性,为每个输入视频帧分配一个比特预算。控制器120进一步将比特预算发送给可编程硬件编码器200,后者根据相应的比特预算对所述多个输入视频帧进行编码。
在一些实施例中,控制器120可以使用人工智能算法(例如,强化学习算法)来分析可编程硬件编码器200的不同输入视频帧之间的相似性,并根据所述相似性确定参考帧。具体来说,控制器120可以确定编码器的多个输入视频帧的相似性。然后,基于所述多个输入视频帧的相似性,控制器120可以确定一个或多个参考帧。控制器120可以进一步将一个或多个参考帧的信息发送到可编程硬件编码器200,后者使用该一个或多个参考帧对所述多个输入视频帧进行编码。
在一些实施例中,控制器120可以使用ROI区域或分割信息来定义编码单元或预测单元。具体而言,控制器120可以生成所述编码器的输入视频帧的分割。而后,控制器120可以根据所述输入视频帧的分割设置编码单元或预测单元中的至少一个。控制器120还可以进一步将所述编码单元或预测单元的至少一个信息发送给可编程硬件编码器120,后者使用所述编码单元或预测单元的至少一个执行编码处理。
在一些实施例中,控制器120可以使用已解码信息(即解码器输出)来实现视频稳定。由于摄像机抖动会引起图像的全局运动,因此视频稳定化可以用来校正摄像机抖动带来的影响。例如,如图11所示,控制器120可以从可编程硬件解码器300接收已编码帧中与多个编码块相关联的多个运动向量(步骤1102)。控制器120可以根据所述多个运动向量为所述已编码帧确定一个全局运动参数(步骤1104)。如果全局运动参数表明没有全局运动,控制器120推断所述已编码帧对应的所述图像可以正常显示(步骤1106)。如果全局运动参数表明存在全局运动,控制器120可以进一步确定已解码数据中是否存在摄像机抖动(步骤1108)。如果确定已编码帧中存在摄像机抖动,控制器120可以基于全局运动参数对所述已解码数据执行图像稳定(步骤1110)。如果确定已编码帧中没有摄像机抖动,控制器120推断编码帧对应的图像可以正常显示(步骤1106)。
在某些实施例中,控制器120可以使用解码信息(即解码器输出)跟踪已解码视频数据中的对象或理解已解码视频数据的内容。具体来说,控制器120可以接收到来自可编程硬件解码器300的解码信息,如运动向量、残差等。然后,控制器基于所述已解码信息,可以使用人工智能算法来识别和跟踪已解码视频数据所代表的目标。例如,控制器120可以进行场景提取、人脸滤波、属性提取等,以监控图像内容,并为图像创建标注。
在某些实施例中,控制器120可以在解码处理中使用已解码信息引导错误隐藏。例如,控制器120可以从可编程硬件解码器300接收与已编码帧中的多个编码块相关的多个运动向量和编码模式。而后,控制器120可以根据多个运动向量和编码模式来确定隐藏错误的方法。针对编码帧中确定存在的错误,控制器120可以进一步对可编程硬件解码器300进行编程,在解码处理中根据所确定的隐藏错误的方法进行错误隐藏。
图12示出适用于执行AI算法的典型的AI控制器1200,与本披露的实施例一致。例如,AI控制器1200可被配置为控制器120(图1),用于执行所公开的方法。在本披露的背景下,AI控制器1200可能被实现为执行复杂AI算法的专用硬件加速器,如机器学习算法、人工神经网络(如卷积神经网络)或深度学习算法。在某些实施例中,AI控制器1200可被称为神经网络处理单元(NPU)。如图12所示,AI控制器1200可以包括多个内核1202、命令处理器1204、直接存储器访问(DMA)单元1208、JTAG(联合测试工作组)/TAP(测试访问端)控制器1210、外围接口1212、总线1214等。
值得注意的是,内核1202可以基于通信数据执行算法操作。内核心1202可以包括一个或多个处理元素,这些处理元素可以包括单指令、多数据(SIIVID)体系结构,后者包括一个或多个处理单元,配置为基于从命令处理器1204接收到的命令执行一个或多个操作(例如,乘法、复杂乘法、加法、累加乘法、等等)。为了对通信数据包执行操作,内核1202可以包括一个或多个处理元素,用于处理数据包中的信息。每个处理元素可以包含任意数量的处理单元。根据本发明的某些实施例,AI控制器1200可以包括多个内核1202,例如四个核。在某些实施例中,多个内核1202可以相互通信耦合。例如,多个内核1202可以连接到一个单向环形总线,后者支持大型神经网络模型的高效流水线。内核1202的架构将根据图13详细说明。
命令处理器1204可以与主机1220交互,并将命令和数据传递到相应的内核1202。在某些实施例中,命令处理器1204可以在核心模式驱动程序(KMD)的监控下与主机进行交互。在一些实施例中,命令处理器1204可以修改针对每个内核1202的命令,以便内核1202可以尽可能地并行工作。修改后的命令可以存储在指令缓冲区中。在某些实施例中,命令处理器1204可被配置为协调一个或多个内核1202以实现并行执行。
DMA单元1208可以协助在主机存储器1221和AI控制器1200之间传输数据。例如,DMA单元1208可以协助将数据或指令从主机内存1221加载到内核1202的本地内存中。DMA单元1208还可以协助在多个AI控制器之间传输数据。DMA单元1208可以允许片外设备访问片内和片外存储器,而不会导致主机CPU中断。此外,DMA单元1208可以协助AI控制器1200各部件之间的数据传输。例如,DMA单元1208可以帮助在多个内核1202之间或在每个内核内传输数据。因此,DMA单元1208也可以生成内存地址并启动内存读或写周期。DMA单元1208还可以包含几个硬件寄存器,可以由一个或多个处理器读写,包括一个内存地址寄存器、一个字节计数寄存器、一个或多个控制寄存器和其他类型的寄存器。这些寄存器可以指定源、目的地、传输方向(从输入/输出(I/O)设备读取或写入到输入/输出(I/O)设备)、传输单元的大小或在一个字符串需要传输的字节数的某种组合。值得注意的是,AI控制器1200可以包含第二个DMA单元,可以用于与其他AI控制器之间的数据传输,以允许多个AI控制器直接通信,而无需涉及主机CPU。
JTAG/TAP控制器1210可以指定一个专用的调试端口,实现串行通信接口(例如,JTAG接口),用于低开销访问AI控制器1200,而不需要直接外部访问系统地址和数据总线。JTAG/TAP控制器1210也可以有片上测试访问端口接口(例如,TAP接口),它实现了一个协议来访问一组测试寄存器,这些寄存器提供了芯片逻辑级别和不同部件的设备性能。
外围接口1212(如PCIe接口),如果存在,作为(通常是)芯片间总线,提供AI控制器1200和其他设备(如主机系统)之间的通信。
总线1214(如I2C总线)即包括芯片内总线也包括芯片间总线。芯片内总线根据系统主干架构的要求将所有内部组件彼此连接。虽然不是所有组件都与其他组件相连,但所有组件确实都与它们需要通信的其他组件有某种连接。芯片间总线连接AI控制器1200与其他设备,如片外存储器或外设。例如,总线1214可以在内核之间提供高速通信,也可以将内核1202与其他单元连接,如片外存储器或外设。典型地,如果有一个外设接口1212(例如,芯片间总线),总线1214只与芯片内总线有关,尽管在某些实施方式中它仍然可能与专门的总线间通信有关。
AI控制器1200还可以与主机单元1220通信。主机单元1220可以是一个或多个处理单元(例如,X86中央处理单元)。如图12所示,主机单元1220可能与主机内存1221相关联。在某些实施例中,主机存储器1221可以是一个内置存储器或与主机单元1220相关联的外部存储器。在某些实施例中,主机内存1221可以包括主机磁盘,主机磁盘是配置为为主机单元1220提供额外存储的外部内存。主机内存1221可以是双数据速率同步动态随机访问存储器(例如,DDR SDRAM)之类。与内置于AI控制器1200中作为更高级别的缓存的片上存储相比,主机内存1221可以被配置为以较慢的访问速度存储大量数据。存储在主机存储器1221中的数据可以转移到AI控制器1200,用于执行神经网络模型。
在某些实施例中,具有主机单元1220和主机内存1221的主机系统可以包括编译器(图未示)。编译器是一种程序或计算机软件,它将用一种编程语言编写的计算机代码转换成指令,供AI控制器1200创建可执行程序。在机器学习应用程序中,编译器可以执行各种操作,例如,预处理、词法分析、解析、语义分析、输入程序转换为中间表示、神经网络的初始化、代码优化和代码生成,或以上的组合。例如,编译器可以编译一个神经网络来生成静态参数,例如,神经元之间的连接和神经元的权值。
在一些实施例中,包括编译器的主机系统可以向AI控制器1200推送一个或多个命令。如上所述,这些命令可以通过AI控制器1200的命令处理器1204进一步处理,临时存储在AI控制器1200的指令缓冲区中,并分配到相应的一个或多个内核(如图12中的内核1202)或处理单元。有些命令可以指示DMA单元(例如,图12的DMA单元1208)从主机内存(例如,图12的主机内存1221)加载指令和数据到AI控制器1200。然后,被加载的指令可以被分配到分配了相应任务的每个内核(如图12中的内核1202),一个或多个内核可以处理这些指令。
值得注意的是,由内核1202接收到的前几条指令可能会指示1202从主机内存1221加载/存储数据到所述内核的一个或多个本地内存(例如,图13的本地内存1332)。然后,每个内核1202可以启动指令管道,包括从指令缓冲区取指令(例如,通过一个序列发生器),解码指令(例如,通过图12的DMA单元1208),生成本地内存地址(例如,对应于一个运算对象),读取源数据,执行或加载/存储运算,然后回写结果。
根据某些实施例,AI控制器1200还可以进一步包含一个全局存储器(图未示),该全局存储器具有内存块(如4块8GB的第二代高带宽内存(HBM2))作为主存储器(图未示)。在一些实施例中,全局存储器可以通过DMA单元1208存储来自主机存储器1221的指令和数据。然后,指令可以被分配到分配了相应任务的每个内核的指令缓冲区中,并且所述内核可以相应地处理这些指令。
在一些实施例中,AI控制器1200可以进一步包括一个内存控制器(图未示),该内存控制器配置为管理全局内存中对特定内存块(例如HBM2)的数据读写。例如,内存控制器可以管理来自另一个AI控制器的内核(例如,来自另一个AI控制器对应的DMA单元)或来自内核1202(例如,来自内核1202的本地内存)的读/写数据。值得注意的是,AI控制器1200可以提供多个内存控制器。例如,全局内存中的每个内存块(如HBM2)可以有一个内存控制器。
存储器控制器可以产生存储器地址和启动存储器读或写周期。内存控制器可以包含几个硬件寄存器,这些寄存器可以被一个或多个处理器读写。这些寄存器可以包括一个内存地址寄存器、一个字节计数寄存器、一个或多个控制寄存器和其他类型的寄存器。这些寄存器可以指定源、目的地、传输方向(从输入/输出(I/O)设备读取或写入到输入/输出(I/O)设备)、传输单元的大小、一个字符串的字节数或存储控制器的其他典型特征的某种组合。
在被披露的实施例中,图12中的AI控制器1200可用于各种神经网络,如卷积神经网络(CNNs)、深度神经网络(DNNs)、递归神经网络(RNNs)等。此外,一些实施例可以配置为各种处理架构,如神经网络处理单元(NPUs)、图形处理单元(GPUs)、现场可编程门阵列FPGA)、张量处理单元(TPUs)、特定应用集成电路(asic)、任何其他类型的异构加速处理单元(HAPUs),或类似的。
图13示出与本公开的实施例一致的典型内核架构。如图13所示,内核1202可以包括一个或多个运算单元,如第一和第二运算单元1320和1322,内存引擎1324,序列发生器1326,指令缓冲区1328,常量缓冲区1330,本地存储器1332之类。
第一操作单元1320可以被配置为对接收的数据(例如,特征图)执行操作。在一些实施例中,第一运算单元1320可以包括一个或多个被配置用于执行一个或多个运算的运算单元(例如,乘法、复数乘法、加法、累加乘法、元素运算等)。在某些实施例中,第一运算单元1320可以被配置为加速卷积运算或矩阵乘法运算的执行。
第二操作单元1322可以配置为执行调整大如本文所述的缩放运算,ROI区域运算等。在某些实施例中,第二操作单元1322可以包括缩放单元、池数据路径等。在某些实施例中,第二操作单元1322可以如本文所述,配置为与第一操作单元1320配合以对特征图缩放。所公开的实施例不限于第二操作单元1322执行缩放的实施例:在某些实施例中,这样的缩放可以由第一操作单元1320执行。
内存引擎1324可以被配置为在相应的内核1202内或两个内核之间执行数据复制。DMA单元1208可以协助在相应的内核或两个内核之间复制数据。例如,DMA单元1208可以支持内存引擎1324将数据从本地内存(如图13中的本地内存1332)复制到相应的运算单元。内存引擎1324也可以配置为执行矩阵转置,使矩阵适合在运算单元中使用。
序列发生器1326可以与指令缓冲区1328耦合,并配置为检索命令和分发命令到内核1202的组件。例如,序列发生器1326可以将卷积命令或乘法命令分发到第一运算单元1320,将池命令分发到第二运算单元1322,或将数据复制命令分发到内存引擎1324。序列发生器1326也可以配置为监视神经网络任务的执行,并并行化神经网络任务的子任务,以提高执行效率。在某些实施例中,第一运算单元1320、第二运算单元1322和存储引擎1324可以根据存储在指令缓冲区1328中的指令在顺序发生器1326的控制下并行运行。
指令缓冲区1328可以被配置为存储相应的内核1202所属的指令。在某些实施例中,指令缓冲区1328与顺序发生器1326耦合,并向顺序发生器1326提供指令。在某些实施例中,存储在指令缓冲区1328中的指令可以由命令处理器1204传输或修改。
常量缓冲区1330可以配置为存储常量值。在某些实施例中,存储在常量缓冲区1330中的常量值可以被操作单元——如第一操作单元1320或第二操作单元1322——用于批处理规范化、量化、去量化或类似操作。
本地内存1332可以提供快速读写存储空间。为了减少可能与全局内存的交互,本地内存1332的存储空间可以采用大容量实现。有了这样的容量,大部分数据访问可以在内核1202内执行,减少了数据访问造成的延迟。在某些实施例中,为了最小化数据加载延迟和能量消耗,集成在芯片上的SRAM(静态随机存取存储器)可作为本地存储器1332使用。在某些实施例中,本地内存1332的容量可以达到192MB或更高。根据本公开的一些实施例,本地内存1332均匀地分布在芯片上,以减轻密集布线和发热问题
本发明公开的视频处理系统的AI计算架构不限于以上描述的AI控制器1200架构。与公开的实施例一致,所述人工智能算法(例如,人工神经网络)可驻留在各种电子系统上。例如,人工智能算法可以托管在一个服务器,某个数据中心的一个或多个节点在,台式电脑,笔记本电脑,平板电脑,智能手机,可穿戴设备如智能手表,嵌入式设备,物联网设备,智能设备,传感器,轨道卫星,或任何其他局别计算能力的电子设备。此外,AI算法在特定设备中的承载方式也可能有所不同。例如,在某些实施例中,AI算法可能被托管并运行在设备的通用处理单元上,例如中央处理单元(CPU)、图形处理单元(GPU)或通用图形处理单元(GPGPU)。在其他实施例中,可以在设备的硬件加速器上托管和运行人工神经网络。如神经处理单元(NPU)、现场可编程门阵列(FPGA)或专用集成电路(ASIC)。
此外,本发明披露的视频处理系统的人工智能计算还可以以云计算的形式实现。图14示出包含AI控制器1200的典型云系统的示意图(图12),该典型云系统与本发明的实施例一致。如图14所示,云系统1430可以提供具有人工智能(AI)能力的云服务,可以包含多个计算服务器(如1432、1434)。例如,在某些实施例中,计算服务器1432可以包含图12的AI控制器1200。如图14,以简单明了的方式示出AI控制器1200。
在AI控制器1200的帮助下,云系统1430可以提供图像识别、面部识别、翻译、3D建模等扩展AI能力。值得注意的是,AI控制器1200可以以其他形式部署到计算设备上。例如,AI控制器1200也可以集成到计算设备中,如智能手机、平板电脑、可穿戴设备等。
在某些实施例中,还提供了包括指令的非临时计算机可读存储介质,并且该指令可由用于执行上述方法的设备(如所公开的编码器和解码器)执行。常见形式的非临时截止包括,例如,软盘,软磁盘、硬盘、固态驱动器,磁带,或任何其他磁数据存储介质,CD–ROM,任何其他光学数据存储介质,任何打孔的物理介质,RAM,PROM,EPROM,FLASH-EPROM或者其他闪存,NVRAM,高速缓存、寄存器、任何其他存储芯片或墨盒,以及同样的联网版本。设备可以包括一个或多个处理器(CPU)、一个输入/输出接口、一个网络接口和/或一个内存。
值得注意的是,上述实施例可以通过硬件、软件(程序代码)或硬件和软件的组合来实现。如果由软件实现,它可以存储在上述计算机可读的媒体中。该软件在由处理器执行时,可以执行所公开的方法。本公开所述的计算单元和其他功能单元可以通过硬件或软件或硬件和软件的组合来实现。该领域的普通技术人员也会理解以上描述的多个模块/单元可以组合为一个模块/单元,并且每个模块/单元可以进一步划分为多个子模块/子单元。
可以使用下列条款进一步描述实施例:
1、一种视频处理设备装置,包括:
可编程硬件编码器,其被配置为对多个输入视频帧执行编码处理;以及
与所述可编程硬件编码器耦合的控制器,所述控制器被配置为执行指令集以使所述视频处理设备:
确定所述多个输入视频帧的第一信息;以及
根据所述第一信息调整所述编码处理。
2、根据第1条所述的视频处理装置,其中,所述第一信息包括所述多个输入视频帧的非像素信息。
3、根据第1条和第2条中的任何一条的视频处理装置,其中,控制器被配置为执行所述指令集以使所述视频处理装置:
确定编码块的初始运动向量;
确定运动向量的搜索范围;和
将所述初始运动向量和所述搜索范围发送到所述可编程硬件编码器,其中,所述可编程硬件编码器被配置为使用初始运动向量和所述搜索范围执行所述编码处理。
4、根据第1-第3条任何一条所述的视频处理装置,其中,所述指令集包括用于确定所述非像素信息的机器学习算法。
5、根据1-4任何一个条款所述的视频处理设备,其中,所述第一信息包括
所述多个输入视频帧中的某个输入视频帧中的ROI区域信息,且所述控制器被配置为执行所述指令集以使所述视频处理装置:
识别所述输入视频帧中的一个或多个ROI区域,以及
配置所述可编程硬件编码器,以使用第一计算复杂度对ROI区域进行编码,并以及,使用与所述第一计算复杂度不同的第二计算复杂度对非ROI区域进行编码。
6、根据第1-5条中的任何一条所述的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理设备:
生成所述多个输入视频帧中的输入视频帧的分割,并且
将所述分割的信息发送给可编程硬件编码器,所述可编程硬件编码器基于所述分割为编码块选择分区大小或编码模式中的至少一种。
7、根据第6条所述的视频处理装置,其中,可编程硬件编码器被配置为在分割的边界上使用第一分区大小,并在所述分割内使用第二分区大小,第一分区大小小于第二分区大小。
8、根据第6条和第7条中的任何一条的视频处理系统,其中,可编程硬件编码器被配置为基于同一分割内的其他编码块使用的一种或多种编码模式,确定分割内编码块的编码模式。
9、根据第1-8条中的任何一条所述视频处理装置,其中,所述多个输入视频帧在视频转码处理中由解码器生成,所述控制器被配置为执行所述指令集以使所述视频处理装置::
从所述解码器接收信息,该信息示出多个输入视频帧中的某个输入视频帧的比特数或平均量化参数中的至少一个;
根据所述比特数或平均量化参数中的至少一个,确定输入视频帧的计算复杂度;以及
根据所述计算复杂度调整编码处理的比特率。
10、根据第1-9条中的任何一条的所述视频处理装置,其中,所述多个输入视频帧是在视频转码处理中由解码器生成,所述控制器被配置为执行所述指令集以使所述视频处理装置产生:
从解码器接收信息,该信息示出多个输入视频帧中的某个输入视频帧的原始运动向量或原始编码模式中的至少一个;
分别基于所述初始原运动向量或初始编码模式中的至少一个,确定目标运动向量或目标编码模式中的至少一个;以及
基于所述目标运动向量或所述目标编码模式中的至少一个,执行所述编码处理的所述运动估计和模式决策。
11、根据第1-10条中的任何一条的视频处理装置,其中,所述可编程硬件编码器为第一编码器,所述控制器被配置为执行所述指令集以使视频处理设备:
接收第二编码器所使用的编码参数,该编码参数用于编码所述多个输入视频帧中的一个或多个;以及
调整所述编码参数并将所述已调整编码参数发送给所述可编程硬件编码器,所述可编程硬件编码器被配置为基于所述已调整编码参数执行所述编码处理。
12、根据第11条所述的视频处理装置,其中,所述编码参数包括运动向量或编码模式中的至少一个。
13、根据第1-12条中的任何一条所述的视频处理装置,其中,所述多个输入视频帧在视频转码处理由解码器生成,所述控制器被配置为执行所述指令集以使所述视频处理装置:
从所述解码器接收信息,该信息示出用于所述多个输入视频帧中的某个输入视频帧的编码参数;
基于所述编码参数,识别所述输入视频帧中的ROI区域;以及
配置可编程硬件编码器,以提高ROI区域内的图像质量。
14、根据第13条所述的视频处理装置,其中,所述编码参数包括运动向量或量化参数中的至少一个。
15、根据第1-14条中的任何一条的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理装置:
基于与所述输入视频帧关联的音频信息,为所述多个输入视频帧的某个输入视频帧分配权重;
以与所述权重成正比的方式,确定图像质量;以及
配置所述可编程硬件编码器,以根据所述已确定图像质量对输入视频帧进行编码。
16、根据第1-15条中的任何一条的视频处理设备,其中,控制器被配置为执行一组指令以使视频处理装置:
从所述可编程硬件编码器接收运动向量或估算速率失真信息中的至少一个;
基于所述接收的运动向量或所述估算的速率失真信息,确定编码模式或运动向量中的至少一个;以及
将所述编码模式或运动向量中的至少一个发送至所述可编程硬件编码器,所述可编程硬件编码器配置为根据所述编码模式或运动向量中的至少一个执行所述编码处理。
17、根据l~16条款中的任何一项的视频处理装置,其中,所述控制器被配置为执行所述指令集以使视频处理设备:
确定多个输入视频帧中的某个输入视频帧的编码树单元结构;以及
向可编程硬件编码器发送示出所述编码树单元结构的信息,其中,所述可编程硬件编码器被配置为根据编码树单元结构对输入的视频帧进行分区。
18、根据第1-17条中的任何一条的视频处理装置,其中控制器被配置为执行所述指令集以使视频处理设备:
确定所述多个输入视频帧中的第一未编码I帧;
确定多个输入视频帧中的一个或多个附加未编码I帧;
索引所述第一和附加未编码I帧;
根据所述第一和附加未编码I帧的所述索引,确定图片组);以及
配置可编程硬件编码器,以根据所述已确定图片组对所述多个输入视频帧编码。
19、根据第18条所述的视频处理装置,其中,所述多个输入视频帧在视频转码处理中由解码器生成,并且,所述控制器被配置为执行所述指令集以使所述视频处理装置:
从所述解码器接收信息。该信息示出用于对所述多个输入视频帧编码的内部编码单元;以及
基于所述内部编码单元确定第一未编码I帧。
20、根据第18和19条中的任何一条所述视频处理装置,其中,所述指令集包括用于确定所述第一未编码I帧的机器学习算法。
21、根据第1-20条中的任何一条的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理设备:
确定所述多个输入视频帧的相似度;
基于所述多个输入视频帧的相似度,为多个输入视频帧中的每一个分配位预算;以及
将所述位预算发送到所述可编程硬件编码器,所述可编程硬件编码器被配置为根据相应的所述位预算对所述多个输入视频帧编码。
22、根据第21条所述的视频处理装置,其中,所述的指令集包括用于确定所述多个输入视频帧的相似度的强化学习算法。
23、根据第1-22条中的任何一条的视频处理设备,其中,所述控制器被配置为执行所述指令集以使视频处理设备:
确定所述多个输入视频帧的相似度;
基于所述多个输入视频帧的相似度,确定一个或多个参考帧;以及
将所述一个或多个参考帧的信息发送到所述可编程硬件编码器,所述可编程硬件编码器被配置为使用所述一个或多个参考帧对所述多个输入视频帧编码。
24、根据第23条所述的视频处理装置,其中,所述的指令集包括用于确定所述多个输入视频帧的相似度的机器学习算法。
25、根据第1-24条中的任何一条的视频处理设备,其中,所述控制器被配置为执行所述指令集以使视频处理设备:
识别所述多个输入视频帧的某个输入视频帧中的一个或多个ROI区域;
基于所述一个或多个ROI区域,设置编码单元或预测单元中的至少一个;以及
将所述编码单元或预测单元中的至少一个的信息发送到所述可编程硬件编码器,所述可编程硬件编码器配置为使用所述编码单元或预测单元中的至少一个执行所述编码处理。
26、根据第1-25条中的任何一条的视频处理设备,其中控制器被配置为执行所述指令集以使视频处理设备:
生成所述多个输入视频帧的某个输入视频帧的分割;
基于所述输入视频帧的所述分割,设置编码单元或预测单元中的至少一个;以及
将所述编码单元或预测单元中的至少一个的信息发送到可编程硬件编码器,其中可编程硬件编码器被配置为使用所述编码单元或预测单元中的至少一个执行所述编码处理。
27、一种非临时的计算机可读存储介质,存储一组可由耦合于可编程硬件编码器的一个或多个处理器执行的指令集,其中,所述指令集的执行使可编程硬件编码器:
确定多个输入视频帧的第一信息;以及
基于所述第一信息,调整所述可编程硬件编码器对所述多个输入视频帧执行的编码处理。
28、一种计算机实现的方法,包括:
通过可编程硬件编码器对多个输入视频帧执行编码处理;
通过与可编程硬件编码器耦合的控制器确定所述多个输入视频帧的第一信息;以及
所述控制器根据所述第一个信息调整所述编码处理。
29、一种视频处理设备,包括:
可编程硬件解码器,配置为对编码视频数据执行解码过程,以生成解码数据;以及
与可编程硬件解码器耦合的控制器,该控制器被配置为执行一组指令,以使视频处理设备:
确定所述编码视频数据的第一信息;以及
根据所述第一信息调整解码过程
30、根据第29条所述的视频处理设备,其中,所述第一信息包括所述编码视频数据的非像素信息。
31、根据第29和30条中的任何一条的视频处理设备,其,中所述的指令集包括用于确定非像素信息的机器学习算法。
32、根据第29-31条中的任何一条的视频处理设备,其中,控制器被配置为执行指令集以使视频处理设备:
从可编程硬件解码器接收与编码帧中的多个编码块相关联的多个运动向量;
基于所述多个运动向量,确定编码帧的全局运动参数;
确定已解码数据中是否存在摄像机抖动;
当确定所述已编码帧中存在摄像机抖动时,根据全局运动参数对解码数据执行图像稳定。
33、根据第29-32条中的任何一条的视频处理设备,其中,控制器被配置为执行一组指令以使视频处理设备:
从可编程硬件解码器接收多个编码参数用于编码视频数据;以及
执行基于多个编码参数的机器学习算法来识别和跟踪解码数据所代表的对象。
34、根据第33条所述的视频处理设备,其中控制器被配置为执行指令集以使视频处理设备:
通过机器学习检测对象的多个属性;以及
通过机器学习,基于所述对象的所述多个属性来识别所述对象的事件。
35、根据29-34任何一个条款的视频处理设备,其中控制器被配置为执行指令集以使视频处理装置:
从可编程硬件接码器接收某个编码帧中的多个编码块相关的多个运动向量和编码模式;确定一种基于所述多个运动向量和编码模式的错误隐藏方法;并且,对于确定存在于编码帧中的错误,根据所确定的方法在解码过程中执行错误隐藏。
除了使用计算机可读的程序代码来实现上述方法外,上述方法还可以以逻辑门、开关、ASIC、可编程逻辑控制器和嵌入式微控制器的形式实现。因此,这样的控制器可以看作是一个硬件组件,控制器中包含并配置用于实现各种功能的设备也可以看作是硬件组件内部的结构。或者,配置来实现各种功能的设备甚至可以看作是配置来实现方法的软件模块和硬件组件内部的结构。
这种公开可以在由计算机(例如程序模块)执行的计算机可执行指令的一般背景中进行描述。通常,程序模块包括用于执行特定任务或实现特定抽象数据类型的例程、程序、对象、程序集、数据结构、类或类似的东西。本公开的实施例也可以在分布式计算环境中实现。在分布式计算环境中,通过通信网络连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中,包括存储设备。
需要注意的是,这里的关系术语,如“第一”和“第二”,仅用于区分一个实体或操作与另一个实体或操作,并不要求或暗示这些实体或操作之间有任何实际的关系或顺序。此外,“包括”、“有”,“包含”和“包括”和其他类似形式的目的是相当于在意义和开放式的在一个项目或项目的任何一个这些话并不意味着是一个详尽的清单的项目或复数个项目,或意味着仅限于上述项目或复数个项目。
在前面的规范中,已参考许多具体细节描述了实施例,这些细节可能因实现而异。可以对所述实施例进行某些适配和修改。从本文所披露的规范和实践的考虑,本技术领域的技术人员可以明显地看到其他实施例。本说明书和示例仅被视为示例,下列要求表明了披露的真实范围和精神。图中所示的步骤顺序也只是为了说明性的目的,并不打算仅限于任何特定的步骤顺序。同样地,那些精通本技术领域的人能够理解这些步骤可以在执行相同的方法时以不同的顺序执行。
Claims (28)
1.一种视频处理装置,包括:
可编程硬件编码器,其被配置为对多个输入视频帧执行编码处理;以及
与所述可编程硬件编码器耦合的控制器,所述控制器被配置为执行指令集以使所述视频处理设备:
确定所述多个输入视频帧的第一信息;以及
根据所述第一信息调整所述编码处理。
2.根据权利要求1所述的视频处理装置,其中,所述第一信息包括所述多个输入视频帧的非像素信息。
3.根据权利要求1所述的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理装置:
确定编码块的初始运动向量;
确定所述运动向量的搜索范围;以及
将所述初始运动向量和所述搜索范围发送到所述可编程硬件编码器,其中,所述可编程硬件编码器被配置为使用所述初始运动向量和所述搜索范围执行所述编码处理。
4.根据权利要求2所述的视频处理装置,其中,所述指令集包括用于确定所述非像素信息的机器学习算法。
5.根据权利要求1的所述视频处理装置,其中,所述第一信息包括所述多个输入视频帧中的某个输入视频帧中的ROI区域信息,且所述控制器被配置为执行所述指令集以使所述视频处理装置:
识别所述输入视频帧中的一个或多个ROI区域,以及
配置所述可编程硬件编码器,以使用第一计算复杂度对ROI区域编码,以及,使用与所述第一计算复杂度不同的第二计算复杂度对非ROI区域编码。
6.根据权利要求1所述的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理装置:
生成所述多个输入视频帧中的某个输入视频帧的分割,并且
将所述分割的信息发送给所述可编程硬件编码器,所述可编程硬件编码器基于所述分割,为编码块选择分区大小或编码模式中的至少一种。
7.根据权利要求6所述的视频处理设备,其中,可编程硬件编码器被配置为在分割的边界上使用第一分区大小,并在所述分割内使用第二个分区大小,所述第一个分区大小小于所述第二个分区大小。
8.根据权利要求6所述的视频处理系统,其中,可编程硬件编码器被配置为基于同一所述分割内其他编码块使用的一种或多种编码模式,确定分割内编码块的编码模式。
9.根据权利要求1所述视频处理装置,其中,所述多个输入视频帧在视频转码处理中由解码器生成,所述控制器被配置为执行所述指令集以使所述视频处理装置:
从所述解码器接收信息,该信息示出所述多个输入视频帧中的某个输入视频帧的比特数或平均量化参数中的至少一个;
根据所述比特数或平均量化参数中的至少一个,确定所述输入视频帧的计算复杂度;以及
根据所述计算复杂度调整编码处理的比特率。
10.根据权利要求1所述视频处理装置,其中,所述多个输入视频帧在视频转码处理中由解码器生成,所述控制器被配置为执行所述指令集以使所述视频处理装置:
从解码器接收信息,该信息示出多个输入视频帧中的某个输入视频帧的初始运动向量或初始编码模式中的至少一个;
分别基于所述初始运动向量或所述初始始编码模式中的至少一个,确定目标运动向量或目标编码模式中的至少一个;以及
基于所述目标运动向量或所述目标编码模式中的至少一个,执行所述编码处理的所述运动估计和模式决策。
11.根据权利要求1所述的视频处理设备,其中,所述可编程硬件编码器为第一编码器,所述控制器配置为执行所述指令集以使所述视频处理设备:
接收第二编码器所使用的编码参数,该编码参数用于编码所述多个输入视频帧中的一个或多个;以及
调整所述编码参数并将所述已调整编码参数发送给所述可编程硬件编码器,所述可编程硬件编码器被配置为基于所述已调整编码参数执行所述编码处理。
12.根据权利要求1 1所述的视频处理装置,其中,所述编码参数包括运动向量或编码模式中的至少一个。
13.根据权利要求1所述视频处理装置,其中,所述多个输入视频帧在视频转码过程中由解码器生成,所述控制器被配置为执行所述指令集以使所述视频处理装置:
从所述解码器接收信息,该信息示出用于所述多个输入视频帧中的某个输入视频帧的编码参数;
基于所述编码参数,识别所述输入视频帧中的ROI区域;以及
配置可编程硬件编码器,以提高所述ROI区域内的图像质量。
14.根据权利要求13所述的视频处理装置,其中,所述编码参数包括运动向量或量化参数中的至少一个。
15.根据权利要求1所述的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理装置:
基于与所述输入视频帧关联的音频信息,为所述多个输入视频帧的某个输入视频帧分配权重;
以与所述权重成正比的方式,确定图像质量;以及
配置所述可编程硬件编码器,以根据所述已确定图像质量对输入视频帧进行编码。
16.根据权利要求1所述的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理装置:
从所述可编程硬件编码器接收运动向量或估算速率失真信息中的至少一个;
基于所述接收的运动向量或所述估算速率失真信息,确定编码模式或运动向量中的至少一个;以及
将所述编码模式或运动向量中的至少一个发送到所述可编程硬件编码器,所述可编程硬件编码器被配置为根据所述编码模式或所述运动向量的至少一个执行所述编码处理。
17.根据权利要求1所述的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理装置:
确定多个输入视频帧中的某个输入视频帧的编码树单元结构;以及
向可编程硬件编码器发送示出所述编码树单元结构的信息,其中,所述可编程硬件编码器被配置为根据编码树单元结构对输入的视频帧进行分区。
18.根据权利要求1所述的视频处理装置,其中所述控制器被配置为执行所述指令集以使所述视频处理装置:
确定所述多个输入视频帧中的第一未编码I帧;
确定多个输入视频帧中的一个或多个附加未编码I帧;
索引所述第一和附加未编码I帧;
根据所述第一和附加未编码I帧的所述索引,确定图片组;以及
配置可编程硬件编码器,以根据所述已确定图片组对所述多个输入视频帧编码。
19.根据权利要求18所述视频处理装置,其中,所述多个输入视频帧在视频转码处理中由解码器生成,并且,所述控制器被配置为执行所述指令集以使所述视频处理装置:
从所述解码器接收信息,该信息示出用于对所述多个输入视频帧编码的内部编码单元;以及
基于所述内部编码单元确定所述第一未编码I帧。
20.根据权利要求18所述的视频处理设备,其中,所述指令集包括用于确定所述第一未编码I帧的机器学习算法。
21.根据权利要求1所述的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理装置:
确定所述多个输入视频帧的相似度;
基于所述多个输入视频帧的相似度,为多个输入视频帧中的每一个分配位预算;以及
将所述位预算发送到所述可编程硬件编码器,所述可编程硬件编码器被配置为根据相应的所述位预算对所述多个输入视频帧编码。
22.根据权利要求21所述的视频处理装置,其中,所述的指令集包括用于确定所述多个输入视频帧的相似度的强化学习算法。
23.根据权利要求1所述的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理装置:
确定所述多个输入视频帧的相似度;
基于所述多个输入视频帧的相似度,确定一个或多个参考帧;以及
将所述一个或多个参考帧的信息发送到所述可编程硬件编码器,所述可编程硬件编码器被配置为使用所述一个或多个参考帧对所述多个输入视频帧编码。
24.根据权利要求23所述的视频处理装置,其中,所述的指令集包括用于确定所述多个输入视频帧的所述相似度的机器学习算法。
25.根据权利要求1所述的视频处理装置,其中,所述控制器被配置为执行所述指令集以使所述视频处理装置:
识别所述多个输入视频帧的某个输入视频帧中的一个或多个ROI区域;
基于所述一个或多个ROI区域,设置编码单元或预测单元中的至少一个;以及
将所述编码单元或预测单元中的至少一个的信息发送到所述可编程硬件编码器,所述可编程硬件编码器配置为使用所述编码单元或预测单元中的至少一个执行所述编码处理。
26.根据权利要求1所述的视频处理装置,其中所述控制器被配置为执行所述指令集以使所述视频处理装置:
生成所述多个输入视频帧的某个输入视频帧的分割;
基于所述输入视频帧的所述分割,设置编码单元或预测单元中的至少一个;以及
将所述编码单元或预测单元中的至少一个的信息发送到可编程硬件编码器,其中可编程硬件编码器被配置为使用所述编码单元或预测单元中的至少一个执行所述编码处理。
27.一种非临时的计算机可读存储介质,存储一组可由耦合于可编程硬件编码器的一个或多个处理器执行的指令集,其中,所述指令集的执行使可编程硬件编码器:
确定多个输入视频帧的第一信息;以及
基于所述第一信息,调整所述可编程硬件编码器对所述多个输入视频帧执行的编码处理。
28.一种计算机实现的方法,包括:
通过可编程硬件编码器对多个输入视频帧执行编码处理;
通过与可编程硬件编码器耦合的控制器,确定所述多个输入视频帧的第一信息;以及
所述控制器根据所述第一个信息调整所述编码处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962853049P | 2019-05-26 | 2019-05-26 | |
US62/853,049 | 2019-05-26 | ||
PCT/US2020/031642 WO2020242738A1 (en) | 2019-05-26 | 2020-05-06 | Ai-assisted programmable hardware video codec |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113874916A true CN113874916A (zh) | 2021-12-31 |
Family
ID=73456401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080039129.7A Pending CN113874916A (zh) | 2019-05-26 | 2020-05-06 | Ai辅助的可编程硬件视频编解码器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11223838B2 (zh) |
CN (1) | CN113874916A (zh) |
WO (1) | WO2020242738A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11210547B2 (en) * | 2019-03-20 | 2021-12-28 | NavInfo Europe B.V. | Real-time scene understanding system |
US11166035B1 (en) * | 2020-04-30 | 2021-11-02 | Wangsu Science and Technology Co., Ltd. | Method and device for transcoding video |
US11514365B2 (en) * | 2020-06-15 | 2022-11-29 | Intel Corporation | Immutable watermarking for authenticating and verifying AI-generated output |
CN114265648B (zh) * | 2020-09-16 | 2023-12-26 | 阿里巴巴集团控股有限公司 | 编码调度方法、服务器及客户端和获取远程桌面的系统 |
CN113301332B (zh) * | 2021-04-12 | 2024-06-21 | 阿里巴巴创新公司 | 视频解码方法、系统和介质 |
CN113747170A (zh) * | 2021-09-08 | 2021-12-03 | 深圳市算筹信息技术有限公司 | 一种使用ai芯片进行视频编解码运算的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102098517A (zh) * | 2006-08-28 | 2011-06-15 | 汤姆森许可贸易公司 | 用于确定解码视频块中的期望失真的方法及设备 |
US20180139456A1 (en) * | 2008-11-17 | 2018-05-17 | Checkvideo Llc | Analytics-modulated coding of surveillance video |
JP2018201117A (ja) * | 2017-05-26 | 2018-12-20 | 日本電気株式会社 | 映像符号化装置、映像符号化方法およびプログラム |
US20190075301A1 (en) * | 2017-09-01 | 2019-03-07 | Apple Inc. | Machine learning video processing systems and methods |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5457780A (en) * | 1991-04-17 | 1995-10-10 | Shaw; Venson M. | System for producing a video-instruction set utilizing a real-time frame differential bit map and microblock subimages |
US7738551B2 (en) * | 2002-03-18 | 2010-06-15 | International Business Machines Corporation | System and method for processing a high definition television (HDTV) image |
US7460725B2 (en) * | 2006-11-09 | 2008-12-02 | Calista Technologies, Inc. | System and method for effectively encoding and decoding electronic information |
WO2014120367A1 (en) * | 2013-01-30 | 2014-08-07 | Intel Corporation | Content adaptive parametric transforms for coding for next generation video |
US11593632B2 (en) | 2016-12-15 | 2023-02-28 | WaveOne Inc. | Deep learning based on image encoding and decoding |
KR102535361B1 (ko) * | 2017-10-19 | 2023-05-24 | 삼성전자주식회사 | 머신 러닝을 사용하는 영상 부호화기 및 그것의 데이터 처리 방법 |
US10147216B1 (en) * | 2017-11-01 | 2018-12-04 | Essential Products, Inc. | Intelligent camera |
-
2020
- 2020-05-06 US US16/868,065 patent/US11223838B2/en active Active
- 2020-05-06 CN CN202080039129.7A patent/CN113874916A/zh active Pending
- 2020-05-06 WO PCT/US2020/031642 patent/WO2020242738A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102098517A (zh) * | 2006-08-28 | 2011-06-15 | 汤姆森许可贸易公司 | 用于确定解码视频块中的期望失真的方法及设备 |
US20180139456A1 (en) * | 2008-11-17 | 2018-05-17 | Checkvideo Llc | Analytics-modulated coding of surveillance video |
JP2018201117A (ja) * | 2017-05-26 | 2018-12-20 | 日本電気株式会社 | 映像符号化装置、映像符号化方法およびプログラム |
US20190075301A1 (en) * | 2017-09-01 | 2019-03-07 | Apple Inc. | Machine learning video processing systems and methods |
Also Published As
Publication number | Publication date |
---|---|
US20200374534A1 (en) | 2020-11-26 |
WO2020242738A1 (en) | 2020-12-03 |
US11223838B2 (en) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11223838B2 (en) | AI-assisted programmable hardware video codec | |
JP7336004B2 (ja) | ニューラルネットワークを利用したコーデック | |
KR20220150298A (ko) | 순환-기반 머신 러닝 시스템들을 사용한 비디오 압축 | |
US9392292B2 (en) | Parallel encoding of bypass binary symbols in CABAC encoder | |
WO2019001108A1 (zh) | 视频处理的方法和装置 | |
US20090010337A1 (en) | Picture decoding using same-picture reference for pixel reconstruction | |
US20090010338A1 (en) | Picture encoding using same-picture reference for pixel reconstruction | |
CN115956363A (zh) | 用于后滤波的内容自适应在线训练方法及装置 | |
US20120155540A1 (en) | Pixel retrieval for frame reconstruction | |
US11831909B2 (en) | Learned B-frame coding using P-frame coding system | |
CN114125449B (zh) | 基于神经网络的视频处理方法、系统和计算机可读介质 | |
US20130128975A1 (en) | Method and system for organizing pixel information in memory | |
CN114501031B (zh) | 一种压缩编码、解压缩方法以及装置 | |
US20220103831A1 (en) | Intelligent computing resources allocation for feature network based on feature propagation | |
TW202420815A (zh) | 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq | |
US20170272775A1 (en) | Optimization of interframe prediction algorithms based on heterogeneous computing | |
WO2024005660A1 (en) | Method and apparatus for image encoding and decoding | |
CN113301332A (zh) | 视频解码方法、系统和介质 | |
WO2023102868A1 (en) | Enhanced architecture for deep learning-based video processing | |
US20220094931A1 (en) | Low frequency non-separable transform and multiple transform selection deadlock prevention | |
US20240046527A1 (en) | End-to-end optimization of adaptive spatial resampling towards machine vision | |
US20240357118A1 (en) | Methods and non-transitory computer readable storage medium for spatial resampling towards machine vision | |
WO2024060213A1 (en) | Viewport switch latency reduction in live streaming | |
US20220094984A1 (en) | Unrestricted intra content to improve video quality of real-time encoding | |
WO2023184206A1 (en) | Enhanced presentation of tiles of residual sub-layers in low complexity enhancement video coding encoded bitstream |
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 |