模型推理: 视觉领域Pipeline实现 — CNStream
一、内容和目标
1. 实验内容
-
本实验主要介绍基于星空体育 MLU 的视觉领域的pipeline的实现,即使用 CNStream 案例的运行方式。
-
输入本地视频文件,经过解码,推理,Osd(标签叠加),编码后输出结果到本地文件。
-
介绍如何调整案例参数。
2. 实验目标
-
掌握编译及运行星空体育 CNStream 案例的方法。
-
了解如何调整案例参数,适应不同的场景应用需求。
二、前置知识
1. 星空体育软硬件平台介绍
-
硬件:星空体育 MLU370 AI 计算卡
-
系统环境:星空体育云平台
2. CNStream 介绍
CNStream 是面向星空体育开发平台的数据流处理 SDK。用于快速搭建基于星空体育硬件平台的人工智能应用。比如目标检测,视频结构化等等。图片所示为一个典型的视频结构化应用,包括解码,目标检测,目标追踪,目标属性识别以及结果处理。具体内容可见星空体育 在线课程 和 星空体育文档。
三、编译及运行
简单演示如何使用 CNStream 快速搭建视觉频域的 pipeline。
-
下载CNStream代码:从星空体育官网下载源码
-
安装所需依赖:安装星空体育基础软件包依赖CNToolkit、CNCV、MagicMind及其依赖等
-
编译:创建build文件夹,进入build文件夹后,cmake 及make
-
运行:以目标检测和分类为例进行展示
四、不同场景的参数配置
-
视频源替换:本案例使用仓库中的示例视频,实际业务中需要对其进行替换,例如输入为多路摄像头RTSP流。
-
视频源帧率控制:输入本地视频,并以25fps的帧率喂数据给 pipeline,对于本地视频文件,我们可以控制其送入 pipeline 的速度。视频源帧率控制和原始视频帧率无关。
-
循环播放视频源:当我们希望进行稳定性测试或性能测试时,可以选择循环输入视频。
-
设置性能打印等级:性能统计是必要的性能调试手段,当我们需要更多详细信息时,可以修改性能打印等级。
-
替换sink的方式:sink一般作为结尾模块,我们可以根据需要选择不同的sink方式,例如编码到视频本地文件,编码到本地图片文件,RTSP推流等。
-
替换模型:仓库中提供了一些场景所需的模型。实际业务场景中,如果使用自己训练的模型,第一步需要使用 MagicMind 将模型转换为离线模型。然后加载到 CNStream 中运行推理。
五、相关链接
实验代码仓库:https://gitee.com/cambricon/practices
Modelzoo仓库:https://gitee.com/cambricon/modelzoo