OrangePi AIpro小试牛刀-目标检测(YoloV5s)

news2024/11/24 14:25:28

非常高兴参加本次香橙派AI Pro,香橙派联合华为昇腾打造的一款AI推理开发板评测活动,以前使用树莓派Raspberry Pi4B 8G版本,这次有幸使用国产嵌入式开发板。

一窥芳容

img

img

这款开发板搭载的芯片是和华为昇腾的Atlas 200I DK A2同款的处理器,功耗低至8W

默认AI CPU和Control CPU 比例1:3,

芯片名称

310B1:表示芯片算力规格为20T。
310B4:表示芯片算力规格为8T

orangepi AI pro之后会推出20TOPS AI算力版本开发板

ubuntu系统构建

本次测评基于ubuntu系统烧写,linux镜像脚本编译,usb摄像头yolov5目标检测编写文章。

基于PC主机烧写Ubuntu22.04

烧写步骤
  1. 准备TF读卡器,32G或者更大的TF卡,Ubuntu官方镜像

  2. 镜像下载地址,选择ubuntu镜像

  3. 使用官方工具中的balenaEtcher烧写工具,使用portable版

选择32的磁盘

img

烧写速度15M/s,烧写完成之后会进行30min的校验。也可取消校验

  1. 插卡,启动开发板
登录方式

使用串口登录

软件MobaXterm,新建Session,选择Serial,CH340USB驱动,波特率115200

img

使用账户:HwHiAiUser ,密码:Mind@123

Linux镜像编译脚本的使用

前言

目前linux镜像编译脚本只在Ubuntu22.04的x64电脑上测试过,请保证自己ubuntu版本为22.04.

本次使用VMware Workstation 的ubuntu22.04虚拟机镜像编译脚本,虚拟机镜像磁盘最小为50G,软件源替换为清华源

镜像编译脚本压缩包

1.在下载页面选择Linux源码

img

2.然后下载image.build.tar.gz压缩包,使用filezilla传到ubuntu22.04 目录/opt下

3.解压

tar -zxf image-builder.tar.gz

4.进入src目录下会有3种镜像,必须先制作minimal镜像

模块名称**模块目录功能简介
最小镜像src/minimal可以在开发板上启动但缺少部分依赖的镜像
完整镜像src/complete完整依赖镜像
压缩扩容镜像src/compress带有压缩扩容功能的完整依赖镜像
制作最小镜像

1.将ubuntu language设置为English(UK)

2.tf读卡器插入电脑,usb口,vmware会弹出窗口将硬盘接入虚拟机

img

3.切换root用户,安装依赖包

su -i
apt-get install -y qemu-system qemu-user qemu-user-static binfmt-support

4.然后将emmc-head文件依赖的库文件拷贝到ubuntu22.04的/usr/lib64,库文件在==linux源码====library文件夹==

img

使用filezilla上传

img

5.运行emmc-head命令,输出以下内容,表示lib安装成功

img

6.进入sr/minimal,ubuntu预装进开发板的软件包deb可以放在

ubuntu/22.04/download

7.使用fdish -l查看硬盘挂载情况

找到32G tf卡所在挂载路径

img

8.执行以下命令,开始制作最小镜像

bash base.sh ubuntu/22.04/ /dev/sdb ubuntu/22.04/download/

img

9.最终输出,制作成功

Minimal image build successful!

查看磁盘分区,被划分成5个分区

img

TF插入主板,会重启一次,重启之后可以使用串口登录

YoloV5s目标检测

前言

使用usb摄像头,加orangepi AI pro开发板。

执行准备

确定具有桌面的镜像,使用HDMI0连接显示器、

HwHiAiUser用户登录开发板

切换到root用户

cd /opt/opi_test

cd ResnetPicture/scripts

bash sample_run.sh

如果你是orangepi aipro ubuntu 22.04镜像 -> 安装ACClite

2.安装依赖

Sapt-get install ffmpeg libavcodec-dev libswscale-dev libavdevice-dev

检查ffmepg是否安装成功

dpkg -S ffmpeg

3.安装步骤:

# 拉取ACLLite仓库,并进入目录
git clone https://gitee.com/ascend/ACLLite.git
cd 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
样例下载

==切换用户到HwHiAiUser==

下载源码,从gitee上clone

git clone https://gitee.com/ascend/EdgeAndRobotics.git

切换到样例目录

cd EdgeAndRobotics/Samples/YOLO5USBCamera
cd model


运行样例

1.使用usb摄像头,直接从外设使用opencv读取图片帧处理

2.获取PyTorch框架的Yolov5模型(*.onnx),并转换为昇腾AI处理器能识别的模型(*.om)

  • 当设备内存小于8G时,可设置如下两个环境变量减少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处理器的版本。version = Ascend310B4

3.编译源码

~/EdgeAndRobotics/Samples/YOLOVSUSBCamera/models$ cd ../scripts
ls
sample_run.bash sample_build.sh
编译样例源码
bash sample_build.sh

4.运行样例

在直连电脑场景,执行以下脚本运行样例。此时会以结果打屏的形式呈现推理效果。

bash sample_run.sh stdout

最后终于成功

img

img

总结错误

bash sample_build.sh

  1. 文件无法写入问题

权限,之前转换模型时使用的root

img

img

解决

sudo chown -R HwHiAiUser:HwHiAiUser build
 sudo chown -R HwHiAiUser:HwHiAiUser out
  1. ACLLite库没安装错误

sudo bash sample_build.sh
[sudo] password for HwHiAiUser:
[INFO] Sample preparation
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- set default INC_PATH: /usr/local/Ascend/ascend-toolkit/latest
-- set default LIB_PATH: /usr/local/Ascend/ascend-toolkit/latest/runtime/lib64/stub
-- Found OpenCV: /usr (found version "4.5.4")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/HwHiAiUser/EdgeAndRobotics/Samples/YOLOV5USBCamera/build/intermediates/host

img

解决方法在上面 安装ACLLite

  1. 模型加载失败

原因是转换模型时root用户,生成的yolov5s.om模型是root用户

img

img

解决方法:

sudo chown -R HwHiAiUser:HwHiAiUser yolov5s.om

4.** cv::Exception**
我在串口执行sample_run.sh时

terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.5.4) ./modules/highgui/src/window_gtk.cpp:635: error: (-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'

sample_run.sh: line 5: 19325 Aborted (core dumped) ./main $1
[INFO] The program runs failed

将其切换到桌面系统,因为要启动一个输出图像页面

img

其他样例

使用AscendCL显示不同功能

样例功能样例名称
“Hello World” For AscendCLsampleResnetQuickStart以ResNet50网络模型为例进行模型推理,实现对物体进行分类,并给出TOP5类别置信度和相应类别信息
Object Detection with Acllite Acllite目标检测sampleYOLOV7以YOLOV7网络模型为例,使能Acllite对图片进行预处理,并通过模型转换使能静态AIPP功能,使能AIPP功能后,YUV420SP_U8格式图片转化为RGB,然后减均值和归一化操作,并将该信息固化到转换后的离线模型中,对YOLOV7网络执行推理,对图片进行物体检测和分类,并给出标定框和类别置信度。

具体学习可参考-> samples: CANN Samples (gitee.com)

参考资料

[1]深圳市迅龙软件有限公司. (2024). OrangePi AI Pro 昇腾用户手册 V0.3.1[用户手册]. 深圳: 深圳市迅龙软件有限公司.

[2]华为技术有限公司. (2024). EdgeAndRobotics[源代码]. Gitee平台. https://gitee.com/ascend/EdgeAndRobotics

深圳迅龙科技有限公司. (2024). Orange Pi AI Pro产品介绍与技术支持[EB/OL]. 橙派官网, http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-AIpro.html.

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

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

相关文章

插卡式仪器模块:数字万用表模块(插卡式)

• 6 位数字表显示 • 24 位分辨率 • 250 KSPS 采样率 • 电源和数字 I/O 均采用隔离抗噪技术 • 电压、电流、电阻、电感、电容的高精度测量 • 二极管/三极管测试 通道122输入 阻抗 电压10 MΩHigh-Z, 10 MΩ电流10 Ω50 mΩ / 2 Ω / 2 KΩ输入范围电压 5 V0–60 V电流…

钉钉统一授权登录第三方网站

开发流程 配置回调域名。 进入已创建的应用详情页,在基础信息页面可以查看到应用的SuiteKey/SuiteSecret(第三方企业应用)或AppKey/AppSecret(企业内部应用)。 在应用详情页,然后单击钉钉登录与分享,添加应用回调的URL,以http或…

一文学习yolov5 实例分割:从训练到部署

一文学习yolov5 实例分割:从训练到部署 1.模型介绍1.1 YOLOv5结构1.2 YOLOv5 推理时间 2.构建数据集2.1 使用labelme标注数据集2.2 生成coco格式label2.3 coco格式转yolo格式 3.训练3.1 整理数据集3.2 修改配置文件3.3 执行代码进行训练 4.使用OpenCV进行c部署参考文…

安全专业的硬件远控方案 设备无网也能远程运维

在很多行业中,企业的运维工作不仅仅局限在可以联网的IT设备,不能连接外网的特种设备也需要专业的远程运维手段。 这种特种设备在能源、医疗等行业尤其常见,那么我们究竟如何通过远程控制,对这些无网设备实施远程运维,…

单灯双控开关原理

什么是单灯双控?顾名思义,指的是一个灯具可以通过两个不同的开关或控制器进行控制。 例如客厅的主灯可能会设置成单灯双控,一个开关位于门口,另一个位于房间内的另一侧,这样无论你是从门口进入还是从房间内出来&#x…

Java数据结构准备工作---常用类

文章目录 前言1.包装类1.1.包装类基本知识1.2.包装类的用途1.3.装箱和拆箱1.3.1.装箱:1.3.2.拆箱 1.4 包装类的缓存问题 2.时间处理类2.1.Date 时间类(java.util.Date)2.2.DateFormat 类和 SimpleDateFormat 类2.3.Calendar 日历类 3.其他常用类3.1.Math类3.2.Rando…

(论文翻译)Coordinate Attention for Efficient Mobile Network Design(坐标注意力 CVPR2021)

Coordinate Attention for Efficient Mobile Network Design(CVPR2021) 文章目录 Coordinate Attention for Efficient Mobile Network Design(CVPR2021)摘要1.引言2.相关工作3.方法:Coordinate Attention3.1.Revisit …

(二)JSX基础

什么是JSX 概念:JSX是JavaScript和XML(HTML)的缩写,表示在JS代码中编写HTML模版结构,它是React中编写UI模板的方式。 优势:1.HTML的声明式模版方法;2.JS的可编程能力 JSX的本质 JSX并不是标准…

RabbitMQ-topic exchange使用方法

RabbitMQ-默认读、写方式介绍 RabbitMQ-发布/订阅模式 RabbitMQ-直连交换机(direct)使用方法 目录 1、概述 2、topic交换机使用方法 2.1 适用场景 2.2 解决方案 3、代码实现 3.1 源代码实现 3.2 运行记录 4、小结 1、概述 topic 交换机是比直连交换机功能更加强大的…

强!推荐一款开源接口自动化测试平台:AutoMeter-API !

在当今软件开发的快速迭代中,接口自动化测试已成为确保代码质量和服务稳定性的关键步骤。 随着微服务架构和分布式系统的广泛应用,对接口自动化测试平台的需求也日益增长。 今天,我将为大家推荐一款强大的开源接口自动化测试平台: AutoMete…

备战 清华大学 上机编程考试-冲刺前50%,倒数第5天

T1:多项式求和 小K最近刚刚习得了一种非常酷炫的多项式求和技巧,可以对某几类特殊的多项式进行运算。非常不幸的是,小K发现老师在布置作业时抄错了数据,导致一道题并不能用刚学的方法来解,于是希望你能帮忙写一个程序…

SpringBoot+Vue体育馆管理系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 学生管理员 功能截图

计算机网络 期末复习(谢希仁版本)第4章

路由器:查找转发表,转发分组。 IP网的意义:当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就…

144、二叉树的前序递归遍历

题解: 递归书写三要素: 1)确定递归函数的参数和返回值。要确定每次递归所要用到的参数以及需要返回的值 2)确定终止条件。操作系统也是用栈的方式实现递归,那么如果不写终止条件或者终止条件写的不对,都…

从哲学层面谈稳定性建设

背景 我(姓名:黄凯,花名:兮之)在阿里工作了五年,一直在一个小团队从事电商的稳定性工作。看了很多稳定性相关的文档,很少有能把稳定性说明白的文档。也有一些文档也能把涉及的方方面面说清楚&a…

办理公司诉讼记录删除行政处罚记录删除

企业行政处罚记录是可以做到撤销消除的,一直被大多数企业忽略,如果相关诉讼记录得不到及时删除,不仅影响企业招投标,还影响企业的贷款申请,严重的让企业资金链断裂,影响企业长远发展和企业形象。行政处罚是…

配置网页版的SQL Developer : Oracle Database Actions

我们知道SQL Developer有三种形式: 桌面版,这个最常用命令行版,即SQLcl网页版,即SQL Developer Web,最新的名字叫Oracle Database Actions, 本文讲述3,如何配置SQL Developer网页版。 第一步…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(一)

主要帮助大家面向工作过程中Linux系统常用的命令联系,采用极致的实用主义,帮助大家节省时间。 文章目录 前言 一、linux系统 二、linux系统基本命令 1.Linux系统的目录结构 2. 常用命令介绍 3.命令演示 4.作业练习 总结 前言 主要帮助大家面向工作过程中…

「动态规划」打家劫舍的变形题,你会做吗?

213. 打家劫舍 IIhttps://leetcode.cn/problems/house-robber-ii/description/ 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#x…

C++ Easyx案例实战:Cookie Maker工作室1.0V

前言 //制作属于自己的工作室! 注:运行效果以及下载见Cookie Maker 工作室成立程序。 关于Cookie Maker工作室成立的信息,I am very happy(唔……改不过来了)。 OKOK,第一次用图形库写程序(图形…