传送门:
https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data
https://github.com/ultralytics/yolov5
本指南介绍如何使用YOLOv5训练您自己的自定义数据集。
克隆 repo 、下载教程数据集并且安装 requirements.txt,包括Python>=3.6.0和PyTorch>=1.7。
git clone https://github.com/ultralytics/yolov5 # clone repo
cd yolov5
pip install -r requirements.txt # install
COCO128是一个小型教程数据集,由cocotrain2017中的前128个图像组成。这些相同的128个图像用于训练和验证,以验证我们的训练管道能够进行过度拟合。data/coco128.yaml,如下所示,是数据集配置文件,它定义了
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
nc: 80 # number of classes
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' ] # class names
使用CVAT或makesense.ai等工具标记图像后,将标签导出为YOLO格式,每个图像一个*.txt文件(如果图像中没有对象,则不需要*.txt文件)。*.txt文件规范为:
根据下面的示例组织train和val图像和标签。在本例中,我们假设/coco128位于/yolov5目录旁边。YOLOv5通过将每个图像路径中的最后一个/images/实例替换为/labels/来自动为每个图像定位标签。例如:
dataset/images/im0.jpg # image
dataset/labels/im0.txt # label
选择一个预训练模型开始训练。在这里,我们选择YOLOv5s,最小和最快的模式可用。请参阅我们的自述表,以获得所有模型的完整比较。
通过指定数据集、批量大小、图像大小以及预训练的–weights YOLOv5s.pt(推荐)或随机初始化的–weights’’–cfg YOLOv5s.yaml(不推荐),在COCO128上训练YOLOv5s模型。预训练的重量是从最新的YOLOv5版本中自动下载的。
# Train YOLOv5s on COCO128 for 5 epochs
$ python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
所有训练结果都保存到runs/train/中,运行目录递增,即runs/train/exp2、runs/train/exp3等。有关更多详细信息,请参阅我们的Google Colab笔记本的“训练”部分。开在Colab开在Kaggle
权重和偏差(W&B)现在与YOLOv5集成,用于训练运行的实时可视化和云记录。这允许更好的运行比较和内省,以及改进团队成员之间的可见性和协作。要启用W&B日志记录,请安装wandb,然后正常训练(第一次使用时将指导您进行设置)。
pip install wandb
在训练期间,您将在https://wandb.ai,您可以使用W&B报告工具创建详细的结果报告。
默认情况下,所有结果都记录到runs/train,并为每个新训练创建一个新的实验目录runs/train/exp2、runs/train/exp3等。查看train和val jpgs以查看马赛克、标签、预测和增强效果。注:马赛克数据加载器用于训练(如下所示),这是Ultralytics开发的新概念,首次出现在YOLOv4中。
train_batch0.jpg显示第0列马赛克和标签:
val_batch0_labels.jpg显示val batch 0标签:
训练结果将自动记录到Tensorboard并运行/train/exp/results.txt,在训练完成后,它将被标绘为results.png(如下)。也可以手动打印任何results.txt文件:
from utils.plots import plot_results
plot_results(save_dir='runs/train/exp') # plot all results*.txt files in 'runs/train/exp'