7. 模型部署进阶指南
7.1. 概述
本章节介绍开发板上 NPU 相关示例程序的使用方式,相关示例程序源码参考 SDK 中 msp/sample/npu
目录,如何编译出 NPU 示例代码请参考 《AX SDK 使用说明》.
7.2. 运行示例
运行准备
对于 AX650A
、 AX650N
、 M76H
、 AX630C
开发板,NPU 相关示例已预装在 /opt/bin/
路径下,分别为 sample_npu_classification
和 sample_npu_yolov5s
.
对于 AX620Q
开发板,由于默认采用 16M NorFlash 方案,文件系统中未包含上述2个示例,可通过 NFS 网络挂载的方式将 SDK 中 msp/out/bin/
路径挂载到开发板的文件系统中获取以上示例.
如果提示板子空间不足, 可以通过文件夹挂载的方式解决.
MacOS 挂载 ARM 开发板示例
提示
由于板上空间有限, 测试时通常需要进行文件夹共享操作, 这个时候就需要将 ARM
开发板与主机之间进行共享. 这里仅以 MacOS
为例.
开发机挂载 ARM
开发板需要 NFS
服务, 而 MacOS
系统自带 NFS
服务, 只需要创建 /etc/exports
文件夹, nfsd
将自动启动并开始用于 exports
.
/etc/exports
可以配置如下:
/path/your/sharing/directory -alldirs -maproot=root:wheel -rw -network xxx.xxx.xxx.xxx -mask 255.255.255.0
参数释义
参数名 |
含义 |
---|---|
alldirs |
共享 |
network |
挂载 ARM 开发板 IP 地址, 可以是网段地址 |
mask |
子网掩码, 通常是 255.255.255.0 |
maproot |
映射规则, 当 |
rw |
读写操作, 默认开启 |
修改 /etc/exports
需要重启 nfsd
服务
sudo nfsd restart
如果配置成功, 可以使用
sudo showmount -e
命令查看挂载信息, 例如输出 /Users/skylake/board_nfs 10.168.21.xx
, 配置好开发机后需要在 ARM
端执行 mount
指令
mount -t nfs -o nolock,tcp macos_ip:/your/shared/directory /mnt/directory
如果出现权限问题, 需要检查 maproot
参数是否正确.
提示
network
参数可以配置成网段的形式, 如: 10.168.21.0
, 如果挂载单ip出现 Permission denied
, 可以尝试一下网段内挂载.
分类模型
以下打印信息基于 AX650N 开发板运行输出,非 AX650N 开发板的打印信息以实际打印为准.
/root # sample_npu_classification -m /opt/data/npu/models/mobilenetv2.axmodel -i /opt/data/npu/images/cat.jpg -r 10
--------------------------------------
model file : /opt/data/npu/models/mobilenetv2.axmodel
image file : /opt/data/npu/images/cat.jpg
img_h, img_w : 224 224
--------------------------------------
Engine creating handle is done.
Engine creating context is done.
Engine get io info is done.
Engine alloc io is done.
Engine push input is done.
--------------------------------------
topk cost time:0.07 ms
9.5094, 285
9.3773, 282
9.2452, 281
8.5849, 283
7.6603, 287
--------------------------------------
Repeat 10 times, avg time 0.72 ms, max_time 0.72 ms, min_time 0.72 ms
--------------------------------------
检测模型
/root # sample_npu_yolov5s -m /opt/data/npu/models/yolov5s.axmodel -i /opt/data/npu/images/dog.jpg -r 10
--------------------------------------
model file : /opt/data/npu/models/yolov5s.axmodel
image file : /opt/data/npu/images/dog.jpg
img_h, img_w : 640 640
--------------------------------------
Engine creating handle is done.
Engine creating context is done.
Engine get io info is done.
Engine alloc io is done.
Engine push input is done.
--------------------------------------
post process cost time:2.25 ms
--------------------------------------
Repeat 10 times, avg time 7.65 ms, max_time 7.66 ms, min_time 7.65 ms
--------------------------------------
detection num: 3
16: 91%, [ 138, 218, 310, 541], dog
2: 69%, [ 470, 76, 690, 173], car
1: 56%, [ 158, 120, 569, 420], bicycle
--------------------------------------
7.3. 其他示例
请参考我们在 github 上的开源项目: