目标检测第8步:如何在Windows10系统下,训练YOLOv5 5.0自定义数据集?(本地)
?請先看這篇文章:????????????????????????本博打開方式!!!請詳讀!!!請詳讀!!!請詳讀!!!_Cat-CSDN博客?
????????很多剛入門的粉絲私信我說,他們的電腦配置很好,想在本地訓練YOLOv5的自定義數據集,這樣方便很多,不用擔心資源被收回的問題,那就安排一下。
????????因為使用了Pycharm編輯器進行訓練并對官方代碼進行了細微修改,所以請看這篇文章:在Windows 10系統下,如何在Pycharm中配置YOLOv5虛擬環境?_Cat-CSDN博客_pycharm安裝yolo
? ? ? ? 本文章的大部分內容與這篇Yolov5如何在Colab中訓練自定義數據集?(更新時間:2022.3.14)_Cat-CSDN博客相似,所以先閱讀上面這篇文章,到了“三、訓練”的“4、正式訓練”時,請閱讀本文。
一、數據集目錄結構
????????將構建好的數據集復制到與yolov5-master同一級目錄下,如下圖所示。
?二、修改yaml文件夾內容
????????這里一共有2個yaml文件需要修改,一個在data文件夾里,另一個在models文件夾里。
????????剛才我們將自己的數據集文件名改為coco128,那么此時就要到data里修改coco128.yaml文件內容了,具體的目錄結構、修改內容如下圖所示:
????????我們訓練時使用的預訓練權重如果是yolov5s.pt,那么就得到models目錄下的yolov5s.yaml文件中修改相應的參數,其它同理。比如使用的是yolov5s.pt,那么就得去修改,如下圖所示。注意,請將預訓練模型提前下載好,并放入weights文件夾中。
?三、修改train.py代碼讓訓練順利進行
?????????在Pycharm中打開train.py文件后,找到主函數入口,需要對里面的參數進行修改。下面直接貼出大部分參數所代表的含義。
""" --weights: 預訓練權重文件的路徑--cfg: 模型yaml文件的路徑--data: 數據yaml文件的路徑--hyp: 超參數文件的路徑--epochs: 訓練輪次--batch-size: 每批次文件投入量的多少--img-size: 圖片尺寸--rect: 是否采用矩形訓練,默認False--resume: 接著上次被打斷訓練的結果繼續訓練--nosave: 不保存模型,默認False--notest: 不進行test,默認False--noautoanchor: 不自動調整anchor,默認False--evolve: 是否進行超參數進化,默認False--bucket: 谷歌云盤bucket,一般不會用到--cache-images: 是否提前緩存圖片到內存,以加快訓練速度,默認False--image-weights:使用加權圖像選擇進行訓練--device: 訓練的設備,有CPU和GPU,0代表一個設備--multi-scale: 是否進行多尺度訓練,默認False--single-cls: 數據集是否只有一個類別,默認False--adam: 是否使用adam優化器--sync-bn: 是否使用跨卡同步BN,在DDP模式使用--local_rank: DDP參數,請勿修改--workers: 最大工作核心數--project: 訓練模型的保存位置--name: 模型保存的目錄名稱--exist-ok: 模型目錄是否存在,不存在就創建 """????????上述的訓練參數都有默認值,但是每臺訓練的設備不同,配置也不同,為了達到更好的訓練效率,我們需要對上述參數進行修改。
1、預訓練權重--weights。我們在介紹時,采用的是yolov5s.pt預訓練權重,所以得下載該權重并復制到weights文件夾下。同時,我們還得修改--weights參數,關注到這里:
parser.add_argument('--weights', type=str, default='weights/yolov5s.pt', help='initial weights path')2、模型yaml文件的路徑--cfg。因為我們用的預訓練模型是yolov5s.pt對應yolov5s.yaml,所以將此參數改為如下路徑:
parser.add_argument('--cfg', type=str, default='models/yolov5s.yaml', help='model.yaml path')3、我們將自己的數據集文件夾改為了coco128,所以對--data參數的修改如下:
parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path')4、訓練輪次。默認300,如果想更改,那么請關注到這里:
parser.add_argument('--epochs', type=int, default=300)5、圖片數量及工作核心數。這二者默認16和8。我的電腦CPU是?i9-10900K(10核心,20線程),GPU是RTX2060。如果圖片輸入數量設置時與核心數不匹配,那么就會出現“RuntimeError:CUDA out of memory. Tried to allocate......"的報錯信息。需要修改這兩個參數的同學,請關注這里:
parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers')6、避免虛擬內存不足報錯
? ? ? ? 使用Pycharm編輯器進行訓練時,可能會出現“OSError:[WinError 1455]頁面文件太小,無法完成操作。 Error loading ......”,此時需要定位到utils文件夾下的datasets.py文件中,對第81行代碼的“nw”參數進行修改,改為"num_worker=0"即可,如下圖所示:
此時,即可運行train.py文件,訓練自己的自定義數據集了。訓練開始的截圖如下圖所示:
last.pt是最后一輪的權重文件,best.pt是最好的權重文件。
?四、訓練過程可視化
? ? ? ? 有同學注意到訓練開始時,有提示說“tensorboard: Start with 'tensorboard --logdir runs/train', view at http://localhost:6006/”,所以,可以在Termianl框中輸入:
tensorboard --logdir runs/train?在對應的頁面看到訓練過程,如下圖所示:
?如果模型訓練完畢,那么將會使用如下命令查看訓練結果:
tensorboard --logdir=runs五、權重文件推理測驗?
?將我們剛才訓練產生的權重文件best.pt復制到weights文件夾中,使用命令行進行驗證:
python detect.py --weights weights/best.pt --img 640 --conf 0.25 --source data/images/ # --weights后面跟的是權重文件的路徑 # --conf后面是置信度 # --source后面是要推理的圖片路徑,可以具體到文件名,還可以是整個文件夾到對應文件查看照片即可。
總結
以上是生活随笔為你收集整理的目标检测第8步:如何在Windows10系统下,训练YOLOv5 5.0自定义数据集?(本地)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兜享花额度冻结了怎么办
- 下一篇: VMware Workstation虚拟