跑跑yolov5
如果隻是要快速上手訓練得到訓練結果,我的建議是直接使用b導的代碼。别問為什麼,問就是我是b導小迷弟!!
但是
b導的代碼好像是自己寫的,會存在:下載下傳的權重檔案是pth,最後得到的檔案是pth檔案 的問題 因為我想要用來跑自動标注需要的是pt檔案,其實可能隻是我自己不會轉換hhh
基本上可以分為一下四個步驟:環境配置,資料集制作,yolov5文檔修改以訓練,預測。我主要講資料集制作,yolov5文檔修改。因為踩了比較多的坑hhhh
(1)使用labelimg資料集制作
yolov5不接受xml文檔,但是網上很奇怪的就是大部分部落客都喜歡“曲線救yolov5”(先制作xml,在轉化成txt)

直接改成yolov5支援的yolo格式他不香嘛!!!
我隻有一個類要訓練是以我幹脆就直接開了這些!!!
①Auto SAVE Mode:不開這個每次都得按s儲存,不然就會有彈窗提醒
但是開這個也是有風險的,可能會出現手速過快跳了一張兩張圖檔(不要問我怎麼知道的的)
②Single Class Mode:因為我隻有一個類,使用這個就不用去選
後面我如果還記得的話我就寫一個檢查标簽少标注的腳本吧hhhhh
③Display Label:展示标簽名字
這個的好處是如果不是眼瞎的話,大機率可以避免重複标注!!
(2)yolov5文檔修改
先說一下新建立的檔案夾結構
修改yaml檔案
因為我懶,是以我沒有重新建立yaml檔案,我是直接在data/coco128.yaml檔案夾中修改的
-
改路徑(檔案路徑,訓練集路徑,val路徑)
直接pycharm標明檔案夾右鍵copy path–>absolute path,絕對路徑不容易報錯
- 改nc(标簽數量),name(标簽名字)
修改train檔案
定位到parse_opt,隻講修改的檔案(錯了再說)
- 改pt (絕對路徑不容易報錯)
parser.add_argument('--weights', type=str, default=ROOT / 'D:/computervision/deep_learning_model/yolov5-6.1/yolov5s.pt', help='initial weights path')
- –data
parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')
-
–epochs
我訓練的資料集比較小,–epochs一定一定要放小,不然容易過拟合
parser.add_argument('--epochs', type=int, default=100)
跑yolov5又出了什麼錯
随口提一嘴:真的很讨厭紅色提示和報錯一個shai!!!
(1)錯誤報告1:TensorBoard logging requires TensorBoard version 1.15 or above
實際上我的版本我是超過2.6,估計是另一個依賴包出了問題
-
先檢查有沒有下載下傳tensorboard
在環境中輸入下面這條指令,檢查有沒有tensorboard
conda list
-
如果版本已經超過1.15,那就來這個網址下
或者是直接在指令行下
pip install tb-nightly==2.8.0a20220120
到這裡我基本上基本上就ok了
(2)錯誤報告2:AssertionError: No images found in ×××××
這個錯誤就放的有點蠢,我是将标簽的檔案夾放到了“val"後面,然後就就顯示沒有找到圖檔
留個小問題:yolo怎麼得到标簽檔案?
檢查一下yolov5的訓練結果吧
我提前終止了是以我的檔案會比别家的少。
從下往上看:
- 三張訓練結果圖
-
result.csv
從左到右第一行依次是①epoch,
②train/box_loss,③train/obj_loss,④train/cls_loss,
⑤metrics/precision,⑥metrics/recall,⑦metrics/mAP_0.5,⑧metrics/mAP_0.5:0.95,
⑨val/box_loss,⑩val/obj_loss, ①①val/cls_loss,
①②x/lr0,①③x/lr1,①④x/lr2
跑跑yolov5吧跑跑yolov5跑yolov5又出了什麼錯檢查一下yolov5的訓練結果吧
(1)train:訓練集;val:驗證集
(2) cls_loss用于監督類别分類,box_loss用于監督檢測框的回歸,obj_loss用于監督grid中是否存在物體。(可以看看這個部落客的講的比較細)
(3)!!!!!主要看這個!!!!!
mAP_0.5 : IoU設為0.5時,計算每一類的所有圖檔的AP,然後所有類别求平均,即mAP
mAP_0.5:0.95 : 表示在不同IoU門檻值(從0.5到0.95,步長0.05)(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的平均mAP。
-
opt.yaml
配置檔案沒啥好說的
跑跑yolov5吧跑跑yolov5跑yolov5又出了什麼錯檢查一下yolov5的訓練結果吧 -
hyp.yaml
估計是超參數
跑跑yolov5吧跑跑yolov5跑yolov5又出了什麼錯檢查一下yolov5的訓練結果吧 - 還有就是權重檔案了
看到一篇博文對于train參數講的很好就想記錄一下
(1)“
–image-weights
”
是否啟用權重圖像政策,預設是不開啟的;主要是為了解決樣本不平衡問題;開啟後會對于上一輪訓練效果不好的圖檔,在下一輪中增加一些權重;
(2)“
–label-smoothing
”
是否對标簽進行平滑處理,預設是不啟用的;
在訓練樣本中,我們并不能保證所有sample都标注正确,如果某個樣本标注錯誤,就可能産生負面印象,如果我們有辦法
“告訴”模型,樣本的标簽不一定正确
,那麼訓練出來的模型對于少量的樣本錯誤就會有“免疫力”采用随機化的标簽作為訓練資料時,損失函數有1-ε的機率與上面的式子相同,比如說告訴模型隻有0.95機率是那個标簽。