yolov5訓(xùn)練自定義數(shù)據(jù)集
1.創(chuàng)建dataset.yaml
COCO128是一個小型教程數(shù)據(jù)集,由COCO train2017中的前 128 張圖像組成。這些相同的 128 張圖像用于訓(xùn)練和驗證,以驗證我們的訓(xùn)練管道是否能夠過擬合。如下所示的data/coco128.yaml是數(shù)據(jù)集配置文件,它定義了 1) 用于自動下載的可選下載命令/URL,2) 訓(xùn)練圖像目錄的路徑(或帶有擴(kuò)展名的 *.txt 文件的路徑)訓(xùn)練圖像列表),3)我們的驗證圖像相同,4)類別數(shù)量,5)類別名稱列表:
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../coco128/images/train2017/
val: ../coco128/images/train2017/
# number of classes
nc: 80
# class names
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard',
'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors',
'teddy bear', 'hair drier', 'toothbrush']
2. 創(chuàng)建標(biāo)簽
使用CVAT、makesense.ai或Labelbox等工具 標(biāo)記圖像后,將標(biāo)簽導(dǎo)出為YOLO 格式,*.txt每個圖像一個文件(如果圖像中沒有對象,則不需要*.txt文件)。該*.txt文件規(guī)格有:
每個對象一行
每一行都是
class x_center y_center width height格式。框坐標(biāo)必須采用標(biāo)準(zhǔn)化 xywh格式(從 0 - 1)。如果您的箱子以像素為單位,劃分
x_center并width通過圖像寬度,y_center并height通過圖像高度。類號是零索引的(從 0 開始)。

上圖對應(yīng)的標(biāo)簽文件包含2個人(class 0)和一條領(lǐng)帶(class 27):

3. 整理目錄
根據(jù)以下示例組織您的訓(xùn)練和驗證圖像和標(biāo)簽。在這個例子中,我們假設(shè)/coco128是在目錄旁邊/yolov5。YOLOv5通過將/images/每個圖像路徑中的最后一個實例替換為/labels/. 例如:
dataset/images/im0.jpg # image
dataset/labels/im0.txt # label
4. 選擇型號
選擇一個預(yù)訓(xùn)練模型開始訓(xùn)練。這里我們選擇YOLOv5s,這是可用的最小和最快的模型。有關(guān)所有模型的完整比較,請參閱我們的 README表。

5. 訓(xùn)練
通過指定數(shù)據(jù)集、批量大小、圖像大小以及預(yù)訓(xùn)練--weights yolov5s.pt(推薦)或隨機(jī)初始化--weights '' --cfg yolov5s.yaml(不推薦),在 COCO128 上訓(xùn)練 YOLOv5s 模型。預(yù)訓(xùn)練權(quán)重是從最新的 YOLOv5 版本自動下載的。
# Train YOLOv5s on COCO128 for 5 epochs
$ python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
所有訓(xùn)練結(jié)果都保存在runs/train/遞增的運行目錄中,即runs/train/exp2,runs/train/exp3等。
可視化
權(quán)重和偏差記錄(?? 新)
權(quán)重和偏差(W&B) 現(xiàn)在與 YOLOv5 集成,用于訓(xùn)練運行的實時可視化和云記錄。這允許更好地運行比較和內(nèi)省,以及提高團(tuán)隊成員之間的可見性和協(xié)作。要啟用 W&B 日志記錄,請安裝wandb,然后正常訓(xùn)練(首次使用時將指導(dǎo)您進(jìn)行設(shè)置)。
$ pip install wandb
在培訓(xùn)期間,您將在https://wandb.ai看到實時更新,并且您可以使用 W&B 報告工具創(chuàng)建結(jié)果的詳細(xì)報告。

本地日志
所有的結(jié)果都在默認(rèn)情況下記錄runs/train,為每個新的培訓(xùn)作為創(chuàng)建一個新的實驗?zāi)夸?/span>runs/train/exp2,runs/train/exp3等查看火車和測試的JPG文件,看馬賽克,標(biāo)簽,預(yù)測和增強(qiáng)效果。請注意,使用Mosaic Dataloader進(jìn)行訓(xùn)練(如下所示),這是一個由 Ultralytics 開發(fā)并首次出現(xiàn)在YOLOv4 中的新概念。
train_batch0.jpg 顯示訓(xùn)練批次 0 馬賽克和標(biāo)簽:

test_batch0_labels.jpg 顯示測試批次 0 標(biāo)簽:
test_batch0_pred.jpg顯示測試批次 0預(yù)測:
訓(xùn)練損失和性能指標(biāo)也記錄到Tensorboard和自定義results.txt日志文件,results.png在訓(xùn)練完成后繪制為(如下)。在這里,我們展示了在 COCO128 上訓(xùn)練到 300 個 epoch 的 YOLOv5s,從頭開始(藍(lán)色)和預(yù)訓(xùn)練--weights yolov5s.pt(橙色)。
from utils.plots import plot_results
plot_results(save_dir='runs/train/exp') # plot results.txt as results.png


