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

非常高兴参加本次香橙派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.

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

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

相关文章

Vue3【十四】watchEffect自动监视多个数据实现,不用明确指出监视哪个数据

Vue3【十四】watchEffect自动监视多个数据实现&#xff0c;不用明确指出监视哪个数据 Vue3【十四】watchEffect自动监视多个数据实现&#xff0c;不用明确指出监视哪个数据 进入立即执行一次&#xff0c;并监视数据变化 案例截图 目录结构 代码 Person.vue <template>&…

element-plus的el-text组件(文本组件)的介绍和使用

el-text&#xff08;适合文本操作的组件&#xff09; 设置文本type,如default,primary,success,info,warning,danger超出容器尺寸自动省略&#xff0c;tuncated属性设置size属性控制文本大小&#xff0c;有large,default,small设置tag属性&#xff0c;值为html5标签名&#xf…

统信UOS1070上配置文件管理器默认属性02

原文链接&#xff1a;统信UOS 1070上配置文件管理器默认属性01 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在统信UOS 1070上配置文件管理器默认属性的第二篇文章——配置工作区视图。文件管理器中的工作区视图配置可以帮助我们更好地组织和管理文件&#xff0c;…

你还在纠结U盘怎么选吗?小白带你来看

前言 2024年的618活动已经开始了&#xff0c;这个活动买电子产品着实是比其他时间要便宜很多。 前几天小白的一个好朋友问我&#xff1a;U盘该怎么选&#xff1f; 呃&#xff0c;本来是想写“老朋友”的&#xff0c;结果她愣是要我改成“好朋友”。 行吧&#xff0c;那就好朋…

unity3d:GameFramework+xLua+Protobuf+lua-protobuf,与服务器交互收发协议

概述 1.cs收发协议&#xff0c;通过protobuf序列化 2.lua收发协议&#xff0c;通过lua-protobuf序列化 一条协议字节流组成 C#协议基类 CSPacketBase&#xff0c;SCPacketBaseC#用协议基类 proto生成的CS类&#xff0c;基于这两个基类。分别为CSPacketBase是客户端发送至服…

Linux内核epoll

Linux网络IO模型 同步和异步&#xff0c;阻塞和非阻塞 Linux下的五种IO模型 同步和异步&#xff0c;阻塞和非阻塞 Linux 下的五种I/O模型&#xff1a; 阻塞IO&#xff08;Blocking IO&#xff09; BIO 非阻塞IO&#xff08;No Blocking IO&#xff09; IO复用&#xff08;se…

二叉树—leetcode

前言 本篇博客我们来仔细说一下二叉树二叉树的一些OJ题目 请看完上一篇&#xff1a;数据结构-二叉树-CSDN博客 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;LeetCode_普通young man的博客-CSDN博客 若有问题 评论区见&#x1f4dd; &…

EarMaster Pro软件下载附加详细安装教程

简介 来自丹麦皇家音乐学院的多媒体音乐教育软件 EarMaster Pro以问答的交互形式&#xff0c;寓教于乐的视听方法&#xff0c;给专业和非专业音乐人士以极大的音乐学习帮助。 无论你是刚学音乐的儿童&#xff0c;还是一个音乐高手&#xff0c;都可以使用这个软件来增强你的听音…

kafka如何保证消息不丢失

Kafka发送消息是异步发送的&#xff0c;所以我们不知道消息是否发送成功&#xff0c;所以会可能造成消息丢失。而且Kafka架构是由生产者-服务器端-消费者三种组成部分构成的。要保证消息不丢失&#xff0c;那么主要有三种解决方法。 生产者(producer)端处理 生产者默认发送消息…

跨境电商|Facebook Marketplace怎么做?

2016 年&#xff0c;Facebook打造了同名平台 Facebook Marketplace。通过利用 Facebook 现有的庞大客户群&#xff0c;该平台取得了立竿见影的成功&#xff0c;每月访问量将超过 10 亿。对于个人卖家和小企业来说&#xff0c;Facebook Marketplace是一个不错的销货渠道&#xf…

什么是档案数字化管理

档案数字化管理指的是将传统的纸质档案转换为数字形式&#xff0c;并通过电子设备、软件和网络技术进行管理和存储的过程。 档案数字化管理包括以下几个步骤&#xff1a; 1. 扫描和数字化&#xff1a;将纸质档案通过扫描仪转换为数字图像或文档。可以使用OCR&#xff08;光学字…

Effective Java 1 用静态工厂方法代替构造器

知识点上本书需要会Java语法和lang、util、io库&#xff0c;涉及concurrent和function包。 内容上主要和设计模式相关&#xff0c;代码风格力求清晰简洁&#xff0c;代码尽量复用&#xff0c;组件尽量少依赖&#xff0c;错误尽早发现。 第1个经验法则&#xff1a;用静态工厂方…

vscode 突然无法启动 WSL terminal 了怎么办?

参考&#xff1a;https://github.com/microsoft/vscode/issues/107485 根据参考网页&#xff0c;似乎在 windows 更新之后&#xff0c;重启&#xff0c;就有可能出现标题所说的 vscode 无法启动 WSL terminal 的情况。 首先使用 cmd 进入 wsl 终端&#xff0c;把 ~/.vscode-se…

AIGC作答《2024年高考作文|新课标I卷》能拿多少分?

AIGC作答《2024年高考作文&#xff5c;新课标I卷》能拿多少分&#xff1f; 一、前言二、题目三、作答 一、前言 如火如荼的2024年高考圆满落幕&#xff0c;在如此Happy的时刻&#xff0c;AIGC技术正以其前所未有的热度席卷全球。它不仅改变了我们获取信息的方式&#xff0c;也…

EON安装ASE Interface

安装 测试系统ubuntu。如果你python2和python3总是纠缠不清&#xff0c;可以sudo apt install python-is-python3直接解决。 经检查&#xff0c;我PC的 python地址为&#xff1a; /usr/include/python3.8/ pybind11地址为&#xff1a; /usr/include/pybind11/ 已确认python…

【RAG入门教程01】Langchian框架 v0.2介绍

LangChain 是一个开源框架&#xff0c;旨在简化使用大型语言模型 (LLM) 创建应用程序的过程。可以将其想象成一套使用高级语言工具进行搭建的乐高积木。 它对于想要构建复杂的基于语言的应用程序而又不必管理直接与语言模型交互的复杂性的开发人员特别有用。它简化了将这些模型…

Python第二语言(七、Python模块)

目录 1. 什么是模块 2. 基本语法 2.1 模块的导入方式 2.2 基本语法 import 模块名 2.3 基本语法 from 模块名 import 功能名 2.4 基本语法as 别名 3. 自定义模块 4. 调用自定义模块时&#xff0c;如何让其模块中的函数不被调用&#xff08;__name__&#xff09; 5. 调…

springboot 3 oauth2认证this.authorizationService.save(authorization)生成token报错异常

springboot 3 oauth2认证this.authorizationService.save(authorization)生成token报错异常&#xff0c;使用springboot版本3.3.0。 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&…

【Qt】软件打包

1.qt 打包 1.1 修改APP图标 在*.pro中最下面添加RC_ICONS logo.ico注意&#xff1a;logo.ico为图片名称 效果&#xff1a; 1.2 打包文件 将包含exe文件的copy到自己打包文件夹 修改release构建目录 找到构建工程的构建 release 版本 构建&#xff0c;保险起见构建完编译…

家庭电脑私网如何访问阿里云服务器的指定端口

这里我们以在阿里云服务器上部署一个redis server 服务&#xff0c;对外开放6379端口为例子&#xff0c;其他端口类似。 1.获取当前电脑主机对应的公网IP, 可以https://tool.lu/ip/通过这个网站拿到。 2.阿里云服务器控制台设置防火墙&#xff0c;如下图所示&#xff0c;直接添…