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

这篇博客详细解析了YOLOv5的训练流程,包括带权重和不带权重的训练、单GPU及多GPU训练的实施,还介绍了如何恢复中断的训练。SyncBatchNorm在多GPU训练中的应用、评估、推理过程以及训练结果的分析也得到了详述。此外,提供了模型选择、训练技巧和拓展训练到多机的建议。
摘要由CSDN通过智能技术生成

e46540ddb8ebf98f4ce48a72f398874e.jpeg


作者 | Fengwen、BBuf
 

欢迎Star、试用One-YOLOv5:

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

1

结构项目预览

77b3d1d56b0ae96e138b93266eb4f8d8.png
 

2

安装

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

3

训练

两种训练方式

  1. 带权重训练 

$ 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上的样本数量较小(样本数量<=8)时使用。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值