1、YOLOv5的訓練
yolov5的原理什麼的就不說了,百度搜一搜不少,這裏具體說一下怎麼訓練本身的數據集,官方的yolov5是在coco數據集上訓練的,本文是在voc數據集上進行訓練,對於本身的訓練數據能夠仿照voc數據集進行製做!python
YOLOv5的git項目:參考github項目YOLOv5,若須要官方的預訓練權重,該項目的大佬也給出了,感謝大佬作出的工做!將項目git到本地!git
1.建立數據集文件夾
數據存放的目錄以下:在datasets文件夾下創建以下文件目錄,其中訓練須要用到的是score/images和score/labels兩個,image下分爲了train和val兩個文件夾,其中分別放的是訓練圖片和測試圖片,以下所示:
labels文件夾下放的對應的labels文件,labels文件格式以下:
每個txt文件都是一張圖片的label和location信息,這裏面的數據是從xml文件中提取出的,第一個表示類別,後面時歸一化後的座標值,至此數據就準備結束!github
2.修改數據集配置文件
在data文件下存放着數據集對應的配置文件yaml文件,主要指明瞭數據集的路徑信息,以下:須要根據本身的數據集修改相應的信息!測試
3.選擇模型,修改相應的配置文件
yolov5官方一共提供了yolov5s.yaml、yolov5m.yaml、yolov5l.yaml、yolov5x.yaml四個不一樣大小的模型,他們的精度與速度也各有不一樣,官方有給出具體的數據,以下所示:你們能夠根據本身的需求選擇相應的模型,我這裏選擇的時最小的yolov5s模型,由於速度最快!!!選擇什麼模型,就須要修改models文件夾下對應的yaml文件,這裏咱們須要修改yolov5s.yaml文件:
須要修改的地方就一個,就是本身的類別數量nc,voc數據集是20類,所以將nc改成20!spa
4.開始訓練
在train.py文件裏修改相應的訓練參數:batch、epoch、cfg、data等參數,可參考個人設置以下如若須要加載預訓練權重或者斷點續訓,可將train.py中下面兩行代碼進行修改,從頭開始訓練就將下面第一行代碼打開,第二行註釋,反之就是加載預訓練權重或斷點續訓:code
# parser.add_argument('--resume', action='store_true', help='resume training from yolov5s_last.pt')#從頭開始訓練 parser.add_argument('--resume', default='weights/yolov5s_last.pt', help='resume training from yolov5s_last.pt')#加載預訓練權重或斷點續訓
2、YOLOv5模型的測試
1.測試MAP
測試map的代碼時test.py,根據須要修改weights、batch、data等參數,可參考以下:可能會報錯cuda內存不夠,此時將batch改小就行,根據須要修改conf-thres閾值(分類得分閾值)和iou-thres(iou閾值)。
本文一共訓練了500個epoch,測試map結果以下:最終的MAP值爲51.5,比官方差點(畢竟是官方)!!!視頻
2.測試圖片或者視頻
這部分的代碼在detect.py裏,也是自行按需修改,可參考本文的設置:裏面我作了一些小的調整,主要是要修改測試圖片和視頻的路徑,你們根據本身實際狀況來,若有疑問,評論區可留言!!!測試圖片和視頻都是這個代碼,很方便!!!!xml
下面就是擺效果圖的時刻了!!!!
不得不說,yolov5是真的很強,速度還賊快!!!!
視頻測試的效果就不放了,太大了,你們本身去嘗試吧!!!圖片
YOLOv5訓練測試這塊說完了,下面就要介紹pt模型轉onnx轉ncnn了,下次見!!!!!!!!!內存