YOLOv5 是 Ultralytics 公司開發的一個高效的目標檢測模型,它在速度和精度之間取得了良好的平衡。相比于 YOLOv4,YOLOv5 在實現上更加簡潔,且易于使用。本文將詳細介紹如何在自定義數據集上訓練 YOLOv5 模型,涵蓋從數據準備到模型訓練、評估和推理的全過程。
YOLOv5 是基于 YOLO(You Only Look Once)系列的目標檢測模型,它通過單次前向傳播即可完成目標檢測任務。YOLOv5 的主要特點包括:
在開始訓練之前,首先需要配置好訓練環境。YOLOv5 基于 PyTorch 框架,因此需要安裝 PyTorch 及其相關依賴。
# 安裝 PyTorch
pip install torch torchvision torchaudio
# 克隆 YOLOv5 倉庫
git clone https://github.com/ultralytics/yolov5
cd yolov5
# 安裝依賴
pip install -r requirements.txt
在訓練 YOLOv5 之前,需要準備好自定義數據集。數據集應包含圖像和對應的標注文件。標注文件通常采用 YOLO 格式,每個圖像對應一個 .txt
文件,文件中包含目標的類別和邊界框信息。
常用的數據標注工具有 LabelImg、LabelMe 等。這些工具可以幫助用戶快速標注圖像中的目標,并生成對應的標注文件。
YOLO 格式的標注文件包含以下信息:
(x_center, y_center, width, height)
。例如,一個標注文件可能如下所示:
0 0.5 0.5 0.3 0.4
1 0.2 0.3 0.1 0.2
在訓練模型之前,通常需要將數據集劃分為訓練集、驗證集和測試集。常見的劃分比例為 70% 訓練集、20% 驗證集和 10% 測試集。
YOLOv5 要求數據集按照以下目錄結構組織:
datasets/
custom/
images/
train/
val/
test/
labels/
train/
val/
test/
其中,images
目錄下存放圖像文件,labels
目錄下存放對應的標注文件。
YOLOv5 需要一個數據配置文件來指定數據集的路徑和類別信息。數據配置文件的格式如下:
train: datasets/custom/images/train
val: datasets/custom/images/val
nc: 2 # 類別數量
names: ['class1', 'class2'] # 類別名稱
YOLOv5 提供了多種預定義的模型配置文件,用戶可以根據需求選擇合適的模型。模型配置文件的路徑為 models/yolov5s.yaml
、models/yolov5m.yaml
等。
使用以下命令開始訓練模型:
python train.py --img 640 --batch 16 --epochs 100 --data datasets/custom/data.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt
--img
:輸入圖像的尺寸。--batch
:批量大小。--epochs
:訓練輪數。--data
:數據配置文件的路徑。--cfg
:模型配置文件的路徑。--weights
:預訓練權重的路徑。常用的目標檢測評估指標包括:
使用以下命令評估模型:
python val.py --data datasets/custom/data.yaml --weights runs/train/exp/weights/best.pt
使用以下命令進行模型推理:
python detect.py --source datasets/custom/images/test --weights runs/train/exp/weights/best.pt
推理結果將保存在 runs/detect/exp
目錄下,用戶可以通過查看生成的圖像來評估模型的檢測效果。
數據增強是提高模型泛化能力的有效手段。YOLOv5 支持多種數據增強方法,如隨機裁剪、旋轉、翻轉等。用戶可以通過修改數據配置文件來啟用或禁用特定的數據增強方法。
超參數調優是模型優化的重要環節。常見的超參數包括學習率、批量大小、優化器等。用戶可以通過實驗來尋找最優的超參數組合。
本文詳細介紹了如何在自定義數據集上訓練 YOLOv5 模型。通過合理的數據準備、模型訓練和優化,用戶可以構建出高效的目標檢測模型。希望本文能為讀者提供有價值的參考,幫助大家在實踐中取得更好的效果。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。