当前位置:首页 » 《关注互联网》 » 正文

YOLO系列训练时出现loss出现nan值或者测试时P\R\map全部为0值的解决办法(GTX16xx系列显卡大坑)

14 人参与  2024年03月25日 16:45  分类 : 《关注互联网》  评论

点击全文阅读


目录

0 前言(用处不大,可以直接看解决办法)

1 产生问题的原因

2 解决办法

YOLO V5

YOLO V7

2 小结


☆ 这个问题是GTX16xx用户的大坑,基本上每个GTX16xx用户使用YOLO系列算法,都会遇到这些问题。

这个方法是不彻底的解决办法,牺牲了训练的时间来换取问题的解决,经过本人在GTX1660TI笔记本上测试YOLOV5和YOLOV7算法均成功解决了。


0 前言(用处不大,可以直接看解决办法)

最近正在做目标检测相关的算法,因为要求实时性要很高,所以选择了YOLO系列算法。最先开始选择的是刚出炉新鲜的YOLOV7算法,训练时没有问题,但是在最终测试时,发现检测不出来任何的bbox,开始以为是没有训练好,但是发现训练时的validation都有bbox。最后决定还是老实采用YOLO V5算法(为什么不选美团的YOLO V6?YOLO V6在论文外的数据集,表现还没有YOLOV 5好,大家dddd),不过使用YOLOV5 时又发现了训练时出现了nan值,于是在github上yolov5问答里找到了解决办法(不使用AMP)。但是有发现了validation时出现P\R\map全为0值。于是找呀找,最后都没有发现问题所在。最后在阅读YOLO V5 的train.py的源代码发现了一些解决办法问题。

1 产生问题的原因

由于NVIDIA 官方的一些软件问题,导致了PyTorch里面一些CUDA代码有些问题,就是fp16(float16)数据类型在卷积等一些运算的时候会出现nan值。导致了训练时候出现了nan值,故而在validation时就会检测不到导致了上述情况。

2 解决办法

YOLO V5

里面检测没有nan值、不识别问题,就只有训练的时候有问题。

下面正式开始解决问题,在train.py搜索amp把check_amp注释掉直接把amp赋值为False,如下图:

这样做之后在运行train.py发现训练时就不会有nan值了。如果还有,那就应该就关闭这篇博客了,考虑下其他方法了。然后,你就会发现validation时会出现P/R/map全部为0。然后你就继续在train.py里面搜索half关键字,把所有有.half()变为.float(),如下图:

这样之后,你就会发现

——还是没有解决问题。

要解决这个问题,还需要在val.py里面将所有的half改为False,同时im.half() if half else im.float() 改为 im.float()。如下图:

 这样做之后,再次运行train.py发现没有问题了。

YOLO V7

经测试,train.py没有问题,主要还是在detect.py里面有问题。主要还是把每个地方.half()改为.float()或者把half赋值为False,如下图:

3 小结

 其实,归根究底就是NVIDIA对GTX16xx相关CUDA包有问题,有其他人说吧PyTorch版本降为1.10.1和CUDA 10.2,我也试过,确实能解决问题,但是训练时长长了很多,而且现在PyTorch官方已经不怎么支持使用CUDA 10.2版本了。

这个解决办法的原理,就是把显卡半精度浮点型数据改为单精度的浮点型去运算。这样虽然精度高了,但是训练时长也相应会增加一些、显存占用也会增加一些,但是,这样总比不能训练和不能检测要好些吧,要是有更好的办法,欢迎在评论区分享分享。。

contact_details_qq=277746470


点击全文阅读


本文链接:http://zhangshiyu.com/post/85418.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 李成功金嘉兰(产子第二天,月嫂哄我儿子喊她妈)最新章节免费在线阅读_李成功金嘉兰(产子第二天,月嫂哄我儿子喊她妈)全章节在线阅读(笔趣阁)
  • 热推《程辰许清何泽》程辰许清何泽~小说全文阅读~完本【已完结】笔趣阁
  • 被全家害死在哀牢山后,我杀疯了尤向兰赵小燕最新好看小说推荐_最新全本小说被全家害死在哀牢山后,我杀疯了_(尤向兰赵小燕)免费小说在线阅读
  • 免费小说《尤向兰赵小燕》已完结(尤向兰赵小燕)热门小说大结局全文阅读笔趣阁
  • 被全家害死在哀牢山后,我杀疯了尤向兰赵小燕完结版小说全文免费阅读_免费完本小说被全家害死在哀牢山后,我杀疯了(尤向兰赵小燕)完本热门小说
  • 《被负心渣男欺骗后,灵魂互换的我彻底杀疯了》(郑江明明)在哪看免费小说_完整版免费全文阅读《被负心渣男欺骗后,灵魂互换的我彻底杀疯了》郑江明明 -
  • 《我服婚役后,帝君他四海八荒抢新娘!》(金乌昊天泽)免费小说免费阅读_免费完整版小说《我服婚役后,帝君他四海八荒抢新娘!》(金乌昊天泽) -
  • 零基础Java第十九期:认识String(一)
  • C++ —— 以真我之名 如飞花般绚丽 - 智能指针
  • JavaScript 读取及写入本地文件
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.21——动态内存管理
  • 前端流式播放TTS语音:技术细节与实现

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1