香橙派 AIpro综合体验及AI样例运行

环境:
香橙派版本: AIpro(8TOPS@INT8)
OS : Ubuntu 22.04.3 LTS(GNU/Linux 5.10.0+ aarch64) (2024-03-18)
远程服务端1OpenSSH 8.9p1 
远程服务端2TightVNC Server 1.3.10
远程客户端:MobaXterm 24.1
CANN7.0.0
默认账号:HwHiAiUser
默认密码:Mind@123

目录

  • 香橙派 AIpro综合体验及AI样例运行
  • 1. 开发板简介
  • 1.1 简介
  • 1.2 主要参数
  • 2. 系统烧录
  • 2.1 下载官方镜像和烧录工具
  • 2.2 烧录
  • 3. 硬件接线和启动系统
  • 3.1 硬件接线
  • 3.2 启动开关配置
  • 4. 局域网远程连接
  • 4.1 有线网络连接并获取用于远程连接的IP地址
  • 4.1.1 有线网口连接
  • 4.1.2 串口登录查询IP地址(适应无显示器,无法登录路由器)
  • 4.1.3 HDMI0接口连接显示器查询IP地址
  • 4.1.4 路由器查询IP地址
  • 4.2 通过MobaXterm的VNC远程连接(图形化界面,操作方便)
  • 4.3 通过MobaXterm的SSH远程连接(文字界面,上传下载方便)
  • 5. 广域网远程连接
  • 5.1 zerotier【推荐】
  • 5.2 花生壳
  • 6. NPU AI体验
  • 6.1 查看NPU信息
  • 6.2 运行图片分类(ResNet50)推理程序
  • 6.3 从零转换模型、编译和运行图片分类(ResNet50)推理程序
  • 6.4 使用jupyter lab在web中运行AI应用
  • 6.5 昇腾AI在线资料
  • 7. 总结

1. 开发板简介

1.1 简介

香橙派 AIpro开发板采用昇腾AI处理器(4核64位ARM处理器+AI处理器),提供8TOPS@INT8 AI算力,内存提供8GB/16GB。

香橙派 AIpro提供了丰富的接口,包括双4K HDMI输出、Type-C电源接口、GPIO接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB、两个MIPI摄像头、一个MIPI屏等,预留电池接口。

香橙派 AIpro支持Ubuntu、OpenEuler操作系统,可以实现图像、视频等多种数据分析与推理计算。

1.2 主要参数

名称参数
CPU4核64位Arm处理器
NPU华为昇腾310B4处理器
AI算力8TOPS@INT8, 4TFLOPS@FP16
内存8GB 或 16GB
存储TF卡, eMMC, SSD
以太网10/100/1000Mbps
Wi-Fi+蓝牙2.4G和5G双频WIFI,蓝牙4.2
操作系统Ubuntu 22.04 和 OpenEuler 22.03
待机功耗9w

2. 系统烧录

2.1 下载官方镜像和烧录工具

OrangePi AIpro官方资料地址:

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

ubuntu官方镜像:opiaipro_ubuntu22.04_desktop_aarch64_20240318.img.xz
注意:desktop镜像预装Linux桌面、CANN、AI 示例代码等,minimal镜像不包括上述内容。

烧录工具:balenaEtcher

用户手册:OrangePi_AI_Pro_昇腾_用户手册_v0.3.1.pdf

在这里插入图片描述

2.2 烧录

香橙派 AIpro支持TF卡、eMMC 和 SSD 启动。

其中,TF卡方式操作简单,烧录方式详见手册用户手册中的《2.4 烧写 Linux 镜像到 TF 卡中的方法》。

3. 硬件接线和启动系统

3.1 硬件接线

电源TYPE-C:位于板正面左下角位置,板上刻有PWR IN)
HDMI输出:位于板正面下方中间位置,板上刻有HDMI0,目前只有HDMI0支持输出(HDMI1后续系统升级后会支持)

在这里插入图片描述


在这里插入图片描述

3.2 启动开关配置

开发板支持从TF卡、eMMC 和 SSD启动。
具体的启动方式由开发板背面的BOOT1 和 BOOT2拨码开关来控制(板背面刻有拔码规则)。

BOOT1BOOT2启动方式
TF卡
eMMC
SSD
预留

在这里插入图片描述

4. 局域网远程连接

4.1 有线网络连接并获取用于远程连接的IP地址

4.1.1 有线网口连接

开发板的网口位于正面右下角的位置,通过有线连接到路由器的LAN口,路由器会自动分配IP给香橙派。

4.1.2 串口登录查询IP地址(适应无显示器,无法登录路由器)

开发板正面电源附近标有UART的串口,通过Micro USB接口的数据线连接UART口和电脑的USB口。

通过MobaXterm的Serial进行串口连接

Session】-【Serial】-【Serial port: USB-Enhanced-SERIAL CH343 (COMxx)】-【Speed: 115200】-【输入账号:HwHiAiUser】-【输入密码:Mind@123

在这里插入图片描述


在这里插入图片描述

注意:
如果Serial port选项中没有USB-Enhanced-SERIAL CH343 (COMxx),需要先安装串口驱动。
开发板使用的CH343芯片,驱动下载地址:https://www.wch.cn/downloads/CH343SER_EXE.html

4.1.3 HDMI0接口连接显示器查询IP地址

HDMI0接口连接显示器,通过键盘在终端中输入ifconfig命令查询ip地址,其中eth0表示有线网口。

$ ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
      inet 192.168.2.15  netmask 255.255.255.0  broadcast 192.168.2.255

4.1.4 路由器查询IP地址

登录路由器管理页面查询香橙派的IP地址,如192.168.2.15

在这里插入图片描述

4.2 通过MobaXterm的VNC远程连接(图形化界面,操作方便)

官方系统的VNC Server是默认安装和开机自启动的,端口为5901。

可以直接使用MobaXterm的VNC远程连接

【Session】-【VNC】-【IP: 192.168.2.15】-【Port:5901】-【输入密码:Mind@123

官方默认的VNCServer配置使用的是root用户,可以通过以下操作更换为HwHiAiUser用户。

  • 切换到HwHiAiUser用户
su HwHiAiUser
  • 停止vncserver
$ vncserver -kill :1
  • 编辑vncserver服务配置
$ sudo vim /etc/systemd/system/vncserver@.service

将User由root修改为HwHiAiUser

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=HwHiAiUser
PAMName=login
PIDFile=/home/%u/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

设置vnc密码

$ vncserver :1

注意:这里启动vncserver一方面是为了设置密码(单纯设置密码可以执行vncpasswd),一方面是为了生成xstartup文件

修改vnc启动文件xstartup设置xface启动。

$ vim ~/.vnc/xstartup
#!/bin/sh

startxfce4 &

注意:如果不修改xstartup启动startxfce4桌面,会出现灰屏问题

启动vncserver服务 或 重启系统

$ sudo systemctl daemon-reload
$ sudo systemctl start vncserver@1

$ sudo reboot

在这里插入图片描述

4.3 通过MobaXterm的SSH远程连接(文字界面,上传下载方便)

官方系统的sshd是默认安装和开机自启动的,端口为22。

可以直接使用MobaXterm的SSH远程连接

【Session】-【SSH】-【Remote host: 192.168.2.15】-【Specify username: HwHiAiUser 】-【Port:22】-【输入密码:Mind@123】

SSH中启动xfce桌面

$ xfce4-session

在这里插入图片描述

5. 广域网远程连接

如果有公网IP,可以直接使用公网访问。
没有公网IP的话,可以使用内网穿透工具进行异地访问,访问方式可以为SSH VNC等。
内网穿透工具可以使用zerotier、花生壳等。

5.1 zerotier【推荐】

安装

$ sudo snap install zerotier
$ sudo zerotier status
$ sudo zerotier join <nwid>

其中,需要加入的网络id,可以在https://my.zerotier.com中新建并使用。

在这里插入图片描述


查看香橙派zerotier网络,出现IP地址表示成功。
出现ACCESS_DENIED,可能是加入的网络没有权限。

$ sudo zerotier listnetworks
200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips>
200 listnetworks xxx xxx xx:xx:xx:xx:xx:xx OK PRIVATE ztkxxx 192.168.192.15/24

5.2 花生壳

花生壳的方式有端口和流量限制,这里不再详述具体过程。

wget "https://dl.oray.com/hsk/linux/phddns_5.1.0_rapi_aarch64.deb" -O phddns_5.1.0_rapi_aarch64.deb
$ sudo dpkg --install phddns_5.1.0_rapi_aarch64.deb

6. NPU AI体验

香橙派 AIpro AI特性是重中之重的部分,开发板的NPU是华为昇腾310B4,NUP算力为8TOPS@INT8,可以用于AI算法验证、数据分析和推理等。

6.1 查看NPU信息

$ npu-smi info
+--------------------------------------------------------------------------------------------------------+
| npu-smi 23.0.0                                   Version: 23.0.0                                       |
+-------------------------------+-----------------+------------------------------------------------------+
| NPU     Name                  | Health          | Power(W)     Temp(C)           Hugepages-Usage(page) |
| Chip    Device                | Bus-Id          | AICore(%)    Memory-Usage(MB)                        |
+===============================+=================+======================================================+
| 0       310B4                 | Alarm           | 0.0          59                15    / 15            |
| 0       0                     | NA              | 0            2371 / 7545                             |
+===============================+=================+======================================================+

每隔1秒刷新NPU信息

watch -n 1 npu-smi info

6.2 运行图片分类(ResNet50)推理程序

  • 程序说明

基于PyTorch框架的ResNet50模型,对*.jpg图片分类,输出各图片Top5置信度的分类ID、分类名称。

  • 源码编译【可忽略】

官方包中本程序已完成编译、模型转换和数据集等操作,可以直接运行。

$ su root
# cd /opt/opi_test/ResnetPicture/scripts
# bash sample_build.sh

注意:这里切换到root是因为/opt目录需要root权限。

  • 运行程序
$ su root
# cd /opt/opi_test/ResnetPicture/scripts
# bash sample_run.sh
  • 运行结果
# bash sample_run.sh
[INFO] The sample starts to run
[INFO] InitACLResource success.
[INFO] Init dvpp resource success.
[INFO] Load model ../model/resnet50.om success
[INFO] top 1: index[162] value[0.905956] class[beagle]
[INFO] top 2: index[161] value[0.092549] class[bassetbasset hound]
[INFO] top 3: index[166] value[0.000758] class[Walker houndWalker foxhound]
[INFO] top 4: index[167] value[0.000559] class[English foxhound]
[INFO] top 5: index[163] value[0.000076] class[bloodhound sleuthhound]
[INFO] Unload model ../model/resnet50.om success

可以看到置信度0.905956beagle

在这里插入图片描述

6.3 从零转换模型、编译和运行图片分类(ResNet50)推理程序

ResnetPicture图片分类推理程序的源码在EdgeAndRobotics项目中,git地址如下:

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

ResnetPicture图片分类推理程序位于Samples/ResnetPicture

$ cd EdgeAndRobotics/Samples/ResnetPicture

下面开始转换模型、编译和运行图片分类(ResNet50)推理程序:

  • ResNet50模型(.onnx)转换为昇腾AI模型(.om)

配置参数减少atc模型转换使用的进程数,减小内存占用。可防止出现进程被杀问题 /usr/local/Ascend/ascend-toolkit/latest/bin/atc: line 17: 30884 Killed

export TE_PARALLEL_COMPILER=1
export MAX_COMPILE_CORE_NUMBER=1

转换om模型

cd ResnetPicture/model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50_DVPP/aipp.cfg
atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224"  --soc_version=Ascend310B4 --insert_op_conf=aipp.cfg

模型转换CPU占用26%,内存3.2GB(完成后降到1.2GB),耗时约3分钟。

atc命令中参数含义如下,详细参数见 《ATC模型转换指南》

--model:ResNet-50网络的模型文件的路径
--framework:原始框架类型。5表示ONNX
--output:resnet50.om模型文件的路径
--input_shape:模型输入数据的shape
--soc_version:昇腾AI处理器的版本
  • 下载测试图片

默认图片是狗的图片,这里我们换成猫的图片(为了不修改代码,我们下载时候还是使用代码中图片名称dog1_1024_683.jpg)。

cd ResnetPicture/data
wget https://cat-world.com/wp-content/uploads/2017/06/brown-tabby-cat-scaled-e1617688562612.jpg -O dog1_1024_683.jpg
  • 源码编译
cd ResnetPicture/scripts 
bash sample_build.sh
  • 运行
cd ResnetPicture/scripts 
bash sample_run.sh
  • 结果
$ bash sample_run.sh
[INFO] The sample starts to run
[INFO] InitACLResource success.
[INFO] Init dvpp resource success.
[INFO] Load model ../model/resnet50.om success
[INFO] top 1: index[281] value[0.797077] class[tabbytabby cat]
[INFO] top 2: index[282] value[0.105374] class[tiger cat]
[INFO] top 3: index[285] value[0.085334] class[Egyptian cat]
[INFO] top 4: index[292] value[0.002015] class[tigerPanthera tigris]
[INFO] top 5: index[287] value[0.001632] class[lynxcatamount]
[INFO] Unload model ../model/resnet50.om success
[INFO] The program runs successfully

可以看到置信度0.797077tabbytabby cat

在这里插入图片描述

6.4 使用jupyter lab在web中运行AI应用

启用jupyter lab

$ cd ~/samples/notebooks
$ $ ./start_notebook.sh 0.0.0.0

输出的日志中可以看到一个网址,在浏览器中打开该网址

http://orangepiaipro:8888/lab?token=xxx

在官方镜像中有9个AI应用,我们以01-yolov5作为演示说明,其他都是类似操作。

运行01-yolov5 目标检测

  • jupyter lab左侧界面双击“01-yolov5”,进入目录
  • 双击打开 main.ipynb,右侧界面会显示 main.ipynb 文件中的内容
  • 单击**>>**按钮,在弹出的对话框中单击“Restart”开始运行
  • 经过一段时间,可以看到模型对视频的每一帧进行推理,并标注推理结果

    在这里插入图片描述


    在这里插入图片描述

    6.5 昇腾AI在线资料

在线课程
https://www.hiascend.com/edu/courses

在线文档
https://www.hiascend.com/document

7. 总结

香橙派 AIpro开发板从支持8G或16GB大内存,支持TF,eMMC,SSD等多种存储方式,支持多种外设接口,可以满足Linux硬件开发,Linux软件开发等需求。
香橙派 AIpro开发板的AI性能也是十分惊艳,对于AI算法验证、数据分析和推理等开发者多提供了一个选项,这也是国产AI开发板迈出的一大步。
香橙派 AIpro开发板打通了自外设(Iot数据采集),到Linux应用(Iot数据处理),再到AI推理(Iot数据分析及推理)的环节,实现了AIoT的闭环,实现了真正意义上的万物互联。

Logo

昇腾万里,让智能无所不及

更多推荐