当前位置: 首页 > 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以上模型并不友好。

相关文章:

  • 强化学习框架verl源码学习-快速上手之如何跑通PPO算法
  • Linux学习笔记协议篇(六):SPI FLASH设备驱动
  • 嵌入式人工智能应用-第三章 opencv操作8 图像特征之HOG 特征
  • 网络原理 - 3(UDP 协议)
  • 读文献先读图:韦恩图怎么看?
  • 设备、管道绝热(保冷)设计计算
  • Flutter路由模块化管理方案
  • 文件包含漏洞,目录遍历漏洞,CSRF,SSRF
  • 深度解析云计算:概念、优势与分类全览
  • 爬虫获取sku信息需要哪些库
  • 用银河麒麟 LiveCD 快速查看原系统 IP 和打印机配置
  • 网页下载的m3u8格式文件使用FFmpeg转为MP4
  • three.js中的instancedMesh类优化渲染多个同网格材质的模型
  • 你的大模型服务如何压测:首 Token 延迟、并发与 QPS
  • JavaScript — 总结
  • 基于XC7V690T的在轨抗单粒子翻转系统设计
  • 【数学建模】随机森林算法详解:原理、优缺点及应用
  • TensorFlow中使用Keras
  • Vscode开发STM32标准库
  • Linux网络编程 多进程UDP聊天室:共享内存与多进程间通信实战解析
  • 又一名被拐孩子找到!29年后,在警方帮助下云南男子寻子成功
  • 夜读丨一位医生0点后的朋友圈
  • 商务部:试点示范已形成9批190多项创新成果向全国推广
  • 南阳市委副书记、政法委书记金浩任内落马
  • 日本首相石破茂向靖国神社献祭品
  • “75后”新任四川泸州市委副书记张伟,已任市政府党组书记