yolov9從頭開始訓練

yolov9從頭開始訓練

一、準備數據集

數據集相關文件存放布局如下

yolov9-datasets
├── train
│ ├── images
│ │ ├── image.jpg
│ │ ├── ······
│ └── labels
│ ├── image.txt
│ ├── ······
├── valid
│ ├── images
│ │ ├── image.jpg
│ │ ├── ······
│ └── labels
│ ├── image.txt
│ ├── ······
└── test
├── images
│ ├── image.jpg
│ ├── ······
└── labels
├── image.txt
├── ······

我們通常將數據集劃分為訓練集(train set)、驗證集(validation set)和測試集(test set),如上圖所示,但不一定三個集合都需要準備,根據你得需求來。

訓練集

用于訓練模型的數據集。模型通過訓練集中的樣本進行學習和參數調整,以優化其性能,訓練集是必需的。

驗證集

用于選擇模型的超參數和進行模型選擇的數據集。超參數是指在訓練過程中無法從數據中學習的參數,例如學習率、正則化項的權重等,通過在驗證集上評估不同超參數設置和模型架構的性能,可以選擇表現最好的模型并進行模型選擇。

因此,如果你是做實際應用,那么這個集合也必須加上,否則會造成過擬合。

測試集

用于最終評估模型性能的數據集。測試集是模型最后才能接觸到的數據,用于模擬模型在實際應用中的性能。

在模型選擇和超參數調優完成后,使用測試集對模型進行最終評估,以了解模型的泛化能力和性能。這個集合并不是必須的,它只是最終評估模型的泛化性能用,并不像前兩個數據集合那樣會對訓練過程產生影響。

所以,如果不需要將泛化性能以具體數據顯現出來,那么這部分可以刪除。

二、環境準備

項目地址:WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (github.com)

首先將yolov9的整個項目文件夾下載下來,放在你喜歡的地方,然后使用命令行進入項目的目錄內,接著進行下面的步驟:

(1)虛擬環境

使用依次下列命令創建一個虛擬環境并激活,請確保你的系統已安裝好anaconda,可以使用conda命令

conda create -n yolov9 python=3.11 -y
conda activate yolov9
(2)GPU環境

首先使用【nvidia-smi】命令查看GPU的CUDA版本,如下圖所示

在這里插入圖片描述
Pytorch官網:Start Locally | PyTorch

打開pytorch官網,找到pytorch安裝命令,其中CUDA版本(一般)來說需要小于等于上圖中顯示的版本,二般情況我不管,如下圖所示:

在這里插入圖片描述

安裝完成后,檢驗環境是否可用,依次運行以下命令

python
import torch
torch.cuda.is_available()

如果命令行返回了True則表示可用,否則不可用,不可用則換pytorch版本,現在我默認可用了,如下所示,返回了True:

(yolov9) root@7l13t4gko7nqs-0:/17106# python
Python 3.11.8 (main, Feb 26 2024, 21:39:34) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True
(3)項目環境

進入yolov9主目錄后,運行以下代碼,完成最后一個環境的安裝:

pip install -r requirements.txt

三、配置參數文件

(1)數據集配置文件

首先在【yolov9-main/data】目錄下,創建一個后綴名為yaml的文件,文件名取決于你,比如我使用的是YOLOv9-GELAN模型,因此我取名為【YOLOv9-GELAN.yaml】。

該文件內容如下,第1,2,3行分別是訓練集,驗證集和測試集的圖片所在文件夾的路徑,names下面是類別索引和類別名的映射。需要注意的是此處類別和序號的對應要與你標注數據集時,類別的順序一致,否則將引發錯誤。

train: /17106/Pengcaiping/datasets/recombination/train/images
val: /17106/Pengcaiping/datasets/recombination/valid/images
#test:
names:
0: paper
1: plastic
2: metal
3: clothing
4: other

(2)參數配置文件

首先在【yolov9-main/models/detect】目錄下(假設你也是做目標檢測),打開【gelan.yaml】進行編輯,該文件內容如下:

# YOLOv9# parameters
nc: 5  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple
#activation: nn.LeakyReLU(0.1)
#activation: nn.ReLU()# anchors
anchors: 3# gelan backbone
backbone:
省略一千字

僅修改類別數量,即【nc】后面的數字,改成你的類別數量,比如我有5個類別,所以填了5。

(3)訓練文件修改

打開主目錄下【train.py】文件,調到下圖所示位置,然后進行參數修改:

在這里插入圖片描述

①填我們之前配置好的參數文件的路徑

②填我們之前配置好的數據集配置文件的路徑

③由于yolov9剛發布這里需要修改為【data/hyps/hyp.scratch-high.yaml】才能運行,否則會報錯,如果后續修復了,讀者可提醒我修改此處。

④訓練輪次,根據你的硬件性能,數據集大小等來決定要設置為多少,一般來說不要太多,因為太多可能會過擬合。

⑤batch-size是一次同時處理的樣本數量,如果你GPU性能可以上天,顯存可以下地那么可以調大一下,目前我設置為64,輸入單樣本大小為 480 × 640 480\times640 480×640,消耗顯存45G;如果顯存小就調小點。

四、訓練

在配置好的環境中,運行以下代碼開始從0訓練

python train.py

五、最后的一點話

本數量,如果你GPU性能可以上天,顯存可以下地那么可以調大一下,目前我設置為64,輸入單樣本大小為 480 × 640 480\times640 480×640,消耗顯存45G;如果顯存小就調小點。

四、訓練

在配置好的環境中,運行以下代碼開始從0訓練

python train.py

五、最后的一點話

時過境遷,當讀者你看到此教程時,可能距離作者收筆此文相去已久,若未能解決你的問題,作者深感抱歉。若讀者發現某些地方已經不再適合當下,可以私聊或者評論區告知,我會及時進行修改!

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

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

相關文章

吳恩達deeplearning.ai:模型選擇交叉驗證測試集的訓練方法

以下內容有任何不理解可以翻看我之前的博客哦:吳恩達deeplearning.ai專欄 在上一節中,我們了解了如何利用測試集來評估模型性能。今天我們來進一步完善這個想法,讓你使用該技術自動選擇一個更好的模型。 文章目錄 模型選擇交叉驗證 Cross Va…

SpringBoot 框架(上)

SpringBoot SpringBoot概述依賴管理自動配置SpringBoot 注解使用ConfigurationImport(value {Cat.class,Dog.class})ImportResource(locations "classpath:beans.xml") yaml 標記語言概述基本語法數據類型字面量對象數組 使用細節 Rest 風格請求處理概述注意事項 接…

vue2 開發記錄

el-select 如何修改選擇項的樣式/el-select-dropdown__item 文字上下顯示 測試代碼 <div stylemargin-left: 100px><!-- 測試代碼--><el-select filterablesizemini><div classxxx-el-select><el-optionv-foritem in [{key:1,des:2,…

AVT Prosilica GC Vision Cameras 相機視覺說明使用安裝。具體詳情內容可參看PDF目錄內容。

AVT Prosilica GC Vision Cameras 相機視覺說明使用安裝。具體詳情內容可參看PDF目錄內容。

TikTok矩陣系統功能怎么寫?常用源代碼是什么?

TikTok矩陣系統的功能是如何編寫的?又有哪些常用的源代碼支撐這些功能呢?本文將通過五段源代碼的分享&#xff0c;為大家揭開TikTok矩陣系統的神秘面紗。 一、TikTok矩陣系統的核心功能 TikTok的矩陣系統涵蓋了多個核心功能&#xff0c;包括但不限于用戶管理、內容分發、推…

【接口測試】HTTP協議介紹

目錄 介紹 HTTP狀態碼 HTTP報文 請求方法 HTTP版本 HTTP標頭 通用標頭 請求標頭 響應標頭 get 編碼 post 編碼 RESTful風格 HTTPS 絕大多數的Web服務接口都是基于HTTP協議進行通信的&#xff0c;包括RESTful API和SOAP等。了解HTTP協議可以幫助測試人員理解接口的…

回溯算法題單???

力扣&#xff1a; 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 216. 組合總和 III - 力扣&#xff08;LeetCode&#xff09; LCR 080. 組合 - 力扣&#xff08;LeetCode&#xff09; LCR 082. 組合總和 II - 力扣&#xff08;LeetCode&#xff09; LCR 083. 全排列…

【多線程】CAS詳解

目錄 &#x1f334;什么是 CAS&#x1f338;CAS 偽代碼 &#x1f38d;CAS 是怎么實現的&#x1f340;CAS 有哪些應?&#x1f338;實現原子類&#x1f338;實現自旋鎖 &#x1f333;CAS 的 ABA 問題&#x1f338;**什么是 ABA 問題**&#xff1f;&#x1f338;ABA 問題引來的 B…

【C++】核心編程--函數高級

文章目錄 1. 函數的默認參數2. 函數占位參數3. 函數重載4. 注意事項 1. 函數的默認參數 在C中&#xff0c;函數的形參列表中的形參是可以有默認值的 //語法&#xff1a; 返回值類型 函數名 (參數 默認值){} #include<iostream> using namespace std; //函數默認參數 //如…

異常值檢測-3σ法提交 代碼注釋

背景信息里面都給了相應的答案&#xff0c;但我們可以多了解一下代碼的含義&#xff0c;而不是簡單的復制粘貼 import pandas as pd import matplotlib.pyplot as plt from scipy import stats import numpy as npdata pd.read_csv("src/death.csv", index_colUnna…

ASPICE實操中的那點事兒-如何避免重復性測試

寫在前面 ASPICE理解起來容易&#xff0c;畢竟是有條有理的。但實操起來&#xff0c;尤其是把ASPICE各過程域做全的時候&#xff0c;會遇到各種各樣的問題&#xff08;不是技術問題有多難&#xff0c;而是該如何做選擇&#xff0c;如何既能符合ASPICE要求&#xff0c;保證過程質…

智慧城市建設的新里程碑:公共服務電子支付大屏

隨著科技的飛速發展&#xff0c;我們的生活正在經歷前所未有的變革。電子支付的出現&#xff0c;無疑是這場變革中的一大亮點&#xff0c;它不僅改變了我們日常的支付方式&#xff0c;更成為智慧城市建設的重要一環&#xff0c;為公眾提供了更加便捷、高效的服務體驗。 在以前&…

python SHP2COCO

1. 將shp的標簽數據轉成coco # -*- coding: utf-8 -*- import os, json import cv2 from osgeo import gdal import numpy as np from osgeo import ogr, gdal, osr from shapely.geometry import box, shape from shapely.geometry.polygon import Polygon import collection…

Flutter 的狀態管理

狀態提升&#xff08;Lifting-state-up&#xff09; 把子組件的狀態&#xff0c;提升到上級組件中&#xff0c;從而實現在多個組件之間共享和同步數據的效果 以 flutter counter demo&#xff0c;那個按按鈕1 的來說&#xff0c;現在的 count 是幾&#xff0c;不是存在頁面顯…

政府采購標書制作的要點解析

導語&#xff1a;政府采購是政府為滿足公共利益&#xff0c;按照法定程序和標準&#xff0c;通過招標、競爭性談判等方式&#xff0c;購買商品、工程和服務的行為。標書作為政府采購活動中的重要文件&#xff0c;其制作質量直接影響到項目的順利進行。本文將圍繞政府采購標書制…

二路歸并排序的算法設計和復雜度分析and周記

數據結構實驗報告 實驗目的: 通過本次實驗&#xff0c;了解算法復雜度的分析方法&#xff0c;掌握遞歸算法時間復雜度的遞推計算過程。 實驗內容&#xff1a; 二路歸并排序的算法設計和復雜度分析 實驗過程&#xff1a; 1.算法設計 第一步&#xff0c;首先要將數組進行…

【網站項目】314學生二手書籍交易平臺

&#x1f64a;作者簡介&#xff1a;擁有多年開發工作經驗&#xff0c;分享技術代碼幫助學生學習&#xff0c;獨立完成自己的項目或者畢業設計。 代碼可以私聊博主獲取。&#x1f339;贈送計算機畢業設計600個選題excel文件&#xff0c;幫助大學選題。贈送開題報告模板&#xff…

關于游戲公司組織架構的小討論

過完年剛剛上班沒幾天&#xff0c;就有一件比較搞笑的事情&#xff0c;可以和大家分享一下。 ??某一天我們在公司的會議室開會&#xff0c;發現有非常多蚊子&#xff0c;于是找行政問能不能找專業人士來滅蚊。行政的答復是&#xff0c;專業滅蚊是有固定時間的&#xff0c;還要…

JVM相關面試題(2024大廠高頻面試題系列)

一、JVM的組成 1、JVM由哪些部分組成&#xff0c;運行流程是什么&#xff1f; 回答&#xff1a;在JVM中共有四大部分&#xff0c;分別是Class Loader&#xff08;類加載器&#xff09;、Runtime Data Area&#xff08;運行時數據區&#xff0c;內存分區&#xff09;、Execut…

MyBatis的補充用法

說明&#xff1a;之前介紹過MyBatis的用法&#xff0c;像 用注解和Mapper.xml操作數據庫、在Mapper.xml里寫動態SQL。最近在一次用MyBatis批量更新數據庫對象的場景中&#xff0c;意識到對MyBatis的一些標簽用法不太熟悉&#xff0c;所以去 MyBatis官網 看了一些文檔&#xff0…