yolov8s.pt转换成onxx再转换成rknn模型用于RK3588

前言

完成pt->rknn的转换需要用到下述三个软件,链接地址如下:

1.ultralytics_yolov8:https://github.com/airockchip/ultralytics_yolov8
2.rknn_model_zoo:https://github.com/airockchip/rknn_model_zoo
3.rknn-toolkit2:https://github.com/airockchip/rknn-toolkit2

我用的版本如下图所示

1.ultralytics_yolov8 直接下载就行
2. rknn_model_zoo v2.2.0
3.
在这里插入图片描述
3. rknn-toolkit2 v2.2.0
在这里插入图片描述
在这里插入图片描述

PT转ONNX

第一步
  • 将该仓库的项目下载到本地上,压缩包或者git命令都可以。
    ultralytics_yolov8: https://gitcode.com/gh_mirrors/ul/ultralytics_yolov8/overview?utm_source=csdn_github_accelerator&isLogin=1
    在这里插入图片描述
    以下是我下载后的文件夹截图
    在这里插入图片描述

  • 改激活函数:把ultralytics/nn/modules/conv.py中的Conv类进行修改。
    default_act = nn.SiLU() # default activation
    改为default_act = nn.ReLU() # default activation
    在这里插入图片描述

  • 当前的git仓库中是中没有requirements.txt参考文献2中有提到这个文件,详情可以参考这篇文献。
    这里给出requirements.txt中的内容,直接复制到自己创建的requirements.txt中就可以了。

    # Ultralytics requirements
    # Usage: pip install -r requirements.txt
    
    # Base ----------------------------------------
    matplotlib>=3.2.2
    numpy>=1.22.2 # pinned by Snyk to avoid a vulnerability
    opencv-python>=4.6.0
    pillow>=7.1.2
    pyyaml>=5.3.1
    requests>=2.23.0
    scipy>=1.4.1
    torch>=1.7.0
    torchvision>=0.8.1
    tqdm>=4.64.0
    
    # Logging -------------------------------------
    # tensorboard>=2.13.0
    # dvclive>=2.12.0
    # clearml
    # comet
    
    # Plotting ------------------------------------
    pandas>=1.1.4
    seaborn>=0.11.0
    
    # Export --------------------------------------
    # coremltools>=7.0.b1  # CoreML export
    # onnx>=1.12.0  # ONNX export
    # onnxsim>=0.4.1  # ONNX simplifier
    # nvidia-pyindex  # TensorRT export
    # nvidia-tensorrt  # TensorRT export
    # scikit-learn==0.19.2  # CoreML quantization
    # tensorflow>=2.4.1  # TF exports (-cpu, -aarch64, -macos)
    # tflite-support
    # tensorflowjs>=3.9.0  # TF.js export
    # openvino-dev>=2023.0  # OpenVINO export
    
    # Extras --------------------------------------
    psutil  # system utilization
    py-cpuinfo  # display CPU info
    # thop>=0.1.1  # FLOPs computation
    # ipython  # interactive notebook
    # albumentations>=1.0.3  # training augmentations
    # pycocotools>=2.0.6  # COCO mAP
    # roboflow
    
    
    
第二步
  • 使用conda创建一个虚拟环境。

    # 使用conda创建虚拟环境
    conda create -n yolov8 python=3.9
    conda activate yolov8
    
  • 然后切换到 ultralytics-main/ultralytics_yolov8文件夹下

    cd [ultralytics-main/ultralytics_yolov8放置的文件夹路径]
    
  • 执行下边的命令 (后两条的命令可能执行的时间会长一点,请耐心等待)

    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  • 执行下边的命令

    pip install -e .
    

    注warn: e后边有个点,两者之间用空格隔开了。

第三步
  • 把自己需要转换的权重文件放到如下图所示的位置
    在这里插入图片描述

  • 执行下述命令

    yolo export model=yolov8s.pt format=rknn
    

    注:yolo export model=/your_path/best.pt format=rknn

  • 执行上述命令可能会出现如下错误
    在这里插入图片描述
    简单理解:就是说onnx包没有找到,那我们就直接下载这个onnx包,然后再执行上述命令。

    pip install onnx
    

ONNX转RKNN

  • 注: 需要确保当前环境支持RKNN转换,RKNN 目前支持 NVIDIA CUDA GPU,我的理解就是得有N卡。

  • 创建一个虚拟环境
    conda create -n rknn220 python=3.9

  • 进入rknn-toolkit2-2.1.0\rknn-toolkit2-2.1.0\rknn-toolkit2\packages文件中
    在这里插入图片描述

  • 在当前路径下打开终端,或者使用cd命令切换到当前路径下,然后依次输入如下命令:

    pip install -r requirements_cp39-2.2.0.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    requirements_cp39-2.2.0.txt文件名称就是这个package目录里的,选择自己虚拟环境里的python版本。
    在这里插入图片描述
    注:这里的cp39代表的是python3.9版本,选择合适自己的即可(我这里创建的虚拟环境是python3.9的)。

    pip install rknn_toolkit2-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    

    rknn_toolkit2-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl文件也是类似的。
    在这里插入图片描述

  • 进入knn_model_zoo-2.1.0\examples\yolov8\python文件夹,打开convert.py修改模型的保存路径
    在这里插入图片描述

  • 然后将yolov8s.onnx移动到该目录中
    在这里插入图片描述

  • 最后执行python convert.py yolov8s.onnx rk3588

  • 可在目录下找到生成的yolov8.rknn文件
    在这里插入图片描述

参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱叨叨的小嘟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值