寒武纪MLU270 平台 CNStream 学习记录
官方的sample跑的效果图先放一张
视频链接:
QMCY 南京 无人机结合AI 智能检测 物体识别 特诊检测效果图
码率太低了效果不太好 前两天 把开发环境搭建起来了,
主要就是 只有一个MLU270板卡 需要多人共用,而环境有不一样
所以我就自己设置了Cambricon的目录(/home/QMCY/mlu270/sdk/neuware)
取代了系统的默认安装目录 (/usr/local/neuware)这样两个人的工作互不影响 可以点击下面查看
寒武纪Cambricon MLU270 环境搭建 CNStream EasyDK编译
环境搭建好之后就是看文档,跑官方的例子 ,文档在CNStream/docs目录下
然后官方的例子 多数都能跑得起来 ,但是有几个报了CNRT的错误 不知道啥原因如下图
正常编译完成之后 会在sample/bin目录下生成三个可执行文件,然后各个模块下不同的例子 打开目录下的run.sh 会发现 最终 都会调用这三个文件 前面的都是设置参数什么的 以及配置json文件如下面黑背景的图片:
比较有意思(或许说困惑比较好?)的是,根据官方文档的说法,CNStream 使用pipeline流水线的模式,你要干什么事的话,新建一个流水线,可以向这个流水线里面添加不同的模(module),主要模块就是source(数据源)decode encode display OSD inference rtsp 等,(当然你也可以自定义一个模块) .然后你需要根据自己的应用场景 来对这些模块进行排列组合,需要哪个模块,把这个模块添加进去就可以。而添加的方法就是通过一个config.json文件来进行配置。刚开始比较费解(因为虽然例子跑起来了,完全不知道怎么跑的 程序入口在哪)经过昨天的研究,差不多理出了头绪,json格式的配置文件大概长下面这个样子:
具体每个模块的参数 需要去看文档里面都有介绍。
配置文件配置好之后 ,给程序传一些参数。就可以去看cns_launcher.cpp源码就可以了
对了 这种通过配置文件设置模块的方式是官方推荐的做法,如果你不喜欢可以去看simple_run_pipeline.cpp 那个是传统的方法。我们还是按官方方法来进行。找到主函数
第一眼看,懵逼了 没几个认识的,
ParseCommandLineFlags 这玩意 我对着它闷了半天 ,后来 百度了下 才发现原来是个google的解析命令行的一个工具,
然后InitCNStreamLogging 这个没啥看的,看名字就知道是干啥的了
接下来video_urls 用来保存视频文件路径 可以有多个视频文件
下面来到了pipeline 这个就是官方推荐的流水线模式了,构建了一个pipeline,
之后得往这里面添加模块,需要哪些模块呢,通过这个 BuildPipelineByJSONFile函数来读取
可以看到有个参数,就是config.json的路径了 怎么走的看下图
可以看到 用rapidjson库来解析json文件了 然后把解析出来的数据,保存下来
然后设置了一个observer 不知道干啥的以后慢慢研究
之后设置了一个数据源,然后就start了
这里也可以看到因为有模块通常不止一个 所以 有一个for循环 ,依次 启动每一个模块
然后回到main函数
一大段说是性能统计 追踪的函数,还没时间细看,暂时先不关注 然后下面比较重要了
系统起来之后,添加数据源了,例子是根据传进来的参数进行配置的,我们公司最终的系统肯定是要做成动态的了 应该是通过HTTP 进行数据交互
可以看到设置了视频的分辨率 ,因为video_urls是个列表 有多个视频源,所以需要遍历一下
根据不同的类型 rtsp流,MP4文件 图片文件 264 Raw格式等等 调用的添加接口不一样。
接下来是个显示模块,我们的mlu270 装在了ubuntu服务器上 只有命令行格式,没法看 所以跳过
接下来 是关闭pipeline 看上去是等待程序执行完 或者手动退出的处理 暂且认为是
通常的while(1)
最后是 退出程序是的收尾工作。没啥看的 今天先分析到这里
寒武纪MLU270 平台 CNStream 学习记录相关推荐
- MOOSE多物理场耦合平台入门学习记录一(稳态热传导程序实例)
MOOSE多物理场耦合平台入门学习记录 MOOSE的简介 MOOSE的安装 Linux和Mac Windows MOOSE程序的一般开发流程-以导热微分方程为例 简单问题的有限元处理 MOOSE程序的 ...
- 寒武纪加速平台(MLU200系列) 摸鱼指南(一)--- 基本概念及相关介绍
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 无 前言 从2019年开始,我们公司的智能分析 ...
- 寒武纪加速平台(MLU200系列) 摸鱼指南(四)--- 边缘端实例程序分析
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 MLU220 开发板 Ubuntu18.04 + ML ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- 【Cmake】Cmake学习记录
Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...
- Android开发技术周报176学习记录
Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...
- [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …...
[Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Python学习] ...
- 架构与设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)的学习记录
唉 时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的,搞 ...
- MongoDB学习记录:入门(一)——五叶草
预热看我之前的文章Node学习记录: mongodb 这个系列旨在系统的学习Mongodb 部分图片来自慕课网mongodb入门截图 学习目标 MongoDB官网:https://www.mongod ...
最新文章
- 【STM32】FSMC概述
- jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关...
- Android投屏(屏幕共享)设计需要考虑的关键因素
- Android之使用VideoView组件播放一个简单的视频
- Flink – SlotSharingGroup
- python总结简短_Python简单的基础总结
- Java设计模式--策略模式
- html 定位z_index,绝对定位、固定定位和z-index
- 乔布斯首份手写求职信再次被拍卖
- windows黑客编程系列(一):运行单一实例
- C语言函数嵌套学习实例
- 密码学专题 对称加密算法
- 遭遇Excel的宏病毒
- 人工智能NLP在金融领域的发展趋势和实践经验
- createTrackbar滑条函数
- 哪个计算机无法做到双屏显示,如何实现笔记本电脑的双屏显示
- Android 绘制渐变色
- 海康威视旗下萤石网络上市:首日跌12% 公司市值142亿
- deepfakes怎么用_如何使用 Deepfakes 换脸(示例代码)
- connection closed gracefully问题
热门文章
- 树模型(六):XGBoost
- Visual Studio Code,一款功能强大且轻巧的免费代码集成编辑器介绍
- 未来的计算机 展望未来作文,展望未来作文(通用10篇)
- 前端在线预览PDF文件
- 人和摩托最快达到目的地
- twilio php 发送短信,如何使用 Twilio 实现语音和短信功能 (PHP) | Microsoft Docs
- 基于51单片机万年历
- 3. 使用balsam.exe / balsamui.exe转换3D模型为 Mesh 文件共View3D的Model使用
- VMware Fusion安装cloudera manager
- mysql 小_mysql小脚本