OrangePi AIpro小试牛刀-目标检测(YoloV5s)
非常高兴参加本次香橙派AI Pro,香橙派联合华为昇腾打造的一款AI推理开发板评测活动,以前使用树莓派Raspberry Pi4B 8G版本,这次有幸使用国产嵌入式开发板。
一窥芳容
这款开发板搭载的芯片是和华为昇腾的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
烧写步骤
准备TF读卡器,32G或者更大的TF卡,Ubuntu官方镜像
镜像下载地址,选择ubuntu镜像
使用官方工具中的balenaEtcher烧写工具,使用portable版
选择32的磁盘
烧写速度15M/s,烧写完成之后会进行30min的校验。也可取消校验
- 插卡,启动开发板
登录方式
使用串口登录
软件MobaXterm,新建Session,选择Serial,CH340USB驱动,波特率115200
使用账户:HwHiAiUser
,密码:Mind@123
Linux镜像编译脚本的使用
前言
目前linux镜像编译脚本只在Ubuntu22.04的x64电脑上测试过,请保证自己ubuntu版本为22.04.
本次使用VMware Workstation 的ubuntu22.04虚拟机镜像编译脚本,虚拟机镜像磁盘最小为50G,软件源替换为清华源
镜像编译脚本压缩包
1.在下载页面选择Linux源码
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会弹出窗口将硬盘接入虚拟机
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文件夹==下
使用filezilla上传
5.运行emmc-head命令,输出以下内容,表示lib安装成功
6.进入sr/minimal,ubuntu预装进开发板的软件包deb可以放在
ubuntu/22.04/download
7.使用fdish -l
查看硬盘挂载情况
找到32G tf卡所在挂载路径
8.执行以下命令,开始制作最小镜像
bash base.sh ubuntu/22.04/ /dev/sdb ubuntu/22.04/download/
9.最终输出,制作成功
Minimal image build successful!
查看磁盘分区,被划分成5个分区
TF插入主板,会重启一次,重启之后可以使用串口登录
YoloV5s目标检测
前言
使用usb摄像头,加orangepi AI pro开发板。
执行准备
确定具有桌面的镜像,使用HDMI0连接显示器、
HwHiAiUser用户登录开发板
切换到root用户
cd /opt/opi_testcd ResnetPicture/scriptsbash 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
- atc命令中各参数的解释如下,详细约束说明请参见《ATC模型转换指南》。
3.编译源码
~/EdgeAndRobotics/Samples/YOLOVSUSBCamera/models$ cd ../scripts
ls
sample_run.bash sample_build.sh
编译样例源码
bash sample_build.sh
4.运行样例
在直连电脑场景,执行以下脚本运行样例。此时会以结果打屏的形式呈现推理效果。
bash sample_run.sh stdout
最后终于成功
总结错误
bash sample_build.sh
- 文件无法写入问题
权限,之前转换模型时使用的root
解决
sudo chown -R HwHiAiUser:HwHiAiUser buildsudo chown -R HwHiAiUser:HwHiAiUser out
- 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
解决方法在上面 安装ACLLite
- 模型加载失败
原因是转换模型时root用户,生成的yolov5s.om模型是root用户
解决方法:
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
将其切换到桌面系统,因为要启动一个输出图像页面
其他样例
使用AscendCL显示不同功能
样例功能 | 样例名称 | |
---|---|---|
“Hello World” For AscendCL | sampleResnetQuickStart | 以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.
相关文章:

OrangePi AIpro小试牛刀-目标检测(YoloV5s)
非常高兴参加本次香橙派AI Pro,香橙派联合华为昇腾打造的一款AI推理开发板评测活动,以前使用树莓派Raspberry Pi4B 8G版本,这次有幸使用国产嵌入式开发板。 一窥芳容 这款开发板搭载的芯片是和华为昇腾的Atlas 200I DK A2同款的处理器&#…...

QT案例 记录解决在管理员权限下QFrame控件获取拖拽到控件上的文件路径
参考知乎问答 Qt管理员权限如何支持拖放操作? 的回答和代码示例。 解决在管理员权限运行下,通过窗体的QFrame子控件获取到拖拽的内容。 目录标题 导读解决方案详解示例详细 【管理员权限】在QFrame控件中获取拖拽内容 【管理员权限】继承 IDropTarget 类…...

[HNCTF 2022 WEEK4]flower plus
第一种花指令 第二种花指令 根据两种花指令特征,写出去花指令脚本 saddr0x401000 eaddr0x435000 for i in range(saddr,eaddr):if get_wide_dword(i)0x01740275:print(hex(i),hex(get_wide_dword(i)))patch_byte(i-5,0x90)patch_dword(i-4,0x90909090)patch_dw…...
Mongo常用语法(java代码)
1、根据agentId字段分组,并对totalCustomerNum、refundCustomerNum字段 sum求和,同时取别名 Overridepublic List<AgentCountInfoBean> selectCurrentMonthNewResource(Set<String> orderTypeSet, List<String> agentIds,LocalDateTim…...

go语言后端开发学习(二)——基于七牛云实现的资源上传模块
前言 在之前的文章中我介绍过我们基于gin框架怎么实现本地上传图片和文本这类的文件资源(具体文章可以参考gin框架学习笔记(二) ——相关数据与文件的响应),但是在我们实际上的项目开发中一般却是不会使用本地上传资源的方式来上传的,因为文件的上传与读…...
探索微软新VLM Phi-3 Vision模型:详细分析与代码示例
引言 在最近的微软Build大会上,微软宣布了许多新内容,其中包括新款Copilot PC和围绕Copilot生态系统的一系列功能。其中最引人注目的是发布了一些新的Phi模型,特别是Phi-3 Vision模型。本文将详细探讨Phi-3 Vision模型的特性,并提…...

如何使用GPT-4o函数调用构建一个实时应用程序?
本教程介绍了如何使用OpenAI最新的LLM GPT-4o通过函数调用将实时数据引入LLM。 我们在LLM函数调用指南(详见https://thenewstack.io/a-comprehensive-guide-to-function-calling-in-llms/)中讨论了如何将实时数据引入聊天机器人和代理。现在,我们将通过将来自Fligh…...

[Vue-常见错误]浏览器显示Uncaught runtime errors
文章目录 错误描述正确写法具体如下 错误描述 当前端代码发生错误时,浏览器中出现以下错误提示。 正确写法 显然这不是我们所期望的,在vue.config.js中配置如下设置关闭Uncaught runtime errors显示 devServer: {client: {overlay: false}具体如下 …...
html常见的表单元素有哪些,html表单元素有哪些?
HTML中常用的表单元素包括:文本区域(TEXTAREA),列表框(SELECT),文本输入框(INPUT typetext),密码输入框(INPUT typepassword),单选输入框(INPUT typeradio),复选输入框(INPUT typecheckbox),重置…...

spring boot sso
代码:https://gitee.com/forgot940629/ssov2 授权服务 登录成功后,session中会存储UsernamePasswordAuthenticationToken,之后每次请求code时都会用UsernamePasswordAuthenticationToken生成OAuth2Authentication,并将OAuth2Aut…...
Keras深度学习框架实战(5):KerasNLP使用GPT2进行文本生成
1、KerasNLP与GPT2概述 KerasNLP的GPT2进行文本生成是一个基于深度学习的自然语言处理任务,它利用GPT-2模型来生成自然流畅的文本。以下是关于KerasNLP的GPT2进行文本生成的概述: GPT-2模型介绍: GPT-2(Generative Pre-trained …...
速盾:网站重生之我开了高防cdn
在互联网的广袤海洋中,网站就如同一个个独立的岛屿,面临着各种风雨和挑战。而作为一名专业程序员,我深知网站安全和性能的重要性。当我的网站遭遇频繁的攻击和访问压力时,我毅然决定开启高防 CDN,开启了一场网站的重生…...

【spark】spark列转行操作(json格式)
前言:一般我们列转行都是使用concat_ws函数或者concat函数,但是concat一般都是用于字符串的拼接,后续处理数据时并不方便。 需求:将两列数据按照设备id进行分组,每个设备有多个时间点位和对应值,将其一一对…...
记录一次Linux启动kafka后并配置了本地服务连接远程kafka的地址后依旧连接localhost的问题
问题的原因 我是使用docker来安装并启动kafka 的,所以在启动过程中并没有太多需要配置的地方,基本都是从网上照搬照抄,没动什么脑子,所以看着启动起来了觉得就没事了,但是运行项目的时候发现,我明明已经配…...

MacOS中Latex提示没有相关字体怎么办
在使用mactex编译中文的时候,遇到有些中文字体识别不到的情况,例如遇到识别不到Songti.ttc。其实这个时候字体是在系统里面的,但是只不过是latex没有找到正确的字体路径。 本文只针对于系统已经安装了字体库并且能够用find命令搜到࿰…...

物资材料管理系统建设方案(Word)—实际项目方案
二、 项目概述 2.1 项目背景 2.2 现状分析 2.2.1 业务现状 2.2.2 系统现状 三、 总体需求 3.1 系统范围 3.2 系统功能 3.3 用户分析 3.4 假设与依赖关系 四、 功能需求 4.4.11.7 非功能性需求 五、 非功能性需求 5.1 用户界面需求 5.2 软硬件环境需求 5.3 产品质量需求 5.4 接口…...

!力扣102. 二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] /*** Definition for…...

Vue3 + TS + Antd + Pinia 从零搭建后台系统(一) 脚手架搭建 + 入口配置
简易后台系统搭建开启,分几篇文章更新,本篇主要先搭架子,配置入口文件等目录 效果图一、搭建脚手架:二、处理package.json基础需要的依赖及运行脚本三、创建环境运行文件四、填充vue.config.ts配置文件五、配置vite-env.d.ts使项目…...
中国同胞进来看看,很多外国人想通过CSDN坑咱们中国人
地址:【诈骗离你我很近】中国同胞进来看看国外诈骗新套路。-CSDN博客...
Web前端电话咨询:深度解析与实用指南
Web前端电话咨询:深度解析与实用指南 在数字化时代,Web前端技术日新月异,对于许多企业和个人而言,通过电话咨询了解前端技术的最新动态和解决方案已成为一种高效且便捷的方式。本文将从四个方面、五个方面、六个方面和七个方面&a…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...

实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...