【機器學習】區分訓練集、驗證集及訓練過程|教學筆記|Part 3

848 阅读3分钟

================================

[ Machine Learning ] Separation of Training Set, Testing Set, and Training Process | Part 3

接續 Part 2,我們要先將 Label Studio 輸出的檔案分為訓練集及驗證集。

訓練集是用來訓練模型的數據集,驗證集是用來評估模型表現的數據集。通過這兩個數據集的使用,我們可以評估模型的表現和泛化能力,並確保模型可以適應新的數據。

1. 創建資料夾

在原本輸出的資料夾內創建名為 train ( 訓練) 及 val ( 驗證 ) 的資料夾。

再分別在這兩個資料夾內創建 images ( 影像 ) 及 labels ( 標籤 ) 的資料夾。

2. 將影像及標籤重新命名

由於產出後的影像及標籤的名稱可能是亂碼,可以先將它們重新命名後再做分配,這裡以 cat 為例:

( cat 影像一共 39 張,cat 標籤一共 39 個 )

★ 影像和標籤的數量應為相同。

★ 更改名稱時要確定順序不要跑掉!全選 > 按下 Option 鍵 > 點選「重新命名」;或者全選 > 對第一個檔案按下右鍵 > 點選「重新命名」。

3. 將影像及標籤分配至訓練集及驗證集

訓練集及集的比例不是固定的,因為比例通常取決於數據集的大小、複雜性以及使用的訓練模型等因素。我決定的比例是 9 : 1 ( 訓練集 : 驗證集 ),也就是 39 張影像和 39 個標籤中,我要分配 ( 複製 ) 35 張影像和 35 個標籤到 train ,分配 4 張影像和 4 個標籤到 val。理所當然,影像請放入 images 中,標籤則是放入 labels 中。

4. 撰寫 yaml 檔

在 YOLOv5 中,需要使用 YAML 格式的文件來定義模型結構和參數,在 YOLOv5 內的 data 資料夾中可以看到許多預設的 YAML 檔,但這邊我們自行設定一個作為範例:

train: 'C:/your/path/train/images'    # 訓練集影像路徑val: 'C:/your/path/val/images'        # 驗證集影像路徑
nc: 1                                 # 標籤數量names: ['cat']                        # 標籤名稱

★ yaml 檔可以存在專案資料夾 ( 建議 ) 或 yolov5-master\data 中。

★ 複製路徑時記得要將 “ \ ” 改成 “ / ”!

5. 執行訓練

開啟 Anaconda Prompt,前往 YOLOv5 的安裝路徑:

cd zzz

★ zzz 為 YOLOv5 的安裝路徑,請自行更換。

開啟 Anaconda Prompt,將下列文字複製貼上並自行調整:

python train.py --img 640 --batch 16 --epochs 100 --data your/path/cat.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt --name cat_yolov5
  • img:影像大小,這裡設定為 640*640,可以自行調整。

  • batch:批量大小,這裡設定為 16,能根據 GPU 顯存大小來調整。

  • epochs:訓練的回合數,這裡設定為 100,可以自行調整。

  • data:yaml 檔的路徑。

  • cfg:模型種類,這裡使用了預設的 YOLOv5s 模型,如果需要使用其他模型,可以替換成對應路徑。

  • weights:預訓練權重,這裡使用了預設的 yolov5s.pt 模型,如果需要使用其他權重,可以至 GitHub 查詢所需的權重。下表為 YOLOv5 7.0 最新的權重 pt 檔。

  • name:訓練專案的名稱。

調整完按下 Enter,如果看到 Anaconda Prompt 跑出一堆代碼,也聽到風扇越來越猖狂 (?),代表訓練就成功開始了。

  • Epoch:第幾回合 / 訓練的總回合數。
  • GPU_mem:GPU 的記憶體使用量。
  • box_loss、obj_loss、cls_loss:該輪訓練中的平均框 ( bounding box ) 損失、目標物 ( object ) 損失和類別 ( class ) 損失。數值越小,預測的效果越好。
  • Instances:該輪訓練中處理的影像數量。
  • Size:該輪訓練中使用的影像大小 ( 像素 )。

想必各位的電腦正在燃燒吧。

在等待訓練的過程中,不妨更加深入的了解 YOLOv5 的模型架構,下篇筆記將對產出的資料作完整的說明及分析。