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

news2024/11/17 6:41:13

 整期笔记索引

香橙派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 ../model

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/yolov5s.onnx --no-check-certificate

wget 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 ../scripts

bash 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入门级选手,可以考虑入手,边学习边深入应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1712517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深入学习Redis丨第一篇】Redis服务器部署详解

前言 小伙伴们大家好,我是陈橘又青,今天起 《深入学习Redis》 专栏开始更新。本专栏将专为希望深入了解Redis的开发者、系统架构师以及数据库爱好者而写的免费专栏。从Redis的基本概念入手,逐步深入到其内部实现和高级用法。希望能帮助你更好…

uni-app基础框架搭建(vue3+ts+vite)

1.基础准备 uni-app官网uni-app,uniCloud,serverless,环境安装,创建uni-app,自定义模板,国内特殊情况,更新依赖到指定版本,运行、发布uni-app,运行并发布快应用,运行并发布快应用(webview),运行并发布快应用(webview)-华为,cli创建项目和HBuilderX可视化界面创https://uniapp.…

LuatOS学习

开发顺序 Lua是脚本语言中运行速度最快的语言 资源占用极低 脚本语言运行方式 脚本语言是从上往下一行一行运行的 变量 coun 123456 a,b,c 1,2,3交换 a,b b,a在测试环境中,用print(a,b)打印 nil类型 未声明的变量就是nil,nil用来表示此变量为空…

Midjourne进阶篇 | 个性化潮玩

当Midjourney遇上潮玩,你想不到的惊艳! 前言盲盒魔法公式**01.嘻哈潮玩****02.荧光猫少女****03.古风剑侠****04.音乐节少年****05.Q版古风少女** 总结 前言 以前,制作盲盒需要专业盲盒设计师完成,对于大部分人来说,这…

柔性自驱动生物“电子衣”促进伤口愈合

引用信息 文 章:Combined Amniotic Membrane and Self-Powered Electrical Stimulator Bioelectronic Dress Promotes Wound Healing 期 刊:ACS Applied Materials & Interfaces(影响因子:9.5) 发表时间…

抓考勤的不止一个,怎么就京东出事了?

大家好,我是瑶琴呀。 最近两天,京东、刘强东成为热搜上舆论的中心点,这几天京东发生的事情,让打工人破大防。纷纷在这场舆论战中找到了深深的带入感。 而破防的原因不难猜测,正是网上流传的京东严苛的考勤制度&#x…

红酒配餐中的酒杯选择与使用技巧

在红酒配餐中,酒杯的选择与使用技巧是影响品鉴体验的重要因素。合适的酒杯不仅能展现出红酒的优雅和风味,还能提升用餐的仪式感和愉悦感。云仓酒庄雷盛红酒以其卓着的品质和丰富的口感,成为了红酒爱好者们的首要选择品牌。下面将介绍在红酒配…

python-数据可视化(总)

python-数据可视化 ** 数据可视化 指的是通过可视化表示来探索数据,它与数据挖掘**紧密相关,而数据挖掘指的是使用代码来探索数据集的规律和关联。数据集可以是用一行代码就能表示的小型数字列表,也可以是数以吉字节的数据 最流行的工具之一…

C++容器之队列(std::queue)

目录 1 概述2 使用实例3 接口使用3.1 construct3.2 empty3.3 size3.4 front3.5 back3.6 push3.7 emplace3.8 pop3.9 swap1 概述 队列是一种容器适配器,专门设计用于在FIFO上下文(先进先出)中操作,其中元素被插入容器的一端并从另一端提取。   队列被实现为容器适配器,容…

给想玩AIGC的小白:教你从0搭一个图文视频生成网站(附插件源码)

Stable Diffusion的发布是AI图像生成发展过程中的一个里程碑,相当于给大众提供了一个可用的高性能模型,让「AI 文本图片生成」变成普通人也能玩转的技术。最近一些网友将网上的真人图片不断喂给模型,让其自主学习,训练出来的效果已…

2024年社会发展、人文艺术与文化国际会议(ICSDHAC 2024)

2024年社会发展、人文艺术与文化国际会议(ICSDHAC 2024) 会议简介 2024年国际社会发展、人文、艺术和文化会议(ICSDHAC 2024)将在广州举行。会议旨在为从事社会发展、人文、艺术和文化研究的专家学者提供一个平台,分…

VI 使用替换命令快速注释多行

使用替换命令快速注释多行: 按下 Esc 键确保你在普通模式下。输入 :起始行号,结束行号s/^/#/ 并按 Enter 键。 :起始行号 和 结束行号 分别是你要注释的起始行和结束行的行号。 关于正则 s/^/#/各个部分解释: s/: 这是vi编辑器中的替换命令的开头。s 表…

音视频开发10 FFmpeg 内存模型-AVPacket, AVFrame

从现有的 Packet 拷贝一个新 Packet 的时候,有两种情况: • ①两个 Packet 的 buf 引用的是 同一数据缓存空间 ,这时 候要注意数据缓存空间的释放问题; • ②两个 Packet 的 buf 引用不同的数据缓存空间 ,每个 Pac…

[ARM-2D 专题] arm-2d配套开发工具准备

arm-2d 提供了配套的图片转换工具img2c.py和字体转换工具ttf2c.py,工具用python语言编写,所以需要先安装python及其相关的支持包。 从python网站可以下载到最新的安装版本,根据你自己的电脑配置选择。 python的相关信息: 官网: ht…

linux系统安装软件

目录 linunx系统安装软件的方法 rpm yun命令 基本介绍 2.安装 升级、卸载的指令完成 linux 系统中如何使用设备 怎么用 创建本地源 在线仓库 第三方在线仓库 linunx系统安装软件的方法 源码安装 类似于 exe rmp安装 安装包 rmp yun安装 rmp 的升级版 源码安装 源码…

多线程新手村4--定时器

定时器是日常开发中很常见的组件,定时器大家可能不知道是干什么的,但是定时炸弹肯定都听过,定个时间,过一段时间后bomb!!!爆炸 定时器的逻辑和这个一样,约定一个时间,这…

Linux服务器安装与配置python环境 最新linux安装python 小白教程

目录 一、下载官网的安装包 二、安装流程 三、配置软连接(类似window系统的环境变量) 四、可能会出现的问题: 1.ssl连接问题,下图所示: 一、下载官网的安装包 1.官网安装包地址:https://www.python.org/…

回溯算法04(leetcode93、78、90)

参考资料: https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 93. 复原 IP 地址 题目描述: 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0)&#xff0…

突破空间限制,这些远程控制软件为父母送上“手把手”的教导,解决异地办公难题,出差无忧

在现代社会,科技的飞速发展带来了诸多便利,但同时也给一些年长的父母们带来了困扰。 当父母们面对智能手机电脑等高科技产品时,他们往往感到无所适从,而子女们忙于工作、学习或其他原因,常常无法时刻陪伴在父母身边&a…

Java版招投标管理系统源码:优化流程,提升效率,实现全方位项目管理

在现今日益竞争激烈的招标市场中,企业需要一款强大而灵活的招投标管理系统来优化流程、提升效率。我们的招投标管理系统正是为此而生,它集门户管理、立项管理、采购项目管理、公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等多…