我正在用 yolor 训练自定义数据集。我成功地运行了一次,但过了一段时间后,我无法很好地运行它。
我注意到的第一个错误是在训练部分:
Traceback (most recent call last): File "train.py", line 537, in <module>
train(hyp, opt, device, tb_writer, wandb) File "train.py", line 80, in train
ckpt = torch.load(weights, map_location=device) # load checkpoint File "/usr/local/lib/python3.7/dist-packages/torch/serialization.py", line 595, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args) File "/usr/local/lib/python3.7/dist-packages/torch/serialization.py", line 764, in _legacy_load
magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: invalid load key, '<'.
然后我追踪它,发现预训练的权重没有用这段代码正确加载:
%cd /content/yolor
!bash scripts/get_pretrain.sh
ann 给我这个错误:
/content/yolor
awk: cannot open ./cookie (No such file or directory)
rm: cannot remove './cookie': No such file or directory
与我所做的相比,这是我注意到的第一个也是主要的事情,它应该在那里加载重量。
它只是给我一个带有一些 HTML 代码的预训练文件。
顺便说一句,我正在使用 goolge colab
最佳答案
对我来说,最简单的方法是在我的笔记本电脑上下载数据,然后上传它们并将当前的 HTML 权重替换为正确的权重。 你会在 get_pretrain.sh 文件中找到两个指向 google drive 的权重链接
yolor_p6.pt:https://drive.google.com/uc?export=download&id=1Tdn3yqpZ79X7R1Ql0zNlNScB1Dv9Fp76 yolor_w6.pt:https://drive.google.com/uc?export=download&id=1UflcHlN5ERPdhahMivQYCbWWw7d2wY7U
curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=1Tdn3yqpZ79X7R1Ql0zNlNScB1Dv9Fp76">/dev/null
curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=awk '/download/{print $NF}' ./cookie
&id=1Tdn3yqpZ79X7R1Ql0zNlNScB1Dv9Fp76"-o yolor_p6.pt
rm./cookie
curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=1UflcHlN5ERPdhahMivQYCbWWw7d2wY7U">/dev/null
curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=awk '/download/{print $NF}' ./cookie
&id=1UflcHlN5ERPdhahMivQYCbWWw7d2wY7U"-o yolor_w6.pt
rm./cookie
我不熟悉 colab,这就是我使用这个简单解决方案的原因。
关于python - 在 YOLO 中无法获得正确的 yolo 预训练权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71278688/