# Yolov5模型訓練 ## 下載Yolov5 ![](https://i.imgur.com/mvfkWdA.png) 進入yolov5的github頁面[(連結)](https://github.com/ultralytics/yolov5),點選綠色的```<>Code```下拉選單後可以點選```Download ZIP```,下載到想要的位置後解壓縮。 ## 下載資料集 [此連結](https://app.roboflow.com/ds/DEg4HjADah?key=h9KTcQEvdW)為目前的資料集連結,下載後與yolov5所在資料夾放在同一個地方並解壓縮。下載完後,需要修改一些地方: ![](https://i.imgur.com/DJS6bpH.png) 可以看到有data.yaml的檔案,請用vscode或是記事本打開後: ![](https://i.imgur.com/0KjWvFF.png) 將預設的test、val、train==改為絕對位置的路徑==並存檔。 此data.yaml就是隨後會用到的訓練資料集設定。 ## 訓練Yolov5模型 先依照[開啟GUI的方式](https://hackmd.io/4AtRxLgGRSi0tvoa93voPg#%E5%A6%82%E4%BD%95%E5%95%9F%E7%94%A8)啟用環境並cd到==yolov5==的資料夾。 在已經啟用環境的cmd下輸入訓練指令,以下為範例: ``` python train.py --batch 400 --weights best.pt --data hole/data.yaml --cache ram --img-size 640 --patience 0 --epochs 500 ``` * batch: 每次要抓取多少張照片,這個根據不同的顯卡會有不同的大小設定,若要讓yolov5自動設定可以輸入 -1。 * weights: 從現行的權重繼續訓練,在新增資料集後或是從中斷的次數下繼續訓練的話都要傳入最後的權重。 * data: 訓練資料集的設定,就剛剛步驟編輯的檔案。 * cache: 快取設定,可以設定`ram`或是`disk`。把資料集載入到ram可以加快訓練速度,==但非常吃記憶體(至少3GB以上),不同資料集大小會有不同的吃重==。 * img-size: 訓練的圖片大小,我們都是設定640(預設值)。 * patience: 在一定次數後如果訓練成果都沒有大幅增長就會終止訓練。設定0是強制關閉此項功能讓他持續訓練。 * epochs: 訓練次數設定。 * resume: 直接pass --resume就好,會依照你的last.pt去從中斷的次數開始訓練。 可依照自己的需求設定以上的引數。 訓練結果會在yolov5資料夾內的`runs/train/exp*/weights/`內,其中星號是最後的次數,weights內會有`last.pt`跟`best.pt`兩種,除非你這次訓練沒有結束要在後續訓練,否則都是用`best.pt`。 ## 使用roboflow管理資料集 ### 上傳資料集 請先自行去官網註冊一個帳號。註冊完畢後[下載此檔案](https://app.roboflow.com/ds/rNreIRhr2m?key=aXkI9rMwYr),為沒有額外編輯過的資料集。 ![](https://i.imgur.com/r0V97pE.png) 註冊完畢後到首頁,左邊`Add Workspace`按下去後新增一個工作區。 選擇`work`,並自行命名想要的名稱,按下Next可以邀請其他使用者跟你共用工作區,不須的話按下skip就好。 接下來會問你要哪種工作區型態,Business需要付費,Community為免費使用。 :::warning 免費工作區為公開的設定並且無法修改,不過平常也不會有人亂看你的資料庫就是了。 ::: 最後按下Create就會建立好你的工作區,這時再按下`Create New Project`即可新增一個新的project。 ![](https://i.imgur.com/yTOXvVJ.png) project設定如圖。 ![](https://i.imgur.com/XRXSKVj.png) 一進來就會看到Upload頁面,這時可以上傳剛剛我們下載的額外編輯過的資料集的所有檔案 :::info 載下來應該會是一個train的資料夾,裡面會有images/labels兩個資料夾,直接上傳train資料夾即可。 ::: 往後也可以自行上傳圖片後在網站上標註,或是用自己想要的軟體標註完後==照片連同標註的txt==一併上傳到網站上。 ### 生成資料集 ![](https://i.imgur.com/ejD52wj.png) 左側有Generate按鈕,按下去後可以設定額外的參數。 #### Test/Val/Train 重新分配比例 ![](https://i.imgur.com/ufygRHG.png) 重新分配三種資料集間的比例數量,一般來說如果沒有要額外調整超參數,Test/Val為8:2。 #### Preprocessing 預處理 ![](https://i.imgur.com/tZnj4Eu.png) * Auto-orient: 丟棄EXIF資訊並自動調整方向。開就對了。 * Resize: 必開,設定`Fit within`,下方兩個都設定`640`。 * Auto-Adjust Contrast: 自動調整對比度,要開,設定第二個Histogram即可。 * Filter Null: 比例拉到100%,資料集預設會有一些無關的照片來作為background image。 #### Augmentation 資料集強化 ![](https://i.imgur.com/kWv0lov.png) * Flip: 隨機翻轉,都勾。 * 90 Rotate: 隨機旋轉,都勾。 * Crop: 隨機比例內的削除照片,可依需求設定。 * Rotation: 隨機將圖片在指定角度內旋轉。 * Shear: 隨機將圖片在指定角度內傾斜。 * Grayscale: 灰階,對洞口判斷沒什麼幫助。 * Hue: 隨機將圖片在指定角度內色偏。 * Saturation: 隨機調整圖片指定範圍內的飽和度。 * Brightness: 隨機調整圖片指定範圍內的亮度。 * Exposure: 隨機調整圖片指定範圍內的曝光度。 * Blur: 隨機將圖片加上一層指定範圍內的模糊,一般來說2.5px已經很夠了。 * Noise: 隨機將圖片加上一層指定範圍內的雜訊,5%左右已經不錯,可避免overfit。 * Mosaic: 隨機拼接四張照片,yolov5預設會使用,不必開啟。 * 下方的是針對bounding box內做照片的處理,可以調整Brightness或是Exposure就夠了,一般來說不用設定。 #### Generate 下載生成的資料集 ![](https://i.imgur.com/rrpIeN6.png) 在`Maximum Version Size`記得選3x的設定,這樣就有3倍的資料集。 ![](https://i.imgur.com/9wQBZQd.png) 生成完成後右上角有Export,`download zip to computer`為下載到本機,`show download code`可以生成下載連結供Linux使用或是以後下載。 --- 前一個: [工件辨識系統GUI](/4AtRxLgGRSi0tvoa93voPg) Home: [首頁](/G_H-bhCiS1yrNNp6RoAv_w?both)