目标检测 YOLOv5 - YOLOv5:v6版本多机多卡训练出现的错误及解决方案

2021年4月份发布的 YOLOv5:v5版本,2021年10月份发布的 YOLOv5:v6版本
发布了更小的Nano模型YOLOv5n和YOLOv5n6

一. 改进的方面
整合了 Roboflow,使用Roboflow来组织、标注、准备、版本化和托管用于训练YOLOv5模型的数据集,Roboflow上有很多公开的数据集。

二. 当采用多机多卡训练时,出现了以下问题

TypeError: barrier() got an unexpected keyword argument ‘device_ids’

代码出错的地方utils/torch_utils.py

def torch_distributed_zero_first(local_rank: int):
    """
    Decorator to make all processes in distributed training wait for each local_master to do something.
    """
    if local_rank not in [-1, 0]:
        dist.barrier(device_ids=[local_rank])
    yield
    if local_rank == 0:
dist.barrier(device_ids=[0])

原因是PyTorch版本,YOLOv5的推荐的Python>=3.6.0,PyTorch>=1.7
PyTorch>=1.7的函数

torch.distributed.barrier(group=<object object>, async_op=False)

看看新的PyTorch 1.9的函数

torch.distributed.barrier(group=None, async_op=False, device_ids=None)

再看看PyTorch 1.8的函数

torch.distributed.barrier(group=None, async_op=False, device_ids=None)

通过比较发现2021年10月份发布的 YOLOv5:v6版本,使用的PyTorch并不是1.7版本,最简单的方法就是升级下自己PyTorch版本,至少1.8。
也可以按照 YOLOv5的一贯做法,加一个check_requirements()主要是检测 torch>=1.8.0。

第二种方式:
将上述代码替换成:

@contextmanager
def torch_distributed_zero_first(local_rank: int):
    """
    Decorator to make all processes in distributed training wait for each local_master to do something.
    """
    if local_rank not in [-1, 0]:
        torch.distributed.barrier()
    yield
    if local_rank == 0:
        torch.distributed.barrier()

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
YOLov5是一个流行的目标检测模型,可以使用多卡进行训练以加快训练速度。下面是使用YOLov5进行单机多卡训练的步骤: 1. 准备数据集:首先,你需要准备用于目标检测的数据集。确保数据集已经按照YOLov5的要求进行了标注和划分。 2. 安装依赖:确保你已经安装了PyTorch和其他相关依赖。 3. 下载YOLov5代码:你可以从YOLov5的官方GitHub仓库下载最新的代码。 4. 配置训练参数:在YOLov5代码的文件中,你可以找到一个名为"hyp.yaml"的文件,其中包含了训练的超参数设置。根据你的需求进行相应的配置,例如学习率、批大小等。 5. 设置多卡训练:打开"train.py"文件,找到以下代码行: ``` # 自动选择最佳GPU gpus = [0] # 默认使用单个GPU ``` 将其修改为: ``` # 使用多个GPU gpus = [0, 1, 2, 3] # 选择你想要使用的GPU编号 ``` 6. 启动训练:在终端中运行以下命令开始训练: ``` python train.py --batch-size {batch_size} --cfg {config_file} --data {data.yaml} --multi-scale --img {image_size} --device {device} ``` 其中,{batch_size}是每个GPU的批大小,{config_file}是模型配置文件路径,{data.yaml}是数据集配置文件路径,{image_size}是输入图像的尺寸,{device}是使用的设备(例如cuda:0)。 请注意,你可能需要根据你的具体环境和需求进行适当的调整。多卡训练通常可以显著提高训练速度,但也可能会增加训练过程中的内存消耗。确保你的硬件和环境能够支持多卡训练

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值