目標檢測之YOLOV11自定義數據使用OBB訓練與驗證

一、前置條件與環境準備

在開始訓練前,確保已完成以下準備《目標檢測之YOLOV11自定義數據預處理——從原始標注到YOLO-OBB格式轉換與驗證》:
數據目錄結構

yolov11/
├── datasets/
│   └── shrimp/
│       ├── images/
│       │   ├── train/  # 訓練集圖片
│       │   └── val/    # 驗證集圖片
│       └── labels/
│           ├── train/  # 訓練集YOLO-OBB標注(.txt)
│           └── val/    # 驗證集YOLO-OBB標注(.txt)
├── shrimp_obb.yaml     # 訓練配置文件
└── runs/               # 訓練結果保存目錄└── obb/             # OBB任務結果

二、訓練配置文件shrimp_obb.yaml設置

配置文件定義了數據集路徑、類別數等關鍵信息,shrimp_obb.yaml應包含以下內容:

# 數據集基礎信息(根據實際路徑調整)
train: /datasets/shrimp/images/train  # 訓練集圖片目錄(需提前劃分訓練集)
val:  /datasets/shrimp/images/val    # 驗證集圖片目錄(你代碼中的val路徑)# 標簽路徑(YOLO自動匹配:與圖片目錄同級的labels目錄,如images/train → labels/train)
# 轉換后標簽路徑labels/val(與val圖片目錄同級)# 類別信息(你提到只有1個類別)
nc: 1  # 類別數量(必須與轉換后的class_index=0一致)
names: ["shrimp"]  # 類別名稱(與實際標注的類別一致)# 可選:測試集路徑(若有)
#test:  /datasets/shrimp/images/test# 以下為可選超參數(可在訓練命令中覆蓋,非必須寫在yaml里)
# 超參數參考:https://docs.ultralytics.com/yolov5/training
# hsv_h: 0.015  # 色調增強系數
# hsv_s: 0.7    # 飽和度增強系數
# hsv_v: 0.4    # 明度增強系數
# flipud: 0.5   # 上下翻轉概率(OBB任務慎用,可能改變旋轉方向)

三、訓練命令與參數詳解

1. 基礎訓練命令

使用YOLOv11-OBB模型(如yolo11n-obb.pt)啟動訓練,命令示例:

yolo obb train \data=shrimp_obb.yaml \model=yolo11n-obb.pt \epochs=300 \imgsz=640 \device=0,1 \batch=128 \project=runs/obb/train \name=shrimp_exp \plots=True \verbose=True
2. 關鍵參數解釋
參數名作用示例值/說明
data指定訓練配置文件(定義數據集路徑、類別等)shrimp_obb.yaml
model預訓練模型路徑(OBB專用模型)yolo11n-obb.pt(輕量級)
epochs訓練輪次(根據數據量調整,日志顯示300輪收斂)300
imgsz輸入圖片尺寸(與數據集中圖片分辨率匹配,日志為640)640
device訓練設備(多GPU加速)0,1(使用2張顯卡)
batch每批次圖片數(根據GPU顯存調整,日志為128)128
project訓練結果保存根目錄(歷史結果在runs/obb/trainruns/obb/train
name當前實驗名稱(避免覆蓋歷史結果)shrimp_exp(自定義)
plots啟用訓練過程可視化(生成損失曲線、混淆矩陣等)True(默認啟用)
verbose終端輸出詳細日志(顯示每批次損失、學習率等)True(調試時推薦)

3. 結果曲線

在這里插入圖片描述

四、訓練過程監控

1. 實時日志查看

訓練過程中,終端會輸出每輪(Epoch)的損失值(box_losscls_lossdfl_loss)和驗證指標(mAP50mAP50-95),如日志所示:

在這里插入圖片描述

2. TensorBoard可視化

訓練完成后,日志文件(events.out.tfevents.*)保存在runs/obb/train/shrimp_exp目錄。通過以下命令啟動TensorBoard查看損失曲線和mAP趨勢:

tensorboard --logdir runs/obb/train/shrimp_exp

瀏覽器訪問http://localhost:6006即可查看。


五、模型驗證(Val)

訓練完成后,使用驗證集評估最佳模型(best.pt)的泛化能力,命令如下:

yolo obb val \model=runs/obb/train/shrimp_exp/weights/best.pt \data=shrimp_obb.yaml \imgsz=640 \batch=128

輸出指標與訓練日志中的mAP50mAP50-95一致(日志顯示mAP50-95=0.937)。
在這里插入圖片描述

六、模型預測(Inference)

使用訓練好的best.pt對新圖片/視頻進行預測,命令示例(隱藏類別名和置信度):

yolo obb predict \model=runs/obb/train/shrimp_exp/weights/best.pt \source=xxx.jpg \imgsz=640 \show_labels=False \show_conf=False \project=runs/obb/predict \name=shrimp_pred
關鍵預測參數
參數名作用示例值/說明
source預測源(圖片/視頻路徑或攝像頭ID)圖片:/path/to/image.jpg
show_labels是否顯示類別名稱(需求是隱藏)False
show_conf是否顯示置信度分數(需求是隱藏)False
project/name預測結果保存目錄(歷史結果在runs/obb/predictruns/obb/predict/shrimp_pred
部分預測結果

在這里插入圖片描述
在這里插入圖片描述

七、常見問題與解決方案

問題現象可能原因解決方法
訓練報錯label not found標簽文件與圖片文件名不匹配(如圖片是.png,標簽是.txt但前綴不一致)確保images/train/xxx.jpg對應labels/train/xxx.txt(同名不同后綴)
mAP遠低于預期數據增強參數不當(如rotate過大導致標注方向混亂)調整shrimp_obb.yaml中的rotate值(如從0.5降至0.3)
預測框偏移原圖目標數據轉換時坐標歸一化錯誤(如圖片尺寸讀取失敗)檢查convert_to_yolo_obb.pyimg.shape是否正確獲取寬高(shape[1]是寬)

八、總結

難以想象,一句像樣的代碼都沒怎么寫,就能完成了一個yolov11的訓練和驗證。
通過本文的步驟,已完成從數據格式轉換→訓練配置→模型訓練→驗證→預測的全流程。訓練得到的best.pt可直接用于實際場景(如蝦類檢測),后續可通過調整超參數(如學習率、數據增強)進一步優化模型性能。
不過對比之前用yolov5-obb和現在的yolov11-obb,現在的結果比之前的好很多,無論是訓練過程還是結果都有提升。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910335.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910335.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Labview教程進階一(Labview與OPC UA設備通信)

1.Labview與OPC UA設備通信 OPC UA通信協議優勢顯著,具體表現如下: 跨平臺兼容:支持多種操作系統和硬件平臺,實現無縫數據交換。高安全性:內置加密、身份驗證和授權機制,確保數據傳輸安全。高效數據交換:采用二進制編碼和優化的傳輸協議,提高通信效率。復雜數據建模:…

【Comsol教程】如何求解指定范圍的積分 或 在積分中去除奇異點/異常值

我們在Comsol中經常需要對物體的邊界求積分,比如求物體在流場中所受的總流體牽引力,又或者是物體在電場中受到的總介電泳力。當物體的材料或者邊界條件存在突變時,物體表面的粘性應力或者麥克斯韋電應力可能會存在異常值。通常解決方法有細化…

Python 多版本治理理念(Windows 平臺 · 零基礎友好)

🧠 Python 多版本治理理念(Windows 平臺 零基礎友好) 🌐 核心原則:三維治理、四級隔離、五項自治 以下是基于人工智能深度學習環境搭建實踐,總結出的"零基礎入門 Conda工具鏈 全隔離項目環境"…

Python文件管理利器之Shutil庫詳解

Shutil是一個Python內置的用來高效處理文件和目錄遷移任務的庫。Shutil不僅支持基本的文件復制、移動和刪除操作,還具備處理大文件、批量遷移目錄、以及跨平臺兼容性等特性。通過使用Shutil,我們可以更加輕松地實現文件系統的管理和維護,本文…

學習華為 ensp 的學習心得體會

引言? 在信息技術日新月異的今天,網絡技術作為連接世界的橋梁,其重要性不言而喻。作為一名對網絡技術充滿熱情的大一新生,我選擇了 eNSP(Enterprise Network Simulation Platform,企業網絡模擬平臺)作為我…

jenkins-2.439.1搭建

一、 二、pipeline文件 pipeline { agent any // 可以指定特定的agent, 如 label 或 docker environment { JAVA_HOME "/usr/local/software/jdk1.8.0_451" PATH "${JAVA_HOME}/bin:${env.PATH}" } tools { …

【threejs】一天一個小案例講解:控制面板(GUI)

# 好吧,每天更新實在有點艱巨,我盡量少量多次 代碼倉 所有代碼都會上傳到這里,可自行clone GitHub - TiffanyHoo/three_practices: Learning three.js together! 運行效果圖 ? 知識要點 一、安裝dat.gui npm i dat.gui 二、使用步驟&a…

飛輪儲能輔助雙饋風機參與電力系統一次調頻的仿真模型研究

以下是一篇關于飛輪儲能輔助雙饋風機參與電力系統一次調頻的仿真模型研究的論文 ,涵蓋理論分析、數學模型構建、控制策略設計及仿真驗證等內容,適用于電氣工程、新能源技術等領域的研究參考。 飛輪儲能輔助雙饋風機參與電力系統一次調頻的仿真模型研究 摘要 隨著風電在電力…

一次性理解Java垃圾回收--簡單直接方便面試時使用

Java的垃圾回收是一個面試必問題,只要按照下面的步驟回答肯定不會有大問題。 1.先告訴面試官垃圾回收分為兩大步: a.識別哪些對象是"垃圾"(不再被使用的對象) b.回收這些垃圾對象占用的內存空間 2. 接下來分別介紹標記階段和回收階段的細節…

XML映射文件-輔助配置

如果你沒有按照同包同名來,就要下面的配置,指定好路徑 1.把路徑改為類下面的xml文件 #指定xml映射文件的位置 mybatis.mapper-locationsclasspath:mapper/*.xml

120、三角形最小路徑和

題目 解答: 直接按照空間復雜度O(n)來做了。這種明顯是動態規劃,每一層用到上一層的信息。 觀察數據形狀,如下: (0,0) (1,0)(1,1) (2,0)(2,1)(2,2) (3,0)(3,1)(3,2)(3,3) ... (n-1,0)...(n-1,n-1) 設dp[n],定義為本層第n…

仕么是Transformer以及工作原理和架構

Transformer 是一種革命性的**深度學習架構**,由 Google 團隊在 2017 年論文《Attention is All You Need》中提出。它徹底改變了自然語言處理(NLP)領域,并逐漸擴展到計算機視覺、語音識別等多模態任務。其核心創新在于**完全依賴…

opencv 鎖頁內存的使用

在OpenCV的CUDA編程中,cv::cuda::HostMem類用于管理鎖頁內存(Page-Locked Memory)?,這種內存能顯著提升主機(CPU)與設備(GPU)間的數據傳輸效率。而.createMatHeader()正是將HostMem…

亞遠景-ASPICE與ISO 26262:理解汽車軟件質量保障的雙標體系

在汽車行業向智能化、電動化轉型的背景下,ASPICE(Automotive SPICE)與ISO 26262作為汽車軟件質量保障的兩大核心標準,分別從過程能力與功能安全兩個維度構建了完整的開發管理體系。以下從標準定位、核心差異、協同實踐及行業價值四…

數組的應用

Java數組的基本概念 數組是Java中一種重要的數據結構,用于存儲固定大小的相同類型元素。數組在內存中連續分配空間,可以通過索引快速訪問元素。數組的聲明和初始化是使用數組的基礎,聲明時需要指定數據類型和數組名稱,初始化可以…

基礎RAG實現,最佳入門選擇(七)

增強型RAG系統的查詢轉換 采用三種查詢轉換技術,以提高RAG系統中的檢索性能,而無需依賴于像LangChain這樣的專門庫。通過修改用戶查詢,我們可以顯著提高檢索信息的相關性和全面性。 關鍵轉換技術 1.查詢重寫:使查詢更加具體和詳…

企業應用觀測中樞建設

本文來自騰訊藍鯨智云社區用戶: CanWay 運維挑戰加劇 新時代技術背景下,運維面臨的挑戰加劇: 1、業務數量日益增加、業務規模日益龐大 隨著科技發展進步、民眾生活富足,線下業務線上化、線上業務復雜化趨勢愈演愈烈,各行各業投…

Python實例題:基于邊緣計算的智能物聯網系統

目錄 Python實例題 題目 問題描述 解題思路 關鍵代碼框架 難點分析 擴展方向 Python實例題 題目 基于邊緣計算的智能物聯網系統 問題描述 開發一個基于邊緣計算的智能物聯網系統,包含以下功能: 邊緣設備管理:連接和管理大量物聯網…

一,python語法教程.內置API

一,字符串相關API string.strip([chars])方法:移除字符串開頭和結尾的空白字符(如空格、制表符、換行符等),它不會修改原始字符串,而是返回一個新的處理后的字符串 chars(可選)&…

私有 Word 文件預覽轉 PDF 實現方案

私有 Word 文件在線預覽方案(.doc/.docx 轉 PDF) 前言 由于 .doc 和 .docx Word 文件 無法在瀏覽器中直接預覽(尤其在私有 API 場景下),常見的 Content-Disposition: inline 并不能生效。因此,本方案通過…