YOLOv5全面解析教程⑥:模型训练流程详解

YOLOv5全面解析教程⑥:模型训练流程详解

YOLOv5全面解析教程⑥:模型训练流程详解

2023-05-27 23:00:54 分类:科技 0 ℃

作者 | Fengwen、BBuf  

【资料图】

欢迎Star、试用One-YOLOv5:

https://github.com/Oneflow-Inc/one-yolov5

1

结构项目预览

2

安装

git clone https://github.com/Oneflow-Inc/one-yolov5  # clonecd one-yolov5pip install -r requirements.txt  # install

3训练两种训练方式

带权重训练 

$ python path/to/train.py --data coco.yaml --weights yolov5s --img 640

2. 不带权重训练 

$ python path/to/train.py --data coco.yaml --weights "" --cfg yolov5s.yaml --img 640

单GPU训练

$ python train.py  --data coco.yaml --weights yolov5s --device 0

多GPU训练

$ python -m oneflow.distributed.launch --nproc_per_node 2 train.py --batch 64 --data coco.yaml --weights yolov5s --device 0,1

注意:  

--nproc_per_node  指定要使用多少GPU。举个例子:在上面多GPU训练指令中它是2。

--batch 是总批量大小。它将平均分配给每个GPU。在上面的示例中,每GPU是64/2=32。

--cfg : 指定一个包含所有评估参数的配置文件。

上面的代码默认使用GPU 0…(N-1)。使用特定的GPU?可以通过简单在 --device 后跟指定GPU来实现。「案例」,在下面的代码中,我们将使用GPU 2,3。

$ python -m oneflow.distributed.launch --nproc_per_node 2 train.py --batch 64 --data coco.yaml --cfg yolov5s.yaml --weights "" --device 2,3

恢复训练

如果你的训练进程中断了,你可以这样恢复先前的训练进程。

# 多卡训练.python -m oneflow.distributed.launch --nproc_per_node 2 train.py --resume

你也可以通过 --resume 参数指定要恢复的模型路径。

# 记得把 /path/to/your/checkpoint/path  替换为你要恢复训练的模型权重路径--resume /path/to/your/checkpoint/path

使用SyncBatchNorm

SyncBatchNorm可以提高多gpu训练的准确性,但会显著降低训练速度。它仅适用于多GPU DistributedDataParallel 训练。建议最好在每个GPU上的样本数量较小(样本数量

要使用SyncBatchNorm,只需将添加 --sync-bn 参数选项,具体「案例」如下:

$ python -m oneflow.distributed.launch --nproc_per_node 2 train.py --batch 64 --data coco.yaml --cfg yolov5s.yaml --weights "" --sync-bn

4评估

下面的命令是在COCO val2017数据集上以640像素的图像大小测试 yolov5x 模型。yolov5x是可用小模型中最大且最精确的,其它可用选项是 yolov5n ,yolov5m,yolov5s,yolov5l ,以及他们的 P6 对应项比如 yolov5s6 ,或者你自定义的模型,即 runs/exp/weights/best 。

$ python val.py --weights yolov5x --data coco.yaml --img 640

5推理

首先,下载一个训练好的模型权重文件,或选择你自己训练的模型;然后,通过 detect.py文件进行推理。

python path/to/detect.py --weights yolov5s --source 0              # webcam                                                    img.jpg        # image                                                    vid.mp4        # video                                                    path/          # directory                                                    path/*.jpg     # glob                                                    "https://youtu.be/Zgi9g1ksQHc"  # YouTube                                                    "rtsp://example.com/media.mp4"  # RTSP, RTMP, HTTP stream

6训练结果本地日志

默认情况下,所有结果都记录为runs/train,并为每个新训练创建一个新的训练结果目录,如runs/train/exp2、runs/train/exp3等。查看训练和测试JPG以查看 mosaics, labels, predictions and augmentation 效果。注意:Mosaic Dataloader 用于训练(如下所示),这是Ultralytics发表的新概念,首次出现在YOLOv4中。

train_batch0.jpg 显示 batch 为 0 的 (mosaics and labels):

val_batch0_labels.jpg 展示测试 batch 为 0 的labels:

val_batch0_pred.jpg 展示测试 batch 为 0 predictions(预测):

训练训损失和性能的指标有记录到Tensorboard和自定义结果中results.csv日志文件,训练训完成后作为结果绘制 results.png如下。在这里,我们展示了在COCO128上训练的YOLOV5结果

从零开始训练 (蓝色)。

加载预训练权重 --weights yolov5s (橙色)。

具体的指标分析详见文章《模型精确度评估》

7训练技巧


比丘资源网 » YOLOv5全面解析教程⑥:模型训练流程详解

发表回复

提供最优质的资源集合

立即查看 了解详情