训练自己的yolov5样本, 并部署到rv1126 <三>

准备好训练好的pt文件,
可以用Netron打开看看大概长啥样:
在这里插入图片描述

在py38的conda环境, 进行转换

python export.py --rknpu rv1126 --weight runs/train/exp4/weights/best.pt --include onnx

在这里插入图片描述
理论上不会有报错, 输出的onnx格式模型, 放在刚才的best.pt的目录.
用Netron看看模型
在这里插入图片描述
到这里, 相信很多人都没啥问题, 关键是注意:

  1. Conv现在是3x3或者2x2的, 因为npu优化过3x3
  2. 激活函数现在是relu, 因为算起来够快…

接下来转rknn我是在ubuntu虚拟机/物理机下面实现的.

新建conda的py36环境
$ conda create -n rknn_py36 python=3.6
$ conda activate rknn_py36
下载并安装rknn的package
wget https://github.com/rockchip-linux/rknn-toolkit/releases/download/v1.7.1/rknn-toolkit-v1.7.1-packages.tar.gz

记住, 这里的版本是1.7.1

解压之后, 先确认目前python是3.6版本.

$ tax rknn-toolkit-v1.7.1-packages.tar.gz
$ cd packages
$ pip install -r requirements-cpu.txt

祝你有个好梯子, 或者, 可以在pip后面加上清华的源, 方法自行百度一下吧, 还挺简单的.

如果你是把ubuntu装在ubuntu的物理机上, 而又有显卡加成, 那你可以直接装requirement-gpu

如果提示你有冲突, 说torchvision 0.4.0仅仅支持torch==1.2.0, 直接修改requirement-cpu.txt, 把torchvision的版本改成
去这个网页, 查一下torch 1.5.1对应torchvision是0.6.1

The conflict is caused by:
    The user requested torch==1.5.1
    torchvision 0.4.0 depends on torch==1.2.0

在这里插入图片描述
装好依赖之后, 再根据你所在的环境, 安装对应的轮子:

在这里插入图片描述
因为我是在ubuntu上面的py36, 所以直接运行

$ pip install rknn_toolkit-1.7.1-cp36-cp36m-linux_x86_64.whl

aach64是安装在arm-64的系统上的, 因为这是python的脚本,或者叫做库, 所以是可以直接在rv/rk系列的开发板上装的, 就是之前写的python版本的rknn-tool-kit方案, 基于debian或者ubuntu的.

这部分也基本上没啥大问题.
在这里插入图片描述
还是那句话, 如果太慢, 就用想办法用用国内的pip源吧
在这里插入图片描述
一般来说, 不会报错(除了刚才说的需要修改torchvision的版本部分).

查看rknn是否安装成功.

(rknn_py36) marc@ubuntu:~/rknn_model_zoo/models/CV/object_detection/yolo/RKNN_model_convert$ python
Python 3.6.13 |Anaconda, Inc.| (default, Jun  4 2021, 14:25:59) 
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from rknn.api import RKNN
>>> 

进入python的命令行, 直接import rknn, 如果不报错, 表示rknn安装成功.

确认板子的rknn的版本

用串口或者ssh登录到板子上,

[root@RV1126_RV1109:/]# strings /usr/lib/librknn_api.so |grep version
_version
librknn_api version 1.7.3 (cf7f05f build: 2022-08-13 09:45:04)
.gnu.version
.gnu.version_r
[root@RV1126_RV1109:/]# strings /usr/lib/librknn_runtime.so|grep version
rknn_get_sdk_version
pre_compile_version
optimization_level_version
op_version
I [%s:%d]custom op version: %d
E [%s:%d] rknn_query,  info_len(%d) != sizeof(rknn_sdk_version)(%d)!
librknn_runtime version 1.7.3 (2e55827 build: 2022-08-25 10:45:32 base: 1131)
//int8 version
W [%s:%d]Unsupported evis version
E [%s:%d]unsupport kernel size:%d/dilation:%d/evis version:%d
.gnu.version
.gnu.version_r

可以看到rknn_api是1.7.3版本的, runtime也是1.7.3
这里面还涉及一个mini drive的问题, 先不用管它.

下载rk model zoo
$ git clone https://github.com/airockchip/rknn_model_zoo.git

在这里插入图片描述
确定一下的确是最新的版本2022年11月16日更新的.

进入datasets/COCO目录, 下载量化用的coco图片.

~/rknn_model_zoo/$ cd datasets\COCO
~/rknn_model_zoo/datasets/COCO$ python download_eval_dataset.py

脚本会自动下载coco数据集val2017约5000张照片
.在这里插入图片描述
同时会生成几个txt文件, 后面我们会用到.

在这里插入图片描述
在ubuntu下面, 使用vscode打开models/CV/yolo/RKNN_model_convert里面的yolov5_yolov7.yml
在这里插入图片描述
在这里插入图片描述
把训练并转好的onnx的模型权重, 复制到虚拟机的model zoo目录或者任意目录, 把板子连到虚拟机上, 用adb devices -l查询一下设备id
注意, 这里可能存在一种情况是, 如果你板子刷了易百纳的固件, 可能接入虚拟机的时候, 会反复断开, 你可能需要直接找台机器, 直接装ubuntu而不是使用虚拟机, 或者是尝试重新编译固件烧录进去.

使用adb 查询设备的devicei id, 如果没有安装adb 直接用apt安装即可

(rknn_py36) marc@ubuntu:~/rknn_model_zoo/models/CV/object_detection/yolo/RKNN_model_convert$ adb devices -l
List of devices attached
adb server version (40) doesn't match this client (39); killing...
* daemon started successfully
a9d00ab1f032c17a       device usb:1-1 product:occam model:Nexus_4 device:mako transport_id:1

这个a9d00ab1f032c17a就是你的板子的device id

修改一下内容(注意, 这里修改的时候别用#对脚本进行注释, 直接改, 如果不放心, 可以先把整个文件备份, 别用#注释, 记住!!!):
model_framework: onnx
model_file_path: safe_hat.onnx
dataset: …/…/…/…/datasets/COCO/coco_dataset_1.txt
如果ubuntu是物理机, 可以连接你的板子的otg口, 就添加板子的device id
deivce_id: xxxxxxx

其他不变, 改好之后是这样的:
在这里插入图片描述

这里我直接把转好的safe_hat.onnx复制到了这个yaml所在的目录
同时参考这个目录下面的README,

终于到了后的高潮部分:

$ python ../../../../../common/rknn_converter/rknn_convert.py --yml_path ./yolov5.yml --python_api_test --capi_test

如果你重复执行这个脚本, 会在一开始问你是否要覆盖掉原来转好的rknn模型, 如果不用保留原来的模型, 直接输入Y即可.

在这里插入图片描述
没有意外的话, 模型就转好了, 转好的模型就在这个目录的model_cvt目录下面了.
在这里插入图片描述

如果遇到下面的错误, 多半原因是你的板子没有连到ubuntu上, 就只会生成一个没有预编译的模型, 推理速度会慢20%-30%
在这里插入图片描述
在这里插入图片描述
如果提示没有安装onnxruntime, 直接用pip安装onnxruntime即可.

查看模型

用ntron.app查看转好的rknn
在这里插入图片描述

接下来就是使用python或者c的demo程序, 直接对模型进行推理测试了, 就留给以后再写啦.

  • 32
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值