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.pswp.cn/bicheng/78247.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78247.shtml
英文地址,請注明出處:http://en.pswp.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…