当前位置: 首页 > news >正文

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(三)

 整期笔记索引

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(一)

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二)

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(三)

本章前言

在测试笔记(一)中,我们已经掌握并搭建了板卡的初步调试环境。

在测试笔记(二)中,我们开始逐步上手官方的Demo,进行跑测,首先测试的是Camera图像获取(USB接口)样例

今天,我们将要跑测:目标检测(USB接口)样例。

官方Demo跑测——02 目标检测(YoloV5s)

【目标检测(USB接口)样例 链接】

Ascend/EdgeAndRobotics - Gitee.comicon-default.png?t=N7T8https://gitee.com/ascend/EdgeAndRobotics/tree/master/Samples/YOLOV5USBCamera

【样例描述】

通过USB接口连接Camera与开发板,从Camera获取视频,基于yolov5s模型对输入视频中的物体做实时检测,将推理结果信息使用imshow方式显示。

YOLOv5是一种单阶段目标检测器算法

YOLOv5sYOLOv5系列中较为轻量的网络模型,适合在边缘设备部署,进

行实时目标检测。

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/ACLLiteicon-default.png?t=N7T8https://gitee.com/ascend/ACLLite

【ACLLite库描述】

通过USB接口连接Camera与开发板,从Camera获取视频,基于yolov5s模型对输入视频中的物体做实时检测,将推理结果信息使用imshow方式显示。

  • CANN版本要求: 7.0及以上社区版本。

命名空间

模块

说明

acllite

common

资源管理及公共函数模块

DVPPLite

DVPP高阶封装模块

OMExecute

离线模型执行高阶封装模块

Media

媒体功能高阶封装模块

  • 安装依赖
  1. 安装CANN
    参考社区文档安装CANN
     
  2. 安装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的值可赋值为imagevideocamera,分别对应对图片、视频、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】常用命令

删除 删除本地分支&#xff1a; // 删除本地分支 git branch -d localBranchName 删除远程仓库分支 git push origin --delete <branch_name> 验证远程分支是否删除 git fetch -p //会清理已经删除的远端分支的引用 git branch -r //列出所有远端分支&#xff0…...

JavaWeb_MySQL数据库

数据库&#xff1a; MySQL数据模型&#xff1a; MySQL是关系型数据库。 SQL&#xff1a; 简介 分类&#xff1a; 数据库设计-DDL 对数据库操作&#xff1a; 表操作&#xff1a; 小练习&#xff1a; 创建下表 SQL代码&#xff1a; create table tb_user (id int primar…...

中国BI步入增长大周期,腾讯云ChatBI加速AI+BI融合

过去十年&#xff0c;大数据技术的快速发展&#xff0c;让数据消费前进一大步&#xff0c;数据价值得到一定程度的挖掘与释放&#xff0c;真正开启了“用数”的大时代。但数据分析繁杂的技术栈、复杂的处理过程以及程式化的交互方式&#xff0c;让“数据消费”的门槛始终降不下…...

揭秘Python:下划线的特殊用法,你绝对想不到!

在Python编程中&#xff0c;下划线&#xff08;underscore&#xff09;是一个常见而又强大的工具。它不仅仅是一个普通的字符&#xff0c;而是具有特殊含义和用法的符号。今天&#xff0c;我们就来揭开Python下划线的神秘面纱&#xff0c;探索它的各种妙用。 下划线的基本用法…...

深入探索Java世界中的Jackson魔法:玩转JsonNode

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 揭秘Jackson库&#xff1a;JSON处理的瑞士军刀 在Java的世界里&#xff0c;处理JSON数据就像是一场探险。幸运的是&#xff0c;Jackson库就像一把多功能的瑞士军刀&#xff0c;为提供了强大而灵活的工具来解析和操作…...

为什么要使用动态代理IP?

一、什么是动态代理IP&#xff1f; 动态代理IP是指利用代理服务器来转发网络请求&#xff0c;并通过不断更新IP地址来保护访问者的原始IP&#xff0c;从而达到匿名访问、保护隐私和提高访问安全性的目的。动态代理IP在多个领域中都有广泛的应用&#xff0c;能够帮助用户…...

【PB案例学习笔记】-09滚动条使用

写在前面 这是PB案例学习笔记系列文章的第8篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gitee…...

C++中常见的构造函数类别

目录 摘要 默认构造函数&#xff08;Default Constructor&#xff09;&#xff1a; 带参数的构造函数&#xff08;Parameterized Constructor&#xff09;&#xff1a; 拷贝构造函数&#xff08;Copy Constructor&#xff09;&#xff1a; 移动构造函数&#xff08;Move C…...

万界星空科技MES系统功能介绍

制造执行系统或MES 是一个全面的动态软件系统&#xff0c;用于监视、跟踪、记录和控制从原材料到成品的制造过程。MES在企业资源规划(ERP) 和过程控制系统之间提供了一个功能层&#xff0c;为决策者提供了提高车间效率和优化生产所需的数据。 万界星空科技MES 系统基础功能&am…...

炸裂的开源AI语音生成模型ChatTTS

今天看到GitHub上开源了一个非常厉害的AI语音生成模型ChatTTS&#xff0c;可以生成和人类声音非常接近的语音&#xff0c;而且有语气、语调、可以停顿和发出笑声&#xff0c;再也没有了以前的AI味道 体验地址&#xff1a;https://colab.research.google.com/drive/1MYep5f0-BJ…...

Mac逆向Electron应用

工具库 解压asar文件 第一步 找到应用文件夹位置 打开活动监视器&#xff1a; 搜索相关应用 用命令行打开刚才复制的路径即可 open Applications/XXX.app/Contents/Resources/app第二步 解压打包文件 解压asar文件...

(三)MobaXterm、VSCode、Pycharm ssh连接服务器并使用

背景&#xff1a;根据前两篇文章操作完成后&#xff0c; 手把手教学&#xff0c;一站式安装ubuntu及配置服务器-CSDN博客 手把手教学&#xff0c;一站式教你实现服务器&#xff08;Ubuntu&#xff09;Anaconda多用户共享-CSDN博客 课题组成员每人都有自己的帐号了&#xff0…...

【Linux】初识信号及信号的产生

初始信号 初始信号什么是信号站在应用角度的信号查看Linux系统定义的信号列表 信号的常见处理方式信号的产生通过终端按键产生信号什么是core dump?如何开启core dump?core dump有什么用&#xff1f;为什么默认关闭core dump&#xff1f;设置了core文件大小但是没有产生core文…...

故障诊断 | 基于 KAN、KAN卷积的轴承故障诊断模型

研究背景: 轴承是机械设备中常见的关键部件之一,其工作状态直接影响设备的性能和可靠性。因此,轴承故障的早期诊断对于设备的正常运行和维护具有重要意义。近年来,基于振动信号的轴承故障诊断成为了研究的热点之一。KAN: Kolmogorov-Arnold Network 是一种有效的处理方法。…...

【设计模式】JAVA Design Patterns——Factory Method(虚拟构造器模式)

&#x1f50d;目的 为创建一个对象定义一个接口&#xff0c;但是让子类决定实例化哪个类。工厂方法允许类将实例化延迟到子类 &#x1f50d;解释 真实世界例子 铁匠生产武器。精灵需要精灵武器&#xff0c;而兽人需要兽人武器。根据客户来召唤正确类型的铁匠。 通俗描述 它为类…...

Spring——依赖项

文章目录 依赖注入基于构造函数的依赖注入基于 Setter 的依赖注入依赖解析过程依赖注入的示例 依赖关系和配置详细信息直接值&#xff08;原语、字符串等&#xff09;idref标签References to Other Beans &#xff08;对其他 Bean的引用&#xff09;Inner Beans&#xff08;内部…...

C语言 | Leetcode C语言题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; 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示例&#xff1a;创建和使用 IntentService 2. Service …...

英飞凌24GHz毫米波雷达-BGT24LTR11N16家用机器人应用

BGT24LTR11N16基础描述&#xff1a; 关于BGT24LTR11N16&#xff0c;它是一款用于信号生成和接收的硅锗雷达MMlC&#xff0c;工作频率为24.00GHz至24.25GHz ISM频段。它基于24GHz基本电压控制振荡器&#xff08;VCO&#xff09;。 这颗芯片是属于1T1R&#xff0c;也就是一发一收…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...