CN117036912A - 视频ai推理的优化方法、装置、计算机设备、存储介质 - Google Patents
视频ai推理的优化方法、装置、计算机设备、存储介质 Download PDFInfo
- Publication number
- CN117036912A CN117036912A CN202211143070.3A CN202211143070A CN117036912A CN 117036912 A CN117036912 A CN 117036912A CN 202211143070 A CN202211143070 A CN 202211143070A CN 117036912 A CN117036912 A CN 117036912A
- Authority
- CN
- China
- Prior art keywords
- video
- reasoning
- data
- model
- image frame
- 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
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000003860 storage Methods 0.000 title claims abstract description 22
- 238000005457 optimization Methods 0.000 title abstract description 46
- 230000001133 acceleration Effects 0.000 claims abstract description 170
- 230000000007 visual effect Effects 0.000 claims abstract description 161
- 238000012545 processing Methods 0.000 claims abstract description 88
- 238000007781 pre-processing Methods 0.000 claims abstract description 61
- 238000006243 chemical reaction Methods 0.000 claims abstract description 47
- 238000004590 computer program Methods 0.000 claims abstract description 26
- 238000000605 extraction Methods 0.000 claims description 102
- 230000008569 process Effects 0.000 claims description 32
- 230000006870 function Effects 0.000 claims description 20
- 238000012549 training Methods 0.000 claims description 17
- 238000013473 artificial intelligence Methods 0.000 abstract description 12
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 37
- 238000005516 engineering process Methods 0.000 description 32
- 238000004364 calculation method Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 16
- 230000018109 developmental process Effects 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000004927 fusion Effects 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000013210 evaluation model Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000006317 isomerization reaction Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- 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/94—Hardware or software architectures specially adapted for image or video understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
- G06V20/41—Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
- G06V20/46—Extracting features or characteristics from the video content, e.g. video fingerprints, representative shots or key frames
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
- G06V20/49—Segmenting video sequences, i.e. computational techniques such as parsing or cutting the sequence, low-level clustering or determining units such as shots or scenes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请涉及一种视频AI推理的优化方法、装置、计算机设备、存储介质和计算机程序产品。方法可应用于云计算领域、人工智能领域和智能交通领域。包括:通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存;通过图形处理器中的计算单元,从显存中读取视频解码数据并进行色彩空间转换处理,得到第一图像帧数据,对第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;调用对第一视觉模型进行推理加速所得的视觉加速模型;基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,得到推理结果。采用本方法能够有效减少视频AI推理整体流程的时间开销,实现了视频AI推理的整体流程性能最优。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种视频AI推理的优化方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术以及互联网技术的发展,视频AI推理在计算机视觉等领域发挥着重要的作用,在AI技术的辅助下,视频AI推理可以进行更深入的场景理解,例如,自动从视频中推理出不同的镜头片段。
然而,目前的视频AI推理方式中,通常需要中央处理器(central processingunit,简称CPU)和图形处理器(graphics processing unit,简称GPU)协同处理,以完成视频AI推理的整体流程,在协同处理的过程中,由于PCIe带宽有限会造成可观的数据IO性能损耗,因此,容易导致视频AI推理整体流程的时间开销较大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够有效减少视频AI推理整体流程的时间开销的视频AI推理的优化方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种视频AI推理的优化方法。所述方法包括:通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在所述图形处理器的显存;通过所述图形处理器中的计算单元,从所述显存中读取所述视频解码数据;对所述视频解码数据进行色彩空间转换处理,得到第一图像帧数据;通过所述图形处理器中的计算单元,对所述第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;调用对第一视觉模型进行推理加速所得的视觉加速模型;基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理,得到推理结果。
第二方面,本申请还提供了一种视频AI推理的优化装置。所述装置包括:解码模块,用于通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在所述图形处理器的显存;读取模块,用于通过所述图形处理器中的计算单元,从所述显存中读取所述视频解码数据;处理模块,用于对所述视频解码数据进行色彩空间转换处理,得到第一图像帧数据;通过所述图形处理器中的计算单元,对所述第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;调用模块,用于调用对视觉模型进行推理加速所得的视觉加速模型;推理模块,用于基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理,得到推理结果。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在所述图形处理器的显存;通过所述图形处理器中的计算单元,从所述显存中读取所述视频解码数据;对所述视频解码数据进行色彩空间转换处理,得到第一图像帧数据;通过所述图形处理器中的计算单元,对所述第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;调用对第一视觉模型进行推理加速所得的视觉加速模型;基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理,得到推理结果。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在所述图形处理器的显存;通过所述图形处理器中的计算单元,从所述显存中读取所述视频解码数据;对所述视频解码数据进行色彩空间转换处理,得到第一图像帧数据;通过所述图形处理器中的计算单元,对所述第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;调用对第一视觉模型进行推理加速所得的视觉加速模型;基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理,得到推理结果。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在所述图形处理器的显存;通过所述图形处理器中的计算单元,从所述显存中读取所述视频解码数据;对所述视频解码数据进行色彩空间转换处理,得到第一图像帧数据;通过所述图形处理器中的计算单元,对所述第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;调用对第一视觉模型进行推理加速所得的视觉加速模型;基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理,得到推理结果。
上述视频AI推理的优化方法、装置、计算机设备、存储介质和计算机程序产品,通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存;通过图形处理器中的计算单元,从显存中读取视频解码数据,并对视频解码数据进行色彩空间转换处理,得到第一图像帧数据;通过图形处理器中的计算单元,对第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;调用对第一视觉模型进行推理加速所得的视觉加速模型;基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,得到推理结果。由于是通过图形处理器上的硬件编解码器直接对获取到的视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存,故可以直接利用图形处理器中的计算单元,从图形处理器的显存中读取到视频解码数据,并对视频解码数据进行色彩空间转换处理,得到第一图像帧数据,进而对所得的第一图像帧数据进行分组预处理和图像推理,即视频抽帧后的第一图像帧数据可在图形处理器即GPU内部无缝衔接后续的GPU预处理和模型推理,避免了图像帧数据在CPU和GPU之间的频繁IO开销,从而有效减少了视频AI推理整体流程的时间开销,实现了视频AI推理的整体流程性能最优。
附图说明
图1为一个实施例中视频AI推理的优化方法的应用环境图;
图2为一个实施例中视频AI推理的优化方法的流程示意图;
图3为一个实施例中图像预处理CUDA批处理加速的流程示意图;
图4为一个实施例中CV模型推理加速的流程示意图;
图5为一个实施例中视频抽帧的流程示意图;
图6为一个实施例中视频AI全流程GPU推理加速的系统架构示意图;
图7为一个实施例中视频抽帧全流程GPU异构优化的流程示意图;
图8为一个实施例中视频AI推理整体流程并发执行的流程示意图;
图9为一个实施例中视频AI推理加速流程的示意图;
图10为一个实施例中视频AI推理的优化装置的结构框图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
所谓人工智能云服务,一般也被称作是AIaaS(AI as a Service,中文为“AI即服务”)。这是目前主流的一种人工智能平台的服务方式,具体来说AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个AI主题商城:所有的开发者都可以通过API接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的AI框架和AI基础设施来部署和运维自已专属的云人工智能服务。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
计算机视觉技术(Computer Vision,CV)计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、OCR、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建、自动驾驶、智慧交通等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
本申请实施例提供的视频AI推理的优化方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。服务器104可以从本地获取待处理的视频数据,服务器104也可以从终端102获取待处理的视频数据,进一步的,服务器可以通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存,并通过图形处理器中的计算单元,从显存中读取视频解码数据,对视频解码数据进行色彩空间转换处理,得到第一图像帧数据,并通过图形处理器中的计算单元,对第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;服务器调用对第一视觉模型进行推理加速所得的视觉加速模型,并基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,得到推理结果。
其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。
服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。可以理解,本申请实施例提供的服务器104也可以是区块链系统中的服务节点,该区块链系统中的各服务节点之间形成组成点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。
在一个实施例中,如图2所示,提供了一种视频AI推理的优化方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202,通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存。
其中,图形处理器(graphics processing unit,GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。比如,图形处理器可以是做图像和图形进行相关运算工作的微处理器。
硬件编解码器是指GPU上的硬件编解码器,例如,本申请实施例中的硬件编解码器可以是GPU上通常闲置的硬件编解码NVDEC芯片。
视频数据是指待处理的原始视频,例如,本申请中的视频数据可以是一个完整的视频短片,通常可以将任意长度的连续视频镜头序列视为一个视频短片,即视频数据可以是包含至少两个视频镜头组成的序列,每个视频镜头中包含相机不间断地拍摄的连续帧,一个场景由连续的镜头组成,描述了一个相同的短片故事。
步骤204,通过图形处理器中的计算单元,从显存中读取视频解码数据。
计算单元是指GPU上的计算单元,例如,本申请中的计算单元可以为GPU CUDACore,即GPU上数以千计的CUDA Core计算单元。
步骤206,对视频解码数据进行色彩空间转换处理,得到第一图像帧数据。
第一图像帧数据是指对原始的视频数据进行抽帧处理后,得到的图像帧数据,即为第一图像帧数据,例如,原始视频数据中包含10帧图像帧,服务器可以根据指定的帧间隔,从10帧图像帧中,抽取图像帧A1、图像帧A4以及图像帧A7这3帧作为第一图像帧数据。抽帧处理是指根据指定的帧间隔,对视频数据中的视频图像帧进行抽取的操作,例如,原始视频数据中包含500帧图像帧,服务器可以根据指定的帧间隔,从500帧图像帧中,抽取400帧作为目标图像帧。本申请中的视频抽帧处理可以包括视频解码、色彩空间转换、JPEG图片编码等流程组成。
具体地,终端设备中安装有摄像头,终端可以通过摄像头采集各种场景下的原始视频数据,并上传至服务器,服务器获取到原始视频数据之后,服务器可以将原始视频数据直接传递到GPU抽帧模块,例如,服务器中的GPU抽帧模块可以基于预先配置的软件开发工具包即SDK,直接从中央处理器即CPU获取待处理的原始视频数据;服务器中的GPU抽帧模块从CPU获取到待处理的原始视频数据之后,GPU抽帧模块可以根据原始视频数据的基本信息,确定抽帧处理的抽帧策略,并基于所确定的抽帧策略,对获取到的原始视频数据进行抽帧处理,即可得到抽帧处理后的第一图像帧数据。
在通常情况下,服务器获取到原始视频数据之后,服务器会采用CPU方式对视频数据进行抽帧处理,即服务器通过CPU进行抽帧处理,由于采用CPU方式抽帧速度较慢,且计算成本高,通常需要占用大量CPU核,属于软解码,加速效果有限,并且后续图像预处理的过程中会涉及到大量像素并行计算,CPU计算速度较慢,因此,为了解决上述方式中计算速度较慢的问题,本申请实施例中的服务器可以通过GPU上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存,由于解码后的图像帧数据会保持在GPU显存,因此,后续对解码图像进行图像预处理和JPEG编码都可以直接进行,有效避免了CPU到GPU图片帧数据交换,即解码后得到的图像帧数据,不再传输到CPU,而是保持在GPU显存,后续的色彩空间转换、图片编码都是通过GPU上的CUDA编程实现,即服务器可以通过GPU上中的计算单元(CUDA Core),从显存中直接读取视频解码数据,并对视频解码数据进行色彩空间转换处理,得到第一图像帧数据。
举个例子,假设服务器获取到的原始视频数据A包含:镜头1→镜头2→镜头3,即原始视频数据中包含3个视频镜头分别为镜头1、镜头2以及镜头3,并且每个镜头中所包含的视频帧的帧数不同,假设镜头1中包含10帧连续帧、镜头2中包含20帧连续帧,以及镜头3中包含25帧连续帧,一共55帧,则服务器中的GPU抽帧模块可以通过预设接口从CPU获取到待处理的原始视频数据A。进一步的,GPU抽帧模块可以根据原始视频数据A的帧率,确定抽帧处理的抽帧策略,假设抽帧策略中需要抽取的目标帧数为40帧,则GPU抽帧模块可以基于所确定的抽帧策略,对原始视频数据A中的55帧图像帧数据进行抽帧处理,即可得到抽帧处理后的40帧第一图像帧数据。
以1080P视频为例,解码后单帧图片数据大小约5M,30M视频解码后约700帧,总大小可达到3G+。服务器可以利用NVIDIA GPU上通常闲置的NVDEC芯片对1080P视频进行解码,即采用GPU的NVDEC硬解码方式,并将硬解码所得的700帧数据直接保存在NVIDIA GPU的显存,不再传输到CPU,后续服务器可以通过GPU上中的CUDA Core,从显存中直接读取到解码的700帧数据,并对700帧数据进行色彩空间转换处理,比如,将解码后的700帧数据从YUV格式转换为RGB格式,以得到700帧RGB格式的数据。
步骤208,通过图形处理器中的计算单元,对第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据。
其中,分组预处理是指按照分组方式对图像帧数据进行预处理,即支持批次化的图像预处理,例如,假设抽帧处理得到了40帧图像帧,服务器通过图形处理器中的计算单元,对抽帧处理得到的40帧图像帧进行分组预处理时,可以将40帧图像帧分为4组,每组中包含10帧,即计算单元每次可以对每个分组中的10帧图像帧进行批次化的预处理。
第二图像帧数据是指预处理后得到的图像帧数据。图像预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而改进特征抽取、图像分割、匹配和识别的可靠性。例如,对图像进行预处理可以包括对图像进行几何变换、归一化、平滑、复原和增强等处理。
具体地,当第一图像帧数据积累到一定的批次时,服务器可以通过调度模块将批次化的图像帧数据分发至CUDA图像预处理模块,以使CUDA图像预处理模块对批次化的图像帧数据进行预处理,即服务器可以通过图形处理器中的多个计算单元,同时对不同分组的图像帧数据进行批次化的预处理,即可得到各个分组内的预处理后的第二图像帧数据,实现图像预处理的加速。
举个例子,如图3所示,为图像预处理CUDA批处理加速的流程示意图。假设抽帧处理得到了30帧图像帧,服务器可以利用GPU上数以千计的CUDA Core计算单元,对抽帧处理得到的30帧图像帧进行分组预处理。比如,以每3帧作为一个分组,如图3中所示,当第一图像帧数据积累到3帧时,服务器可以将每3帧图像帧作为一个分组或者一个批次,并利用GPU上的CUDA Core计算单元,对每个分组内的3帧图像帧数据进行批次化的预处理,即服务器将抽帧处理得到的30帧图像帧分为10组,每组中包含3帧,并通过GPU上的多个CUDA Core计算单元并行对10个分组中的图像帧数据进行预处理。
步骤210,调用对第一视觉模型进行推理加速所得的视觉加速模型。
其中,第一视觉模型是指原始模型,比如,本申请中的第一视觉模型可以是CV(Computer Vision)模型,即计算机视觉模型,第一视觉模型可以是基于原始训练框架进行训练所得的神经网络模型,如基于Pytorch或TensorFlow训练框架的第一视觉模型,第一视觉模型可以是深度学习模型。在实际应用中,第一视觉模型也可以是图像识别模型、图像分类模型、视频推荐模型或视频潜力评估模型等。
视觉加速模型是指对第一视觉模型进行推理加速后所得的模型。由于模型网络计算量大,通常模型推理需要占用大量的硬件资源,以及较长的时耗。为了使得模型能提供又快又省的线上服务能力,通常的手段是对模型推理做加速和性能优化。即推理加速是指在进行推理过程中,对第一视觉模型做加速和性能优化处理,从而使模型提升推理的速度,更快地完成业务服务。
具体地,服务器通过图形处理器中的计算单元,对第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据之后,服务器可以调用对第一视觉模型进行推理加速所得的视觉加速模型,以使视觉加速模型可以在图形处理器上运行,从而进行推理过程。其中,服务器对第一视觉模型进行推理加速的具体步骤如下:
如图4所示,为CV模型推理加速的流程示意图。服务器通过图形处理器运行第一视觉模型,确定运行的第一视觉模型在原始训练框架上的GPU推理结果,此外还可以确定第一视觉模型在原始训练框架上的GPU推理耗时;进一步的,服务器可以将第一视觉模型转换为一种统一的模型结构描述格式,比如,如图4中所示的服务器将不同的第一视觉模型导出为ONNX(Open Neural Network Exchange,开放神经网络交换)格式的网络模型(简称为ONNX模型),并解析ONNX模型即ONNX神经网络,逐层做分析和优化,其中,服务器在对ONNX神经网络逐层做分析和优化时,具体的优化手段包括但不限于如图4中所示的算子、图层融合、混合精度、编译优化等,最后将优化后的ONNX神经网络保存为适合当前GPU和CUDA执行的序列化文件格式,当服务器需要调用上述优化后的ONNX神经网络进行推理时,服务器通过GPU和CUDA执行上述已保存的序列化文件格式即可实现,即本申请中服务器调用对第一视觉模型进行推理加速所得的视觉加速模型,可以为调用上述优化后的ONNX神经网络。由于主流的推理加速框架都支持ONNX格式,因此可以将训练得到的第一视觉模型统一转换为ONNX这种统一的格式进行优化加速。
举个例子,如图4中所示,在实际业务中,Pytorch、TensorFlow和Caffe等AI框架,都提供了便捷的API,服务器可以使用Pytorch、TensorFlow或Caffe这三种AI框架,将训练好的CV模型导出为ONNX格式的网络模型,即导出为ONNX模型,并解析ONNX模型,服务器可以采用如图4中所示的算子、图层融合、混合精度、编译优化的优化方式对ONNX模型逐层做分析和优化,最后将优化后的ONNX模型保存为适合当前设备GPU和CUDA执行的序列化文件格式,即服务器可以将优化后的ONNX模型,转换成目标设备上支持的模型格式,比如在推理和部署过程中进行如下转换:Pytorch→ONNX→TensorRT,或Pytorch→ONNX→OpenVINO。
步骤212,基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,得到推理结果。
其中,图像推理是指利用视觉加速模型对图像帧数据做特征提取或预测,例如,利用视觉加速模型对待分割视频中的图像帧数据进行视频场景分割,或者利用视觉加速模型对待分割视频中的图像帧数据进行镜头切分。
推理结果是指视觉加速模型对输入的各组内的第二图像帧数据进行推理所得的结果。例如,假设待分割视频A为:镜头1→镜头2→镜头3,即待分割视频中包含3个视频镜头,则服务器将待分割视频A输入视觉加速模型中,输出序列为110,则表示待分割视频A中镜头1是场景边界,镜头2也是场景边界,镜头3为非场景边界,则对待分割视频A进行视频场景分割的推理结果为:镜头1为一个视频场景,镜头2→镜头3为另一个视频场景。
具体地,服务器调用对第一视觉模型进行推理加速所得的视觉加速模型之后,服务器可以基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,以得到对应的推理结果。可以理解,将本申请中的视觉加速模型部署到不同的服务中,则可以得到不同类型的推理结果。例如,当需要对视频数据中的镜头进行切分时,服务器可以基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,以得到用于表示镜头切分结果的推理结果。
本实施例中,通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存;通过图形处理器中的计算单元,从显存中读取视频解码数据,并对视频解码数据进行色彩空间转换处理,得到第一图像帧数据;通过图形处理器中的计算单元,对第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;调用对第一视觉模型进行推理加速所得的视觉加速模型;基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,得到推理结果。由于是通过图形处理器上的硬件编解码器直接对获取到的视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存,避免了存储视频数据的磁盘IO操作,故可以直接利用图形处理器中的计算单元,从图形处理器的显存中读取到视频解码数据,并对视频解码数据进行色彩空间转换处理,得到第一图像帧数据,进而对抽帧处理所得的第一图像帧数据进行分组预处理和图像推理,即视频抽帧后的图像帧数据可在图形处理器即GPU内部无缝衔接后续的GPU预处理和模型推理,避免了图像帧数据在CPU和GPU之间的频繁IO开销,从而有效减少了视频AI推理整体流程的时间开销,实现了视频AI推理的整体流程性能最优,同时也大幅降低了模型部署资源成本,达到降本增效的效果。
在其中一个实施例中,所述方法还包括:
对视频解码数据进行色彩空间转换处理,得到视频转换数据;
将视频转换数据进行编码,得到视频编码数据;
将视频编码数据进行存储。
具体地,如图5所示,为视频抽帧的流程示意图。服务器可以通过GPU上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在GPU的显存后,服务器还可以对视频解码数据进行色彩空间转换处理,得到视频转换数据;进一步的,如图5中所示,服务器还可以将视频转换数据进行JPEG编码,以得到JPEG编码后的视频编码数据,并将所得的视频编码数据进行存储。传统方式中通常使用CPU抽帧,即使部分应用中使用了GPU抽帧方式,也都会将解码出来的原始图像帧默认先传输回CPU,由于PCIe带宽有限会造成很大的性能开销,因此,解决了性能开销的问题,本实施例中,通过将软解码过程改为GPU的NVDEC硬解码,并将解码后的图像帧保持在GPU显存,不再传输到CPU,使得后续的图像预处理和JPEG编码都可以直接进行,即后续的色彩空间转换、图片编码都可以利用GPU上的CUDA编程实现,直接从对应的显存位置获取图像帧进行处理,无需将解码出来的原始图像帧传输回CPU,实现了中间过程无CPU到GPU图片帧数据交换,避免出现硬件间的数据IO瓶颈,有效减少视频AI推理整体流程的时间开销,达到既提速又提效的效果。
在一个实施例中,步骤208具体可以包括:确定分组数量;每当第一图像帧数据的数量积累到分组数量时,依次将各分组数量的第一图像帧数据作为一个分组;通过图形处理器中的计算单元,对各分组内的第一图像帧数据进行预处理,得到各分组内的第二图像帧数据。
其中,分组数量是指每个分组中所包含的第一图像帧数据的数量,例如,当分组数量为3时,则服务器以每3帧第一图像帧数据作为一个分组。
具体的,如图3中所示,服务器可以基于预设的分组策略,确定分组数量,假设服务器确定分组数量为3,每当第一图像帧数据的数量积累到3帧时,服务器可以依次将每3帧图像帧作为一个分组或者一个批次,并利用GPU上的CUDA Core计算单元,对每个分组内的3帧图像帧数据进行批次化的预处理,例如,服务器将抽帧处理得到的30帧图像帧数据分为10组,每组中包含3帧,并通过GPU上的多个CUDA Core计算单元并行对10个分组中的图像帧数据进行预处理。由此使得,通过采用支持批次化的GPU CUDA图像预处理,充分利用了GPU上数以千计的CUDA Core计算单元,相较于传统方式中在CPU上逐张进行预处理计算,整体性能有大幅提升。
在一个实施例中,所述方法还包括:
当第一图像帧数据积累到预设批次时,通过图形处理器中的调度单元调用异步回调函数;异步回调函数用于返回通知消息;
在返回通知消息后,通过调度单元分别将各批次的第一图像帧数据分发至计算单元,以使计算单元对各批次的第一图像帧数据进行预处理。
其中,预设批次是指预设的批次数量,例如,预设批次可以设置为3,表示第一图像帧数据需要积累到3个批次。
具体地,当第一图像帧数据积累到预设批次时,服务器可以通过图形处理器中的调度单元调用异步回调函数,当返回通知消息后,服务器可以通过调度单元分别将各批次的第一图像帧数据分发至计算单元,以使各个计算单元对不同批次的第一图像帧数据进行预处理。
举个例子,如图3所示,为图像预处理CUDA批处理加速的示意图。假设抽帧处理得到了30帧图像帧,预设批次为5,以每3帧作为一个批次,共计10个批次,当第一图像帧数据积累到5个批次时,服务器可以通过调用异步回调函数通知调度模块,以使调度模块将批次化的图像帧交由CUDA图像预处理模块做预处理,即服务器可以利用GPU上的多个CUDA Core计算单元,并行对5个批次内的图像帧数据进行预处理。
传统的图像预处理一般是调用OpenCV提供的API在CPU上进行处理,速度慢并且必须将GPU上已抽取的图像帧交换回CPU做计算,而本实施例中,通过采用支持批次化的GPUCUDA图像预处理,充分利用了GPU上数以千计的CUDA Core计算单元,相较于传统方式中在CPU上逐张进行预处理计算,整体性能有大幅提升。
在一个实施例中,调用对第一视觉模型进行推理加速所得的视觉加速模型之前,所述方法还包括:
确定第一视觉模型的第一推理结果;
将第二视觉模型在各推理加速框架上进行推理加速,得到推理耗时和第二推理结果;第二视觉模型是对第一视觉模型进行模型格式转换所得的;
基于第一推理结果、推理耗时、第二推理结果和和目标性能指标值,确定目标推理加速框架;
根据目标推理加速框架,将第二视觉模型转换为视觉加速模型。
其中,第一推理结果是指第一视觉模型对输入的待处理数据进行推理所得的结果,第一推理结果包括推理值。
第二视觉模型是指一种用于在各种深度学习训练和推理框架转换的中间表示格式的网络模型,是对第一视觉模型进行模型格式转换所得的网络模型。该中间表示格式可以是主流的推理加速框架都支持的模型格式。
推理加速框架是指能够对第一视觉模型进行加速,以使模型推理的速度加快的框架或加速库,利用推理加速框架对第一视觉模型进行推理加速之后,在完成部署时,执行业务服务的速度可倍速提升。例如,在实际应用中,该推理加速框架可以是Onnxruntime框架、OpenVINO框架、TensorRT框架或自研的加速库。
其中,自研的加速库可以包括自研的GPU加速库。对于一些开源加速框架GPU推理不支持的算子或者速度较慢的算子,比如图像缩放算子通过C++来进行自定义GPU算子加速优化,自研的GPU加速库可以很好地兼容和加速。同时,自研的GPU加速库支持混合量化计算,对半精度浮点数(fp16)量化计算精度溢出和损失问题做了自动精度修正,通过自动检测模型每一层fp16计算溢出情况,自动定位溢出层,并自动将该层量化bit修改为fp32,自动修复模型最终计算结果。
第二推理结果是指第二视觉模型对输入的待处理数据进行推理所得的结果,第二推理结果包括推理值。
目标性能指标值是指用于衡量第二视觉模型在规定时间内处理流量的能力,如第二视觉模型在1分钟内可以处理N张待识别图像,N为大于1的正整数。在实际应用中,该目标性能指标值可以包括每秒查询率。
具体地,服务器通过图形处理器中的计算单元,对第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据之后,服务器可以确定第一视觉模型的第一推理结果,并将第二视觉模型在各推理加速框架上进行推理加速,得到推理耗时和第二推理结果;进一步的,服务器可以基于第一推理结果和第二推理结果,依次确定第二视觉模型在各推理加速框架上推理的误差,并将满足误差条件的误差对应的推理加速框架作为候选推理加速框架,例如,假设待处理数据为一张待识别图像,原始训练格式的深度学习模型即第一视觉模型的GPU推理值为0.9,而ONNX模型即第二视觉模型在Onnxruntime框架、TensorRT框架和自研的GPU加速库上的GPU推理值分别为0.85、0.82和0.84,则可以得到第二视觉模型在Onnxruntime框架、TensorRT框架和自研的GPU加速库上推理的误差分别为0.05、0.08和0.06。其中,第二视觉模型在Onnxruntime框架推理的误差最小。
进一步的,服务器可以基于第二网络模型在各个候选推理加速框架的推理耗时和目标性能指标值,从候选推理加速框架中选取目标推理加速框架,并根据目标推理加速框架,将第二视觉模型转换为最终的视觉加速模型,例如,服务器可以基于第二网络模型在各个候选推理加速框架的推理耗时和目标性能指标值,从候选推理加速框架中选取Onnxruntime框架作为目标推理加速框架,并将第二视觉模型转换为Onnxruntime框架对应的视觉加速模型。由此使得,通过将第一视觉模型转换为一种统一的模型结构描述格式的第二视觉模型,然后将第二视觉模型转换为GPU上性能最优的网络前向推理格式的视觉加速模型,使得最终得到的视觉加速模型支持批次化图像推理,能快速完成推理过程,实现了更优的推理性能,并且本实施例中的视觉加速模型在进行推理时满足推理耗时和相应性能指标要求,因此在将该视觉加速模型进行部署时,不仅降低部署时间,而且还大幅降低了模型部署资源成本,达到降本增效的效果。
在其中一个实施例中,确定第一视觉模型的第一推理结果的步骤,包括:
通过图形处理器运行第一视觉模型,确定运行的第一视觉模型在原始训练框架上的GPU推理结果。
其中,GPU推理结果是指第一视觉模型在GPU上运行所得到的推理结果。
具体地,服务器可以通过图形处理器运行第一视觉模型,并确定运行的第一视觉模型在原始训练框架上的GPU推理结果。此外,服务器还可以确定运行的第一视觉模型在原始训练框架上的GPU推理耗时。例如,服务器通过GPU运行原始训练格式模型,利用运行的原始训练格式模型进行推理,从而得到原始训练格式模型在Pytorch或TensorFlow训练框架上的GPU推理耗时,记为GPU_T1和GPU推理结果。由此使得,能够基于第一推理结果和第二推理结果,依次确定第二视觉模型在各推理加速框架上推理的误差,并从满足误差条件的误差对应的推理加速框架中确定目标推理加速框架,以使得最终转换得到的视觉加速模型具有更优的推理性能。
在一个实施例中,通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存之前,所述方法还包括:
基于预先配置的软件开发工具包,调用目标接口函数;
基于目标接口函数,从中央处理器获取待处理的视频数据。
其中,软件开发工具包(Software Development Kit,SDK)是指一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。本申请中的软件开发工具包可以是预先配置的GPU抽帧SDK。
目标接口函数是指用于传输视频内容到GPU抽帧模块的接口函数,例如,本申请中的目标接口函数可以是抽帧接口函数。
具体地,传统的视频AI推理中的视频抽帧,通常使用FFmpeg封装的能力,由于使用的python ffmpeg方式,对应的抽帧接口需要先将视频保存成文件,即调用抽帧接口前可能需要先将视频保存成文件形式,依赖性能较低的磁盘IO操作导致较长的时耗开销,为了消除IO操作产生的性能瓶颈,本实施例中,服务器在通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在图形处理器的显存之前,服务器可以基于预先配置的GPU抽帧SDK,调用目标接口函数,并基于目标接口函数,将视频原始数据buffer直接从CPU传递到GPU抽帧模块,实现了无文件IO操作,即调用抽帧接口前无需将视频保存成文件形式,从而有效避免了磁盘IO操作导致的较长的时耗开销。
在一个实施例中,所述方法还包括:获取视频数据的基本信息;基于基本信息中的帧率,确定视频数据的抽帧间隔和抽帧数量;步骤204具体可以包括:通过图形处理器中的计算单元,按照抽帧间隔从显存中读取对应的视频解码数据,得到抽帧数量的视频解码数据。
其中,帧率是指画面每秒传输帧数,外文名Frame Per Second,别名刷新率。
抽帧间隔是指抽帧处理的时间间隔,例如,可以按照每3秒、每15秒抽取一帧的模式,即抽帧间隔可以为每3秒、每15秒等。
抽帧数量是指需要抽取的图像帧的数量,例如,抽帧数量为500帧,即需要从原始视频数据中抽取500帧。
具体地,服务器基于预先配置的GPU抽帧SDK,调用抽帧接口函数,将原始视频从CPU传递到GPU抽帧模块之后,服务器中的GPU抽帧模块可以获取原始视频的基本信息,例如,原始视频的基本信息包括但不限于:视频大小、视频分辨率、图像帧数、视频FPS等信息。进一步的,服务器中的GPU抽帧模块可以基于基本信息中的帧率,确定原始视频数据的抽帧间隔和抽帧数量,并按照抽帧间隔,对视频数据进行抽帧处理,以得到该抽帧数量的第一图像帧数据。即服务器通过GPU上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在GPU的显存之后,服务器可以通过GPU中的计算单元,按照抽帧间隔从显存中对应位置读取视频解码数据,以得到该抽帧数量的视频解码数据,后续服务器可以对所得的视频解码数据进行色彩空间转换处理,得到该抽帧数量的第一图像帧数据。
举个例子,假设视频A的FPS为24fps,服务器获取到视频A的基本信息之后,服务器可以基于视频A基本信息中的FPS为24fps,确定视频A的抽帧间隔为3秒和抽帧数量为50,则服务器中的GPU抽帧模块可以按照每3秒抽取一帧的模式,对视频A进行抽帧处理,以得到抽帧处理后的50帧图像帧数据,即服务器通过GPU上的硬件编解码器对视频A进行解码,并将所得的视频解码数据保存在GPU的显存之后,服务器可以通过GPU中的计算单元,按照每3秒抽取一帧的模式从显存中对应位置读取视频解码数据,以得到50帧的视频解码数据,后续服务器可以对所得的50帧视频解码数据进行色彩空间转换处理,即可得到50帧的第一图像帧数据。由此使得,通过GPU硬解码充分利用了GPU通常闲置的硬件编解码NVDEC芯片,同时提升了计算单元CUDA Core的资源利用率,显著降低了线上服务部署的计算资源成本。
在一个实施例中,基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,得到推理结果的步骤,包括:
确定第一图像帧数据中的结尾帧;
基于视觉加速模型,对各组内的第二图像帧数据进行图像推理;
在进行图像推理的过程中,每当完成一组图像推理、且一组内的第二图像帧数据中不包含结尾帧时,得到一组的推理结果,并继续通过图形处理器对视频数据进行抽帧处理,直至获得包含结尾帧的一组的推理结果。
其中,结尾帧是指抽帧处理得到的第一图像帧数据中的最后一帧,例如,假设需要抽取30帧图像帧,则抽取得到的第30帧即为结尾帧。
具体的,由于抽帧处理是按顺序逐帧进行的,则服务器可以基于帧标识,确定第一图像帧数据中的结尾帧,并基于视觉加速模型,对各组内的第二图像帧数据进行图像推理;在服务器进行图像推理的过程中,每当完成一组图像推理、且一组内的第二图像帧数据中不包含结尾帧时,得到一组的推理结果,并继续通过GPU对视频数据进行抽帧处理,直至获得包含结尾帧的一组的推理结果。即服务器将预处理完成后的批次化的第二图像帧数据,输入视觉加速模型中进行推理加速,视觉加速模型可以按批次做推理加速,并返回对应的模型推理结果;进一步的,每当完成一组图像推理时,服务器可以判断该组内的第二图像帧数据中是否包含结尾帧,若该组内的第二图像帧数据中包含结尾帧,即表明该组图像帧为视频的最后批次帧,则流程结束;若该组内的第二图像帧数据中不包含结尾帧,即表明还有后续视频帧,则继续通过GPU对视频数据进行抽帧处理,以得到抽帧处理后的图像帧数据。
举个例子,假设服务器对视频A进行抽帧处理,得到抽帧处理后的50帧第一图像帧数据,抽取的第50帧在原始的视频A中的帧序号为f66,以每10帧作为一组,可以得到5个分组,则服务器可以基于帧序号,确定第一图像帧数据中的结尾帧为f66;进一步的,服务器可以基于视觉加速模型,对各分组内的第二图像帧数据进行图像推理,在服务器进行图像推理的过程中,每当完成一个分组图像推理,得到该分组的推理结果后,服务器可以判断该分组内的第二图像帧数据中是否包含结尾帧f66,若该分组内的第二图像帧数据中包含结尾帧f66,即表明该组图像帧为视频A的最后批次帧,则流程结束;若该分组内的第二图像帧数据中不包含结尾帧f66,即表明还有后续视频帧,则服务器重新执行通过GPU对视频A进行抽帧处理的步骤。
本实施例中,通过各计算流程的异步化改造解耦了相互间的强依赖关系,结合CUDA multi-stream(多流)调度优化实现流程并发执行,充分发挥各计算单元的最佳计算性能。同时,由于视频抽帧后的图像帧数据可在GPU内部无缝衔接后续的GPU预处理和模型推理,全流程无额外的CPU与GPU间帧数据IO交换开销,从而实现了视频AI推理的整体流程性能最优。
在一个实施例中,视觉加速模型包括至少两个实例;基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,得到推理结果的步骤,包括:
通过视觉加速模型中的至少两个实例,分别对各组内的第二图像帧数据进行图像推理,得到推理结果。
具体地,服务器调用对第一视觉模型进行推理加速所得的视觉加速模型之后,服务器可以利用该视觉加速模型,按照批次对各组内的第二图像帧数据进行图像推理,并返回对应的推理结果,即通过视觉加速模型中的至少两个实例,分别对各组内的第二图像帧数据进行图像推理,以得到各组对应的推理结果。
举个例子,假设视觉加速模型A中包含3个实例,则服务器调用对第一视觉模型进行推理加速所得的视觉加速模型A之后,服务器可以通过视觉加速模型A中的三个实例,分别对三个分组或三个批次内的第二图像帧数据进行图像推理,以得到各个分组或各个批次对应的推理结果。由此使得,通过将CV模型转换为GPU上性能最优的网络前向推理格式,并支持批次化的图像推理,结合CUDA multi-stream(多流)调度优化实现流程并发执行,从而实现了视频AI推理的整体流程性能最优。
本申请还提供一种应用场景,该应用场景应用上述的视频AI推理的优化方法。具体地,该视频AI推理的优化方法在该应用场景的应用如下:
在当前的视频AI推理服务中,抽帧往往占据了其中大部分时耗,因此,视频抽帧的性能对于视频内容理解服务的时耗和整体资源开销,有着举足轻重的地位。在云平台提供的不同视频AI推理服务中,可以采用上述的视频AI推理的优化方法,即用户登录云平台之后,云平台可以通过图形处理器对视频数据进行抽帧处理,得到第一图像帧数据,并通过图形处理器中的计算单元,对第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;进一步的,云平台可以调用对第一视觉模型进行推理加速所得的视觉加速模型,并基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,以得到对应的推理结果。其中,云平台可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
本申请实施例提供的方法,可以应用于各种视频AI推理服务的场景中,也可以应用于提供实时的线上视频服务能力的应用中,比如,应用于视频的镜头切分场景、或者应用于将视频中的每一帧图像帧中的字幕去除,并将去除字幕对应位置的图像还原等场景。以下以服务于广告创意业务场景为例,对本申请实施例提供的视频AI推理的优化方法进行说明。
传统方式中,视频AI推理大体上由视频IO前处理、视频抽帧、图像帧数据预处理、模型推理几个步骤组成,其中,视频抽帧一般使用FFmpeg封装的能力,在CPU上计算,预处理一般调用OpenCV进行处理,模型推理常见的是使用TF-Serving、ONNXRuntime等模型部署解决方案。
上述传统的视频AI推理方式主要有以下几大缺点:
a、调用抽帧接口前可能需要先将视频保存成文件形式,依赖性能较低的磁盘IO操作导致较长的时耗开销;
b、CPU方式抽帧速度较慢,且计算成本高,通常需要占用大量CPU核,并且CPU方式属于软解码,加速效果有限,且解码后得到的图像数据更适合用GPU来做处理;
c、图像预处理涉及到大量像素并行计算,CPU计算慢,更适合使用擅长并行处理的GPU来做加速;
d、抽帧处理和预处理后的数据一般在CPU端,而模型推理主要使用GPU做计算,因此,视频帧数据需要频繁的从CPU交换到GPU端,受限于PCI-E带宽速度和吞吐都较低,容易产生较大的时延。以1080P视频为例,解码后单帧图片数据大小约5M,30M视频解码后约700帧,总大小可达到3G+。以常见的推理GPU T4卡为例,与主存(host)间数据传输通道为x16PCIe Gen3,数据带宽有限,理论传输速度约16GB/s,解码和传输回GPU做色彩转换来回耗时约180ms x 2,不但增加了时延,而且大量占据了原本就不太宽裕的PCIe带宽。
因此,为了解决上述问题,针对传统方式中的不足和缺点,本申请提供了一种视频AI推理的全流程高性能加速方法,该方法不但对视频AI推理的几个子步骤分别做了加速,而且从整体架构和系统层面做了整合优化,消除了CPU和GPU间数据IO的性能瓶颈。具体来说,在计算性能方面,通过逐流程优化以及整合优化,实现了视频AI的全流程GPU异构加速,大幅提升了视频AI的线上推理性能,解决了其在具体业务场景的性能瓶颈;在资源成本方面,通过GPU硬解码充分利用了GPU通常闲置的硬件编解码NVDEC芯片,通过模型权重量化充分利用了GPU的Tensor Core计算单元,同时提升了常规计算单元CUDA Core的资源利用率,显著降低了线上服务部署的计算资源成本。
其中,视频AI推理可以是针对视频内容的AI模型推理能力,目前业内的主流方案是先对视频做抽帧,再将图像帧送给模型做特征提取或预测。
推理加速:由于模型网络计算量大,通常模型推理需要占用大量的硬件资源,以及较长的时耗。为了使得模型能提供又快又省的线上服务能力,通常的手段是对模型推理做加速和性能优化。
1、系统架构
如图6所示,为视频AI全流程GPU推理加速的系统架构示意图。系统由GPU硬解码抽帧加速、图像预处理CUDA加速、GPU模型推理加速以及整体的视频AI全流程GPU异构加速四部分组成。
传统方式中通常使用CPU抽帧,部分使用了GPU抽帧的方案,也会将解码出来的原始图像帧默认先传输回CPU,由于PCIe带宽有限会造成很大的性能开销。为了解决了这个问题,本实施例中解码后图像帧会保持在GPU显存,后续的图像预处理和JPEG编码都可以直接进行。
1.1GPU硬解码抽帧加速
如图5所示,为视频抽帧的流程示意图。图5中的视频抽帧由视频解码、色彩空间转换、JPEG图片编码几个流程组成。本实施例中提供的方法,将这几个计算过程整体做GPU异构化改造,并且实现了中间过程无CPU到GPU图片帧数据交换,避免出现硬件间的数据IO瓶颈。
如图7所示,为视频抽帧全流程GPU异构优化的流程示意图。图7中的流程中,首先解码过程改为GPU的NVDEC硬解码,解码后得到的图像帧list,不再传输到CPU,而是保持在GPU显存,后续的色彩空间转换、图片编码都是用CUDA编程实现,直接从对应的显存位置获取图像帧进行处理。由于充分利用了NVIDIA GPU上通常闲置的硬件编解码器NVDEC芯片,从而达到既提速又提效的效果。
1.2图像预处理CUDA加速
传统的图像预处理一般是调用OpenCV提供的API在CPU上进行处理,速度慢并且必须将GPU上已抽取的图像帧交换回CPU做计算,计算性能和IO性能都有很大损耗。因此,本实施例中采用支持批次化的GPU CUDA图像预处理,如图3中所示的图像预处理CUDA批处理加速的示意图,充分利用GPU上数以千计的CUDA Core计算单元,相较于传统方式中在CPU上逐张进行预处理计算,整体性能有大幅提升。
1.3CV模型推理加速
随着目前的深度学习模型网络结构越来越复杂,模型前向计算的时耗以及资源消耗愈发成为瓶颈。如图4中所示,本实施例中首先将CV模型转换为一种统一的模型结构描述格式ONNX,然后转换为GPU上性能最优的网络前向推理格式,并支持批次化图像推理。同时,结合算子融合、量化、GPU CUDA Multi-stream(多流)调度等手段,实现了更优的推理性能。
比如,将CV模型转换为统一的模型结构描述格式ONNX:TensorFlow和Pytorch等AI框架,都提供了便捷的API,可以将模型导出为ONNX(开放神经网络交换格式),通过解析标准的ONNX神经网络,逐层做分析和优化,具体的优化手段包括图4中所示的算子/图层融合、混合精度、编译优化等,最后保存为适合GPU和CUDA执行的序列化文件格式。其中,CV模式指的是Computer Vision计算机视觉模型,常见的有ResNet、Yolo等模型。GPU CUDA Multi-stream是指CUDA提供的多流并行编程模式,类似于CPU的多线程编程,主要用于提升程序执行的并发度。
1.4视频AI全流程GPU异构加速
以上1.1-1.3是针对视频AI推理的各个步骤分别做性能优化。另一方面,从整体系统设计的角度来看,本申请提供的方法同样有不错的整合调度优化空间。如图8所示,为视频AI推理整体流程并发执行的流程示意图。图8中的流程1、流程2和流程3代表三个并发执行的流程,即本申请实施例中通过各计算流程的异步化改造解耦了相互间的强依赖关系,结合CUDA multi-stream(多流)调度优化实现Pipeline overlap(流程并发执行),充分发挥各计算单元的最佳计算性能。同时,由于视频抽帧后的图像帧数据可在GPU内部无缝衔接后续的GPU预处理和模型推理,全流程无额外的CPU&GPU间帧数据IO交换开销,从而实现了视频AI推理的整体流程性能最优。
2、服务执行流程
在上述系统架构下,如图9所示,为视频AI推理加速流程的示意图,一个完整的服务执行流程如图9所示。图9中的具体的流程步骤包括:
(1)将视频原始数据buffer直接传递到GPU抽帧模块(无文件IO),得出视频的FPS、宽高等基本信息;
(2)GPU抽帧模块根据指定的帧间隔做视频图像帧抽取,积累到一定批次后,异步回调给调度模块;
(3)调度模块将批次化的图像帧交由CUDA图像预处理模块做预处理;
(4)预处理完成后的批次图片,由模型推理模块按batch做推理加速,最后返回模型推理结果;
(5)若有视频的后续视频帧,则重新进入流程(2)。
(6)若为视频的最后批次帧,流程结束。
本实施例中,之所以能够将视频原始数据buffer直接传递到GPU抽帧模块,实现无文件IO操作,是因为预先开发了GPU抽帧SDK,增加了直接传输视频内容buffer的接口,不必先保存成文件,以解决文件IO的问题。
本申请实施例中提供的方法所产生的有益效果包括:
本实施例提供的一种针对视频AI推理的加速方法,首先对各个子步骤做了充分的性能优化,继而从系统设计和资源调度的角度,对于整体的流程做了加速优化,避免了数据在CPU和GPU之间的频繁IO开销,从而实现了视频AI推理的整体极致性能,大幅降低了模型部署资源成本,达到降本增效的效果。
例如,在广告大创意项目中,应用了本申请实施例中提出的视频AI推理优化方案后,将镜头切分算法能力平均处理时耗从5.9s优化至1.7s,时耗大幅压缩71%。
此外,在本申请实施例中提到的视频AI推理的几个步骤,均可以在CPU或者其他专有加速硬件,如定制的视频编解码芯片、第三方推理NPU上完成。但是目前很难找到一款能满足各个步骤都达到高性能的专有硬件,因此就需要频繁地将图像帧数据在设备间同步,会造成可观的数据IO性能损耗。如果要从整体流程上达到性能最优,基于NVIDIA GPU来做全流程异构加速仍是最佳选择。即本实施例中提供了一种针对视频AI推理的加速技术,首先对各个子步骤做了充分的性能优化,继而从系统设计和资源调度的角度,对于整体的流程做了加速优化,避免了数据在CPU和GPU之间的频繁IO开销,从而实现了视频AI推理的整体极致性能,大幅降低了模型部署资源成本,达到降本增效的效果。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的视频AI推理的优化方法的视频AI推理的优化装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个视频AI推理的优化装置实施例中的具体限定可以参见上文中对于视频AI推理的优化方法的限定,在此不再赘述。
在一个实施例中,如图10所示,提供了一种视频AI推理的优化装置,包括:解码模块1002、读取模块1004、处理模块1006、调用模块1008和推理模块1010,其中:
解码模块1002,用于通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在所述图形处理器的显存;
读取模块1004,用于通过所述图形处理器中的计算单元,从所述显存中读取所述视频解码数据;
处理模块1006,用于对所述视频解码数据进行色彩空间转换处理,得到第一图像帧数据;通过图形处理器中的计算单元,对第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据。
调用模块1008,用于调用对视觉模型进行推理加速所得的视觉加速模型。
推理模块1010,用于基于视觉加速模型,对各组内的第二图像帧数据进行图像推理,得到推理结果。
在一个实施例中,所述装置还包括:编码模块和存储模块。处理模块还用于对所述视频解码数据进行色彩空间转换处理,得到视频转换数据;编码模块,用于将所述视频转换数据进行编码,得到视频编码数据;存储模块,用于将所述视频编码数据进行存储。
在一个实施例中,所述装置还包括:确定模块,用于确定分组数量;每当所述第一图像帧数据的数量积累到所述分组数量时,依次将各所述分组数量的所述第一图像帧数据作为一个分组;处理模块还用于通过所述图形处理器中的计算单元,对各所述分组内的所述第一图像帧数据进行预处理,得到各所述分组内的所述第二图像帧数据。
在一个实施例中,所述装置还包括:分发模块。调用模块还用于当所述第一图像帧数据积累到预设批次时,通过所述图形处理器中的调度单元调用所述异步回调函数;所述异步回调函数用于返回通知消息;分发模块,用于在返回所述通知消息后,通过所述调度单元分别将各批次的所述第一图像帧数据分发至计算单元,以使所述计算单元对各批次的所述第一图像帧数据进行预处理。
在一个实施例中,所述装置还包括:转换模块。确定模块还用于确定所述第一视觉模型的第一推理结果;将第二视觉模型在各推理加速框架上进行推理加速,得到推理耗时和第二推理结果;所述第二视觉模型是对所述第一视觉模型进行模型格式转换所得的;基于所述第一推理结果、所述推理耗时、所述第二推理结果和和目标性能指标值,确定目标推理加速框架;转换模块,用于根据所述目标推理加速框架,将所述第二视觉模型转换为视觉加速模型。
在一个实施例中,确定模块还用于通过所述图形处理器运行所述第一视觉模型,确定运行的所述第一视觉模型在原始训练框架上的GPU推理结果。
在一个实施例中,所述装置还包括:获取模块。调用模块还用于基于预先配置的软件开发工具包,调用目标接口函数;获取模块,用于基于所述目标接口函数,从中央处理器获取待处理的所述视频数据。
在一个实施例中,获取模块还用于获取所述视频数据的基本信息;确定模块还用于基于所述基本信息中的帧率,确定所述视频数据的抽帧间隔和抽帧数量;读取模块还用于通过所述图形处理器中的计算单元,按照所述抽帧间隔从所述显存中读取对应的视频解码数据,得到所述抽帧数量的所述视频解码数据。
在一个实施例中,确定模块还用于确定所述第一图像帧数据中的结尾帧;处理模块还用于基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理;在进行图像推理的过程中,每当完成一组图像推理、且所述一组内的所述第二图像帧数据中不包含所述结尾帧时,得到所述一组的推理结果,并继续通过所述图形处理器对所述视频数据进行抽帧处理,直至获得包含所述结尾帧的一组的推理结果。
在一个实施例中,处理模块还用于通过所述视觉加速模型中的至少两个实例,分别对各组内的所述第二图像帧数据进行图像推理,得到推理结果。
上述视频AI推理的优化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图11所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储视频AI推理的优化数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种视频AI推理的优化方法。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (15)
1.一种视频AI推理的优化方法,其特征在于,所述方法包括:
通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在所述图形处理器的显存;
通过所述图形处理器中的计算单元,从所述显存中读取所述视频解码数据;
对所述视频解码数据进行色彩空间转换处理,得到第一图像帧数据;
通过所述图形处理器中的计算单元,对所述第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;
调用对第一视觉模型进行推理加速所得的视觉加速模型;
基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理,得到推理结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述视频解码数据进行色彩空间转换处理,得到视频转换数据;
将所述视频转换数据进行编码,得到视频编码数据;
将所述视频编码数据进行存储。
3.根据权利要求1所述的方法,其特征在于,所述通过所述图形处理器中的计算单元,对所述第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据,包括:
确定分组数量;
每当所述第一图像帧数据的数量积累到所述分组数量时,依次将各所述分组数量的所述第一图像帧数据作为一个分组;
通过所述图形处理器中的计算单元,对各所述分组内的所述第一图像帧数据进行预处理,得到各所述分组内的所述第二图像帧数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一图像帧数据积累到预设批次时,通过所述图形处理器中的调度单元调用所述异步回调函数;所述异步回调函数用于返回通知消息;
在返回所述通知消息后,通过所述调度单元分别将各批次的所述第一图像帧数据分发至计算单元,以使所述计算单元对各批次的所述第一图像帧数据进行预处理。
5.根据权利要求1所述的方法,其特征在于,所述调用对第一视觉模型进行推理加速所得的视觉加速模型之前,所述方法还包括:
确定所述第一视觉模型的第一推理结果;
将第二视觉模型在各推理加速框架上进行推理加速,得到推理耗时和第二推理结果;所述第二视觉模型是对所述第一视觉模型进行模型格式转换所得的;
基于所述第一推理结果、所述推理耗时、所述第二推理结果和和目标性能指标值,确定目标推理加速框架;
根据所述目标推理加速框架,将所述第二视觉模型转换为视觉加速模型。
6.根据权利要求5所述的方法,其特征在于,所述确定第一视觉模型的第一推理结果,包括:
通过所述图形处理器运行所述第一视觉模型,确定运行的所述第一视觉模型在原始训练框架上的GPU推理结果。
7.根据权利要求1所述的方法,其特征在于,所述通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在所述图形处理器的显存之前,所述方法还包括:
基于预先配置的软件开发工具包,调用目标接口函数;
基于所述目标接口函数,从中央处理器获取待处理的所述视频数据。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
获取所述视频数据的基本信息;
基于所述基本信息中的帧率,确定所述视频数据的抽帧间隔和抽帧数量;
所述通过所述图形处理器中的计算单元,从所述显存中读取所述视频解码数据,包括:
通过所述图形处理器中的计算单元,按照所述抽帧间隔从所述显存中读取对应的视频解码数据,得到所述抽帧数量的所述视频解码数据。
9.根据权利要求1所述的方法,其特征在于,所述基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理,得到推理结果包括:
确定所述第一图像帧数据中的结尾帧;
基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理;
在进行图像推理的过程中,每当完成一组图像推理、且所述一组内的所述第二图像帧数据中不包含所述结尾帧时,得到所述一组的推理结果,并继续通过所述图形处理器对所述视频数据进行抽帧处理,直至获得包含所述结尾帧的一组的推理结果。
10.根据权利要求1所述的方法,其特征在于,所述视觉加速模型包括至少两个实例;所述基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理,得到推理结果,包括:
通过所述视觉加速模型中的至少两个实例,分别对各组内的所述第二图像帧数据进行图像推理,得到推理结果。
11.一种视频AI推理的优化装置,其特征在于,所述装置包括:
解码模块,用于通过图形处理器上的硬件编解码器对视频数据进行解码,并将所得的视频解码数据保存在所述图形处理器的显存;
读取模块,用于通过所述图形处理器中的计算单元,从所述显存中读取所述视频解码数据;
处理模块,用于对所述视频解码数据进行色彩空间转换处理,得到第一图像帧数据;通过所述图形处理器中的计算单元,对所述第一图像帧数据进行分组预处理,得到各组内的第二图像帧数据;
调用模块,用于调用对视觉模型进行推理加速所得的视觉加速模型;
推理模块,用于基于所述视觉加速模型,对各组内的所述第二图像帧数据进行图像推理,得到推理结果。
12.根据权利要求11所述的视频AI推理的优化装置,其特征在于,所述装置还包括:
所述处理模块还用于对所述视频解码数据进行色彩空间转换处理,得到视频转换数据;
编码模块,用于将所述视频转换数据进行编码,得到视频编码数据;
存储模块,用于将所述视频编码数据进行存储。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述的方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
15.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211143070.3A CN117036912A (zh) | 2022-09-20 | 2022-09-20 | 视频ai推理的优化方法、装置、计算机设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211143070.3A CN117036912A (zh) | 2022-09-20 | 2022-09-20 | 视频ai推理的优化方法、装置、计算机设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117036912A true CN117036912A (zh) | 2023-11-10 |
Family
ID=88637767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211143070.3A Pending CN117036912A (zh) | 2022-09-20 | 2022-09-20 | 视频ai推理的优化方法、装置、计算机设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117036912A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118135507A (zh) * | 2024-05-07 | 2024-06-04 | 山东汉鑫科技股份有限公司 | 隧道交通事件处理系统、方法、介质及设备 |
CN118505490A (zh) * | 2024-07-22 | 2024-08-16 | 爱芯元智半导体股份有限公司 | 基于npu的计算机视觉算子加速方法、系统及电子设备 |
-
2022
- 2022-09-20 CN CN202211143070.3A patent/CN117036912A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118135507A (zh) * | 2024-05-07 | 2024-06-04 | 山东汉鑫科技股份有限公司 | 隧道交通事件处理系统、方法、介质及设备 |
CN118505490A (zh) * | 2024-07-22 | 2024-08-16 | 爱芯元智半导体股份有限公司 | 基于npu的计算机视觉算子加速方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022116759A1 (zh) | 图像渲染方法、装置、计算机设备和存储介质 | |
CN110610510B (zh) | 目标跟踪方法、装置、电子设备及存储介质 | |
CN117036912A (zh) | 视频ai推理的优化方法、装置、计算机设备、存储介质 | |
US10445043B2 (en) | Graphics engine and environment for efficient real time rendering of graphics that are not pre-known | |
CN108206937B (zh) | 一种提升智能分析性能的方法和装置 | |
US20200043220A1 (en) | Point cloud operations | |
CN112149795A (zh) | 用于自监督事件学习与异常检测的神经架构 | |
TW201706840A (zh) | 促進圖形處理命令的動態運行時變換以用於在計算裝置之改善的圖形效能 | |
TW201626326A (zh) | 用以實現圖形處理單元(gpu)上的最近鄰居搜索之方法與裝置 | |
CN113704531A (zh) | 图像处理方法、装置、电子设备及计算机可读存储介质 | |
CN110751696A (zh) | 将BIM模型数据转化为glTF数据的方法、装置、设备及介质 | |
CN110769257A (zh) | 智能视频结构化分析装置、方法和系统 | |
US10121264B2 (en) | Clustered palette compression | |
WO2022206960A1 (zh) | 视频转码方法、系统及电子设备 | |
CN113011320B (zh) | 视频处理方法、装置、电子设备及存储介质 | |
US20240104842A1 (en) | Encoder-based approach for inferring a three-dimensional representation from an image | |
CN113344794A (zh) | 一种图像处理方法、装置、计算机设备及存储介质 | |
Qi et al. | A DNN-based object detection system on mobile cloud computing | |
CN114237916B (zh) | 一种数据处理方法及相关设备 | |
CN115908672A (zh) | 一种三维场景渲染加速方法、系统、介质、设备及终端 | |
WO2019127926A1 (zh) | 一种稀疏神经网络的计算方法及计算装置、电子装置、计算机可读存储介质以及计算机程序产品 | |
CN112188215B (zh) | 视频解码方法、装置、设备及存储介质 | |
CN116739901A (zh) | 一种视频超分处理方法、装置、电子设备及存储介质 | |
CN103891272B (zh) | 用于视频分析和编码的多个流处理 | |
CN116664772A (zh) | 一种轻量级的大规模bim可视化方法及系统 |
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 |