参考文档
从modelzoo来看,使用纯cnn的int8模式,更容易部署模型
- https://blog.csdn.net/zichuanning520/article/details/125724571
- https://github.com/airockchip/rknn-toolkit2/tree/master/rknn-toolkit2/examples/pytorch/resnet18
- https://github.com/airockchip/rknn_model_zoo?tab=readme-ov-file
- 香橙派5pro 用户手册
3.40 npu使用方法
关于驱动仓库
https://github.com/airockchip/rknn-toolkit2
- rknpu2: 驱动所在位置,提供外部cpp接口
- rknn-toolkit2: python接口,x86 adb连接板子调试(跟手机类似)
- rknn-toolkit-lite2: python接口, 直接在板子上跑代码,需要有编译好的rknn模型
resnet18 rknn-toolkit2环境跑通
1. 示例代码选择
- https://github.com/airockchip/rknn-toolkit2/tree/master/rknn-toolkit2/examples/pytorch/resnet18
- 官方的这个demo还挺完善的,我们只要把他环境配齐就好了
2. x86配置
- 克隆整个仓库,安装位于
rknn-toolkit2-master/rknn-toolkit2/packages/rknn_toolkit2-2.0.0b0+9bab5682-cp39-cp39-linux_x86_64.whl
- 这个是个x86调试npu的一个轮子,包含模拟器
- 手动安装其他依赖即可,由于香橙派主要使用百度源,所以推荐
https://mirror.baidu.com/pypi/simple
, 清华源很多rknn的依赖包装不上
3. 板端配置
主要是更新驱动
rknpu2/runtime/Linux/librknn_api/aarch64
, 替换/usr/lib
的同名驱动rknpu2/runtime/Linux/rknn_server/aarch64/usr/bin/
,三个内容都使用777- 在
rknpu2/runtime/Linux/rknn_server/aarch64/usr/bin
里使用./rknn_server
启动usb服务器
4. 跑通模拟器代码
- 修改test.py里的target_platform为rk3588
- 然后在x86端直接运行是示例代码的test.py即可
5. 实机跑代码
-
完成步骤4,然后准备一根
usb-typec
的线, c口插入香橙派, usb是x86主机 -
使用
adb devices -l
查看链接情况,注意连不上的话先拔掉线,板子重启一般就好了 -
在x86的test.py里修改
ret = rknn.init_runtime()
这一行 -
ret = rknn.init_runtime(target='rk3588', device_id='adb的链接码)
-
执行test.py即可
执行效果
- resnet18的半精度0.04s,从官方model zoo来看部署使用针对边缘优化的模型结构可以在此npu上有比较好的运行结果