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以上模型并不友好。