一、下載YOLOv5源碼和NEU-DET(鋼材表面缺陷)數據集
YOLOv5源碼
NEU-DET(鋼材表面缺陷)數據集
這里的數據集已經經過處理了,下載即可
若通過其他途徑下載的原始數據集標簽為xml格式,需要轉化為txt格式XML轉txt格式腳本
二、數據集準備
NEU-DET(鋼材表面缺陷)數據集中一共有六個類別缺陷共計1770張
train為訓練集、valid為驗證集、data.yaml為配置文件存放不同數據集的路徑
無論train訓練集還是valid驗證集都需要有兩個子文件夾,images圖像和labels標簽,(cache為緩存可以刪掉)
Ⅰ,在train訓練集中
labels和images要一一對應
images包含1770張照片,是模型所需要訓練的所有圖像
每個標簽均有多行數字組成,這里有兩行數字,表示有該圖片有兩個要檢測的目標,0表示第0個類別,后面四個數據表示目標的xywh位置(歸一化之后的結果)
YOLO中標簽,只認txt格式,其他的不支持
也可以參考該篇博文,準備自己訓練的數據三、自定義標簽準備
Ⅱ,在valid驗證集中也一樣
images中僅有30中照片,驗證集的目的是在進行模型訓練的過程中時不時的進行小測試看看當前訓練的效果
Ⅲ,data.yaml
train和val為訓練集train和驗證集vaild中images的位置
nc為類別數
names分別對應不同類別的名稱
三、YOLOv5原始模型
Ⅰ,為方便后續操作,把數據集放到源碼文件夾下
Ⅱ,train.py為整個模型的入口
Ⅲ,配置參數
若不配置參數會使用主函數中default默認值
data為配置文件路徑,該配置文件存有訓練數據的位置
cfg為所需要采用的模型架構5s、5m、5l等
batch為每次讀取圖像張數
Ⅳ,模型架構
YOLO為了適應更多的場合,提供了多個版本,也就是lms類比于衣服的大小號,其中yolo5l模型架構層數最多,訓練層數最多,速度慢但效果好,最終訓練出來的模型最大
以yolo5l.yaml為例
nc為檢測的類別,這里數據集為6類,需要改成6
depth_multiple模型的層數
width_multiple模型中每一層特征值的個數
這兩個參數控制模型的復雜度,這倆個值為系數,也就是在模型求解出來之后還需要再乘以這兩個系數才是最后的結果,因為這個是5l,故為1.0,要是5s這兩個參數都小于1
anchors為候選框的大小,若樣本中待檢測的數據較小,就把候選框改小點
四、模型訓練
在train.py
右擊run開始訓練模型
每訓練一次,會將結果保存到runs
文件夾下,當然給主函數傳入相應參數來改變保存路徑
訓練完成的模型為.pt
文件,best為模型效果最好,last為模型的上一次訓練結果,若遇到突發情況方便繼續訓練
五、模型效果驗證
detect.py
為驗證模型
傳參,有很多參數可以自己挨個試試看看效果
其中,weights為要用哪個模型進行測試
source為待測試圖片位置
output為最后輸出結果的位置
在detect.py右擊run開始使用訓練好的模型預測