日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入浅出Yolov5之自有数据集训练超详细教程

發(fā)布時間:2024/9/27 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入浅出Yolov5之自有数据集训练超详细教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

除了本文,大白還整理了如何深入淺出人工智能行業(yè),算法、數(shù)據(jù)、目標檢測、論文創(chuàng)新點、求職等版塊的內容,可以查看:點擊查看。

此外本文章Yolov5相關的代碼、模型、數(shù)據(jù)等內容,可以查看下載:點擊查看。

當然下方也列出了,如何通過官方鏈接的方式,下載的過程,也可以查看。

1 下載Yolov5代碼及模型權重

1.1 下載Yolov5代碼

登錄github鏈接:https://github.com/ultralytics/yolov5,下載完整的代碼。

1.2 下載Yolov5模型權重

在Yolov5模型權重頁面,https://github.com/ultralytics/yolov5/releases

在下方選擇相應的Yolov5各個pt權重文件。

放在Yolov5代碼的models文件夾中。

2 下載一系列的依賴庫

按照yolov5代碼中requirements.txt中的說明,下載一系列的依賴庫

3 對于推理功能進行測試

先使用預訓練的模型,對于圖片進行推理測試,看看效果。

修改detect.py里面的weights的路徑,增加前面的models文件夾的路徑。

運行結束后,可以在運行結果看到信息:

打開runs/detect/exp可以看到推理得到的結果:

4 使用自有數(shù)據(jù)進行訓練

4.1 數(shù)據(jù)&腳本&訓練代碼

大白為了讓大家從0基礎,就可以學會訓練,準備了三個文件。

(1)data:人頭數(shù)據(jù)集

為了便于大家學習,大白準備了一個教室場景下的人頭數(shù)據(jù)集,放在data/head/classroom文件夾中。

數(shù)據(jù)集中,JPEGImages有4361張圖片,Annotations有4361張xml文件。

(2)train_code:數(shù)據(jù)處理腳本

在train_code文件夾中,有三個python文件,主要使用的是get_labels.py和main.py兩個腳本。

get_labels.py腳本,可以直接獲取Annotations文件夾中,所有標注文件的標注類別。

而main.py腳本,可以將之前標注文件和圖像,進行處理,轉換成Yolov5可以訓練的格式。

(3)yolov5-master:訓練代碼

這個文件夾里面就是Yolov5的訓練測試代碼,大家也可以直接使用大白提供的Yolov5代碼。

4.2 查看自有數(shù)據(jù)集中的類別數(shù)

打開train_code/get_labels.py,修改下方的人頭數(shù)據(jù)集路徑。

運行后,在下方就可以看到類別數(shù),以及標注的類別框的數(shù)量。

4.3 轉換訓練數(shù)據(jù)格式

(1)新建數(shù)據(jù)集轉換文件夾

首先在data文件夾里面,新建一個head_train_data文件夾。

并在head_train_data文件夾中,新建一個images_label_split文件夾。

并將前面的classroom數(shù)據(jù)集,直接拷貝到images_label_split里面。

(2)main.py腳本處理:配置修改

打開train_code/main.py文件,修改訓練數(shù)據(jù)的路徑。

在前面通過get_labels.py腳本,我們也知道了當前數(shù)據(jù)集的類別數(shù),比如主要是“head”,將該類別填入label_list中。

而main.py文件主要分為三個部分的功能:數(shù)據(jù)集的清洗、訓練集&驗證集劃分、xml轉換txt格式。

(3)main.py腳本處理:數(shù)據(jù)集清洗

數(shù)據(jù)集的清洗使用的主要是這些行的代碼。

有的數(shù)據(jù)集有圖片,沒有標注文件。有的數(shù)據(jù)集有標注文件,圖片有可能丟失。

同時將長寬比太小的框刪除掉,并且在刪除后,檢查下是否存在空的標注文件,如果有,也刪除。

并在最后,將標注的框顯示到圖片上,進一步確定腳本是否正確。

運行上面的代碼,最后會跳出來一些畫了人頭框的圖片。

(4)main.py腳本處理:訓練集&驗證集劃分

訓練集&驗證集劃分的代碼主要是這一行代碼。

0.2表示,80%的數(shù)據(jù)進行訓練,20%的數(shù)據(jù)進行驗證。

運行結束后,會發(fā)現(xiàn)head_train_data這個文件夾下面多了兩個文件夾,train和test,就是按照80%、20%進行劃分。

(5)main.py腳本處理::xml轉換txt格式

xml轉換成txt格式的代碼主要是下面三行。

運行結束后,可以看到多了兩個文件夾。

image_txt文件夾中是所有的image和轉換完的txt文件、

而train_test_txt文件夾中,則是對于訓練和測試數(shù)據(jù)路徑匯總的兩個txt,后面訓練中會用到。

4.4 Yolov5代碼訓練

4.4.1 修改訓練配置

(1)新建一個yaml文件

因為是訓練人頭數(shù)據(jù)集,所以在data文件夾下先新建一個head.yaml文件,并修改其中的參數(shù)。

可以復制一個coco.yaml文件進行修改,其中主要涉及到訓練集的txt文件、驗證集的txt文件、類別數(shù)量nc、類別標簽名。

(2)修改train.py參數(shù)

① 修改models里面的weights路徑,大白下載了一些pt文件放在models中,可以選擇使用。

② 修改cfg路徑,即網絡結構的參數(shù)配置文件,需要注意的是,需要修改其中的類別數(shù)。

③ 修改data的路徑,即前面修改的head.yaml文件。

4.4.2 開始訓練

運行train.py文件,既可以開始訓練。

可以看到網絡收斂的很快。

4.4.3 訓練結果測試

網絡訓練到一段時間后,可以使用detect.py腳本對于訓練的模型,進行測試了,不過需要修改是三個參數(shù):

① weights:即前面訓練好得到的權重文件

② source:即需要檢測的圖片數(shù)據(jù)集

③ data:修改成head.yaml

運行detect.py文件后,可以在runs/detect/exp最后一個文件夾中得到檢測的效果圖片:

以上就是Yolov5的詳細訓練過程,其中每一步大白都是經過詳細的測試的,可以下載對應的代碼、權重,進行嘗試。

總結

以上是生活随笔為你收集整理的深入浅出Yolov5之自有数据集训练超详细教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。