赞
踩
- #使用conda创建一个python环境
- conda create -n torch python=3.9
-
- #激活环境
- conda activate torch
-
- #安装yolov8
- pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
安装toolkit2-1.5.2
下载链接:
链接:百度网盘 请输入提取码
提取码:abcf
下载后对应的文件为 onxx2rknn
下载后,创建一个conda环境,python使用3.6
- #创建rknn环境
- conda create -n toolkit python=3.6
-
- #激活环境
- conda activate toolkit-152-py36
-
- #进入下载的文件夹 安装依赖库,保证每个都能安装上,如果有安装不上的,-i后面换别的源地址进行安装
- pip install -r requirements_cp36-1.5.2.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
-
- #都安装完以后安装rknn_toolkit,还是进入百度云下载的文件夹
- pip install rknn_toolkit2-1.5.2+b642f30c-cp36-cp36m-linux_x86_64.whl
-
编译好的动态库我放到了百度云盘中路径为 opencv4_install,如果板子是rk3588,系统为ubuntu20.04应该是可以用起来的。如果不是的话,可能需要自己编译一下,步骤如下:
参考链接 ubuntu在arm平台下编译安装opencv(亲测可用)_opencv arm-CSDN博客
opencv: Release OpenCV 4.4.0 · opencv/opencv · GitHub
opencv_contrib: https://github.com/opencv/opencv_contrib/releases/tag/4.4.0
我已经放到了百度云上,在1.2节的百度云中,对应文件为opencv4.4
下载后放在到办卡上
解压opencv和opencv-contrib 代码,在板卡上新建一个opencv4_install文件夹,用于安装opencv,再进入解压后的opencv4.4.0文件夹, 新建文件夹 build,进入build文件夹,打开终端执行以下命令
注意:
- cmake -D CMAKE_BUILD_TYPE=Release \
- -D CMAKE_INSTALL_PREFIX=/home/forlinx/opencv/opencv4_install \
- -D OPENCV_EXTRA_MODULES_PATH=//home/forlinx/opencv/opencv_contrib-4.4.0/modules \
- -D BUILD_opencv_python3=OFF \
- -D PYTHON3_EXECUTABLE=$(which python3) \
- -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
- -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
- -D WITH_GTK_2_X=ON \
- -D BUILD_SHARED_LIBS=ON \
- -D WITH_OPENGL=OFF \
- -D BUILD_opencv_python3=OFF \
- -D BUILD_opencv_apps=OFF \
- -D BUILD_TESTS=OFF \
- -D BUILD_TESTS=0FF \
- -D BUILD_opencv_calib3d=OFF \
- -D BUILD_opencv_flann=OFF \
- -D BUILD_opencv_stitching=OFF \
- -D BUILD_opencv_ts=OFF \
- -D BUILD_opencv_feature2d=OFF \
- -D BUILD_opencv_superres=OFF \
- -D BUILD_opencv_ononfree=OFF \
- -D BUILD_opencv_gpu=OFF \
- -D BUILD_opencv_stereo=OFF \
- -D INSTALL_PYTHON_EXAMPLES=OFF \
- -D BUILD_opencv_python3=OFF \
- -D BUILD_IPP=OFF \
- -D BUILD_TBB=OFF \
- -D BUILD_opencv_java=OFF \
- -D BUILD_JAVA=OFF \
- -D BUILD_DOCS=0FF ..
编译的时候,会报错误,缺一些依赖库,参照下面的链接进行解决
(注意需要按照这个这里的链接下载一系列文件
搜索 leaf918, 把pitch文件下载下来,解压后,
把patch/boostdesc下的内容拷贝到 opencv-4.4.0/.cache/xfeatures2d/boostdesc/
把patch/vgg下面的内容拷贝到opencv-4.4.0/.cache/xfeatures2d/vgg/)
注意:这里缺少的文件我已经放到了百度云
patch文件我已经放到百度云opencv4.4/patch_文件夹下,可以下载放到对应位置后,在重新执行上述指令进行编译,直到无报错为止,再执行make指令进行编译
- make -j8
-
- #执行完后无报错 进行安装
- sudo make install
编译成功后会生成以下文件
编译成功后,打开系统文件
- #打开系统文件
- vi /etc/profile
-
- #在最下面添加如下内容
- export LD_LIBRARY_PATH=/opencv4_install/lib:$LD_LIBRARY_PATH
- export Opencv_DIR=/opencv4_install
-
- #上述路径要按照自己的绝对路径来写
- #保存后重启板子
- #下载yolov8官方代码
- git clone https://github.com/ultralytics/ultralytics.git
-
- #切换分支
- cd ultralytics
- git checkout a05edfbc27d74e6dce9d0f169036282042aadb97
- #在ultralytics根目录下新建一个train.py文件
- from ultralytics import YOLO
- model = YOLO(ultrallytics/cfg/models/v8/yolov8n.yaml).load('yolov8n.pt')
- model.train(data='ultralytics/cfg/datasets/VisDrone.yaml',batch=48,epochs=800,imgsz=640,save_period=1,device=0)
修改1:
代码路径: /ultralytics/cfg/models/v8/yolov8.yaml 第5行修改为自己训练集需要检测目标的类别数量
修改2:
/ultralytics/cfg/datasets/VisDrone.yaml中训练集、测试集、验证集的数据路径以及类别的label
这里修改为自己对应数据的路径和类别,否则跑出来是错误的。
- #进入ultralytics-export文件,进行代码修改
- cd ultraytics-export
-
- #应用patch文件进行代码修改
- git apply enpei.modify.patch
执行完后如图所示
- #激活导出onnx环境
- conda activate torch
-
- #进入ultralytics-export文件夹
- cd ultralytics-export
-
- #开始转换
- python export_onnx.py
执行完会在终端显示 done! 并且在weights文件夹下生成对应onnx文件,就表示转换成功
导出工具在百度云下载的文件夹中,路径为onnx2rknn/convert_rknn, 下载后把导出的yolov8.dict.onnx拷贝到该文件夹下
- #激活第一步中rknn环境
- conda activate toolkit-152-py36
-
- #进入转换工具准备转换
- cd convert_rknn
-
- python convert_rknn.py
终端就开始量化转换,如图所示:
看到该界面就表示转换完成,可以在convert_rknn文件夹下看到多出来一个 yolov8.int.rknn模型和一个 test_rknn_results.jpg的推理结果,如果test_rknn_results.jpg的推理结果大致没啥问题,那么表示rknn转换无误了。
c++推理代码放到百度云盘地址 rk3588_cplus中的,我把zip和没压缩的都上传上去了,避免下载有问题。此时我把第1.3部分中编译的opencv动态库放到了3rdparty里面的,所以需要修改一下CMakeLists.txt文件就基本可以跑起来了
但是我感觉这句话是多余的,因为在第1.3.2步骤中,已经把动态库的地址写到了系统文件里
- #开始编译
- mkdir build && cd build
-
- #这里容易报opencv相关的错误,尝试自己解决一下,我编译动态库应该是可以用的
- cmake ..
-
- #编译
- make -j8
若一切顺利的话,这里在build文件下可以生成三个可执行文件,如图所示
分别为yolov8_img 用于检测图像,yolov8_video 用于检测视频,yolov8_thread_pool用于线程池检测视频
- #测试
- ./yolov8_img [模型地址] [图像地址]
-
- ./yolob8_video [模型地址] [视频地址] [写1或者不写,写1表示将结果存下来,默认不存结果]
-
- ./yolov8_thread_pool [模型地址] [视频地址] [线程数]
着急下班写的比较粗糙,可能中间过程还有点问题,五一后我再补充
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。