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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端之HTML语言之基础标签(持续更新)(基础部分更新结束)

前端之HTML语言 学习完后端的各种层之后,今天开始学习前端,前端和后端都是一个项目的组成部分。 前端对应得到语言是HTML,HTML最重要的有三块,行为,样式,J结构。行为就是交互,理解为鼠标的点击…

Python数据分析案例45——基于融合模型(Stack)的电商用户购买行为预测

案例背景 最近618快到了,上电商购买的人很多,正好我手上还有这个用户购买行为的数据,就做了一个机器学习模型流程,然后也使用的都是常见的机器学习模型,但是加了一点创新吧,使用了stacking融合模型。简单来…

【python】成功解决“NameError: name ‘X’ is not defined”错误的全面指南

成功解决“NameError: name ‘X’ is not defined”错误的全面指南 一、引言 在Python编程中,NameError: name X is not defined是一个常见的错误。这个错误通常意味着我们试图使用一个未定义的变量名X。本文将详细解析这一错误的原因,并提供一系列实用…

正版软件 | Fences 最新版本 V5 - 组织工作流程的最佳方式

『Fences 简介』 Stardock Fences 是一款由 Stardock 公司开发的桌面组织工具,旨在帮助用户管理桌面上的图标和文件。以下是对 Stardock Fences 软件的概述: Stardock Fences 概述 开发商: Stardock 功能: 桌面图标管理: Fences 允许用户将桌面上的…

【Python机器学习】无监督学习——不同类型的预处理

之前学习过,一些算法(比如神经网络和SVM)对数据缩放非常敏感。因此,通常的做法是对特征进行调节,使数据更适合于这些算法。通常来说,这是对数据的一种简单的按照特征的缩放和移动。举例: impor…

MPLAB--读写MCU数据

空工程 Read –Programmer\Read –File\Export, –确定后选择文件位置 & 文件名 Program –File\Import…,选择烧录的文件*.hex –Programmer\Program

在Vue3中使用WebHQChart实现K线图的沙盘推演

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Vue.js K线沙盘推演代码 应用场景介绍 本代码演示了一个使用 Vue.js 框架开发的 K 线沙盘推演工具,它允许用户加载历史 K 线数据并对其进行编辑和修改,从而模拟和分析不同的市场走势。…

[原型资源分享]经典产品饿了么UI模版部件库

​部件库预览链接:https://f13gm0.axshare.com 支持版本: Axrure RP 8 文件大小: 3MB 文档内容介绍 基本部件:表单样式:12款、数据样式:10款、服务样式:6款、导航:5款、业务组件:7款、 模板…

关于无法通过脚本启动Kafka集群的解决办法

启动Kafka集群时,需要在每台个节点上启动启动服务,比较麻烦,通过写了以下脚本来进行启停;发现能正常使用停止功能,不能正常启动Kafka; Kafka启停脚本: ## 以防不能通过shell脚本启动Kafka服务…

SSM李宁线上商城系统小程序-计算机毕业设计源码48327

目 录 摘要 1 绪论 1.1课题研究背景 1.2研究现状 1.3系统开发技术的特色 1.4 ssm框架介绍 1.5论文结构与章节安排 2 李宁线上商城系统小程序系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据流程 2.2.2业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非…

CTFHUB-技能树-web-信息泄露

1.目录遍历 这个没什么好讲的,进去直接点击找flag,然后在下面目录翻,就找到了 ctfhub{ad8099fcb6e04071264ccb5c} 2.PHPINFO 访问 点击查看 3.备份文件下载 3.1 网站源码 访问 使用御剑扫描 然后下载查看 点击文本查看其他两个文件,也没发现…

从C到C++,C++入门篇(1)

1.什么是C C是一种通用编程语言,由Bjarne Stroustrup在1980年代初开发,作为C语言的扩展。 C支持多种编程范式,包括过程式编程、数据抽象、面向对象编程和泛型编程等。 这种语言在操作系统、游戏开发、图形界面、嵌入式系统、分布式系统、网…

RIP v2路由安全认证综合实验

RIP v2路由安全认证综合实验 实验拓扑: 实验要求:通过认证防范攻击者获得通信设备的相关信息。 实验步骤: 1.完成基本配置 sys Enter system view, return user view with CtrlZ. [Huawei]sys AR1 [AR1]undo in e Info: Information center…

【时间复杂度】定义与计算方法

文章目录 1.什么是时间复杂度?2.时间复杂度类别2.1 常量阶 O(1)2.2 对数阶 O(log n)2.3 线性阶 O(n)2.4 线性对数阶 O(n log n)2.5 平方阶 O(n^2^) 1.什么是时间复杂度? 时间复杂度是计算机科学中用来描述算法执行时间效率的一个概念。它表示了算法执行时…

借助调试工具理解BLE协议_3.Windows BLE调试工具

1.调试工具下载 Windows BLE调试工具是一款运行在Windows下的BLE调试软件,实现了扫描、连接、获取BLE设备上的服务以及向服务写入和读取数据的功能。图1是Windows BLE调试工具主界面。资源地址: https://download.csdn.net/download/mecompu/86508009?…

CogVLM2多模态开源大模型部署与使用

CogVLM2多模态开源大模型部署与使用 项目简介 CogVLM2 是由清华大学团队发布的新一代开源模型系列。2024年5月24日,发布了Int4版本模型,只需16GB显存即可进行推理。2024年5月20日,发布了基于llama3-8b的CogVLM2,性能与GPT-4V相当…

AI时代下的智能商品计划管理

在时尚产业迅猛发展的今天,商品计划已成为品牌运营不可或缺的一环。优秀的服装品牌通过精心策划的商品计划,不仅致力于为消费者提供独特且符合其需求的产品,同时也在不断探索如何更有效地整合企业资源,确保从设计、研发、采购到生…

可视化数据科学平台在信贷领域应用系列二:数据清洗

上一篇文章中,某互联网银行零售信贷风险建模专家使用数据科学平台Altair RapidMiner——完成了数据探索工作,《可视化数据科学平台在信贷领域应用系列一:数据探索》。本次这位建模专家再次和大家分享数据准备的第二步骤,数据清洗。…

揭秘HubSpot集客营销:如何吸引并转化全球潜在客户

随着全球数字化浪潮的推进,企业出海已经成为许多公司扩大市场、增加品牌曝光度的重要战略。HubSpot集客营销作为一种以客户为中心、数据驱动的营销策略,为企业在海外市场的成功提供了强有力的支持。作为HubSpot亚太地区的合作伙伴,NetFarmer将…