YOLOv5官方教程

传送门:
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

训练自定义数据

1. 创建dataset.yaml

COCO128是一个小型教程数据集,由cocotrain2017中的前128个图像组成。这些相同的128个图像用于训练和验证,以验证我们的训练管道能够进行过度拟合。data/coco128.yaml,如下所示,是数据集配置文件,它定义了

  1. 数据集根目录和到train/val/test映像目录的相对路径(或到带有映像路径的*.txt文件的路径)
  2. 类的数量和
  3. 类名列表:
# 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

2. 创建标签

使用CVAT或makesense.ai等工具标记图像后,将标签导出为YOLO格式,每个图像一个*.txt文件(如果图像中没有对象,则不需要*.txt文件)。*.txt文件规范为:

  • 每个对象一行
  • 每一行都是x_center y_center width height格式。
  • 框坐标必须是归一化的xywh格式(从0到1)。如果框是以像素为单位的,- - 请将x_center和width除以图像宽度,将y_center和height除以图像高度。
  • 类号索引为零(从0开始)

与上述图像相对应的标签文件包含2个人(类别0)和领带(类别27)
YOLOv5官方教程_第1张图片

3. 整理目录

YOLOv5官方教程_第2张图片

根据下面的示例组织train和val图像和标签。在本例中,我们假设/coco128位于/yolov5目录旁边。YOLOv5通过将每个图像路径中的最后一个/images/实例替换为/labels/来自动为每个图像定位标签。例如:

dataset/images/im0.jpg  # image
dataset/labels/im0.txt  # label

4. 选择模型

选择一个预训练模型开始训练。在这里,我们选择YOLOv5s,最小和最快的模式可用。请参阅我们的自述表,以获得所有模型的完整比较。
YOLOv5官方教程_第3张图片

5. 训练

通过指定数据集、批量大小、图像大小以及预训练的–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'

YOLOv5官方教程_第4张图片

你可能感兴趣的:(目标检测,深度学习)