瑞幸微RK系列平台的YOLO部署(上篇)
🎇环境配置
🎉前言
部署的第一步是对环境的配置,不同的平台的平台需要依赖的环境不同,之前在英伟达的Jetson系列部署过,其主要是需要配置CUDA和CUDNN的环境,需要加速推理的话可能还需要TensorRT的环境。
瑞幸微使用的是NPU推理,这一点与英伟达不同。我们需要对瑞芯微RK系列平台进行配置才能够进行部署
🎉部署流程
需要提前安装好Anoconda(Linux平台),并创建个虚拟环境,以免影响其他项目。
🎉安装依赖RKNN-ToolKit2库
🎈(1)安装RKNN-Toolkit2依赖库
下载RKNN官方的工具包“rknn-toolkit2-2.1.0”,进入到里面的packages文件夹,在虚拟环境中使用下面命令安装依赖
pip3 install -r rknn-toolkit2/packages/requirements_cpxx.txt
嫌弃速度慢可以添加清华源
pip install -r requirements_cp39-2.1.0.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
some-package
对应的版本信息如下:
🎉安装RKNN-ToolKit2
pip3 install rknn-toolkit2/packages/rknn_toolkit2-x.x.x+xxxxxxxx-cpxx-cpxx-linux_x86_64.whl
包名格式为:rknn_toolkit2-{版本号}+{commit号}-cp{Python版本}-cp{Python版本}-linux_x86_64.whl,例
如:rknn_toolkit2-1.5.2+b642f30c-cp36-cp36m-linux_x86_64.whl。
pip install rknn_toolkit2-2.1.0+708089d1-cp39-cp39-linux_x86_64.whl
🎉环境构建
🎈(1)模型转换
完成上述步骤之后,我们就可以进行模型转换了,下载对应的模型,以yolov5为例,这里我使用瑞芯微官方提供的RKNN Model Zoo。
简介:RKNN Model Zoo 是由瑞芯微(Airockchip)提供的一系列经过优化的模型集合。其文件如下所示
rknn_model_zoo-2.1.0
├── 3rdparty # 第三方库
├── datasets # 数据集
├── examples # 示例代码
├── utils # 常用方法,如文件操作,画图等
├── build-android.sh # 用于目标为 Android 系统开发板的编译脚本
├── build-linux.sh # 用于目标为 Linux 系统开发板的编译脚本
└── ──
里面有很对使用例子,examples文件夹
rknn_model_zoo-2.1.0
├── examples
│ └── resnet
│ ├── cpp # C/C++ 版本的示例代码
│ ├── model # 模型、测试图片等文件
│ ├── python # 模型转换脚本和 Python 版本的示例代码
│ └── README.md
└── ...
🎈(2)交叉编译
在虚拟机或者性能较为强大的平台安装交叉编译工具,在电脑端编译好,然后传送到板载端运行即可。这里交叉编译工具使用官方的交叉编译工具链:aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz
下载完毕后,进行解压:
unzip rknn_model_zoo-2.1.0.zip
chmod -R 777rknn_model_zoo-2.1.0
终端控制编译器的环境变量
export GCC_COMPILER=/home/weima/aarch64- buildroot-linux-gnu_sdk-buildroot/bin/aarch64-buildroot-linux-gnu
开始构建
./build-linux.sh -t rk3588 -a aarch64 -d yolov5
如果没有构建成功,请你rm -f install删除重新构建,并检查终端的环境变量是否正常。
将生成在 install/rk3588_linux_aarch64 目录下的 rknn_yolov5_demo 文件夹拷贝到开发板上。进入到推送到开发板的目录 rknn_yolov5_demo 下,在开发板终端执行以下命令,使
用 bus.jpg 进行推理,执行结果如下图。