ubuntu子系统C++编译yolov8 以及 rv1126部署(自己训练的模型)

文内有任何不对的地方,欢迎指出!!!

首发时间: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安装。好用。

清华源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

例如:cmake-3.17.3.tar.gz

运行如下命令:

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. 添加摄像头获取图像并推理

参考文档(感谢):

win10子系统内安装ubuntu和Python3.9记录

配置RKNN-Toolkit环境

瑞芯微RV1126/1109开发流程之yolov5部署(c++版本)

rv1126上跑yolov8。借助rknn_model_zoo 2.0更新,重点:在线预编译

ADB安装及使用详解(非常详细)从零基础入门到精通,看完这一篇就够了-CSDN博客

冲锋的羊驼 / YOLOv8_RKNN

  • 41
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
根据引用内容,部署Yolov7在RV1126上需要进行以下步骤: 1. 配置编译器:根据中提供的信息,需要下载适用于RV1126的交叉编译器。您可以从提供的下载地址获取适合的版本。将交叉编译器解压到固定路径,并确保在Ubuntu编译工程,以便在RV1126板子上运行程序。 2. 编译Yolov7:进入Yolov7的构建目录,运行cmake命令进行配置,指定适用于RV1126的交叉编译器。例如,可以使用以下命令: ``` cmake .. -DCMAKE_C_COMPILER=${RV1109_TOOL_CHAIN}/bin/arm-linux-gnueabihf-gcc -DCMAKE_CXX_COMPILER=${RV1109_TOOL_CHAIN}/bin/arm-linux-gnueabihf-g++ ``` 然后运行make命令进行编译。 3. 安装Yolov7:编译完成后,运行make install命令将编译好的文件安装到指定位置。 4. 部署Yolov7:根据需要,将Yolov7的运行脚本复制到适当的位置,以便在RV1126上运行。具体路径和命令请参考中提供的示例。 请注意,部署Yolov7可能还需要其他依赖项和配置,这些步骤仅提供了基本的指导。建议查阅相关文档或咨询开发人员以获取更详细的指导和支持。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Rockchip RV1126 模型部署(完整部署流程)](https://blog.csdn.net/kxh123456/article/details/129370265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [训练自己的yolov5样本, 并部署rv1126 三>](https://blog.csdn.net/zunly/article/details/127971370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值