【yolov7报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode bytein position 2: illegal multibyte sequenc】

最近在跑yolov7的代码,训练数据集过程中代码有报错
UnicodeDecodeError: ‘gbk‘ codec can‘t decode bytein position 2: illegal multibyte sequenc
这里直接给出代码修改部分。
这个错误是由于在读取yaml配置文件时,使用了错误的编码格式导致的。
问题是系统的默认编码格式是GBK,而读取的yaml配置文件使用了其他编码格式。
解决方法仍然是在读取yaml配置文件时,指定正确的编码格式为utf-8。
在train.py文件中找到读取yaml配置文件的部分,并将其修改如下:

# Configure
plots = not opt.evolve  # create plots
cuda = device.type != 'cpu'
init_seeds(2 + rank)
with open(opt.data, encoding='utf-8') as f:
    data_dict = yaml.load(f, Loader=yaml.SafeLoader)  # data dict
is_coco = opt.data.endswith('coco.yaml')

通过添加encoding='utf-8’参数,告诉Python在读取文件时使用utf-8编码,以解决UnicodeDecodeError的问题。
大概在59行:
在这里插入图片描述
修改完毕直接运行即可。
上述方法只针对yolov7运行报错使用

如果上述方法,仍然报错gbk错误,可能就需要在打开文件的地方全部修改:
可以在文件读取时指定正确的编码格式为UTF-8,这样可以避免编码问题。修改train.py文件中读取yaml配置文件的部分如下:

# 将原来的代码
with open(opt.data) as f:
    data_dict = yaml.load(f, Loader=yaml.SafeLoader)  # data dict

修改为

# 使用UTF-8编码读取配置文件
with open(opt.data, encoding='utf-8') as f:
    data_dict = yaml.load(f, Loader=yaml.SafeLoader)  # data dict

下面这个:

 # Save run settings
    with open(save_dir / 'hyp.yaml', 'w') as f:
        yaml.dump(hyp, f, sort_keys=False)
    with open(save_dir / 'opt.yaml', 'w') as f:
        yaml.dump(vars(opt), f, sort_keys=False)如何修改

修改为:

# Save run settings with UTF-8 encoding
with open(save_dir / 'hyp.yaml', 'w', encoding='utf-8') as f:
    yaml.dump(hyp, f, sort_keys=False)
with open(save_dir / 'opt.yaml', 'w', encoding='utf-8') as f:
    yaml.dump(vars(opt), f, sort_keys=False)

with open(opt.hyp, errors='ignore') as f:
    hyp = yaml.load(f, Loader=yaml.SafeLoader)  # load hyps dict
    if 'anchors' not in hyp:  # anchors commented in hyp.yaml
        hyp['anchors'] = 3

改为

with open(opt.hyp, errors='ignore') as f:
    hyp = yaml.safe_load(f)  # load hyps dict safely
    if 'anchors' not in hyp:  # anchors commented in hyp.yaml
        hyp['anchors'] = 3

重新运行,如果在运行依旧报错,很大可能是读取的文件yaml不是utf-8的编码格式,需要检查编码格式,较为繁琐,建议去官网重新下载yolov7,重新运行。

其他情况下可参考以下几篇文章:

https://blog.csdn.net/sinat_26811377/article/details/107629934?ops_request_misc=&request_id=&biz_id=102&utm_term=UnicodeDecodeError:%20%27gbk%27%20code&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-107629934.nonecase&spm=1018.2226.3001.4187

这篇文章讲述的是python代码运行出错,可以参考这个文章,适用于代码少,找得到打开文件的代码使用。

扫描二维码关注公众号,回复: 16666352 查看本文章

《机器学习实战》朴素贝叶斯算法中遇到这个问题,可以参考以下两篇文章:

https://blog.csdn.net/wzk4869/article/details/125634768?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169098051316800184141248%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169098051316800184141248&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-125634768-null-null.142^v92^insert_down1&utm_term=UnicodeDecodeError%3A%20gbk%20codec%20cant%20decode%20byte%200xae%20in%20position%20781%3A%20illegal%20multibyte%20sequence&spm=1018.2226.3001.4187
https://blog.csdn.net/qq_29592829/article/details/71598664?ops_request_misc=&request_id=&biz_id=102&utm_term=UnicodeDecodeError:%20%27gbk%27%20code&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-71598664.nonecase&spm=1018.2226.3001.4187

《Python编程:从入门到实践》报错

https://blog.csdn.net/ProgramNovice/article/details/126712944?ops_request_misc=&request_id=&biz_id=102&utm_term=UnicodeDecodeError:%20%27gbk%27%20code&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-126712944.nonecase&spm=1018.2226.3001.4187

猜你喜欢

转载自blog.csdn.net/weixin_47869094/article/details/132086726