學生對小車控制提出了更好的要求,能否加入深度學習模型。
考慮到小車用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以上模型并不友好。