文内有任何不对的地方,欢迎指出!!!
首发时间:2024年4月23日10点09分
更新时间:2024年5月24日15点05分 (更新 后续任务:2. 对自己训练的模型进行部署)
一:部署官方模型
1. 文件下载
首先,下载整个部署工作需要的文件,如下:
注意:以下文件最好放到ubuntu子系统里面进行解压,windows下解压会出现文件缺失,问题很严重。
RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程。
https://github.com/airockchip/rknn_model_zoo
yolov8s.onnx模型
https://ftrg.zbox.filez.com/v2/delivery/data/95f00b0fc900458ba134f8b180b3f7a1/examples/yolov8/yolov8s.onnx
rknn官方压缩文件
https://github.com/rockchip-linux/rknn-toolkit/archive/refs/tags/v1.7.5.tar.gz
rknn官方安装包压缩文件
https://github.com/rockchip-linux/rknn-toolkit/releases/download/v1.7.5/rknn-toolkit-v1.7.5-packages.tar.gz
arm交叉编译工具
https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz?revision=e09a1c45-0ed3-4a8e-b06b-db3978fd8d56&rev=e09a1c450ed34a8eb06bdb3978fd8d56&hash=9C4F2E8255CB4D87EABF5769A2E65733
2. ubuntu子系统环境配置
在微软商店下载安装ubuntu18.04LTS
ubuntu子系统默认已经安装python,输入python3可以看到版本为python3.6.9
为了方便演示,重新安装python3.6.8取代python3.6.9(不使用conda)
sudo apt update
sudo apt upgrade
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev gcc
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
tar zxvf Python-3.6.8.tgz
cd Python-3.6.8
./configure --enable-optimizations
make
sudo make install
重启并输入python3和pip list进行验证
安装如下python包
推荐先安装rknn-toolkit。在rknn官方安装包压缩文件中找到如下文件用pip安装。
rknn_toolkit-1.7.5-cp36-cp36m-linux_x86_64.whl
然后安装torch,tensorflow等。推荐加上清华源。
最后安装简单的包。
安装过程中出现问题可以直接在如下网址找whl安装。好用。
安装完成后,python环境如下所示。
Package Version
-------------------- -----------
absl-py 1.4.0
appdirs 1.4.4
astor 0.8.1
audioread 3.0.1
cached-property 1.5.2
certifi 2024.2.2
cffi 1.15.1
chardet 3.0.4
click 8.0.4
cycler 0.11.0
dataclasses 0.8
decorator 5.1.1
dill 0.2.8.2
Flask 2.0.2
flatbuffers 1.10
gast 0.5.4
google-pasta 0.2.0
graphviz 0.8.4
grpcio 1.48.2
h5py 2.10.0
idna 2.8
importlib-metadata 4.8.3
importlib-resources 5.4.0
itsdangerous 2.0.1
Jinja2 3.0.0
joblib 1.1.1
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.2
kiwisolver 1.3.1
librosa 0.8.0
llvmlite 0.36.0
lmdb 0.93
Markdown 3.3.7
MarkupSafe 2.0.1
matplotlib 3.3.4
mxnet 1.5.0
networkx 1.11
numba 0.53.1
numpy 1.19.5
onnx 1.10.0
onnxoptimizer 0.2.7
onnxruntime 1.9.0
opencv-python 4.5.1.48
packaging 21.3
Pillow 8.4.0
pip 21.3.1
ply 3.11
pooch 1.6.0
protobuf 3.13.0
psutil 5.6.2
pycparser 2.21
pyparsing 3.1.2
python-dateutil 2.9.0.post0
requests 2.22.0
resampy 0.4.3
rknn-toolkit 1.7.5
ruamel.yaml 0.15.81
scikit-learn 0.24.2
scipy 1.4.1
setuptools 59.6.0
six 1.16.0
sklearn 0.0
soundfile 0.12.1
tensorboard 1.14.0
tensorflow 1.14.0
tensorflow-estimator 1.14.0
termcolor 1.1.0
threadpoolctl 3.1.0
torch 1.9.0
torchaudio 0.9.0
torchvision 0.10.0
tqdm 4.63.0
typing_extensions 4.1.1
urllib3 1.25.11
Werkzeug 2.0.3
wheel 0.37.1
wrapt 1.16.0
zipp 3.6.0
进行验证
3.配置编译环境
运行如下命令解压arm编译工具:
xz -d gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
tar -xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar
解压完成后将解压目录设置到bash里,设置环境变量:
vim ~/.bashrc
export PATH=/home/ss/RV1126/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin:$PATH
# 修改为自己的目录,加到最末尾即可
source ~/.bashrc
验证版本信息
arm-linux-gnueabihf-gcc --version
4.onnx转rknn
方便演示,直接使用官方模型。
进入如下目录,把onnx模型放到该目录下。
运行如下命令:
python3 convert.py yolov8s.onnx rv1126
运行成功可以在如下目录生成rknn模型:
5. 编译yolov8
进入rknn_model_zoo中build-linux.sh文件所在目录
运行如下命令保证编译环境导入成功
export GCC_COMPILER=/home/aoweineng2/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf
# 换成自己的路径
赋予权限
chmod 777 build-linux.sh
升级cmake
cmake版本要求3.15.0以上,cmake官网下载高版本的cmake
运行如下命令:
tar -zxvf cmake-3.17.3.tar.gz
cd cmake-3.17.3/
./configure
make -j8
sudo make install
cmake --version
运行如下命令进行编译
./build-linux.sh -t rv1126 -a armhf -d yolov8
等待一段时间,编译成功即可。
编译后在如下目录得到 rknn_yolov8_demo 文件。
6. 整理文件
以上工作顺利完成后,后面就很简单了。
先整理需要放置到rv1126开发板上的文件。
需要创建一个文件夹,文件夹下文件如下(包含第4步得到的yolov8编译文件,第5步得到的yolov8.rknn模型。以及待测图片和类别txt文件):
7. 连接rv1126开发板
此处由于工作环境受限,开发板无法联网。
使用adb调试。
需提前安装adb,可以参考链接ADB安装及使用详解(非常详细)从零基础入门到精通,看完这一篇就够了-CSDN博客
在cmd中输入adb devices,可以看到rv1126开发板ID,即连接成功。
在cmd中输入adb shell,进入rv1126系统目录。
8. 在rv1126上运行demo
将第6步得到的文件夹push到rv1126开发板,在本地电脑cmd环境下运行:
adb push rknn_yolov8_demo /install
进入rknn_yolov8_demo 目录,运行:
chmod 777 rknn_yolov8_demo # 赋予足够权限
./rknn_yolov8_demo yolov8.rknn bus.jpg
得到如下运行结果和输出图片:
成功!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
二:更新对自己训练的模型进行部署
下面的步骤依旧是在ubuntu18.04LTS子系统上进行
1. 生成onnx文件
这里需要借助一个gitee项目,地址:
https://gitee.com/Coder_Zr/YOLOv8_RKNN
# 项目比较大,需要用git.exe下载
项目放在windows驱动器上即可。
将下面目录中清空,放入自己的pt模型:
在ubuntu18.04LTS子系统中运行命令:
cd /mnt/d/shengong/rv1126/YOLOv8_RKNN/ultralytics_yolov8/ # 进入自己下载的路径
export PYTHONPATH=./
python3 ./ultralytics/engine/exporter.py
# 运行python3 ./ultralytics/engine/exporter.py可能出现缺包问题
#尤其是from _lzma import * 报错比较麻烦
#运行
apt install -y liblzma-dev
pip3 install backports.lzma
sudo vim /usr/local/lib/python3.6/lzma.py # 修改文件
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties
修改为
try:
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties
except ImportError:
from backports.lzma import *
from backports.lzma import _encode_filter_properties, _decode_filter_properties
就可以在YOLOv8_RKNN/model文件夹下得到best.onnx模型。
2. 转化成rknn模型
这里就可以回到之前的项目 rknn_model_zoo-main 中,参考4. onnx转rknn
后续任务:
1. 对rknn模型进行预编译加速推理工作
2. 对自己训练的模型进行部署 (2024年5月24日已完成)
3. 添加摄像头获取图像并推理
参考文档(感谢):
瑞芯微RV1126/1109开发流程之yolov5部署(c++版本)
rv1126上跑yolov8。借助rknn_model_zoo 2.0更新,重点:在线预编译