模型推理: 视觉领域Pipeline实现 — CNStream

模型推理: 视觉领域Pipeline实现 — CNStream

本实验介绍基于 MLU 的视觉领域的pipeline的实现,即使用 CNStream 案例的运行方式。
难易程度: 中级|实验人次:2858

一、内容和目标

 

1. 实验内容

  1. 本实验主要介绍基于寒武纪 MLU 的视觉领域的pipeline的实现,即使用 CNStream 案例的运行方式。

  2. 输入本地视频文件,经过解码,推理,Osd(标签叠加),编码后输出结果到本地文件。

  3. 介绍如何调整案例参数。

 

2. 实验目标

  1. 掌握编译及运行寒武纪 CNStream 案例的方法。

  2. 了解如何调整案例参数,适应不同的场景应用需求。

 

二、前置知识

 

1. 寒武纪软硬件平台介绍

  • 硬件:寒武纪 MLU370 AI 计算卡

  • 系统环境:寒武纪云平台   

 

2. CNStream 介绍

CNStream 是面向寒武纪开发平台的数据流处理 SDK。用于快速搭建基于寒武纪硬件平台的人工智能应用。比如目标检测,视频结构化等等。图片所示为一个典型的视频结构化应用,包括解码,目标检测,目标追踪,目标属性识别以及结果处理。具体内容可见寒武纪 在线课程 寒武纪文档

 

三、编译及运行

简单演示如何使用 CNStream 快速搭建视觉频域的 pipeline。

  1. 下载CNStream代码:从寒武纪官网下载源码

  2. 安装所需依赖:安装寒武纪基础软件包依赖CNToolkit、CNCV、MagicMind及其依赖等

  3. 编译:创建build文件夹,进入build文件夹后,cmake 及make

  4. 运行:以目标检测和分类为例进行展示

 

四、不同场景的参数配置

  1. 视频源替换:本案例使用仓库中的示例视频,实际业务中需要对其进行替换,例如输入为多路摄像头RTSP流。

  2. 视频源帧率控制:输入本地视频,并以25fps的帧率喂数据给 pipeline,对于本地视频文件,我们可以控制其送入 pipeline 的速度。视频源帧率控制和原始视频帧率无关。

  3. 循环播放视频源:当我们希望进行稳定性测试或性能测试时,可以选择循环输入视频。

  4. 设置性能打印等级:性能统计是必要的性能调试手段,当我们需要更多详细信息时,可以修改性能打印等级。

  5. 替换sink的方式:sink一般作为结尾模块,我们可以根据需要选择不同的sink方式,例如编码到视频本地文件,编码到本地图片文件,RTSP推流等。

  6. 替换模型:仓库中提供了一些场景所需的模型。实际业务场景中,如果使用自己训练的模型,第一步需要使用 MagicMind 将模型转换为离线模型。然后加载到 CNStream 中运行推理。

 

五、相关链接

实验代码仓库:https://gitee.com/cambricon/practices

Modelzoo仓库:https://gitee.com/cambricon/modelzoo

 

申 请 试 用