当前位置: 首页 > news >正文

MATLAB 训练CNN模型 yolo v4

学生对小车控制提出了更好的要求,能否加入深度学习模型。

考虑到小车用matlab来做,yolo v5及以上版本都需要在pytorch下训练,还是用早期版本来演示。

1 yolov4 调用

参考 trainYOLOv4ObjectDetector (mathworks.com)

name = "tiny-yolov4-coco";

% 需要安装工具包,调用已训练的yolo v4模型
detector = yolov4ObjectDetector(name);
disp(detector) 
analyzeNetwork(detector. Network) %网络架构

%车检测
img = imread("highway.png");
[bboxes,scores,labels] = detect(detector,img) %label中判断有无目标对象
%车检测
detectedImg = insertObjectAnnotation(img,"Rectangle",bboxes,labels);%插入bbox
figure
imshow(detectedImg)

%人检测
I = imread("visionteam.jpg");
[bboxes, scores, labels] = detect(detector, I, Threshold=0.4)
detectedImg = insertObjectAnnotation(I, "Rectangle", bboxes, "person");
figure
imshow(detectedImg)

早期版本调用比较简单。

2 yolov4 训练

如果模拟小车进行车道保持,需要考虑行人、学校等环境,则需要对模拟的环境进行训练,自己构建数据集,然后进行使用。

具体方式看 官网的介绍 

trainYOLOv4ObjectDetector (mathworks.com)

或者matlab中搜索 

Object Detection Using YOLO v4 Deep Learning

3 yolo v5 及以上版本训练

AI 生成的,未测试。

3.1 安装必要的软件和库

确保你的系统已安装以下组件:

  • MATLAB(建议R2021b或更高版本,支持Python接口)

  • Python 3.8+(建议使用Anaconda管理环境)

  • Ultralytics YOLOv11(通过pip安装)

  • PyTorch(支持CUDA的版本,如果使用GPU)

pip install ultralytics torch torchvision

3.2. 在MATLAB中配置Python环境

在MATLAB中设置Python解释器路径:

pyenv('Version', '你的Python路径(如C:\Anaconda3\python.exe)');

验证Python是否成功连接:

py.sys.version

3.3. 调用YOLOv11模型进行推理

使用MATLAB的py接口调用YOLOv11进行目标检测

% 加载YOLOv11模型
model = py.ultralytics.YOLO('yolov11n.pt');  % 使用预训练权重% 进行目标检测
results = model.predict('test.jpg');  % 输入图像路径% 获取检测结果
bboxes = results.xyxy[0];  % 边界框坐标(x1, y1, x2, y2, conf, class)
disp(bboxes);

3.4. 训练YOLOv11模型

YOLOv11的训练通常在Python环境下进行,但可以通过MATLAB调用Python脚本实现:

(1) 准备数据集

确保数据集格式符合YOLO要求:

├─train
│  ├─images
│  └─labels
└─valid
    ├─images
    └─labels

创建data.yaml文件:

train: ./train/images
val: ./valid/images
nc: 6  # 类别数
names: ['class1', 'class2', 'class3']  # 类别名称
(2) 在MATLAB中调用训练脚本
% 定义训练命令
train_cmd = ['yolo detect train data=data.yaml model=yolov11n.pt epochs=50 batch=16 imgsz=640 device=0'];% 执行训练
system(['python -c "from ultralytics import YOLO; model = YOLO(''yolov11n.pt''); model.train(data=''data.yaml'', epochs=50, batch=16, imgsz=640, device=0)"']);

在MATLAB中可视化训练结果

训练完成后,可以使用MATLAB加载训练日志并绘制损失曲线:

% 读取训练日志(假设保存在results.csv)
data = readtable('results.csv');
plot(data.epoch, data.train_box_loss, 'b-', 'LineWidth', 2);
hold on;
plot(data.epoch, data.val_box_loss, 'r-', 'LineWidth', 2);
xlabel('Epoch');
ylabel('Loss');
legend('Train Loss', 'Validation Loss');
title('YOLOv11 Training Progress');

部署训练好的模型(调用.onnx)

训练完成后,可以导出模型并在MATLAB中加载:

% 导出ONNX格式(在Python中执行)
system('python -c "from ultralytics import YOLO; model = YOLO(''best.pt''); model.export(format=''onnx'')"');% 在MATLAB中加载ONNX模型
net = importONNXNetwork('best.onnx');

可以看出,在matlab中训练yolo v5以上模型并不友好。

http://www.xdnf.cn/news/56395.html

相关文章:

  • CSS预处理工具有哪些?分享主流产品
  • 【身份证扫描件识别表格】如何识别大量身份证扫描件将内容导出保存到Excel表格,一次性处理多张身份证图片导出Excel表格,基于WPF和腾讯云的实现方案
  • spring security +kotlin 实现oauth2.0 认证
  • 问题 | RAIM + LSTM 你怎么看???
  • 【图像轮廓特征查找】图像处理(OpenCV) -part8
  • Linux深度探索:进程管理与系统架构
  • 碰一碰发视频源码,碰一碰发视频OEM
  • MySQL快速入门篇---表的操作
  • 【图片转PDF工具】如何批量将文件夹里的图片以文件夹为单位批量合并PDF文档,基于WPF实现步骤及总结
  • 深入理解自监督学习(Self-Supervised Learning):理论与实践
  • Spring MVC
  • Web3核心技术解析:从区块链到C++实践
  • 【沉浸式求职学习day21】【常用类分享,完结!】
  • 【Hive入门】Hive概述:大数据时代的数据仓库桥梁
  • 基于亚马逊云科技 Amazon Bedrock Tool Use 实现 Generative UI
  • Java抽象类、接口和内部类介绍
  • 实例变量与静态变量的区别
  • 24、ASP.NET⻚⾯之间传递值的⼏种⽅式
  • idea2024.1双击快捷方式打不开
  • 室外摄像头异常自检指南+视频监控系统EasyCVR视频质量诊断黑科技
  • 【Linux】线程安全与线程同步
  • C#+Visual Studio 2022为AutoCAD 2022开发插件并显示在Ribbon选项卡
  • 【网络编程】从零开始彻底了解网络编程(三)
  • 榕壹云预约咨询系统:基于ThinkPHP+MySQL+UniApp打造的灵活预约小程序解决方案
  • 解决方案评测|告别复杂配置!基于阿里云云原生应用开发平台CAP快速部署Bolt.diy
  • 使用 Electron 打包可执行文件和资源:完整实战教程
  • [QMT量化交易小白入门]-四十六、年化收益率118%的回测参数,如何用贪心算法挑选50个两两相关性最小的ETF组合
  • 【Java面试笔记:基础】2.Exception和Error有什么区别?
  • XSS详解
  • 神经网络直接逆控制:神经网络与控制的结合入门级结合