前言
最近拿到了一个新玩具:香橙派 AIPro。一个只比银行卡大一点点的开发板能带给我们多少惊喜呢?接下来就跟我一起来体验下这块开发板的魅力。
一、硬件配置
CPU:配备了4核64位ARM处理器,其中默认预留1个给AI处理器使用
NPU:集成了华为昇腾310BAI处理器,拥有4TFOPS的FP16算力核8TOPS的INT8算力
内存:标配LPDDR4X的规格,有8G核16G两种配置可供选择
存储:板载32MB的SPI Flash,内置1个Micro SD卡槽、1个eMMC插座、M.2插槽(2280规格)
以太网:板载10/100/1000Mbps自适应RJ45口
无线通讯:2.4+5双频WIFI核BT4.2
USB:2个USB3.0 Host接口、1个Type-C接口(USB3.0)
摄像头:预留了2个MIPI CSI 2 Lane接口
显示:2个HDMI接口,支持同时4K@60HZ输出、一个MIPI DSI 2 Lane接口支持外接显示屏
音频:除了2个HDMI接口还有一个3.5MM耳机孔
40PIN扩展口:支持UART、I2C、SPI、PWM、GPIO等
风扇接口:4PIN接口,12V供电,支持PWM调速
电池接口:2PIN,用于接3串电池,支持快充
调试串口:板载Micro USB接口的调试串口
操作系统:目前支持Ubuntu-22.04核OpenEuler 22.03两种
二、开箱展示
外包装:
外包装不是太豪华,可以说比较简易了,但这没有关系,因为我们注重的是内在。品牌型号下面醒目的为AI而生
已经很明确地向我们诠释了香橙派 AIPro
的应用场景。
包装盒内部:
整体包装还是严密的,上下各有一个泡沫作为缓冲,很好的保护了运输过程中的安全。开发板也是在密封的真空袋里面的,需要拆开真空包装才能取出开发板。
正面:
可以看到散热风扇占了不小的面积,4PIN的风扇插口和2PIN的电池插口都在散热器下面,正面是看不到的。右上角就是Type-C的电源供电,官方标配65W的PD电源(20V 3.25A)。给了一个简易的外接天线,包括蓝牙和WIFI的天线集成到了一起。
背面:
从图上可以看到M.2插槽,规格是2280。我插了一个256G的SSD,我的SSD使用的是SATA协议,顺序读取速度和顺序写入速度只能达到500MB/S左右,如果使用NVME协议的话速度就相当惊喜了。目前系统还是烧录在SD卡里面的,SSD只是存储数据用的。
M.2上边就是EMMC的扩展卡槽,需要另行购买,系统可以烧录进EMMC卡里面去。实测SSD的速度还是快于EMMC的,所以如果把系统烧录进SSD的话能获取最好的性能。
侧面:
可以看到所有的接口之间都留了足够的距离,相互之间不会影响。
特别是HDMI0和HDMI1的接口中间隔着一个3.5MM耳机孔,我只能说在细节上很出色,因为HDMI数据线其实会向两边延展一些,如果两个HDMI紧挨着无疑会导致难以插拔;而Type-C的接口竖着放这个设计也要点个赞,虽然我不知道是不是工程师刻意为之,在我看来如果两个叠放的Type-A的接口都插满数据线的话,竖着放无疑流出了相当大的操作空间,不会因为排列紧挨着而导致难以插拔的问题。
三、刷写系统
开发板支持分别从TF卡、EMMC和SSD三种介质启动操作系统,板子上有两个拨码分别是BOOT1和BOOT2,每个拨码有打开和关闭两种状态,总共就是4种状态。以下是详细的配置:
注意:无论那种方式都需要先把系统刷写到SD卡上,然后再在开发板里面将系统镜像刷写到其它介质。
1.烧录到TF卡
准备一个至少32G的TF卡(至少Class10级别),一台Windows电脑(Linux也行),一个TF卡读卡器。安装BalenaEtcher烧录软件。
首先,将TF卡插入读卡器并将读卡器插入Windows电脑,确保读卡器被电脑识别。
其次,打开BalenaEtcher软件并选择要烧录的系统,这里烧录Ubuntu-22.04。
等待烧录完成即可
烧录完成会校验数据,必须要校验成功才行。
最后,退出软件并弹出读卡器。将TF卡从读卡器拔下来并插入开发板的TF卡槽里,这一步一定要断电,防止烧坏设备。确定插紧之后就可以接电源线了,设备会自动开机,等待进入桌面即可。
2.烧录到EMMC
EMMC默认是不配的,需要自行花钱采购,如果你确实需要就采购一个,具体型号可以咨询商家。
我们这里烧录到EMMC需要借助TF卡,前面烧录到TF卡的教程已经说过了,确保你已经通过TF卡进入了操作系统。
首先,在关机断电
的前提下将EMMC插入卡槽上,这个卡槽在背面。
通过命令确认系统已经识别了EMMC,类似于下面这样:
fdisk -l
Disk /dev/mmcblk0: 28.91 GiB, 31037849600 bytes, 60620800 sectors
然后,将要烧录的 Linux 镜像文件压缩包上传到 TF 卡的 Linux 系统中。
最后,使用香橙派系统中自带的balenaEtcher将镜像烧录进EMMC即可。
烧录完成后需要关机并拔掉电源,将BOOT1和BOOT2拨码拨动到启动EMMC的位置即可,重新插上电源等待进入桌面。
题外话:
还有一种方法烧录到EMMC的方法我觉得是可行的,有一种专门读取EMMC的读卡器,就像下面这样:
我恰好就有一个,只不过是给RK3399用的,和手上的香橙派 AI Pro不配套。如果你恰巧有一个配套的EMMC读卡器,那么理论上直接将镜像烧录进EMMC也是可行的,比起上面的方法会节省一些时间。不过,为了这个方式买一个EMMC读卡器是不是值得就看你自己怎么想了。
3.烧录进SSD
现在这个时代估计机械硬盘成了稀罕货了,估计以后只能在机房里看到了。想起来早些年买电脑还是小容量SSD+机械的搭配,放在那个SSD天价的时代也是无奈之举。
现在好了,随着技术的发展和国内的厂商的跟进,虽说SSD没有夸张到白菜价,至少比起以前也是一个天上,一个地下了吧!
这块板子支持的SSD是M.2 2280的插槽,速度标准是PCIe3.0x4的速度,如果你的SSD超过这个标准,比如三星980 Pro是PCIe4.0x4的速度,就只能跑在PCIe3.0x4的速度了。我之前买的三星970 Pro就是这个标准,最大读取速度3500MB/S,最大写入速度2500MB/S,这个速度比起TF或EMMC已经是快很多了,满足生产力也肯定是没问题的。
注意:现在的NVME SSD只测试过梵想、金士顿和三星,目前只有三星的SSD能稳定运行操作系统!其他品牌的目前不建议将系统烧录到SSD上,等待官方发布新的更新即可解决这个问题。
首先,将开发板关机并下电,不要带电操作,可能烧坏设备。将SSD插入背板的M.2插槽上:
一定要用螺丝将SSD固定好再开机,防止脱落引发不必要的损坏。
其次,和前面一样烧录SSD也需要借助TF卡,这个过程就不介绍了。确保你的SSD是走的NVME协议,通过以下命令查看是否备操作系统识别:
sudo fdisk -l
Disk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
所有的NVME协议的SSD都是以/dev/nvme开头的,注意不要看错了。
最后,还是借用香橙派系统自带的balenaEtcher软件将镜像烧录进SSD里面,方法和烧录TF卡一样,唯一需要注意的是SSD是大容量设备,注意备份数据,这个操作会删除所有的数据,且不可恢复!
烧录完成后关机并断开电源
,将BOOT1和BOOT2的拨码拨动到启动NVME的位置即可插电源上电,然后等待进入系统。
四、系统初探
我手上拿到的这款自带32GB的闪迪SD卡,操作系统预装了Ubuntu-22.04。系统本身加上预装的开发软件占用了大概17G的空间,剩余11G左右的空间。
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 17G 11G 61% /
tmpfs 3.7G 4.0K 3.7G 1% /dev/shm
tmpfs 1.5G 15M 1.5G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs 128M 6.0M 123M 5% /var/log
/dev/mmcblk1p3 50M 2.0K 50M 1% /exchange
tmpfs 755M 76K 755M 1% /run/user/0
tmpfs 755M 80K 755M 1% /run/user/1000
/dev/sda1 239G 3.2G 236G 2% /mnt/data
实测这个SD卡的顺序写入速度大概是30MB/S,大致是A1的级别。安装软件过程中没有感受到任何卡顿,但复制大文件会等待更长的时间。想要更好的体验还是换速度更快的TF卡或者干脆更换成SSD获得更好的体验。
找一个支持HDMI的显示器连接到HDMI0接口上即可看到桌面,遗憾的是我拿到这块开发板的时候暂时还不支持2个HDMI口同时输出,目前默认HDMI0是有输出信号的,HDMI1是无输出信号的,以后软件更新会修复这个问题的。
默认的桌面是Xfce
的,且支持在不同的工作区之间进行切换。另外,还附带了Gnome和KDE桌面,有需要的可自行切换。不同的人有不同的使用习惯,比如我本人使用Gnome更多一些,这一点考虑的很周到。
实测WIFI信号是满格的:
目前无法看到WIFI实际的速率,按照往常的经验大概率是433M,这个速率对于开发板来说够用了。
实测蓝牙也是可以正常连接的:
目前支持蓝牙传输文件,但是速率略慢。用来声音输出没有任何问题,音质也没有任何影响 。
桌面里面的功能就不过多介绍了,像日常用到的网络管理、蓝牙、WIFI都是自带的,常用的应用程序功能基本是应有尽有,感兴趣的小伙伴请自行体验吧。
五、性能评测
1.CPU性能评测
我们已经知道开发板搭载的NPU的确切性能是8TOPS,接下来就是用UnixBench测试下CPU的性能。
因为默认有一个核心被分配给了NPU,我们需要先把这个核心要回来
,等待测完再还给它
。
先查询下当前的分配策略:
npu-smi info -t cpu-num-cfg -i 0 -c 0
Current AI CPU number : 1
Current control CPU number : 3
Current data CPU number : 0
AI CPU
就是分配给NPU的核心数,control CPU
就是分配给系统的核心数,默认是1:3的策略,可以通过命令更改这个分配策略。简单解释下就是说分配给NPU的核心是独占的,你的Linux系统不会把非AI的任务调度到这个核心上,通俗点说就是日常使用只有3个核心可用了。这个比例可以通过命令调整,比如0:4。如果你非常确定你的模型没有运行在CPU上的算子,你就可以从NPU临时回收
这个核心。
切记:你一定要很确定才能这么做,有些模型是会把算子分配到CPU上运行的,强行回收可能导致严重的性能问题!
下面地命令就是重新分配:
sudo npu-smi set -t cpu-num-cfg -i 0 -c 0 -v 0:4:0
Status : OK
Message : The cpu-num-cfg of the chip is set successfully. Reset system for the configuration to take effect.
注意:一定要重启系统才能生效!每次更改分配策略都要重启系统。
重启之后再检查下:
npu-smi info -t cpu-num-cfg -i 0 -c 0
Current AI CPU number : 0
Current control CPU number : 4
Current data CPU number : 0
AI CPU变成0说明策略生效了!
接下来开始UnixBench测试,为了缩小Desktop对测试结果的影响,我先切换到命令行模式:
sudo systemctl isolate multi-user.target
然后再把风扇的速度手动调到最大,规避掉过热导致的降频:
#首先调速模式必须切换为手动,否则无法更改速度
sudo npu-smi set -t pwm-mode -d 0
#调速比调整为100,也就是全速运转
sudo npu-smi set -t pwm-duty-ratio -d 100
sudo reboot
这样开发板重启后就进入命令行界面了,关掉多余的进程就可以开始测试了。
测试获得906.4的综合得分,比6核心的RK3399 CPU综合性能强30%,比6核心的Atlas-200 CPU综合性能强50%。这个结果让我眼前一亮,本以为区区4核心不够看的,没想到这么快就打脸了。虽说分数没有到夸张的程度,不过作为定位AI的产品也是足够了。
注:Atlas-200的8核CPU必须至少分给NPU两个,所以至多只能使用6个核心。
2.硬解码能力评测
支持2路4K@60HZ的视频输出,这个在嵌入式设备上相当出色了,现在同时使用2个显示器的场景还蛮多的,这个设计无疑迎合了一些人的需求。
这个能力背后需要的正是硬解码的支持,接下来我们就来看看它的解码能力到底怎么样,我们后面在实际场景中演示中会非常依赖硬解码。以下测试以单路1920x1080@30FPS视频流为测试对象:
实测H264平均每帧解码耗时:1-2ms
实测H265平均每帧解码耗时:1-2ms
接下来2路4K@60HZ测试,结果平均每路最大12ms:
按照60HZ的输出标准来看的话平均每帧解码不能超过16ms,测试结果证明符合描述。
注:我本人测试了下jpeg的编码和解码速度都在几毫秒范围内,应该来讲我们做推理用的最多的是H264或H265的解码能力,jpeg用的并不多,所以就一笔带过了。
六、推理性能评测
作为定位AI场景的开发板,这是最主要的功能了。接下来就测试下开发板的AI推理能力。
1.目标检测
目标检测应该是使用的最多的场景之一了,这里使用YOLOv5s,它是 YOLOv5 系列中较为轻量的网络模型,适合在边缘设备部署,进行实时目标检测。这里检测以1080p视频为输入。
实测每帧处理速度大概是51ms左右:
关于准确率,除了完全遮挡
的情况下无法识别,基本上没什么问题。真实使用场景中并不是每一帧都要检测,我之前做的很多项目都是可以通过抽帧解决,所以这个速度能够满足一定场景的需求,但如果对帧数要求特别高,就略显吃力了。
2.OCR
OCR两阶段方法一般包含两个模型,检测模型负责找出图像或视频中的文字位置,识别模型负责将图像信息转换为文本信息。使用的检测模型为CTPN,识别模型则是SVTR。
以下图为例:
识别结果:
cost: 262.5029296875
det result: 536,184,536,200,651,200,651,184
rec result: 开启开发者之旅
det result: 249,89,249,122,920,122,920,89
rec result: 从入门到进阶,开启昇腾开发者成长之旅
可以看出准确识别出了文字,速度的话是262ms左右,能够满足一些场景的使用,不太能满足对实时性要求很高的场景。
3.图片卡通化
使用cartoonGAN模型对输入图片进行卡通化处理,输入正常图像,输出卡通图像。
输入:
输出:
从结果可以看出来细节的保留做的还是相当好的。
速度测试:
in pre_process, use time:0.0037565231323242188
in inference, use time:0.2697789669036865
cost: 270.003173828125
in post_process, use time:0.0645606517791748
前处理和后处理几乎不消耗时间,推理的话消耗270ms左右,能够满足一些场景的需求,视频流场景需要做抽帧处理,不能够满足实时检测。
4.其他模型
诸如人脸检测和人脸识别这样的模型基本是能够做到实时检测的,有的甚至能够多路并发。由于模型太多就不一一展示了。
5.模型转换
比较好的一点是模型是可以直接在开发板上转换的,别问我为什么这么说,因为我遇到过需要借助其它设备转换的开发板,这些设备往往需要另外掏钱购买。Yolov5转换成om模型大概需要5分钟左右吧,虽说不算快,但也就是喝杯茶的功夫,我觉得可以接受。
七、Camera测试
之前买了个树莓派4B的时候正好买了个MIPI摄像头,今天拿过来插香橙派 AI Pro上看看效果。遗憾的是这个摄像头我当初买的时候不是树莓派官方原装摄像头,我也是抱着试试看的态度,实际是不能正常使用的。如果大家由这类需求的话还是购买官方指定的MIPI摄像头吧。
八、40PIN测试
这个硬件和AI关系不大,一般无人机、机器人这类场景使用的比较多。正好我手上有一些IO设备,就顺手看下。遗憾的是我经过多方面测试发现目前GPIO基本上是处于不可用的状态,经过多方面查找资料依然没有解决这个问题,只能后续和官方交流后再进一步测试了。
九、说说优缺点
说说优点:
1、高达8TOPS的AI处理器,这个算力可以毫无压力地跑人脸识别、物体识别、物体分类、追踪等等场景。
2、存储的可选性比较多,除了支持Micro SD Card,还支持eMMC和M.2 2280(实测同时支持NVME核SATA两种协议),还可以把系统烧录到SSD上体验飞一般的感觉。
3、支持主动散热,正常使用过程中风扇几乎没有噪音。
4、支持电池供电而且还支持快充,这个功能我以前用过的很多开发板都是没有的,虽然我可能用的不多,但是有的话无疑是要点个赞。
说说缺点:
1、实际使用过程中遇到过好几次假死或网络无故断连的情况,操作系统的稳定性需要再完善下。
总结
1、香橙派 AIPro为AI而生,如果你正在找一款合适的开发板,不妨考虑下。