Open futureflsl opened 3 years ago
load完weights再save就行了
谢谢大佬
@futureflsl 你解决这个问题吗?我也有同样的问题,根据上面建议用了下面的代码,但是出现了错误。
import torch
model = torch.load("./weights/yolov4-pacsp.weights") torch.save(model, "./weights/yolov4-pacsp_new.pt")
error: File "/home/sei/anaconda3/envs/run-pytorch/lib/python3.8/site-packages/torch/serialization.py", line 764, in _legacy_load magic_number = pickle_module.load(f, **pickle_load_args) _pickle.UnpicklingError: invalid load key, '\x00'.
讀取權重方式
cfg = 'your_cfg.cfg'
weights = 'your_weights.weights'
model = Darknet(cfg)
load_darknet_weights(model, weights)
@WongKinYiu 谢谢您。根据您的建议,我用了下面的代码进行转换。转换成功了,但是用转换了的weights file进行训练时出现了下述错误。请您看看好吗?我是一个AI新手,真的非常感谢您的帮助。
import torch from models.models import *
我是用dakrnet yolov4训练的模型yolov4.weights但是转换后提示如下错误 assert not any(u), "Unsupported fields %s in %s. See https://github.com/ultralytics/yolov3/issues/631" % (u, path) AssertionError: Unsupported fields ['max_delta'] in trainedmodel/yolov4.cfg. See https://github.com/ultralytics/yolov3/issues/631 我用https://github.com/Tianxiaomo/pytorch-YOLOv4这个项目是可以将yolov4.weights转成pth,但是转换也不能用。目前还没有发现一个项目能把dakrnet yolov4训练的模型yolov4.weights但是转换pytorch模型,希望大佬探索一下
from models.models import *
from utils.datasets import *
from utils.general import *
cfg = input("cfg路径:")
weights = input("weights路径:")
model = Darknet(cfg)
if weights.endswith('.pt'):
model.load_state_dict(torch.load(weights, map_location='cpu')['model'])
save_weights(model, path='converted.weights', cutoff=-1)
print("Success: converted '%s' to 'converted.weights'" % weights)
elif weights.endswith('.weights'):
_ = load_darknet_weights(model, weights)
chkpt = {'epoch': -1, 'best_loss': None, 'model': model.state_dict(), 'optimizer': None}
torch.save(chkpt, 'converted.pt')
print("Success: converted '%s' to 'converted.pt'" % weights)
不知道这个项目是不是有将 yolov4.weights转换成yolov4.pth代码?