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.mzph.cn/bicheng/78247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows下使用 VS Code + g++ 开发 Qt GUI 项目的完整指南

🚀 使用 VS Code g 开发 Qt GUI 项目的完整指南(Windows MSYS2) 本指南帮助你在 Windows 下使用 VS Code g CMake Qt6 快速搭建 Qt GUI 项目,适合熟悉 Visual Studio 的开发者向跨平台 VS Code 工具链迁移。 🛠️…

开源漏洞扫描器:OpenVAS

一、OpenVAS介绍 OpenVAS (Open Vulnerability Assessment System) 是一款功能强大的开源漏洞扫描器。它由 Greenbone Networks 开发和维护,是 Greenbone 安全管理器 (GSM) 产品的基础,同时也有免费的社区版本(Greenbone Community Edition&…

Redis Pipeline 详解

Redis Pipeline 详解 Redis 无 Pipeline 耗时情况 : #mermaid-svg-8RIiJyeBO0uIrWjr {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8RIiJyeBO0uIrWjr .error-icon{fill:#552222;}#mermaid-svg-8RIiJyeBO0uIrWjr .…

2025.04.24【3D】3D绘图入门指南

Nifty graph A contribution by Matt Asher. 3D animation A 3D animated scatterplot made with R and rgl. 文章目录 Nifty graph3D animation 2025.04.24【3D】| 3D绘图入门指南什么是3D绘图?为什么使用3D绘图?如何在R中进行3D绘图?安装…

[特殊字符] 分布式事务中,@GlobalTransactional 与 @Transactional 到底怎么配合用?

在微服务架构中,随着系统模块的拆分,单体应用中的本地事务已经无法满足跨服务的数据一致性需求。此时,我们就需要引入分布式事务解决方案,比如 Seata。在使用 Seata 的过程中,很多人会遇到一个常见的疑问: …

TDengine 集群高可用方案设计(二)

四、TDengine 集群高可用方案设计 4.1 硬件与网络架构设计 服务器选型:选择配置高、稳定性强的服务器,如戴尔 PowerEdge R740xd、华为 RH2288H V5 等。以戴尔 PowerEdge R740xd 为例,它配备英特尔至强可扩展处理器,具备高性能计…

从对数变换到深度框架:逻辑回归与交叉熵的数学原理及PyTorch实战

目录 前言 一、连乘变连加二、最小化损失函数2.1交叉熵2.2 二分类交叉熵2.3 多分类交叉熵三、逻辑回归与二分类3.1 逻辑回归与二分类算法理论讲解3.1.1 散点输入3.1.2 前向计算3.1.3 Sigmoid函数引入3.1.4 参数初始化3.1.5 损失函数3.1.6 开始迭代3.1.7 梯度下降显示四、基于框…

高企复审奖补!2025年合肥市高新技术企业重新认定奖励补贴政策及申报条件

一、合肥市高新技术企业重新认定奖励补贴政策 (一)高新区高新技术企业重新认定复审补贴奖励 重新认定为国家高新技术企业的给予5万元一次性奖励。 (二)经开区高新技术企业重新认定复审补贴奖励 对重新认定的企业,给…

Spring Boot 中配置线程池时优化 `ThreadPoolTaskExecutor` 的配置总结

在 Spring Boot 中配置线程池时,可以通过以下方式进一步优化 ThreadPoolTaskExecutor 的配置,提升性能、灵活性和可靠性: 优化点 1:合理设置线程池参数 关键参数调整 Bean(name "taskExecutor") public Executor tas…

opencv 图像的旋转

图像的旋转 1 单点旋转2. 图片旋转(cv2.getRotationMatrix2D)3. 插值方法3.1 最近邻插值(cv2.INTER_NEAREST)3.2 双线性插值(cv2.INTER_LINEAR)3.3 像素区域插值(cv2.INTER_AREA)3.4 双三次插值(cv2.INTER_CUBIC&#…

如何在 Odoo 18 中配置自动化动作

如何在 Odoo 18 中配置自动化动作 Odoo是一款多功能的业务管理平台,旨在帮助各种规模的企业更高效地处理日常运营。凭借其涵盖销售、库存、客户关系管理(CRM)、会计和人力资源等领域的多样化模块,Odoo 简化了业务流程&#xff0c…

每日两道leetcode

345. 反转字符串中的元音字母 - 力扣(LeetCode) 题目 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括 a、e、i、o、u,且可能以大小写两种形式出现不止一次。 示例 1:…

【SQL 基础入门 1. -- SQL 基本语法详解及举例】

文章目录 SQL 数据库创建及使用删除数据库SQL 查看数据空中有哪些表格SQL 创建表格SQL 修改表格列数据格式SQL 表格插入数据SQL 查看表格类型组成SQL 查看表格中的内容 SQL 查询语句SQL 查看指定列SQL 选择指定列SQL 按指定列进行升序排序SQL 平均值/求和/最大值/最小值 SQL 数…

PostgreSQL 分区表——范围分区SQL实践

PostgreSQL 分区表——范围分区SQL实践 1、环境准备1-1、新增原始表1-2、执行脚本新增2400w行1-3、创建pg分区表-分区键为创建时间1-4、创建24年所有分区1-5、设置默认分区(兜底用)1-6、迁移数据1-7、创建分区表索引 2、SQL增删改查测试2-1、查询速度对比…

Apache Flink 深度解析:流处理引擎的核心原理与生产实践指南

Apache Flink 深度解析:流处理引擎的核心原理与生产实践指南 引言:实时计算的范式革命 2023年双十一期间,某头部电商平台基于Flink构建的实时风控系统成功拦截了每秒超过120万次的异常交易请求。这背后是Apache Flink作为第四代计算引擎的强…

【Java学习笔记】选择结构

选择结构 内容结构 一、顺序结构 二、分支控制 (1)单分支 (2)双分支 (3)多分支 (4)嵌套分支 (5)switch 分支结构 三、switch和if的比较 一、顺序结构…

03_JavaScript

文章目录 一、概述1.1、JavaScript简介1.2、JavaScript组成部分1.3、为什么要学习JavaScript1.4、学习的目的1.5、JavaScript与Java的关系 二、使用位置及运行说明2.1、使用位置2.2、如何运行 三、JavaScript基础语法3.1、变量3.2、运算符3.3、控制流程3.3.1、分支结构3.3.2、循…

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRect)

文章目录 一、构造与初始化方法二、坐标与尺寸获取三、坐标与尺寸设置四、几何运算方法五、移动与调整方法六、状态判断方法七、类型转换方法八、操作符重载九、静态方法十、特殊方法附录方法速查表注意的问题交集和并集图解 📘 PySide6.QtCore.QRect 使用整数精度定…

AI 开发入门之 RAG 技术

目录 一、从一个简单的问题开始二、语言模型“闭卷考试”的困境三、RAG 是什么—LLM 的现实世界“外挂”四、RAG 的七步流程第一步:加载数据(Load)第二步:切分文本(Chunking)第三步:向量化&…

解决yarn install 报错 error \node_modules\electron: Command failed.

在电脑重装系统后,重新安装项目依赖,遇到这一报错 完整报错信息如下: error D:\xxxxx\xxxxxx\node_modules\electron: Command failed. Exit code: 1 Command: node install.js Arguments: Directory: D:\xxxxx\xxxxx\node_modules\electron Output: HTTPError: Response cod…