yolov5训练自定义数据集
共 3187字,需浏览 7分钟
·
2021-08-17 21:37
1.创建dataset.yaml
COCO128是一个小型教程数据集,由COCO train2017中的前 128 张图像组成。这些相同的 128 张图像用于训练和验证,以验证我们的训练管道是否能够过拟合。如下所示的data/coco128.yaml是数据集配置文件,它定义了 1) 用于自动下载的可选下载命令/URL,2) 训练图像目录的路径(或带有扩展名的 *.txt 文件的路径)训练图像列表),3)我们的验证图像相同,4)类别数量,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. 创建标签
使用CVAT、makesense.ai或Labelbox等工具 标记图像后,将标签导出为YOLO 格式,*.txt
每个图像一个文件(如果图像中没有对象,则不需要*.txt
文件)。该*.txt
文件规格有:
每个对象一行
每一行都是
class x_center y_center width height
格式。框坐标必须采用标准化 xywh格式(从 0 - 1)。如果您的箱子以像素为单位,划分
x_center
并width
通过图像宽度,y_center
并height
通过图像高度。类号是零索引的(从 0 开始)。
上图对应的标签文件包含2个人(class 0
)和一条领带(class 27
):
3. 整理目录
根据以下示例组织您的训练和验证图像和标签。在这个例子中,我们假设/coco128
是在目录旁边/yolov5
。YOLOv5通过将/images/
每个图像路径中的最后一个实例替换为/labels/
. 例如:
dataset/images/im0.jpg # image
dataset/labels/im0.txt # label
4. 选择型号
选择一个预训练模型开始训练。这里我们选择YOLOv5s,这是可用的最小和最快的模型。有关所有模型的完整比较,请参阅我们的 README表。
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
等。
可视化
权重和偏差记录(🚀 新)
权重和偏差(W&B) 现在与 YOLOv5 集成,用于训练运行的实时可视化和云记录。这允许更好地运行比较和内省,以及提高团队成员之间的可见性和协作。要启用 W&B 日志记录,请安装wandb
,然后正常训练(首次使用时将指导您进行设置)。
$ pip install wandb
在培训期间,您将在https://wandb.ai看到实时更新,并且您可以使用 W&B 报告工具创建结果的详细报告。
本地日志
所有的结果都在默认情况下记录runs/train
,为每个新的培训作为创建一个新的实验目录runs/train/exp2
,runs/train/exp3
等查看火车和测试的JPG文件,看马赛克,标签,预测和增强效果。请注意,使用Mosaic Dataloader进行训练(如下所示),这是一个由 Ultralytics 开发并首次出现在YOLOv4 中的新概念。
train_batch0.jpg
显示训练批次 0 马赛克和标签:
test_batch0_labels.jpg
显示测试批次 0 标签:
test_batch0_pred.jpg
显示测试批次 0预测:
训练损失和性能指标也记录到Tensorboard和自定义results.txt
日志文件,results.png
在训练完成后绘制为(如下)。在这里,我们展示了在 COCO128 上训练到 300 个 epoch 的 YOLOv5s,从头开始(蓝色)和预训练--weights yolov5s.pt
(橙色)。
from utils.plots import plot_results
plot_results(save_dir='runs/train/exp') # plot results.txt as results.png