前几天搞到一块很牛掰的开发板,是香橙派联合华为精心打造的高性能 AI 开发板 – OrangePi AIpro 开发板。
其搭载了昇腾 AI 处理器,可提供 8TOPS INT8 的计算能力,作为单板硬件设备来说,算力杠杠的了,至于跑 AI 模型性能如何?事不宜迟,现在让我们一起来开箱实测体验一番,开始吧!
硬件配置
先来看一下这板子都有哪些硬件配置
就这配置完全算得上一台小型电脑了,真棒!我手上拿到的板子是 8G 内存,还自带了一块 32G 的 TF 卡,看来是已经备好了启动镜像,贴心到让用户开机可用了。
不过这配置比较大众,对于笔者从事的机器人领域来说,陀螺仪这种必备的配置却是欠缺了,小遗憾。
看官方手册说,处理器方面是带了专用的 AI 处理器,开发板使用的处理器是昇腾 SOC,总共有 4 个 CPU 核,全部可分别设置为 control CPU,或者设置为 AI CPU,也就是可选择的双模处理器。在默认情况下,control CPU 和 AI CPU 的分配数量为 3:1。如果你的应用模型是没有使用到 AI CPU 算子的话,可以手动配置一下全部 CPU 改为 control 模式,这样就不会让任何 CPU 在闲置状态了。
如果你已经知道怎么进入系统,可以输入下面的查看 CPU 状态的指令看看,没有的话可以先跳过这里:
$ npu-smi info -t usages -i 0 -c 0
Memory Capacity(MB) : 7545
Memory Usage Rate(%) : 20
Hugepages Total(page) : 15
Hugepages Usage Rate(%) : 100
Aicore Usage Rate(%) : 0
Aicpu Usage Rate(%) : 0
Ctrlcpu Usage Rate(%) : 1
Memory Bandwidth Usage Rate(%) : 1
板子还没运行什么应用,Aicpu 利用率是 0,Ctrlcpu 也只是稍微动了一下。
再来看看板子的布局和各种接口的位置:
进入系统
想要灵活使用板子或者调试板子的大部分功能,进入系统无疑是第一步。由于我的本本是坑爹的 Mac M2 Pro,官方手册只介绍了 Windows 和 Ubuntu 下的调试环境搭建。所以,接下来,我就演示一下我这边是如何通过 mac 系统进入开发板的。
登录开发板有几种常见方式:
- 通过鼠标键盘和显示器直接登录系统操作界面
- ssh 透过网络登录系统
- USB 连接调试串口
其中最基础和可靠的方式就是串口连接系统,无论系统是否支持操作界面,或者系统是否已联网和 IP 可知,等都不影响串口的连接,默认第一次开机我们都可以使用这种方式来进入系统。
这块板子预留了 40 pin 的管脚外接,方便进入系统的串口也在里边可以找到,不过直接使用这个串口管脚真的挺费功夫的。幸好,厂家在板子里集成了 CH343P 的芯片,帮我们把这串口的 tx 和 rx 引到了 Micro USB 接口上。所以,我就直接用了这根 USB 也可以连上系统。
外部连接线这样就够了。
这里有个很重要的前提就是,这个板子是可以上电顺利启动的,能启动就说明板子顺利加载系统成功,如上图左下角所示的两个绿色 LED 灯都点亮就表明启动成功了。
不过,如果你的板子不幸无法顺利上电开机,就需要自己按照官方手册亲自刷一遍镜像了,而厂家提供的刷机工具还是很顺手的,后边有兴趣可以再折腾一下。
板子上电后的启动方式有好几种可选,都是通过板子背面的两个拨码开关设置:
设置的指引是:
我手里的这块板子自带的 TF 卡已经刷过功能完备的镜像了,而且是带操作界面的。板子默认都是设置为 TF 启动的,无须修改,直接上电即可启动系统。如果不行,可检查一下是否 TF 卡槽接触松动。
板子启动成功后,在工作电脑里按照下面图示的操作步骤,来确认串口是否被识别成功:
系统–>通用–>关于–>系统报告–>硬件–>USB,然后找到这个 USB 设备(也即是上面说的串口),Vendor ID 应该是 0x1a86 就对了。
如果这一步,你的工作电脑识别不了对应的设备,大概率是未安装驱动的原因,到网上搜索一下 CH343P 的 mac 驱动,由于 Mac M2 是 arm64 的架构,所以下载驱动时也要对应版本下载。
驱动安装过程从略。。。
接着就是怎么操作通信了,一般在 Windows 端有各种串口调试助手或者强大的远程连接终端界面可用,这里我要介绍一下 Mac 系统下非常好用的免费多功能远程终端 Termius。
Termius 除了强大的 ssh 集成功能,还可以用于串口连接,简单易用,界面直观。双击打开软件界面:
点击 SERIAL 选择串口连接,进入配置页面:
在 Serial Port 一栏选择 /dev/tty.wchusbserial 开头的设备。
在 Baud rate 一栏选择串口的通信波特率 115200,其它默认即可,最后点击 Connect 连接板子系统。
进入时,终端会提示输入帐号密码,参照官方手册即可。
从上面的图可看到,其实我这里已经对系统配过网络,所以也能看到板子设备的 IP 地址,也就能通过 ssh 安全连接进入系统。虽然通过串口可以很稳定地连接系统,但是有时需要往板子中传送大文件时,切换到 ssh 连接方式,传送文件会更快。
板子配网过程和一般 linux 系统配网一样。
性能测试
为了实测一下这板子运行 AI 算法的性能,下面就在板子里边安装部署一个 AI 算法模型用于图像处理。基于目前非常流行的 YOLO 图像算法模型,它的部署和应用都比较简便快速,所以选择了它。
YOLO 设计目标是提供一个快速、准确且易于使用的 AI 图像处理算法。YOLOv8 基于深度学习和计算机视觉领域的尖端技术,在速度和准确性方面具有无与伦比的性能,从边缘设备到云 API 等不同平台,它都能胜任目标检测和跟踪、实例分割、图像分类和姿态估计等任务。
虽然 YOLO 已经推出了 v8 版本,但是为了安装部署更快捷一些我这里选择 v5 版本,你要是想折腾也可以自行选择。
YOLO 的 github 仓库地址:
https://github.com/ultralytics/yolov5
这个工程要求 Python 版本 >= 3.8.0,所以开始之前,我们检查一下板子系统自带的 python 版本是多少
$ python --version
Python 3.9.9
目前板子的自带工具足够了,无须继续更新。
YOLO 安装过程:
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
应用推理
YOLO 提供了两种应用推理的方式,使用 PyTorch Hub 或者 直接执行脚本 detect.py。
启动配置当然越简单越好,毕竟时间是宝贵的。调用脚本就比较简单直接,选它,调用 detect.py 的命令格式是:
python detect.py --weights yolov5s.pt --source 0 # webcamimg.jpg # imagevid.mp4 # videoscreen # screenshotpath/ # directorylist.txt # list of imageslist.streams # list of streams'path/*.jpg' # glob'https://youtu.be/LNwODJXcvt4' # YouTube'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream
执行这个脚本过程中,会触发下载依赖文件 yolov5s.pt。如果网络受限,可以考虑换个环境再手动下载,然后复制过来放到工程的根目录(与 detect.py 文件同一目录)即可:
curl --output yolov5s.pt https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt
好了,东风已就绪,下面往模型中输入几张测试图片:
准备第一张:
我就比较懒,不想再安装什么工具了,直接使用 scp 指令传送源图片进板子
开始执行:
从指令输出可以看到,这张图推理过程速度非常可观,1.9ms pre-process, 646.4ms inference, 27.4ms NMS per image at shape (1, 3, 640, 640)。
从推理后的处理结果来看,图片中的物体基本识别出来了,但是右边的几颗果子被遗漏了,不知为何识别不了,总体结果还行。
准备第二张,这是一本书的封面,封面中有几个老朋友在上面:
开始执行:
从指令输出可以看到,这张图推理过程速度同样可观,6.5ms pre-process, 694.5ms inference, 4.0ms NMS per image at shape (1, 3, 640, 640)。
从推理后的处理结果来看,图片中的人物和物体都识别出来了,除了右边反光的人物头像,这个对人眼识别来说也有难度,结果很满意。
准备第三张,照片里有两个长得比较抽象的副旺萌神艺术雕像,和一杯新鲜龙眼:
开始执行:
从指令输出可以看到,这张图推理过程速度非常快,1.7ms pre-process, 605.5ms inference, 2.8ms NMS per image at shape (1, 3, 640, 640)。
从推理后的处理结果来看,只识别到杯子,而图片中最吸引人的艺术雕像却被忽略了,结果差强人意,看来算法模型在艺术品这一块还需要调整一下。
虽然 YOLO 模型还支持自定义数据集的训练,但是本次测试的板子并不是为了替代显卡而设计的,故折腾用于训练数据实在有点过分了,无限扩张算力对于嵌入式或者边缘计算领域是没有必要的。
从上面的实际模型推理结果来看,香橙派的 AIpro 开发板作为边缘计算领域是非常优秀的选择,值得开发人员试一试,应用在自己的想法实践中。