欢迎大家关注笔者,你的关注是我持续更博的最大动力

原创文章,转载告知,盗版必究

yolov5 v3.0版本训练报错:torch.nn.modules.module.ModuleAttributeError: 'BatchNorm2d' object has no attribute '_non_persistent_buffers_set'

文章目录:

  • 1 错误问题描述
  • 2 错误原因分析
  • 4 解决方法
    • 4.1 解决方法一
    • 4.2 解决方法二
  • 5 PS:比较开心的事情

首先说明一下我的环境:

  • Ubuntu18.04
  • Cuda10.2
  • Python3.8
  • Pytorch1.6.0
  • torchvision0.7.0
  • yolov5v3.0

1 错误问题描述

1、在使用yolov5 v3.0版本的时候,使用如下的命令进行训练

python train.py --img 640 --batch 16 --epochs 300 --data ./data/my_data.yaml --cfg ./models/yolov5l.yaml --weights ./weights/yolov5l.pt --device 1

2、然后报错:torch.nn.modules.module.ModuleAttributeError: 'BatchNorm2d' object has no attribute '_non_persistent_buffers_set'

2 错误原因分析

我在官网的issues中查看了,很多答案说是pytorch的版本问题,但是yolov5在几个月之内已经发布了三个版本了:

  • yolov5 v1.0
  • yolov5 v2.0
  • yolov5 v3.0

至于每个版本有什么不同,大家自己去参考:yolov5 的GitHub主页

官网的issues中给出的解决方法有:

  • 把pytorch的版本降低到torch1.5.1,我在yolov5 v3.0中尝试不可以,yolov5 v3.0必须torch的版本必须是torch>=1.6.0(从提交的issues时间可以看到,用这种方法的yolov5版本应该是低于v3.0的)
  • 使用低版本的yolov5,例如使用yolov5 v1.0,然而我就是想要使用yolov5 v3.0版本
  • 官网也说这可能是torch1.6.0中的bug,但是并没有给出解决的方法

后面我想起来可能的问题,我在用yolov5 v3.0 中使用的预训练模型yolov5l.pt是yolov5 V1.0的中下载的,因为预训练的模型yolov5l.pt下载的比较慢,而我又比较懒,所以我把yolov5 v1.0中下载的yolov5l.pt拷贝到yolov5 v3.0中,因此出现错误:torch.nn.modules.module.ModuleAttributeError: 'BatchNorm2d' object has no attribute '_non_persistent_buffers_set'

4 解决方法

4.1 解决方法一

直接在yolov5 v3.0中重新下载一下yolov5l.pt的预训练模型

然后训练就正常了:

4.2 解决方法二

官方issues给出的解决方法

原则上,你可以简单地为每个YOLOv5模块添加一个非持久缓冲区集来解决这个问题,但是我建议使用最新的模型来代替。添加代码如下:

for k, m in model.named_modules():m._non_persistent_buffers_set = set()  # pytorch 1.6.0 compatability

注意:

这个方法我没有尝试,我问题已经解决了,如果你要尝试请自行尝试!

5 PS:比较开心的事情

  • 我在官网的issues中描述了我的遇到的问题,大概时间:20200825 上午11:00
  • 然后大概过了十几分钟,官网作者glenn-jocher很快就给了我回复
  • 后面给出了一些指导性的意见,就是上面的方法二(作者不建议这种方法,我也就没有尝试)
  • 我在官网提交的issues

然后,我看到了glenn-jocher给我提交的issues点了一个笑脸!

哈哈哈,来自官方点赞!!!






♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

yolov5 v3.0训练报错: torch.nn.modules.module.ModuleAttributeError: ‘BatchNorm2d‘ object has no attribute相关推荐

  1. yolov5 v3.0训练出现KeyError错误

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 yolov5 v3.0训练出现KeyError错误 文章目录: 1 错误原因分析 2 错误解决方式 1 错误原因分析 出 ...

  2. mmdetection训练报错

    mmdetection训练报错. 先说结论吧,coco格式的annotations.json中categories的category_id不能有0(即背景类). 查了好几个小时,都快要疯了,才搞出这个 ...

  3. HCSC 2022cvpr 训练报错

    跑小数据集不出错(3w的数据) 今天换到100w的数据 立马来了问题.目测是显存炸了 纪念训练的第100次 依然没有成功 Traceback (most recent call last):   Fi ...

  4. YOLOv5初级问题与报错汇总

    背景: 本人应学校需求掌握机器视觉相关工具,于是零基础跟着大佬的步伐一步一步走.目标检测---教你利用yolov5训练自己的目标检测模型 由于版本更迭等等原因,会遇到很多原作者没有的问题.这里跟随原作 ...

  5. Tensorrt 7.2.3 转换yolov5 v3.0 pytorch1.8.1 onnx1.6.0

    Tensorrt 转换yolov5 安装环境: pytorch 1.8.1 torchvision 0.9.1 onnx 1.6.0 Tensorrt 7.2.3 yolov5 v3.0 l 权重为自 ...

  6. insightface 切换GPU训练报错解决

    insightface代码: https://github.com/deepinsight/insightface 在pytorch训练时,先用gpu1训练,再用gpu2训练,加载gpu1的预训练时报 ...

  7. python 3.8.0 编译报错 Could not import runpy module 解决方案

    环境 CentOS 7 Gcc 4.8.5 Python 3.8.0 相关报错 make build_all CFLAGS_NODIST=" -fprofile-use -fprofile- ...

  8. wince6.0 编译报错:error C2220: warning treated as error - no 'object' file generated的解决办法

    内容提要:wince6.0编译报错:"error C2220: warning treated as error - no 'object' file generated" 原因是 ...

  9. wince6.0 编译报错:error C2220: warning treated as error - no 'object' file generated的解决办法...

    内容提要:wince6.0编译报错:"error C2220: warning treated as error - no 'object' file generated" 原因是 ...

最新文章

  1. 4.3. postForObject
  2. php header下载中文名称,PHP Header下载文件在IE文件名中文乱码问题
  3. RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)
  4. php页面修改器,读取器/修改器
  5. 查找窗口隐藏了怎么办_如何快速查找网站管理页面
  6. hadoop之MapReduce的案例(多表关联)
  7. linux 系统命令之wget和yum和apt-get区别
  8. notion自建服务器,最详细的NOTION功能模块列表
  9. JSONP和CORS两种跨域方式的介绍和方案实例
  10. scrollView滚动原理
  11. 从四大造字法看文字所承载的文化_汉语汉字所承载的文化信息最好能举例说明...
  12. 2021 编程语言排行榜
  13. 【Pyecharts50例】一个Tab下添加多个图表/tab.add()
  14. (轉貼) 太空探索/液態水存在?火星南極有廣大冰層 可能有生命 (News)
  15. 计算机学院开学发言,开学典礼 | 计控学院研究生代表发言稿
  16. linux wifi名称设置中文乱码,无线wifi名称怎么改成中文乱码的方法
  17. 华为海思芯片 网口烧录详解(翻遍全网资料 结合实际成功操作)
  18. C++排序之直接插入排序法
  19. 新风医疗集团就私有化交易达成最终合并协议;​康泰生物成功分离新冠德尔塔变异株 | 医药健闻...
  20. 高效的vim配置及其插件管理

热门文章

  1. model1模式变为mv模式,实现业务逻辑和画面的分离
  2. POJ 3414 Pots(罐子)
  3. C# 循环语句 for循环
  4. jquery serialize()无效读取不到数据
  5. win7如何配置access数据源
  6. 数据结构 python的书推荐-为什么程序员一定要学数据结构?数据结构书单推荐~...
  7. python怎么写文件-Python 读写文件
  8. python 命令-python常见命令
  9. 儿童编程软件python-Python编程工具pycharm的使用
  10. python与人工智能编程-最适合人工智能开发的5种编程语言,Python排第一