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

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

flyfish

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

一. 改进的方面

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

  2. Nano模型保持了 yolov5s 模型的深度depth multiple =0.33,宽度width multiple 则是从0.5降到了0.25,从而减少了75%参数,从7.5M缩小到了1.9M,这样非常适合移动端或者是 CPU 的环境。

  3. 支持 tensorflow 和 keras模型的导出

  4. 同时支持 OpenCV DNN 和 ONNX Runtime推理

  5. 导出的 onnx 同时支持 opencv dnn 和 onnx runtime

  6. 模型结构
    (1)用 Conv(k=6, s=2, p=2) 代替 Focus() ,主要是为了方便模型导出
    (2)使用新的 SPPF() 代替 SPP() 层,以减少操作
    (3)减少 P3 backbone层 C3() 重复从 9 到 6 以提高速度
    (4)将 SPPF 放在backbone后面
    (5)更新超参数,增加了mixup 和 copy-paste

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

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。

版权声明:本文为CSDN博主「TheOldManAndTheSea」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/flyfish1986/article/details/120825243

TheOldManAndTheSea

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

YOLOV1论文详解

YOLOV1 1. Introduction YOLO非常简单:对于一张完整的图像,通过一个单一的卷积网络可以同时预测多个bounding boxes的回归参数和这些boxes的类别概率,并直接优化检

使用 YOLO v5 进行目标检测

使用样本数据集检测对象的步骤 一般来说,分类技术在自动驾驶汽车中没有多大帮助,因为它只预测图像中的一个对象,并且不给出该图像的位置。 而目标检测在自动驾驶汽车中非常重要,可以检测场景中的

【经典论文解读】YOLOv4 目标检测

前言 YOLO是一种目标检测方法,它的输入是整张图片,输出是n个物体的检测信息,可以识别出图中的物体的类别和位置。YOLOv4是在YOLOv3的基础上增加了很多实用的技巧,使得速度与精度