代码地址:https://github.com/WongKinYiu/yolor
1.数据集: PASCAL VOC
数据集部分:我的是一开始就是YOLO格式,但是这个项目需要labels和图片放在同一个文件夹中,
或者自己改一下代码部,更改地址: utils -> datasets.py 文件中(373行)
sa, sb = os.sep + 'images' + os.sep, os.sep + 'labels' + os.sep # /images/, /labels/ substrings
return [x.replace(sa, sb, 1).replace(x.split('.')[-1], 'txt') for x in img_paths]
wandb_id
解决办法
:注释掉 test.py 中以下这一块代码 # Plot images
if plots and batch_i < 3:
f = save_dir / f'test_batch{batch_i}_labels.jpg' # filename
plot_images(img, targets, paths, f, names) # labels
f = save_dir / f'test_batch{batch_i}_pred.jpg'
plot_images(img, output_to_target(output, width, height), paths, f, names) # predictions
解决办法
:更改 test.py 中代码 try:
ckpt = torch.load(weights, map_location=device) # load checkpoint 更改weights[0] 保存的模型文件。
ckpt['model'] = {k: v for k, v in ckpt['model'].items() if model.state_dict()[k].numel() == v.numel()}
model.load_state_dict(ckpt['model'], strict=False)
except:
print('11', weights)
load_darknet_weights(model, weights) # 更改weights[0] 解析并加载存储在'weights'中的权重
imgsz = check_img_size(imgsz, s=64) # check img_size
File "train.py", line 545, in <module>
train(hyp, opt, device, tb_writer, wandb)
File "train.py", line 404, in train
'wandb_id': wandb_run.id if wandb else None}
*解决办法
: 在 train.py 我就自己手动加上 wandb_id, 更改如下:
ckpt = {'epoch': epoch,
'best_fitness': best_fitness,
'best_fitness_p': best_fitness_p,
'best_fitness_r': best_fitness_r,
'best_fitness_ap50': best_fitness_ap50,
'best_fitness_ap': best_fitness_ap,
'best_fitness_f': best_fitness_f,
'training_results': f.read(),
'model': ema.ema.module.state_dict() if hasattr(ema, 'module') else ema.ema.state_dict(),
'optimizer': None if final_epoch else optimizer.state_dict(),
'wandb_id': 'f4c0d9a5c52db44ec548217c0c0bbaa********' # 这里写上自己的wadb id
# 'wandb_id': wandb_run.id if wandb else None # 这里我注释掉了
}
import wandb
wandb.init()