关于VideoPipe适配不同AI硬件平台的流程

VideoPipe视频分析框架开源至今受到了很多人的好评,也有很多成功的商业落地案例。Github仓库中的Sample代码默认只支持CPU和英伟达两种硬件类型(推理部分基于OpenCV::DNN和TensorRT后端),由于某些保密原因,其他硬件平台的适配代码没有公开。随着国产信创化的需求越来越多,国产硬件也是今后AI算法部署落地的新趋势。本篇文章简要介绍如何将VideoPipe移植、适配到不同AI硬件平台,比如华为昇腾、寒武纪、瑞芯微等。

框架移植到不同硬件平台的工作主要涉及到两大块:编解码和模型推理,这两块需要对应的硬件加速。

1、VideoPipe中的编解码部分默认采用Gstreamer管道实现,由OpenCV创建和加载Gstreamer编解码插件,如果你要适配的目标硬件平台本身有对应的GStreamer硬编解码插件,那么编解码移植这块的工作比较简单,直接替换原来软编解码插件为目标平台的硬编解码插件即可。如果没有现成的硬编解码插件可用(大部分时候是这种情况),那么你要做的工作就是参考仓库中/nodes/ffio这个目录中的代码(该目录基于FFmpeg实现了收流、拆包、解码、编码、封包、推流等逻辑),基于目标硬件平台的Codec编解码SDK,去实现自己的硬编、硬解逻辑,封装成VideoPipe中的一个SRC/DES Node即可,然后基于新的SRC/DES节点去构建VideoPipe中的Pipeline。

2、VideoPipe中的模型推理部分默认采用OpenCV::DNN模块实现,它可以加载主流深度学习框架导出的模型格式(如ONNX/Tensorflow/Caffe等),而且支持英伟达平台CUDA加速。当然针对英伟达平台,仓库中还提供了基于TensorRT推理后端的参考实现。如果你要适配其他硬件平台,那么需要基于对应硬件平台的推理Runtime去实现自己的推理逻辑,比如瑞芯微的RKNN、华为的CANN等等。这块其实很简单,直接参考硬件平台厂家提供的推理Demo代码,将其封装成VideoPipe中的一个推理Node即可,然后基于新的推理节点去构建VideoPipe中的Pipeline。

除了编解码和模型推理需要适配移植之外,其他比如OSD画图、颜色格式转换、图片缩放等环节可能也需要使用目标硬件平台的硬件加速API,这块可以参考模型推理移植的步骤,基于目标硬件平台提供的加速API实现对应逻辑即可(如瑞芯微平台的RGA图像处理加速库,专门处理图像缩放裁剪、格式转换等)。整个移植适配的工作其实相当简单,前提是你对适配的目标硬件平台要足够熟悉和了解。

VideoPipe视频教程

视频教程一共包含740分钟,分“理论篇”(8章)和“实战篇”(9章)两个部分。

理论部分重点介绍视频分析相关概念和技术栈,适合新手小白学习。实战部分基于VideoPipe框架手把手教你实现“人脸识别”、“车牌识别相机”、“交通事件检测”、“以图搜图”、“车辆检索(属性查询)”、“口算检查(仿作业帮APP)”六个项目原型。

完整教程大纲点击这里。完整教程包含以下内容:

1、理论视频教程(含PPT课件,一共8章/时长约380分钟)。实战视频教程(含PPT课件,一共9章/时长约360分钟)。
2、6个配套的实战案例源码(Github上没有,可1对1指导跑通)。
3、完整的测试数据和测试模型(含全部ONNX原始格式,Github上没有,可以跨平台转换/部署)。
4、1对1答疑(限教程相关问题),相关技术咨询。

微信交流群一起讨论(加zhzhi78):

2.4 视频结构化相关应用常见架构👇

3.2 视频解码👇

3.4 目标跟踪👇

6.3 行为分析之目标跨线(闯入)👇

7.2 检索比对的前提:特征相似度👇

更多内容联系作者

VideoPipe中集成多模态大模型做视频(图片)分析

VideoPipe是一个用于视频分析和结构化的框架,采用 C++ 编写、依赖少、易上手。它像管道一样,其中每个节点相互独立并可自行搭配,VideoPipe可用来构建不同类型的视频分析应用,适用于视频结构化、图片搜索、人脸识别、交通/安防领域的行为分析(如交通事件检测)等场景。

VideoPipe项目仓库中已经提供了50多个集成传统AI算法模型的Sample源码,涉及到车牌识别、人脸识别、违章检测、图搜、OCR、AI变脸、目标检测、图像分类、图像分割等各个领域。在大模型逐渐成为主流的今天(多模态大模型赋能传统AI视觉算法领域中表现优秀),VideoPipe也支持大模型集成啦,这次重点介绍VideoPipe如何集成多模态大模型来完成视频(图片)分析相关任务。

快速开始
下面基于VideoPipe和阿里云qwen-vl多模态大模型实现一个简单的图片理解的功能:从本地磁盘读取图片序列(现实场景中可以从网络获取图片或视频数据),大模型根据事先定义的Prompt提示词,对图片进行识别理解,依次对图片进行标签化,然后将标签化结果叠加到图片下方,最后显示结果。

1、创建VideoPipe节点类型(事先准备好aliyun大模型服务api_key)
2、将节点串起来,组成Pipeline管道
3、启动管道(一共55行代码)

运行效果

管道运行起来之后,大模型分析节点根据事先定义好的参数(模型名称、提示词、api_key)访问大模型服务,并解析大模型输出,随后显示节点将大模型输出绘制到图片中,并在控制台实时打印。VideoPipe目前支持的大模型后端有:OpenAI协议兼容服务、Ollama/vLLM本地部署服务。

VideoPipe在高速场景中的应用效果演示

-1-

-2-

-3-

-4-

-5-

-6-

-7-

-8-

-9-

-10-