玩转香橙派 AIpro,高性能AI开发板评测与项目案例分享

公司最近刚忙完一个项目,闲暇之余,看着手里的树莓派、stm32、Esp32又有些手痒了,准备再搞点小项目出来,但一直没有什么好想法。

说来也巧,恰好收到了CSDN官方的OrangePi AIpro测评活动,平时一直都在用树莓派做点小项目,香橙派的大名也有所耳闻,但从未接触过,恰好有这么一个机会了解一下,必须好好把玩一下。

深入了解测评活动后才知道,原来香橙派 AIpro是块AI板子,用的是华为昇腾AI技术路线,华为加持的那必须是遥遥领先,哈哈。我拿到的板子有8TOPS AI算力,这不比树莓派高级的多吗?

虽然和Jetson Xavier NX的21TOPS相比差距不少,但8TOPS的算力在嵌入式AI开发板中已经相当不错,适合多种中等复杂度的AI应用场景,因为抛开价格谈算力,就是耍流氓,我拿到的8TOPS、8G内存的香橙派 AIpro价格是799,是创客的又一个新选择。看着21TOPS、8G内存的Jetson Xavier NX卖3000多,我真的是瑟瑟发抖,要不起~

香橙派 AIpro的详细参数大家可参考官方说明:

http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-AIpro.html

简单的说,采用了昇腾AI技术路线,具体为4核64位处理器+AI处理器,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口。这么丰富的接口,拿来做机械臂、智能家居中控、智能小车、智能交通、智能音响等产品简直不要太香了!接下来就记录一下香橙派 AIpro从开箱到安装、烧录、跑通示例的完整过程。

1 、开箱

邮寄用了三天时间,香橙派 AIpro套装包含:主板、电源、散热组件、32GB存储卡,线路板设计还是比较合理的,走线清晰、布局紧凑、元器件焊接整齐,看着就有质感,爱了爱了。这里要注意一下,拆包装的时候一定别激动,千万别把天线给扯下来,别问我为什么!

2 、烧录镜像

玩儿过树莓派的都懂,需要先把操作系统的镜像烧录到SD卡中,才能正常启动板子,香橙派 AIpro同样如此。

2.1 下载镜像

香橙派 AIpro官方镜像下载地址:

http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-AIpro.html

官方提供了ubuntu镜像和openeuler镜像,ubuntu大家耳熟能详,openeuler可能知道的人不多,它是华为发布的操作系统,openEuler是一个开源、免费的 Linux 发行版平台。说实话,我对openeuler也不熟悉,咱还是用ubuntu镜像吧,官方把镜像放在了百度网盘,网盘地址是:

https://pan.baidu.com/s/1csbugZiKsuL_NHCOmyi1BA?pwd=ma6z

这里要注意一下,这里有两个镜像,一个是minimal,一个是desktop,minimal镜像只有最基础的功能,Linux 桌面、CANN、示例代码都没有,不适合新手;desktop 镜像预装了 Linux 桌面、CANN、AI 示例代码和测试程序,想要快速体验香橙派 AIpro开发板,咱最好还是下载opiaipro_ubuntu22.04_desktop_aarch64_20240318.img.xz文件。

百度网盘的下载速度难得的给力。

2.2 烧录镜像

下载Windows-格式化软件-SDCardFormatter和Linux镜像烧录工具-balenEther,下载地址:

https://pan.baidu.com/s/1Jho73pw91r5GJD2KijY45Q?pwd=3xuz

解压SDCardFormatterv5_WinEN.zip双击安装SDCardFormatte,将SD卡插入读卡器,读卡器插入电脑,打开SDCardFormatter找到SD卡磁盘,点击Format进行格式化。

双击balenaEtcher-Portable-1.18.4.exe,点击“从文件烧录”,选择我们下载的opiaipro_ubuntu22.04_desktop_aarch64_20240318.img.xz文件,点击“选择目标磁盘”选中SD卡磁盘,点击“现在烧录”,完成镜像的烧录。最后将SD卡插入到香橙派 AIpro的TF卡槽中。

3、硬件安装和开机

3.1 风扇安装

套件带有散热组件,如果不装风扇直接拿来做推理,目测能直接烧开一壶水,所以风扇必须得安排上。安装方式也很简单,4个打孔位置安装4个铜柱,然后贴导热硅脂,再把风扇装上去,风扇的接头插到板子的FAN标识处。

最终效果如下:

3.2 硬件连接

网口插网线,USB口插鼠标、键盘,如果有显示器,那么将板子的HDMI0接口接入到显示器,我正好有一个十几年前买的联想G460笔记本,主板坏了,但屏幕还不错,就弄了个屏幕驱动板,改造成了一个便携式显示器,最近一直配合着树莓派使用,这次又有大用处了。最后Type-C口插电源线,开机~~效果非常不错,输入密码Mind@123进入系统。

注意,开机时风扇转的非常快,小心被刮伤,系统启动成功后,风扇转速就降低了。

4、远程连接

4.1 命令行远程连接

由于我没有蓝牙鼠标和键盘,鼠标和键盘直接插到香橙派 AIpro开发板上的话,线太多太乱,所以最终还是选择使用远程连接。方法很简单,使用MobaXterm新建会话,输入香橙派 AIpro开发板的IP地址,用户名HwHiAiUser、密码Mind@123,IP地址可登录路由器管理界面查找。

远程连接成功后如图所示:

4.2 vnc远程桌面

官方镜像默认安装了VNC,通过VNC Views工具可直接连接,服务地址是IP:1

5、实例代码演示

5.1 调用官方例程

官方例程放在/samples/notebooks目录下,进入目录后执行:

./start_notebook.sh

此时需要访问jupyter来查看例程,因为我是远程连接的香橙派 AIpro,所以需要把开发板的8888端口映射到本地。方法很简单,点击MobaXterm的Tunneling,点击“New SSH tunnel”

接下来如图配置端口映射:

完成后,点击开始图标:

然后就可以通过本地浏览器访问jupyter了。

官方给了9个例程,分别是yolov5目标识别、ocr文字识别、resnet图像分类、图像HDR增强、卡通图片效果生成、蛋白质图谱分类、细胞核实例分割、基于神经网络的人像分割和背景替换、语音转文本,都是非常值得参考学习的例程,方便开发者从项目出发,了解昇腾的开发流程。

我在运行yolov5例程的时候,同时监控了一下芯片的数据,AI Core占用率在30以下浮动,内存占用率在82,在用风扇的情况下,芯片温度在56°左右,所以使用这个开发板时风扇是必备的。

5.2 Yolov8目标识别迁移

官方提供了Yolov5的示例,而Yolo的版本已经迭代到了Yolov8,所以想着把Yolov8迁移过来,在迁移过程中遇到了非常多的坑,所以把迁移过程记录下来,避免大家踩坑。

5.3.1 代码克隆

我基于https://github.com/ultralytics/ultralytics进行模型的迁移。

cd /home/HwHiAiUser/ 
git clone https://github.com/ultralytics/ultralytics
5.3.2 下载权重文件
cd ultralytics/examples/YOLOv8-OpenCV-ONNX-Python
wget https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt
5.3.3 pt权重转onnx

先安装用到的库:

pip install ultralytics -i https://mirrors.aliyun.com/pypi/simple 
pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple

然后转换权重文件

yolo export model=yolov8n.pt imgsz=640 format=onnx opset=11

5.3.4 使用onnx进行推理

我修改了main.py,想看一下onnx推理一张图片需要多久。

python main.py --model yolov8n.onnx

使用onnx推理,推理部分仅有1.2FPS。

5.3.5 ATC转换模型

ATC是异构计算架构CANN体系下的模型转换工具, 可以将开源框架的网络模型转换为昇腾AI处理器支持的.om格式离线模型。也就是将pytorch、tensorflow、cafffe框架下训练的模型转换为昇腾硬件可以加载加速的模型。

最大的坑来了,在使用ATC进行模型转换的时候,出现了各种各样的问题,折腾了两天才解决。

我烧录的镜像是官方提供的“opiaipro_ubuntu22.04_desktop_aarch64_20240318.img.xz”,预装了Ascend-cann-toolkit7.0版本,在首次进行模型转换时,出现了一堆BrokenPipeError: [Errno 32] Broken pipe错误,我以为是Ascend-cann-toolkit版本问题,卸载后安装了Ascend-cann-toolkit_8.0.RC1.alpha003版本,重装Ascend-cann-toolkit方法也简单:

cd /usr/local/Ascend/ascend-toolkit/ 
#删除当前安装,否则会出现磁盘空间不足 
rm -rf *

然后进入https://www.hiascend.com/developer/download/community/result?module=cann&cann=8.0.RC1.alpha003,下载Ascend-cann-toolkit_8.0.rc1.alpha003_linux-aarch64.run

chmod +x Ascend-cann-toolkit_8.0.rc1.alpha003_linux-aarch64.run 
./Ascend-cann-toolkit_8.0.rc1.alpha003_linux-aarch64.run -- install

安装较慢,耐心等待。

成功后使用最新版atc工具转换模型,仍然报错BrokenPipeError: [Errno 32] Broken pipe。

最后论坛里翻了翻,发现原因是开发板cpu核数较少,atc过程中使用的最大并行进程数默认是服务器的配置,可以使用环境变量减少atc过程中的进程数来减少内存消耗。

#开启日志输出 
export ASCEND_SLOG_PRINT_TO_STDOUT=1 
export ASCEND_GLOBAL_LOG_LEVEL=0

#减小算子最大并行编译进程数 
export TE_PARALLEL_COMPILER=1 
#减少图编译时可用的CPU核数 
export MAX_COMPILE_CORE_NUMBER=1

然后再进行模型转换,让人兴奋,BrokenPipeError: [Errno 32] Broken pipe错误消失,等了几分钟后,新错误出现了,如图所示,报错fatal error: 'type_traits' file not found

但我确信gcc之类的库是没问题的,而且自己写了一个cpp,特意#include<type_traits>都是能编译通过的。

最后,实在没辙的情况下,我重新烧录了镜像,这次我换用了官方的“opiaipro_openEuler22.03_desktop_aarch64_20240423.img.xz”镜像,问题居然消失了,看来,ubuntu的镜像的确有点问题。

5.3.6 代码迁移

接下来就简单了:

cd ultralytics/examples/YOLOv8-OpenCV-ONNX-Python 
#模型转换 
atc --framework=5 --model=yolov8n.onnx --output=yolov8n --input_shape="images:1,3,640,640" --soc_version=Ascend310B4 --log=error

转换成功,目录下生成了yolov8n.om文件,然后复制当前目录下的main.py文件进行魔改

cp main.py mainom.py 
vim mainom.py

头部引入以下代码:

from ais_bench.infer.interface import InferSession 
import time

修改main函数输入:

#将代码 
def main(onnx_model, input_image): 
#改为 
def main(om_model, input_image):


#注释掉代码: 
model: cv2.dnn.Net = cv2.dnn.readNetFromONNX(onnx_model) 
#改为 
session = InferSession(device_id=0, model_path=om_model)


#注释掉代码 
model.setInput(blob) outputs = model.forward() 
#改为 
outputs = session.infer(feeds=blob, mode="static")


#修改 
outputs = np.array([cv2.transpose(outputs[0])]) 
#改为 
outputs = np.array([cv2.transpose(outputs[0][0])])

然后开始推理:

python mainom.py --model yolov8n.om

使用昇腾AI技术路线后,推理部分是55FPS,性能强悍。

5.3 LLMS大模型实例

从去年开始,最火热的技术莫过于大语言模型,最近我也一直在研究大语言模型,本地部署体验了通义千问120B、llama3的70B、以及gemma的7B模型,通义千问120B的中文性能绝对是扛把子的存在,毕竟我用了四张3090的显卡才把120b的模型跑起来。

接触到香橙派 AIpro开发板后,就有一个把大语言模型移植到香橙派 AIpro的想法,网上搜罗一番,发现资料不多,难度不小,不过在gitee发现了南京大学开源的一套基于香橙派 AIpro部署的Tiny-Llama语言模型,开源地址:https://gitee.com/wan-zutao/tiny-llama-manual-reset

Tiny-Llama这个模型的尺寸非常小,参数也只有1.1B,我用CPU就能够运行。用香橙派 AIpro跑,速度绝对没得说:

抱着前人栽树后人乘凉的态度,先来体验一番。部署很简单:

5.3.1 克隆项目
cd ~/samples 
git clone https://gitee.com/wan-zutao/tiny-llama-manual-reset.git tiny_llamacd 
cd tiny_llama/inference
5.3.2 下载model、tokenizer文件
bash download.sh

5.3.3 启动

python3 main.py

然后通过本地浏览器访问Tiny-Llama服务。

Tiny-Llama这个模型是个纯纯的话痨,你问一句,它回你十句,而且常常词不达意,中文基本不支持,我愿称之为废话生成器,所以这种参数很小的模型,还是没啥实用价值。

在大语言模型推理过程中,Ai Core的占用率达到60%左右,基本上1秒出2个英文单词,速度还行,等以后有机会了,可以尝试把千问7B模型迁移过来,不知能否跑得起来。

6、使用感受

香橙派 AIpro开发板玩儿了一周,开发板表现得异常坚挺,几乎都是不间断地运行,没有一次意外重启,在持续高负荷运作期间,板子的温度管理也很出色,始终保持在50到60°左右,这对于高性能计算设备而言非常重要。

香橙派官方对开发者社区的支持力度值得称赞,不仅提供了丰富的例程资源,覆盖了从基础到进阶的多个层面,还细心考虑到不同水平开发者的学习需求,极大地降低了初学者的入门门槛。然而,对于初次接触昇腾AI技术路线的开发者来说,环境配置和开发流程仍然是一个不小的挑战。这一过程中,可能会遇到各种预料之外的问题,比如依赖库的安装、编译等,我利用一周的时间,亲身体验并详细记录了在使用香橙派AIpro进行开发时,新手开发者可能会遭遇到的主要障碍,并以当下流行的YOLOv8模型迁移为例,实现模型的成功转换至昇腾平台。这份实战经验的分享,希望能为新手提供一些帮助。

开发过程中的疑惑与挑战,建议大家积极访问昇腾官方社区(https://www.hiascend.com/forum)。昇腾虽然已经在算力领域占据了举足轻重的地位,但构建和完善一个生机勃勃的生态系统仍是一场持久战。这要求我们每一位开发者不仅要专注于技术创新,更要乐于分享、勇于协作,共同推动昇腾AI生态走向更加繁荣的未来。

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

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

相关文章

matplotlib---气泡图

气泡图简介&#xff1a; 气泡图&#xff08;Bubble Chart&#xff09;是一种数据可视化图形&#xff0c;主要用于展示多个数据点之间的关系。 气泡图通过气泡的大小&#xff0c;位置和颜色可以展示数据之间的关系。在气泡图中&#xff0c;横轴和纵轴通常表示数据的两个维度&a…

NoSQL Redis配置与优化

一、关系数据库与非关系型数据库 1. 关系型数据库&#xff1a; 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型…

3d火灾救援模拟仿真培训软件复用性强

消防VR安全逃生体验系统是深圳VR公司华锐视点引入了前沿的VR虚拟现实、web3d开发和多媒体交互技术&#xff0c;为用户打造了一个逼真的火灾现场应急逃生模拟演练环境。 相比传统的消防逃生模拟演练&#xff0c;消防VR安全逃生体验系统包含知识讲解和模拟实训演练&#xff0c;体…

(2024,基于熵的激活函数动态优化,具有边界条件的最差激活函数,修正正则化 ReLU)寻找更优激活函数

A Method on Searching Better Activation Functions 公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 动机 4. 方法论 4.1 问题设定 4.1.1 贝叶斯错误率和信息熵 4.1.2 激活…

物业

用户报修 审核专员可以操作&#xff08;前端&#xff09;&#x1f197; 工程部可以看到不可以操作&#xff08;前端&#xff09;&#x1f197; 项目经理可以看到不可以操作&#xff08;前端&#xff09;&#x1f197; 经理可以看到不可以操作&#xff08;前端&#xff09;&…

Kivy 项目51斩百词 6 播放读音

为了给小喇叭图像绑定点击事件&#xff0c;实现当用户点击按钮时&#xff0c;触发该事件对应的回调方法。 在方法内对于不同的系统Kivy使用不同的播放语音方法&#xff0c; 对于Windows系统 使用SoundLoader播放语音&#xff0c; 对于其他的Unix系统 使用Pyjnjus播放…

C语言 数组——排序算法的函数实现

目录 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序

拼多多商品详情商品标题sku等信息抓取接口API调用步骤演示

接口名称&#xff1a;item_get_app_pro 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_sho…

区块链技术引领:Web3时代的新网络革命

随着区块链技术的快速发展和不断成熟&#xff0c;人们已经开始意识到它所带来的潜在影响&#xff0c;尤其是在构建一个更加去中心化、安全和透明的互联网时。这个新的互联网时代被称为Web3&#xff0c;它将不再受制于传统的中心化平台&#xff0c;而是更多地依赖于去中心化的网…

【C++】<图形库> EasyX基础使用

文章目录 一、安装EasyX库 二、图形窗口显示 三、基本绘图函数 四、图片显示 五、键盘交互 六、鼠标交互 七、双缓冲区解决闪屏 一、安装EasyX库 已经有兄弟写得很清楚了&#xff0c;见EasyX | 安装教程&#xff08;详细图文&#xff09;。 二、图形窗口显示 1. 包含的…

uni-app 接入微信短剧播放器

前言 作为一个 uniapp 初学者&#xff0c;恰巧遇到微信短剧播放器接入的需求&#xff0c;在网上检索许久并没有发现傻瓜式教程。于是总结 uni-app 官网文档及微信开放文档&#xff0c;自行实践后&#xff0c;总结出几个步骤&#xff0c;希望为大家提供些帮助。实践后发现其实确…

42.接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,…

Linux基础知识点总结!超详细

Linux 的学习对于一个IT工程师的重要性是不言而喻的&#xff0c;学好它是工程师必备修养之一。 Linux 基础 操作系统 操作系统Operating System简称OS&#xff0c;是软件的一部分&#xff0c;它是硬件基础上的第一层软件&#xff0c;是硬件和其它软件沟通的桥梁。 操作系统…

抖音小店出单之后怎么发货?抖店详细发货流程来了

大家好&#xff0c;我是喷火龙。 抖音小店发货是有规则的&#xff0c;如果出现超时发货或者虚假发货都会被平台处罚的&#xff0c;会影响我们店铺的评分和正常运营&#xff0c;还有些小伙伴们在发货的时候会遇到平台的违规提醒等问题。 今天我就给大家讲一下抖音小店的发货流…

夏季天气炎热没胃口怎么办?没食欲,心情浮躁怎么调理?

点击文末领取中医揿针的视频教程跟直播讲解 夏季天气炎热&#xff0c;很容易就让人出现胃口不佳的情况&#xff0c;再加上不少人需要长期服药&#xff0c;或是受到病痛困扰&#xff0c;更是严重影响了食欲。 夏养心 夏季&#xff0c;在这个季节&#xff0c;心脏的负担是很重…

JVM学习-对象实例化、内存布局、访问定位

对象实例化 创建对象方式 创建对象步骤 判断对象对应的类是否加载、链接、初始化 虚拟机遇到一个new指令&#xff0c;首先会去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已经被加载、解析、初始化(判断…

【源码+文档+调试讲解】可信捐赠系统的设计与实现

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统可信捐赠系统信息管理难度大&#xff0c;容错率低&#x…

【基于Fluent和深度学习算法驱动的流体力学计算与应用】

在深度学习与流体力学融合的背景下&#xff0c;科研边界不断拓展&#xff0c;创新成果层出不穷。从物理模型融合到复杂流动模拟&#xff0c;从数据驱动研究到流场智能分析&#xff0c;深度学习正以前所未有的力量重塑流体力学领域。目前在Nature和Science杂志上发表的深度学习驱…

香橙派 Kunpeng Pro 上手初体验

香橙派 Kunpeng Pro 上手初体验 目录 香橙派 Kunpeng Pro 上手初体验1.前言2.开箱3.开发板资源介绍硬件规格参数外观规格参数4.系统环境搭建系统镜像烧录ssh连接5.简单测试6.总结 1.前言 我很荣幸能收到了来自CSDN的测评邀请&#xff0c;让我有机会对香橙派最新推出的Kunpeng …

10个最佳人物素材网站推荐,免费获取第一个PNG文件!

人物素材是设计中应用最广泛的元素之一。无论是网页设计还是移动终端设计&#xff0c;人物素材的插画设计都比文字信息更容易吸引用户的注意力。作为内容呈现&#xff0c;还可以增加设计的艺术属性。为了节省大家寻找人物素材的时间成本&#xff0c;本文立即为大家整理了10个宝…