网站对于企业的作用,郑州网站设计推荐,深圳产品设计手绘,wordpress大学主题3.5在RV1126开发板上部署ONNX算法#xff0c;实时目标检测RTSP传输。视频演示地址
rv1126 yolov5 实时目标检测 rtsp传输_哔哩哔哩_bilibili 一、准备工作
1.从官网下载YOLOv5-v7.0工程#xff08;YOLOv5的第7个版本#xff09;
手动在线下载#xff1a; Releases ultraly… 在RV1126开发板上部署ONNX算法实时目标检测RTSP传输。视频演示地址
rv1126 yolov5 实时目标检测 rtsp传输_哔哩哔哩_bilibili 一、准备工作
1.从官网下载YOLOv5-v7.0工程YOLOv5的第7个版本
手动在线下载 Releases · ultralytics/yolov5 · GitHub
手动在线下载地址 https://github.com/ultralytics/yolov5/releases 往下拉找到yolov5s.pt和source code(tar.gz)并下载 在虚拟机中新建1个文件夹yolo将上面下载的yolov5-7.0.tar.gz工程拷贝到虚拟机并解压 得到/home/rv1126/yolo/yolov5-7.0文件夹
然后将yolov5s.pt拷贝至解压后的yolov5-7.0目录 2.YOLO初体验—ubuntu下跑YOLO预训练模型
首先进入pytorch训练环境再进入yolo工程目录
conda activate py3.8-pytorch-1.13.0
cd /home/rv1126/yolo/yolov5-7.0/
在虚拟机中运行yolo程序
python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images
上述命令表示采用预训练模型yolov5s.pt 喂入模型中的图片被resize为640*640大小 置信度阈值为0.25 源图片位于data/images下
运行结束后生成的已标记目标的图片文件放在run/detect/exp目录 二、YOLOV5模型转换为RKNN格式
1.修改models/yolo.py文件 打开/home/rv1126/yolo/yolov5-7.0/models/yolo.py找到59行添加3个输出。注释后面的1输出。
注意python对文件格式要求较高如果不会改或者改完报错请拷贝/home/rv1126/yolov5/yolov5-7.0-github/models/yolo.py文件替换/home/rv1126/yolo/yolov5-7.0/models/yolo.py文件 2.将yolov5s.pt导出为yolov5s.onnx文件
注意当前环境为训练环境(py3.8-pytorch-1.13.0)
python export.py --weights yolov5s.pt --img 640 --batch 1 --include onnx
在当前路径生成yolov5s.onnx
3.将yolov5s.onnx模型转换为yolov5s.rknn
从/home/rv1126/yolov5/yolov5-7.0-github路径中拷贝模型转换脚本convert-onnx-to-rknn-pre.py和文件夹img到当前路径/home/rv1126/yolo/yolov5-7.0 进入模型转换环境
conda activate py3.6-rknn-1.7.3
开始转换模型
python convert-onnx-to-rknn-pre.py
在当前目录生成yolov5.rknn 三、部署yolov5.rknn到RV1126开发板上
1.准备工作
首先在开发板执行如下命令退出出厂测试程序
killall rkmedia_rockx_person_detection
在开发板执行如下命令挂载nfs根文件系统
busybox mount -t nfs -o nolock,nfsvers3 192.168.1.108:/home/rv1126 /getnfs/ 2.拷贝模型到开发板并运行程序
cd /getnfs/yolo/yolov5-7.0
cp yolov5s.rknn /demo/bin/yolov5s_relu_rv1109_rv1126_out_opt.rknn
在开发板执行如下命令 运行yolo例程
/demo/bin/openRv1126_yolov5_object_recognize 3.VLC查看视频串口查看打印坐标
然后在电脑上打开VLC播放器输入如下取流地址。注意IP地址请根据实际修改
rtsp://192.168.1.105/live/main_stream
即可看到实时yolo检测的视频画面。 串口实时打印检测框坐标信息 如需退出请按ctrlc
4.源码说明
上面运行的openRv1126_yolov5_object_recognize程序源码位于路径
/home/rv1126/openRv1126-Aidemo/openRv1126_yolov5_object_recognize_rtsp 该源码定义了模型路径、数据集路径、识别类目数量如下
/home/rv1126/openRv1126-Aidemo/openRv1126_yolov5_object_recognize_rtspopenRv1126_yolov5_object_recognize.cpp指定模型路径static char *model_path /demo/bin/yolov5s_relu_rv1109_rv1126_out_opt.rknn;postprocess.cc指定数据集路径 #define LABEL_NALE_TXT_PATH /demo/bin/coco_80_labels_list.txtpostprocess.h指定模型识别类目数量#define OBJ_CLASS_NUM 80
附录操作命令
附录
pytorch/ONNX预训练模型转换rknn onnx/torchscript-rknn思路yolov5 v7在训练环境导出为torchscript或onnx然后在转换环境调用对应的API来转换成RKNN模型https://github.com/ultralytics/yolov5/releases 找到v7,往下拉找到 yolov5s.pt 和 source code(tar.gz)并下载
1.下载yolov5 v7工程并导出pt-onnx/torchscript1.1修改models/yolo.py第59行打开注释3个输出。注释后面的1输出return x[0],x[1],x[2]1.2修改好models/yolo.py文件中的def forward(self, x)函数以后 可执行如下命令 将.pt文件导出.onnx 或者. torchscript格式文件// 转换为TorchScript格式 得到 yolov5s.torchscript文件python export.py --weights ./yolov5s.pt --img 640 --batch 1 --include torchscript// 转换为ONNX格式 得到 yolov5s.onnx文件python export.py --weights ./yolov5s.pt --img 640 --batch 1 --include onnx// 若需要指定opset 可根据安装的onnx库的版本来调整 如安装的onnx库的版本是1.12.0 后面加上--opset 12python export.py --weights ./yolov5s.pt --img 640 --batch 1 --include onnx --opset 122.模型转换 onnx/torchscript-rknn2.1源码解析target rv1126# 确定目标设备targetrknn RKNN()# 创建RKNN对象rknn.config(reorder_channel0 1 2,mean_values[[0, 0, 0]],std_values[[255, 255, 255]],target_platformtarget,output_optimize1)rknn.load_pytorch(model./original_model/best.torchscript, input_size_list[[3,640,640]])# 加载模型rknn.build(dataset./dataset/dataset1.txt,pre_compileTrue)# 构建 RKNN 模型并预处理rknn.export_rknn(./rknn_model/yolov5-7.0-torchscript.rknn)# 导出 RKNN 模型rknn.release()# 释放RKNN对象2.2转换实操yolov5导出复制到/home/rv1126/ModelConvertSample/original_model best.onnx 和 best.torchscriptpython convert-onnx-to-rknn-pre.py python convert-pytorch-to-rknn-pre.py生成 /home/rv1126/ModelConvertSample/rknn_model/ yolov5-7.0-onnx.rknn 和 yolov5-7.0-torchscript.rknn