训练时关于‘wandb’报错的解决方式

解决‘wandb’的报错方法

报错原因

相信遇到这个问题的小伙伴已经在网上进行了各种查找,简单来说,这个bug出现的原因就是ultralytics公司在代码里面加入了一段可以将我们的训练数据实时上传到云端并方便我们可视化的一个工具,但是由于我们没有科学上网,或者你科学上网了,但是没有登录wandb,就会出现这个报错。

下面我将给出我这边总结的几种解决方式,是我亲测可用的,如果一种不行,大家可以尝试这其他的解决方法,总之,多试,总会解决问题的。

方案1

点开pycharm自带的终端,确保我们在代码所处的环境下,并且路径是我们项目的所在路径。然后在终端中输入以下指令:

wandb login --relogin

如图所示:
在这里插入图片描述
然后按下回车,会看到以下界面:
在这里插入图片描述
点击出现那个链接,会进入这个网站:
在这里插入图片描述
这里由于我已经注册并登录过了,网站记录下了我的账户信息,因此和很多小伙伴的也许不一样,但是问题不大,只要注册一下账号就可以了。注册完之后,登录进去,就会给我们一个设备码:
在这里插入图片描述
复制这一串设备码,刚才的终端那边可以不用管了,现在我们回到代码中。这里以yolov8的训练代码为例子,我们打开项目下的train.py文件,找到主函数那边,添加以下这些代码:

    import os
    os.environ["WANDB_API_KEY"] = "xxx"
    os.environ["WANDB_MODE"] = "offline"

其中这里的xxx,填入你刚才复制的那串设备码:
在这里插入图片描述
再次点击运行之后,可以正常训练。(但是这个方法我只在yolov8上成功了,yolov5使用该方法可能还是无法正常训练,这里就要看我们下面的这个方法了!)

方案2

找到yolov5路径下的 “utils/loggers/init.py”

try:
    import wandb

    assert hasattr(wandb, '__version__')  # verify package import not local dir
    if pkg.parse_version(wandb.__version__) >= pkg.parse_version('0.12.2') and RANK in [0, -1]:
        try:
            wandb_login_success = wandb.login(timeout=30)
        except wandb.errors.UsageError:  # known non-TTY terminal issue
            wandb_login_success = False
        if not wandb_login_success:
            wandb = None
except (ImportError, AssertionError):
    wandb = None

wandb = None

加上最下面的wandb = None:
在这里插入图片描述
然后,找到"utils/loggers/wandb/wandb_utils.py":

try:
    import wandb

    assert hasattr(wandb, '__version__')  # verify package import not local dir
except (ImportError, AssertionError):
    wandb = None

wandb = None

加上最下面的wandb = None:
在这里插入图片描述
再运行train.py,此时可以正常训练!

方案3

如果方案一和方案二都试了还有这个报错,我的建议是两个一块使用,问题解决,哈哈

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

澄鑫

谢谢,将继续努力提供技术方案

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值