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