使用yolov5訓練自己的目標檢測數據集

使用yolov5訓練自己的目標檢測數據集

yolov4出來后不久,又出現了yolov5,沒有論文。雖然作者沒有放上和yolov4的直接測試對比,但在COCO數據集的測試效果還是很可觀的。很多人考慮到YOLOv5的創新性不足,對算法是否能夠進化,因此yolov5的名頭仍有爭議。但是既然github上有如此多的star,說明還是受到大多數人認可的一個工程。

并且yolov5是十分容易上手使用的一個目標檢測開源項目,只需要改幾個文件,配置好自己的數據集格式和目錄結構,即可開始訓練,對新手十分友好。可以先把訓練跑起來,在根據需要去細扣其中的模塊設計。

并且,yolov5項目一直在更新維護,除了日常處理bug,還有更優算法的版本(如激活函數的更新)更迭和新的訓練可視化工具wandb的加入等,這也是十分難得的。

今天,筆者就來介紹一下自己第一次使用yolov5訓練自己的數據集的過程。

工程項目準備

PyTorch等其他依賴的安裝這里就不說了,網上有很多教程。

首先從yolov5 github上克隆下代碼:

git clone https://github.com/ultralytics/yolov5.git

然后從github下載預訓練權重(.pt文件),沒有百度云版本,這里筆者提供下載好的權重文件放到云盤(密碼: afp3)供不方便的朋友直接下載。下載好后放到yolov5/weights文件夾下。

數據集準備

yolov5項目所需的數據集文件路徑格式如下:

---yolov5
---yolo_data---train---images---labels---val---images---labels---data.yaml

數據集文件夾放在與工程文件同級的目錄下。其中包含兩個子文件夾和一個配置文件data.yaml,兩個子文件夾分別存放訓練樣本和驗證樣本,注意images和labels文件夾的名字不要改

先說一下data.yaml配置文件內的內容

train: ../yolo_data/train
val: ../yolo_data/valnc: [你的檢測數據集的類別數]
names: [你的檢測數據集的類別名稱列表]

共有四個鍵值對,train,val,nc,names,分別對應如下表:

train你的訓練數據的文件夾路徑
val你的驗證數據的文件夾路徑
nc你的檢測數據集的類別數(如COCO數據集中nc=80)
names你的檢測數據集的類別名稱列表(如:[‘plane’, ‘car’, ‘dog’, …])

然后說一下數據集格式的要求:

在train/val目錄下要有images和labels兩個目錄,分別存放圖像和標簽,其中的文件名要相互對應,分別為.jpg格式和.txt格式,即:

---train---imagesaaaa.jpg	...---labelsaaaa.txt...

其中圖像不必多說,放入你的數據集圖像即可,而標簽label目錄下的txt文件要求格式如下:

類別索引           x 	      y				w				h
0 			0.53857421875 0.8779296875 0.158203125 0.06184895833333333

第一列是圖像中每個object的類別索引,注意這里要與data.yaml配置文件中的names相互對應。后面四個列就是該object的檢測框坐標了,這里采用的是經過歸一化的中心長寬xywh格式,如果你的數據集原生不是這種格式(如對角坐標xyxy)的話,請注意調整。

開始訓練

直接運行yolov5/train.py即可,注意配置好參數

python train.py \
--data ../yolo_data/data.yaml \
--cfg models/yolov5s.yaml \
--weights weights/yolov5s.yaml \
--batch-size 8 \
--epochs 100

yolov5最近一次更新增加了wandb(weights and biases,其官網,直接訪問不太穩定,建議科學上網訪問)訓練可視化工具,沒有安裝的話需要先安裝一下,直接pip安裝即可

pip install wandb

在這里插入圖片描述

第一次使用的話會需要注冊賬號,訪問站點https://wandb.ai/authorize,拿到API Key,復制到終端中即可,首次綁定API Key賬號后再訓練就不在需要輸入API Key了,直接將訓練可視化結果送到你的wandb賬號,可在該站點登錄查看。

不僅有訓練過程可視化,loss曲線等

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

甚至還有訓練過程中系統的信息的展示:

在這里插入圖片描述

還是非常簡單實用的一個訓練可視化工具。

訓練完成后再yolov5/runs/train/exp文件夾下可查看一些結果PR曲線,F1曲線等,還有一些樣本可視化的結果。

在這里插入圖片描述

可以看到效果還是可以的(我這個數據集只有豬仔一個類 ^^可愛小豬仔)。

測試

訓練完成后可以運行yolov5.detect.py文件,指定一個文件夾,測試其中的圖像。

python detect.py \
--weights runs/train/exp/weights/best.pt \
--source ../images/test \
--save-txt 

如果設置打開–save-txt,則會保存結果文件。

測試結果會保存在yolov5/runs/detect內。txt結果文件則會保存在yolov5/runs/detect/labels內。

在這里插入圖片描述

使用yolov5訓練自己的數據集就先介紹到這里,如果有問題歡迎留言討論。

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

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

相關文章

php的integer,PHP整型 integer

整數是一個沒有小數的數字。整數規則:整數必須至少有一個數字 (0-9)整數不能包含逗號或空格整數是沒有小數點的整數可以是正數或負數整型可以用三種格式來指定:十進制, 十六進制( 以 0x 為前綴)或八進制(前綴為 0)。在以下實例中我們將測試不同的數字。 …

einops和einsum:直接操作張量的利器

einops和einsum:直接操作張量的利器 einops和einsum是Vision Transformer的代碼實現里出現的兩個操作tensor維度和指定tensor計算的神器,在卷積神經網絡里不多見,本文將介紹簡單介紹一下這兩樣工具,方便大家更好地理解Vision Tra…

php的filter input,php中filter_input函數用法分析

本文實例分析了php中filter_input函數用法。分享給大家供大家參考。具體分析如下:在 php5.2 中,內置了filter 模塊,用于變量的驗證和過濾,過濾變量等操作,這里我們看下如何直接過濾用戶輸入的內容.fliter 模塊對應的 filter_input 函數使用起來非常的簡單…

COCO 數據集格式及mmdetection中的轉換方法

COCO 數據集格式及mmdetection中的轉換方法 COCO格式 CV中的目標檢測任務不同于分類,其標簽的形式稍為復雜,有幾種常用檢測數據集格式,本文將簡要介紹最為常見的COCO數據集的格式。 完整的官方樣例可自行查閱,以下是幾項關鍵的…

php獲取h1,jQuery獲取h1-h6標題元素值方法實例

本文主要介紹了jQuery實現獲取h1-h6標題元素值的方法,涉及$(":header")選擇器操作h1-h6元素及事件響應相關技巧,需要的朋友可以參考下,希望能幫助到大家。1、問題背景:查找到h1-h6,并遍歷它們,打印出內容2、實現代碼&am…

在導入NVIDIA的apex庫時報錯 ImportError cannot import name ‘UnencryptedCookieSessionFactoryConfig‘ from

在導入NVIDIA的apex庫時報錯 ImportError: cannot import name ‘UnencryptedCookieSessionFactoryConfig’ from ‘pyramid.session’ (unknown location) 報錯 在使用NVIDIA的apex庫時報錯 ImportError: cannot import name ‘UnencryptedCookieSessionFactoryConfig’ fro…

php怎么取request,PHP-如何在Guzzle中獲取Request對象?

我需要使用Guzzle檢查數據庫中的很多項目.例如,項目數量為2000-5000.將其全部加載到單個數組中太多了,因此我想將其分成多個塊:SELECT * FROM items LIMIT100.當最后一個項目發送到Guzzle時,則請求下一個100個項目.在“已滿”處理程序中,我應該知道哪個項目得到了響…

[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 論文簡析及關鍵代碼簡析

[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 論文簡析及關鍵代碼簡析 論文:https://arxiv.org/abs/2104.00323 代碼:https://github.com/dvlab-research/JigsawClustering 總結 本文提出了一種單批次&#xff0…

java jps都卡死,java長時間運行后,jps失效

在部署完應用后,原本jps使用的好好的,能正確的查詢到自己正在運行的java程序。但,過了一段時間后,再使用jps來查看運行的應用時,自己運行的程序都看不到,但是自己也沒有關閉這些程序啊!然而使用…

指針(*)、取地址()、解引用(*)與引用()

指針(*)、取地址(&)、解引用(*)與引用(&) C 提供了兩種指針運算符,一種是取地址運算符 &,一種是間接尋址運算符 *。 指針是一個包含了另一個變量地址的變量,您可以把一個包含了另一個變量地址的變量說成是"指向"另一…

matlab電類,985電氣研二,有發過考研經驗貼 電氣電力類的有

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓clc;clear;p[2.259;2.257;2.256;2.254;2.252;2.248;2.247;2.245;2.244;2.243;2.239;2.238;2.236;2.235;2.234;2.231;2.229;2.228;2.226;2.225;2.221;2.220;2.219;2.217;2.216;2.211;2.209;2.208;2.207;2.206;2.202;2.201;2.199;2.1…

matlab legend 分塊,matlab?legend?分塊!

matlab legend 分塊!(2013-03-26 18:07:38)%%%壓差clc;clear all;figure(55);set (gcf,Position,[116 123 275 210],color,w);P[25 26 27 28 29 30 31 32 33 34 35];%理論q0.00006*pi*28*P*10^(6)*0.03^3/(12*0.028448*5);q1110.00006*pi*28*P*10^(6)*0.03^3/(12*0.…

利用opencv-python繪制多邊形框或(半透明)區域填充(可用于分割任務mask可視化)

利用opencv-python繪制多邊形框或(半透明)區域填充(可用于分割任務mask可視化) 本文主要就少opencv中兩個函數polylines和fillPoly分別用于繪制多邊形框或區域填充,并會會以常見用途分割任務mask(還是筆者…

matlab與maple互聯,Matlab,Maple和Mathematica三款主流科學計算軟件的互操作

本文根據網上零散的信息以及這三款軟件自帶的說明文檔整理而成,為備忘而記錄。記錄了Matlab和Maple之間的相互調用,以及Matlab和Mathematica之間相互調用的安裝配置方法。為何需要互操作? 數值計算和圖形方面Matlab毫無疑問是最強的&a…

PyTorch中的topk方法以及分類Top-K準確率的實現

PyTorch中的topk方法以及分類Top-K準確率的實現 Top-K 準確率 在分類任務中的類別數很多時(如ImageNet中1000類),通常任務是比較困難的,有時模型雖然不能準確地將ground truth作為最高概率預測出來,但通過學習&#…

java高級語言特性,Java高級語言特性之注解

注解的定義Java 注解(Annotation)又稱 Java 標注,是 JDK1.5 引入的一種注釋機制。注解是元數據的一種形式,提供有關于程序但不屬于程序本身的數據。注解對它們注解的代碼的操作沒有直接影響。注解本身沒有任何意義,單獨的注解就是一種注釋&am…

C/C++中的typedef 和 #define

C/C中的typedef 和 #define typedef C/C中的關鍵字typedef允許用戶為類型名來起一個新名字,通常會是縮寫或者能夠清晰表明類型含義的新名字。 例: typedef unsigned int UINT; UINT 100;值得注意的是,typedef除了為C/C內置的數據類型取別…

php3.2.3 升級,thinkphp3.2.3 升級到3.2.4時出錯問題

有些項目最初用OneThink做的,而OneThink 默認使用的TP 是3.2.0 的,沒事的時候就想給升級一下,但是直接復制進去的時候,有錯誤,導致OneThink 不能運行,排查后,需要修改兩個地方1、修改 Applicati…

Positional Encodings in ViTs 近期各視覺Transformer中的位置編碼方法總結及代碼解析 1

Positional Encodings in ViTs 近期各視覺Transformer中的位置編碼方法總結及代碼解析 最近CV領域的Vision Transformer將在NLP領域的Transormer結果借鑒過來,屠殺了各大CV榜單。對其做各種改進的頂會論文也是層出不窮,本文將聚焦于各種最新的視覺trans…

mysql 分析查詢語句,MySQL教程之SQL語句分析查詢優化

怎么獲取有功能問題的SQL1、經過用戶反應獲取存在功能問題的SQL2、經過慢查詢日志獲取功能問題的SQL3、實時獲取存在功能問題的SQL運用慢查詢日志獲取有功能問題的SQL首要介紹下慢查詢相關的參數1、slow_query_log 發動定制記載慢查詢日志設置的辦法,能夠經過MySQL指…