当前位置: 首页 > 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入门级选手,可以考虑入手,边学习边深入应用。

相关文章:

  • pymupdf提取pdf表格及表格数据合并
  • 高舒适性气膜网球馆的注意事项—轻空间
  • JSP与Servlet的区别
  • vscode编译文件夹下所有文件的配置(包含插件和 .json 文件)
  • 现阶段对于伪造检测的重难点--泛化
  • 【C++PCL】点云处理KD-ICP配准
  • C# 类型系统
  • 异步通知驱动实例
  • 数据可视化---使用matplotlib绘制高级图表(2)
  • MySQL—多表查询(概述、基本实操、分类)
  • 240.搜索二维矩阵
  • 开发指南027-微信支付
  • HR招聘面试测评,测评候选人的语言和表达能力
  • 数字化转型中存在的五大问题:意识、供给、成本、能力、竞争力培育
  • Linux命令locate:快速定位文件与目录
  • [case10]使用RSQL实现端到端的动态查询
  • 【React系列】如何构建React应用程序
  • 2019年如何成为全栈工程师?
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • co.js - 让异步代码同步化
  • css的样式优先级
  • Debian下无root权限使用Python访问Oracle
  • es的写入过程
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Less 日常用法
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • vue-cli在webpack的配置文件探究
  • 从输入URL到页面加载发生了什么
  • 基于web的全景—— Pannellum小试
  • 两列自适应布局方案整理
  • 使用 QuickBI 搭建酷炫可视化分析
  • 算法-插入排序
  • 提醒我喝水chrome插件开发指南
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​ArcGIS Pro 如何批量删除字段
  • ​ubuntu下安装kvm虚拟机
  • #stm32驱动外设模块总结w5500模块
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (+4)2.2UML建模图
  • (三) diretfbrc详解
  • (转)树状数组
  • (转载)Linux 多线程条件变量同步
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET 5种线程安全集合
  • .NET C# 操作Neo4j图数据库
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .NET企业级应用架构设计系列之结尾篇
  • .NET项目中存在多个web.config文件时的加载顺序
  • .net专家(高海东的专栏)
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘