yolov8训练pt模型转换为rknn模型_部署在RK3588上--整个流程_笔记1

目录

一、环境准备

二、数据准备

1、指定格式存放数据集

2.在data目录下新建voc_label.py文件;里面存放代码,里面classes需要改成自己的类别

3、修改数据加载配置文件

三、模型训练/验证/预测/导出

(1)模型训练

多卡训练

(2)模型预测

(3)模型导出

四、YOLOv8部署到RK3588

PT转ONNX

五、PC端安装RKNNtoolkit2的及其环境

ONNX转RKNN

1、创建环境

2、这里需要用到rknn-toolkit2文件

3、安装rknn-toolkit2环境

4、现在要进行模型转换

六、模型部署到RK3588上


RKNPU SDK的版本

yolov8官网地址:yolov8

 官网文档地址

          rknn_zoo                     

        

           RKNPU2_SDK     模型文件

                 

          RKNN Model Zoo   RKNPU SDK的版本

          rknn_model_zoo 

RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程.

  • 支持 RK3562RK3566RK3568RK3588RK3576 平台。
  • 部分支持RV1103RV1106
  • 支持 RK1808RV1109RV1126 平台。

一、环境准备

在这之前,需要先准备主机的环境,环境如下:

  • Ubuntu22.04
  • cuda12.4

三个文件的链接放在这:ultralytics_yolov8rknn_model_zoo ,rknn-toolkit2

进入自己带pytorch的虚拟环境,与之前的yolo系列安装都不太一样,yolov8仅需要安装ultralytics这一个库:

 pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

1、创建虚拟环境

conda create -n yolo8 python==3.10 -y

conda activate yolo8

2、下载ultralytics库

 pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

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

另外一种方法:需要先克隆git仓库,再进行安装;二者取其一即可

git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .

二、数据准备

1、指定格式存放数据集

在yolov8/data目录下新建Annotations, images, ImageSets, labels 四个文件夹
images目录下存放数据集的图片文件
Annotations目录下存放图片的xml文件(labelImg标注)

这里直接参考我的另一篇文章

(链接:yolov7训练数据集详细流程bike-car-person_yolov7模型训练详细过程-CSDN博客

1)新建split_train_val.py文件

运行之后会在ImageSets/Main下生成四个.txt文件

2.在data目录下新建voc_label.py文件;里面存放代码,里面classes需要改成自己的类别

运行之后生成3个txt文件

3、修改数据加载配置文件

进入data/文件夹,新建coco.yaml,内容如下,注意txt需要使用绝对路径

# COCO 2017 dataset http://cocodataset.org
# Train command: python train.py --data coco.yaml
# Default dataset location is next to /yolov5:
#   /parent_folder
#     /coco
#     /yolov5


# download command/URL (optional)
# download: bash data/scripts/get_coco.sh

# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
# train: ../coco/train2017.txt  # 118287 images
# val: ../coco/val2017.txt  # 5000 images
# test: ../coco/test-dev2017.txt  # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794

train: /home/sxj/yolov8/data/train.txt  # 118287 images
val: /home/sxj/yolov8/data/val.txt  # 5000 images
test: /home/sxj/yolov8/data/test.txt  # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794

# number of classes
nc: 3

# class names
names: [ 'bike','carsgraz','person' ]

# Print classes
# with open('data/coco.yaml') as f:
#   d = yaml.load(f, Loader=yaml.FullLoader)  # dict
#   for i, x in enumerate(d['names']):
#     print(i, x)

至此数据集的准备已经就绪,索引文件在data目录下的train.txt/val.txt/test.txt

三、模型训练/验证/预测/导出

(1)模型训练

进入虚拟环境,进入yolov8文件夹,终端中输入,开始训练:

yolo task=detect mode=train model=yolov8n.pt data=data/coco.yaml batch=1 epochs=50 imgsz=640 workers=8 device=0
 

yolo task=detect mode=train model=yolov8n.pt data=data/coco.yaml batch=1 epochs=50 imgsz=640 workers=8 device=0
多卡训练

yolov8的多卡训练其

### 将PyTorch .pt模型文件转换RKNN .rknn格式的步骤 将PyTorch `.pt`模型文件转换RKNN `.rknn`格式需要使用RKNN-Toolkit工具包。以下是详细的转换过程和注意事项: #### 1. 安装RKNN-Toolkit 在开始转换之前,需要确保已正确安装RKNN-Toolkit。可以在Ubuntu系统上通过以下命令安装[^1]: ```bash pip install rknn-toolkit2 ``` #### 2. 准备PyTorch模型 确保`.pt`模型文件是一个训练好的PyTorch模型,并且可以加载到Python环境中。如果模型是从YOLOv5等开源项目中获取的,可以通过以下代码加载模型[^3]: ```python import torch # 加载.pt模型 model = torch.load('model.pt', map_location=torch.device('cpu')) model.eval() ``` #### 3. 创建RKNN对象并配置模型 创建一个RKNN对象,并设置模型输入的形状、数据类型以及其他必要的参数。例如: ```python from rknn.api import RKNN # 创建RKNN对象 rknn = RKNN() # 配置模型输入 ret = rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3588') if ret != 0: print('Config failed') exit(ret) ``` #### 4. 加载PyTorch模型 使用`load_pytorch`方法加载PyTorch模型,并指定输入节点和输出节点的名称。例如: ```python # 加载PyTorch模型 ret = rknn.load_pytorch(model=model, input_size_list=[[3, 640, 640]]) if ret != 0: print('Load PyTorch model failed') exit(ret) ``` #### 5. 转换模型 调用`build`方法将PyTorch模型转换RKNN模型。可以根据需求启用量化功能以优化性能和精度[^2]: ```python # 转换模型 ret = rknn.build(do_quantization=True, dataset='dataset.txt') if ret != 0: print('Build RKNN model failed') exit(ret) ``` `dataset.txt`是用于量化的数据集文件,包含一组输入样本的路径。 #### 6. 导出RKNN模型 完成转换后,可以将RKNN模型导出为`.rknn`文件: ```python # 导出RKNN模型 ret = rknn.export_rknn(model='model.rknn') if ret != 0: print('Export RKNN model failed') exit(ret) ``` #### 7. 测试RKNN模型 可以在PC上测试RKNN模型的推理结果,或者将其部署到Rockchip NPU设备上进行评估[^1]: ```python # 在PC上测试RKNN模型 outputs = rknn.inference(inputs=['test_input.jpg']) print(outputs) ``` ### 注意事项 - 确保输入模型的形状与实际数据一致。 - 如果模型包含不支持的操作符,可能需要手动调整模型结构。 - 量化过程中使用的数据集应具有代表性,以减少量化误差。 ```python # 示例代码总结 from rknn.api import RKNN import torch # 加载PyTorch模型 model = torch.load('model.pt', map_location=torch.device('cpu')) model.eval() # 创建RKNN对象 rknn = RKNN() # 配置模型 rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3588') # 加载PyTorch模型 rknn.load_pytorch(model=model, input_size_list=[[3, 640, 640]]) # 转换模型 rknn.build(do_quantization=True, dataset='dataset.txt') # 导出RKNN模型 rknn.export_rknn(model='model.rknn') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

山山而川_R

谢谢鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值