RV1126 部署自己训练的yolov8

1)环境:

创建一个 python3.8的虚拟环境

采用rknn_toolkit-1.7.5-cp38-cp38-linux_x86_64.whl

1) pt -> onnx

使用RK的yolov8.

在满足 ./requirements.txt 的环境要求后,执行以下语句导出模型

# 调整 ./ultralytics/cfg/default.yaml 中 model 文件路径,默认为 yolov8n.pt,若自己训练模型,请调接至对应的路径。支持检测、分割模型。
# 如填入 yolov8n.pt 导出检测模型
# 如填入 yolov8-seg.pt 导出分割模型

export PYTHONPATH=./
python ./ultralytics/engine/exporter.py

# 执行完毕后,会生成 ONNX 模型. 假如原始模型为 yolov8n.pt,则生成 yolov8n.onnx 模型。

执行之后,就会在当前目录下生成 对应的ONNX模型。我们打开这个模型看一下,就会发现outputs输出是9个。如果不用这个方式,outputs会是一个,导致后面的无法正常使用。RK的GIT上相关的问题,都没人回答,这是一个坑,被我踩了一次。

2) ONNX->rknn

进入rknn_model_zoo/example/yolov8/python

python3 convert.py best.onnx rv1126

W rknn-toolkit version: 1.7.5
--> Config model
done
--> Loading model
W Catch exception when optimize onnx model, skip it! Exception: Unresolved value references: /model.10/Constant_1_output_0,/model.10/Constant_output_0,/model.13/Constant_1_output_0,/model.13/Constant_output_0,/model.22/Constant_1_output_0,/model.22/Constant_2_output_0,/model.22/Constant_3_output_0,/model.22/Constant_4_output_0,/model.22/Constant_5_output_0,/model.22/Constant_output_0,
/usr/local/lib/python3.8/dist-packages/rknn/api/rknn.py:160: FutureWarning: Possible nested set at position 7
  ret = self.rknn_base.load_onnx(model, inputs, input_size_list, outputs)
--> Building model
W found outlier value, this may affect quantization accuracy
const name                              abs_mean    abs_std     outlier value
Conv_/model.0/conv/Conv_226:weight      2.32        2.26        14.828      
W:tensorflow:From /usr/local/lib/python3.8/dist-packages/tensorflow/python/framework/func_graph.py:981: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.
Instructions for updating:
tf.py_func is deprecated in TF V2. Instead, there are two
    options available in V2.
    - tf.py_function takes a python function which manipulates tf eager
    tensors instead of numpy arrays. It's easy to convert a tf eager tensor to
    an ndarray (just call tensor.numpy()) but having access to eager tensors
    means `tf.py_function`s can use accelerators such as GPUs as well as
    being differentiable using a gradient tape.
    - tf.numpy_function maintains the semantics of the deprecated tf.py_func
    (it is not differentiable, and manipulates numpy arrays). It drops the
    stateful argument making all functions stateful.
    
W:tensorflow:From /usr/local/lib/python3.8/dist-packages/tensorflow/python/ops/resource_variable_ops.py:1659: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
done
--> Export rknn model
done

打开生成的rknn看一下

3)进行在线预编译:

在线预编译模型需要板子接入网线或者跟电脑连接。用的是adb connect指令直接连接ip。

#执行指令
adb connect 192.168.2.17
#得到结果
already connected to 192.168.2.17:5555
#连接成功

cd到toolkit的examples->common_function_demos->export_rknn_precompile_model文件夹下,将刚刚得到的best.rknn模型拷贝进去。
执行如下指令:

python export_rknn_precompile_model.py best.rknn yolov8_best_pre.rknn rv1126

运行结束后得到yolov8_best_pre.rknn。如果不使用预编译,运行速度会非常慢。

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
训练自己的Yolov5并部署RV1126上,可以按照以下步骤进行操作: 1. 首先,你需要在Yolov5的data目录下创建一个用于训练配置的yaml文件。在该文件中,指定训练集和验证集的路径,可以使用相对路径或绝对路径,确保训练集和验证集都是路径的子目录。 2. 在命令行中使用以下命令开始训练: ``` python train.py --epochs <训练轮数> --weights <模型权重> --data <配置文件路径> --batch <批量大小> ``` 其中,`--epochs`表示训练的轮数,建议设置为至少200;`--weights`表示使用的预训练模型,选择一个简单的模型如yolov5s可以加快训练速度;`--data`指定刚才创建的配置文件路径;`--batch`表示每次训练使用的样本数量,根据你的显卡显存大小适当调整。 3. 训练完成后,在`yolov5/runs/train/expX`目录下会生成训练权重和相关的训练日志文件,其中X是一个递增的数字,选择最大的数字对应的目录,即为最新的训练结果。 接下来是一些相关问题: 相关问题: 1. 如何在Yolov5中使用自己的数据集进行训练? 2. Yolov5的模型权重有哪些可选项?它们之间有什么区别? 3. 如何在RV1126部署训练好的Yolov5模型? 4. Yolov5的训练轮数对结果有什么影响? 5. 如何选择合适的批量大小进行训练? 6. 如何评估训练好的Yolov5模型的性能? 7. 有没有一些优化训练过程的技巧或策略可以分享?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值