香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(三)
整期笔记索引
香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(一)
香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二)
香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(三)
本章前言
在测试笔记(一)中,我们已经掌握并搭建了板卡的初步调试环境。
在测试笔记(二)中,我们开始逐步上手官方的Demo,进行跑测,首先测试的是Camera图像获取(USB接口)样例。
今天,我们将要跑测:目标检测(USB接口)样例。
官方Demo跑测——02 目标检测(YoloV5s)
【目标检测(USB接口)样例 链接】
Ascend/EdgeAndRobotics - Gitee.com
https://gitee.com/ascend/EdgeAndRobotics/tree/master/Samples/YOLOV5USBCamera
【样例描述】
通过USB接口连接Camera与开发板,从Camera获取视频,基于yolov5s模型对输入视频中的物体做实时检测,将推理结果信息使用imshow方式显示。
YOLOv5是一种单阶段目标检测器算法
YOLOv5s是YOLOv5系列中较为轻量的网络模型,适合在边缘设备部署,进
行实时目标检测。

1、设置环境变量
PS:以HwHiAiUser用户登录开发板。
运行记录:(此处我使用的是命令行方式)
(base) HwHiAiUser@orangepiaipro:~$ export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest(base) HwHiAiUser@orangepiaipro:~$ export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub 2、安装ACLLite库
此处可以参考ACLLite仓安装ACLLite库。
ACLLite链接:
Ascend/ACLLite
https://gitee.com/ascend/ACLLite
【ACLLite库描述】
通过USB接口连接Camera与开发板,从Camera获取视频,基于yolov5s模型对输入视频中的物体做实时检测,将推理结果信息使用imshow方式显示。
- CANN版本要求: 7.0及以上社区版本。
| 命名空间 | 模块 | 说明 |
| acllite | common | 资源管理及公共函数模块 |
| DVPPLite | DVPP高阶封装模块 | |
| OMExecute | 离线模型执行高阶封装模块 | |
| Media | 媒体功能高阶封装模块 |
- 安装依赖
- 安装CANN:
参考社区文档安装CANN
- 安装ffmpeg
(1)通过如下命令查询OS版本
lsb_release -a 
此处显示我的操作系统为Ubuntu 22.04
(2)根据版本选择安装方式
根据查询结果选择安装方式此处我选择的是Ubuntu 22.04及以上版本的安装方式:apt安装
apt-get install ffmpeg libavcodec-dev libswscale-dev libavdevice-dev 
- 安装步骤
# 拉取ACLLite仓库,并进入目录
git clone https://gitee.com/ascend/ACLLite.gitcd ACLLite 
# 设置环境变量,其中DDK_PATH中/usr/local请替换为实际CANN包的安装路径
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub ![]()
# 安装,编译过程中会将库文件安装到/lib目录下,所以会有sudo命令,需要输入密码
bash build_so.sh 
3、样例下载
可以使用以下两种方式下载,请选择其中一种进行源码准备。
- 命令行方式下载(下载时间较长,但步骤简单)。
- 压缩包方式下载(下载时间较短,但步骤稍微复杂)。
运行记录:
# 登录开发板,HwHiAiUser用户命令行中执行以下命令下载源码仓
cd ${HOME}git clone https://gitee.com/ascend/EdgeAndRobotics.git

# 切换到样例目录cd EdgeAndRobotics/Samples/YOLOV5USBCamera PS:所有运行均以HwHiAiUser用户登录开发板,切换到当前样例目录。
4、准备测试视频
请从以下链接获取该样例的测试视频,放在data目录下。
cd datawget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/test.mp4 --no-check-certificate 
PS:若需更换测试视频,则需自行准备测试视频,并将测试视频放到data目录下。
5、获取PyTorch框架的Yolov5模型(*.onnx)
获取模型,并转换为昇腾AI处理器能识别的模型(*.om)
- 先设置两个环境变量减少atc模型转换过程中使用的进程数,减小内存占用。
export TE_PARALLEL_COMPILER=1
export MAX_COMPILE_CORE_NUMBER=1 ![]()
- 然后直接给出原始模型下载及模型转换命令。
cd ../modelwget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/yolov5s.onnx --no-check-certificatewget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/aipp.cfg --no-check-certificate 然后进行模型转换(这一步时间稍长,请耐心等待...)
atc --model=yolov5s.onnx --framework=5 --output=yolov5s --input_shape="images:1,3,640,640" --soc_version=Ascend310B4 --insert_op_conf=aipp.cfg
atc命令中各参数的解释如下,详细约束说明请参见《ATC模型转换指南》。
- --model:Yolov5网络的模型文件的路径。
- --framework:原始框架类型。5表示ONNX。
- --output:yolov5s.om模型文件的路径。请注意,记录保存该om模型文件的路径,后续开发应用时需要使用。
- --input_shape:模型输入数据的shape。
- --soc_version:昇腾AI处理器的版本。
PS:这一步骤时间较长,同时可以看到下图在运行该步骤时,CPU运行占比较高。

完成后,信息显示如下:

6、编译样例源码
执行以下命令编译样例源码
cd ../scriptsbash sample_build.sh 
7、运行样例
- 在HDMI连接屏幕场景,执行以下脚本运行样例。此时会以画面的形式呈现推理效果。
bash sample_run.sh imshow 
HDMI的屏幕上显示如图:

- 在直连电脑场景,执行以下脚本运行样例。此时会以结果打屏的形式呈现推理效果。
bash sample_run.sh stdout 
8、对比查看运行时的cpu和系统状态
| 运行前,系统状态如图 | 运行时,系统状态如图 |
|
|
|
官方Demo跑测——03 体验AI应用样例(运行目标检测)
【样例介绍】
在样例中已经包含转换后的om模型和测试视频、图片
在JupyterLab中运行样例
运行样例文件夹中共有 9 个文件夹和 1 个 shell 文件
分别对应 9 个 AI 应用样例和Jupyter Lab
1、切换到样例目录
(base) HwHiAiUser@orangepiaipro:~$ cd samples/notebooks/ 2、启动脚本
(base) HwHiAiUser@orangepiaipro:~/samples/notebooks$ ./start_notebook.sh start_notebook.sh脚本,会自动启动 Jupyter Lab
3、执行该脚本
终端会出现如下打印信息
PS:打印信息中会有登录 Jupyter Lab 的网址链接

4、打开火狐浏览器,访问log中的网页
- 首先在jupyterlab界面双击“01-yolov5”,进入到该目录下。
- 双击打开main.ipynb,在右侧窗口中会显示main.ipynb文件中的内容。
其中mian.ipynb是在JupyterLab中运行该样例的文件
- 在main.ipynb文件中infer_mode的值可赋值为image、video和camera,分别对应对图片、视频、USB摄像头中的内容进行目标检测,默认值为video。
- 单击 按钮运行样例,在弹出的对话框中单击“Restart”按钮,此时该样例开始运行。
infer_mode设为image变量时:

infer_mode设为video变量时:

infer_mode设为camera变量时:

附:硬件链接方案:
- 左侧:两个USB接口,一个是摄像头,另一个是USB扩展器(连接键盘鼠标)
- 中间:HDMI屏幕显示
- 右侧:电源连接线


结语
至此,我们的Demo 系列就完成了。
demo 1,我们调通了香橙派调用USB摄像头的环境。
demo 2,我们针对目标检测YoloV5s进行了跑测。
demo 3,我们深入体验板载的AI应用,针对视频、图片和摄像头的目标检测方案,进行了分步跑测。
从系统状态的角度来看,当前目标检测的小demo,并未用尽板子的性能,甚至连一半还没有用到。足可见得,当前开发板的性能对于yolo的一些简单项目来说,是足够使用的。
对于一些AI入门级选手,可以考虑入手,边学习边深入应用。
相关文章:
香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(三)
整期笔记索引 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(一) 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二) 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(…...
【git】常用命令
删除 删除本地分支: // 删除本地分支 git branch -d localBranchName 删除远程仓库分支 git push origin --delete <branch_name> 验证远程分支是否删除 git fetch -p //会清理已经删除的远端分支的引用 git branch -r //列出所有远端分支࿰…...
JavaWeb_MySQL数据库
数据库: MySQL数据模型: MySQL是关系型数据库。 SQL: 简介 分类: 数据库设计-DDL 对数据库操作: 表操作: 小练习: 创建下表 SQL代码: create table tb_user (id int primar…...
中国BI步入增长大周期,腾讯云ChatBI加速AI+BI融合
过去十年,大数据技术的快速发展,让数据消费前进一大步,数据价值得到一定程度的挖掘与释放,真正开启了“用数”的大时代。但数据分析繁杂的技术栈、复杂的处理过程以及程式化的交互方式,让“数据消费”的门槛始终降不下…...
揭秘Python:下划线的特殊用法,你绝对想不到!
在Python编程中,下划线(underscore)是一个常见而又强大的工具。它不仅仅是一个普通的字符,而是具有特殊含义和用法的符号。今天,我们就来揭开Python下划线的神秘面纱,探索它的各种妙用。 下划线的基本用法…...
深入探索Java世界中的Jackson魔法:玩转JsonNode
哈喽,大家好,我是木头左! 揭秘Jackson库:JSON处理的瑞士军刀 在Java的世界里,处理JSON数据就像是一场探险。幸运的是,Jackson库就像一把多功能的瑞士军刀,为提供了强大而灵活的工具来解析和操作…...
为什么要使用动态代理IP?
一、什么是动态代理IP? 动态代理IP是指利用代理服务器来转发网络请求,并通过不断更新IP地址来保护访问者的原始IP,从而达到匿名访问、保护隐私和提高访问安全性的目的。动态代理IP在多个领域中都有广泛的应用,能够帮助用户…...
【PB案例学习笔记】-09滚动条使用
写在前面 这是PB案例学习笔记系列文章的第8篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gitee…...
C++中常见的构造函数类别
目录 摘要 默认构造函数(Default Constructor): 带参数的构造函数(Parameterized Constructor): 拷贝构造函数(Copy Constructor): 移动构造函数(Move C…...
万界星空科技MES系统功能介绍
制造执行系统或MES 是一个全面的动态软件系统,用于监视、跟踪、记录和控制从原材料到成品的制造过程。MES在企业资源规划(ERP) 和过程控制系统之间提供了一个功能层,为决策者提供了提高车间效率和优化生产所需的数据。 万界星空科技MES 系统基础功能&am…...
炸裂的开源AI语音生成模型ChatTTS
今天看到GitHub上开源了一个非常厉害的AI语音生成模型ChatTTS,可以生成和人类声音非常接近的语音,而且有语气、语调、可以停顿和发出笑声,再也没有了以前的AI味道 体验地址:https://colab.research.google.com/drive/1MYep5f0-BJ…...
Mac逆向Electron应用
工具库 解压asar文件 第一步 找到应用文件夹位置 打开活动监视器: 搜索相关应用 用命令行打开刚才复制的路径即可 open Applications/XXX.app/Contents/Resources/app第二步 解压打包文件 解压asar文件...
(三)MobaXterm、VSCode、Pycharm ssh连接服务器并使用
背景:根据前两篇文章操作完成后, 手把手教学,一站式安装ubuntu及配置服务器-CSDN博客 手把手教学,一站式教你实现服务器(Ubuntu)Anaconda多用户共享-CSDN博客 课题组成员每人都有自己的帐号了࿰…...
【Linux】初识信号及信号的产生
初始信号 初始信号什么是信号站在应用角度的信号查看Linux系统定义的信号列表 信号的常见处理方式信号的产生通过终端按键产生信号什么是core dump?如何开启core dump?core dump有什么用?为什么默认关闭core dump?设置了core文件大小但是没有产生core文…...
故障诊断 | 基于 KAN、KAN卷积的轴承故障诊断模型
研究背景: 轴承是机械设备中常见的关键部件之一,其工作状态直接影响设备的性能和可靠性。因此,轴承故障的早期诊断对于设备的正常运行和维护具有重要意义。近年来,基于振动信号的轴承故障诊断成为了研究的热点之一。KAN: Kolmogorov-Arnold Network 是一种有效的处理方法。…...
【设计模式】JAVA Design Patterns——Factory Method(虚拟构造器模式)
🔍目的 为创建一个对象定义一个接口,但是让子类决定实例化哪个类。工厂方法允许类将实例化延迟到子类 🔍解释 真实世界例子 铁匠生产武器。精灵需要精灵武器,而兽人需要兽人武器。根据客户来召唤正确类型的铁匠。 通俗描述 它为类…...
Spring——依赖项
文章目录 依赖注入基于构造函数的依赖注入基于 Setter 的依赖注入依赖解析过程依赖注入的示例 依赖关系和配置详细信息直接值(原语、字符串等)idref标签References to Other Beans (对其他 Bean的引用)Inner Beans(内部…...
C语言 | Leetcode C语言题解之第119题杨辉三角II
题目: 题解: int* getRow(int rowIndex, int* returnSize) {*returnSize rowIndex 1;int* row malloc(sizeof(int) * (*returnSize));row[0] 1;for (int i 1; i < rowIndex; i) {row[i] 1LL * row[i - 1] * (rowIndex - i 1) / i;}return row…...
深入分析 Android Service (一)
文章目录 深入分析 Android Service (一)1. Android Service 设计说明1.1. Service 的类型1.2. Service 的生命周期1.3. 创建和启动 Service1.4. 绑定 Service1.5. ServiceConnection1.6. 前台 Service1.7. IntentService示例:创建和使用 IntentService 2. Service …...
英飞凌24GHz毫米波雷达-BGT24LTR11N16家用机器人应用
BGT24LTR11N16基础描述: 关于BGT24LTR11N16,它是一款用于信号生成和接收的硅锗雷达MMlC,工作频率为24.00GHz至24.25GHz ISM频段。它基于24GHz基本电压控制振荡器(VCO)。 这颗芯片是属于1T1R,也就是一发一收…...
2016-2025年地级市链长制数据
在产业链现代化与协同治理进程中,“链长制”作为一项关键的制度创新,为破解产业链条松散、协同不足等问题提供了重要抓手,其政策效果与影响机制成为当前学术研究与政策制定的焦点议题。周钰丁、田思远在研究中指出,产业链“链长制…...
从ChatGPT到文心一言:揭秘大语言模型背后的Decoder-only架构设计
从ChatGPT到文心一言:大语言模型的Decoder-only架构设计哲学 当ChatGPT在2022年末掀起全球AI对话风暴时,一个关键设计选择引起了技术界的广泛讨论:为什么这些最先进的大语言模型都选择了纯Decoder架构?这背后隐藏着怎样的技术哲学…...
应用篇,在Silverlight中使用Virtual Earth地图服务
ilverlight应用中使用地图服务是否能够得心应手呢? 答案是肯定的,我们操作Earth服务只需执行简单的服务调用,就可完成坐地日行八万里的壮举了,而这一切是由VIEWs组件封装了Javascript脚本来完成的,通过对Virtual Eart…...
别再为UI动画发愁了!用Spine+Unity 2021制作丝滑2D动画的保姆级流程
SpineUnity 2021:打造专业级2D UI动画的完整实战指南 在独立游戏开发领域,UI动画的质量往往决定着玩家的第一印象。那些流畅的按钮反馈、生动的界面过渡,不仅提升了产品质感,更直接影响着用户的留存率。然而对于资源有限的中小团队…...
预制指标、宽表、SQL、本体ABC:真正决定长期成本的,是一次变更会波及多少层
企业做智能问数,最常见的比较题是:预制指标、宽表、人工 SQL、本体ABC,到底哪条路线维护成本更低?如果只给一个笼统答案,往往容易失真。因为真正决定长期成本的,不是“今天开发快不快”,也不是“…...
5分钟精通Meld文件对比工具:效率倍增的3大场景实战指南
5分钟精通Meld文件对比工具:效率倍增的3大场景实战指南 【免费下载链接】meld Read-only mirror of https://gitlab.gnome.org/GNOME/meld 项目地址: https://gitcode.com/gh_mirrors/me/meld Meld是一款开源的可视化文件对比工具,能够帮助开发者…...
收藏!小白程序员必看:Agent和工作流是最佳拍档,教你如何协同它们(附案例)
文章探讨了AI智能体(Agent)和工作流工具的关系,指出它们并非竞争对手,而是最佳拍档。Agent擅长自主决策和动态规划,适用于探索性和不确定性任务;工作流则负责流程编排和确定性执行,适用于重复性…...
3个关键步骤:如何用Bilibili-Evolved打造60fps流畅播放体验
3个关键步骤:如何用Bilibili-Evolved打造60fps流畅播放体验 【免费下载链接】Bilibili-Evolved 强大的哔哩哔哩增强脚本 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved Bilibili-Evolved作为一款强大的哔哩哔哩增强脚本,为追求极…...
原创:行业空白:从约束崩塌到系统闭环的工程新论
行业空白:从约束崩塌到系统闭环的工程新论 作者:华夏之光永存 #工程约束 #底层架构 #系统稳定性 #软件开发 #高端制造 #工程方法论 #逻辑闭环 #零缺陷工程 #源头治理 #技术架构 摘要 本文直指当前工程领域普遍存在的核心问题:缺乏统一、刚性的…...
Qwen3-VL-8B系统资源管理:监控与清理GPU显存和C盘空间
Qwen3-VL-8B系统资源管理:监控与清理GPU显存和C盘空间 长期运行像Qwen3-VL-8B这样的大模型服务,就像养了一头“数字大象”——它能力强大,但胃口也不小,尤其能吃GPU显存和硬盘空间。很多朋友刚开始部署时一切顺利,但跑…...


