迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片,集成了4个Cortex-A72和4个Cortex-A53核心,以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。
支持INT4/INT8/INT16/FP16/BF16/TF32混合运算,并凭借其强大的兼容性,可以轻松转换基于TensorFlow、MXNet、PyTorch、Caffe等一系列框架的网络模型。满足多种应用场景。
rknn-model-zoo 中提供了当前主流算法部署到 RK SOC 的例程,包含了模型的转换、模型
的 Python api 推理、模型的 C api 推理,rknn-model-zoo 仓库在 1.5 小节已经讲解了获取方法,
而由于每个例程的使用都非常相似,所以在本章节只以 deeplabv3 例程为例进行例程演示。
DeepLabv3 是一种用于语义分割的深度学习模型,由 Google 研究团队在 2017 年提出。它
是 DeepLab 系列模型的第三代产品,相比前两代模型在准确性和运行效率上都有显著提升。
5.1 模型下载和模型转换
不论是模型的 Python api 推理还是模型的 C api 推理都需要将常规模型转换为 RKNN 模型,
首先进入到 deeplabv3 目录
在 model 目录下有着常规模型的下载脚本,如下图所示:
然后赋予该脚本权限并运行该脚本,下载 deeplabv3 模型,
下载完成之后,可以看到当前目录多出来了 deeplab-v3-plus-mobilenet-v2.pb 模型,其他例
程的模型也是通过上述方法进行下载。然后来到 python 目录下,在 python 目录下有着模型转
换的 python 程序 convert.py,
convert.py 程序实际上就是由 rknn-toolkit2 编写的程序,所以在运行之前必须要确保根据
2.1 小节搭建了 rknn-toolkit2 环境,convert.py 的使用方法如下所示:
可以使用以下命令进行模型转换,表示将 deeplab 模型转换为在 RK3576 上运行的量化
RKNN 模型,如下图所示:
python3 convert.py ../model/deeplab-v3-plus-mobilenet-v2.pb rk3576 i8
在运行的过程中会有一些警告,不影响转换结果,默认忽略即可,转换完成会在 model
目录下生成名为 deeplab-v3-plus-mobilenet-v2.rknn 的 RKNN 模型,
至此,关于 deeplabv3 例程的模型下载和模型转换就演示完成了,rknn-model-zoo 其他例
程的模型下载和模型转换步骤相同,模型转换完成之后,就可以进行推理测试了,rknn-model
-zoo 提供了 rknn-toolkit2 Python API 连板推理和 rknpu2 C API 推理这两种方式,会在接下来
的小节中对两种方法进行演示。
5.2 Python API 推理
在每个 rknn-model-zoo 例程文件夹的 python 目录中除了模型转换程序还有推理程序,所
使用的也是由 rknn-toolkit2 API 编写的程序,
而由于 rknn-toolkit2 只能运行在 X86 的 Linux 系统中,所以这里采用的是连板推理的方式,
关于连板推理的演示可以看 2.2.2 小节,在本章节不再进行详细的介绍,直接进行演示。
首先启动开发板,这里开发板烧写的是 ubuntu22 镜像,使用其他镜像都可以,烧写完成
之后,需要先更新 rknn_server 和 librknnrt.so 文件,rknn_server 和 librknnrt.so 分别为 rknn-too
lkit2/rknpu2/runtime/Linux/rknn_server/aarch64/usr/bin 和 rknn-toolkit2/rknpu2/runtime/Linux/li
brknn_api/aarch64 目录下如下图所示:
然后将 rknn_server 和 librknnrt.so 拷贝到开发板上,其中 rknn_server 需要拷贝到/usr/bin
目录下,而 librknnrt.so 要拷贝到/usr/lib 目录,拷贝完成之后,运行 rknn_server 如下图所示:
然后确保开发板的 adb 设备连接到了虚拟机 ubuntu,连接成功之后在左侧菜单栏中会有一
个手机的图标,
然后在终端使用“adb devices”命令查看当前连接的 adb 设备,存在 adb 设备表示连接成
功,
而 deeplabv3.py 程序的运行需要 matplotlib 依赖,所以要运行以下命令安装 matplotlib,如
下图所示:
pip3 install matplotlib -i https://repo.huaweicloud.com/repository/pypi/simple/
安装完成之后就可以运行 deeplabv3.py 程序了,deeplabv3.py 程序有三个参数,分别为
--model_path、--target 和--device_id,--model_path 表示 RKNN 模型路径,--target 表示连接的
开发板 SOC 类型,--device_id 为上面通过“adb devices”获取到的设备 id,但由于只有一个设
备,所以--device_id 参数可以忽略不写,所以推理命令如下所示:
运行完成之后,会在当前路径输出语义分割之后的图形 output.png,原图形和分割之后的
对比图如下所示:
可以看到小朋友、自行车已经使用了不同的颜色进行了分割,至此对于 Python API 推理就
演示完成了。