当前位置:   article > 正文

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

yolov8 rv1126

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

首发时间:2024年4月23日10点09分

更新时间:2024年5月24日15点05分 (更新 后续任务:2. 对自己训练的模型进行部署

一:部署官方模型

1. 文件下载

首先,下载整个部署工作需要的文件,如下:

注意:以下文件最好放到ubuntu子系统里面进行解压,windows下解压会出现文件缺失,问题很严重。

  1. RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程。
  2. https://github.com/airockchip/rknn_model_zoo
  3. yolov8s.onnx模型
  4. https://ftrg.zbox.filez.com/v2/delivery/data/95f00b0fc900458ba134f8b180b3f7a1/examples/yolov8/yolov8s.onnx
  5. rknn官方压缩文件
  6. https://github.com/rockchip-linux/rknn-toolkit/archive/refs/tags/v1.7.5.tar.gz
  7. rknn官方安装包压缩文件
  8. https://github.com/rockchip-linux/rknn-toolkit/releases/download/v1.7.5/rknn-toolkit-v1.7.5-packages.tar.gz
  9. arm交叉编译工具
  10. 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)

  1. sudo apt update
  2. sudo apt upgrade
  3. 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
  4. wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
  5. tar zxvf Python-3.6.8.tgz
  6. cd Python-3.6.8
  7. ./configure --enable-optimizations
  8. make
  9. 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环境如下所示。

  1. Package Version
  2. -------------------- -----------
  3. absl-py 1.4.0
  4. appdirs 1.4.4
  5. astor 0.8.1
  6. audioread 3.0.1
  7. cached-property 1.5.2
  8. certifi 2024.2.2
  9. cffi 1.15.1
  10. chardet 3.0.4
  11. click 8.0.4
  12. cycler 0.11.0
  13. dataclasses 0.8
  14. decorator 5.1.1
  15. dill 0.2.8.2
  16. Flask 2.0.2
  17. flatbuffers 1.10
  18. gast 0.5.4
  19. google-pasta 0.2.0
  20. graphviz 0.8.4
  21. grpcio 1.48.2
  22. h5py 2.10.0
  23. idna 2.8
  24. importlib-metadata 4.8.3
  25. importlib-resources 5.4.0
  26. itsdangerous 2.0.1
  27. Jinja2 3.0.0
  28. joblib 1.1.1
  29. Keras-Applications 1.0.8
  30. Keras-Preprocessing 1.1.2
  31. kiwisolver 1.3.1
  32. librosa 0.8.0
  33. llvmlite 0.36.0
  34. lmdb 0.93
  35. Markdown 3.3.7
  36. MarkupSafe 2.0.1
  37. matplotlib 3.3.4
  38. mxnet 1.5.0
  39. networkx 1.11
  40. numba 0.53.1
  41. numpy 1.19.5
  42. onnx 1.10.0
  43. onnxoptimizer 0.2.7
  44. onnxruntime 1.9.0
  45. opencv-python 4.5.1.48
  46. packaging 21.3
  47. Pillow 8.4.0
  48. pip 21.3.1
  49. ply 3.11
  50. pooch 1.6.0
  51. protobuf 3.13.0
  52. psutil 5.6.2
  53. pycparser 2.21
  54. pyparsing 3.1.2
  55. python-dateutil 2.9.0.post0
  56. requests 2.22.0
  57. resampy 0.4.3
  58. rknn-toolkit 1.7.5
  59. ruamel.yaml 0.15.81
  60. scikit-learn 0.24.2
  61. scipy 1.4.1
  62. setuptools 59.6.0
  63. six 1.16.0
  64. sklearn 0.0
  65. soundfile 0.12.1
  66. tensorboard 1.14.0
  67. tensorflow 1.14.0
  68. tensorflow-estimator 1.14.0
  69. termcolor 1.1.0
  70. threadpoolctl 3.1.0
  71. torch 1.9.0
  72. torchaudio 0.9.0
  73. torchvision 0.10.0
  74. tqdm 4.63.0
  75. typing_extensions 4.1.1
  76. urllib3 1.25.11
  77. Werkzeug 2.0.3
  78. wheel 0.37.1
  79. wrapt 1.16.0
  80. zipp 3.6.0

进行验证

3.配置编译环境

运行如下命令解压arm编译工具:

  1. xz -d gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
  2. tar -xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar

解压完成后将解压目录设置到bash里,设置环境变量:

  1. vim ~/.bashrc
  2. export PATH=/home/ss/RV1126/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin:$PATH
  3. # 修改为自己的目录,加到最末尾即可
  4. 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文件所在目录

运行如下命令保证编译环境导入成功

  1. export GCC_COMPILER=/home/aoweineng2/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf
  2. # 换成自己的路径

赋予权限

chmod 777 build-linux.sh

升级cmake

cmake版本要求3.15.0以上,cmake官网下载高版本的cmake

例如:cmake-3.17.3.tar.gz

运行如下命令:

  1. tar -zxvf cmake-3.17.3.tar.gz
  2. cd cmake-3.17.3/
  3. ./configure
  4. make -j8
  5. sudo make install
  6. 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 目录,运行:

  1. chmod 777 rknn_yolov8_demo # 赋予足够权限
  2. ./rknn_yolov8_demo yolov8.rknn bus.jpg

得到如下运行结果和输出图片:

成功!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

二:更新对自己训练的模型进行部署

下面的步骤依旧是在ubuntu18.04LTS子系统上进行

1. 生成onnx文件

这里需要借助一个gitee项目,地址:

  1. https://gitee.com/Coder_Zr/YOLOv8_RKNN
  2. # 项目比较大,需要用git.exe下载

项目放在windows驱动器上即可。

将下面目录中清空,放入自己的pt模型:

在ubuntu18.04LTS子系统中运行命令:

  1. cd /mnt/d/shengong/rv1126/YOLOv8_RKNN/ultralytics_yolov8/ # 进入自己下载的路径
  2. export PYTHONPATH=./
  3. python3 ./ultralytics/engine/exporter.py
  4. # 运行python3 ./ultralytics/engine/exporter.py可能出现缺包问题
  5. #尤其是from _lzma import * 报错比较麻烦
  6. #运行
  7. apt install -y liblzma-dev
  8. pip3 install backports.lzma
  9. sudo vim /usr/local/lib/python3.6/lzma.py # 修改文件
  10. from _lzma import *
  11. from _lzma import _encode_filter_properties, _decode_filter_properties
  12. 修改为
  13. try:
  14. from _lzma import *
  15. from _lzma import _encode_filter_properties, _decode_filter_properties
  16. except ImportError:
  17. from backports.lzma import *
  18. 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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号