凯哥英语视频
今天一个朋友用YOLO4预测图片报错:size mismatch for yolo_head2.1.bias: copying a param with shape torch.Size(【75】) from checkpoint, the shape in current model is torch.Size(【18】).
网上有说,是在dataloader环节出现了问题。在数据读取时一个判断写的越界了,如下所示
def make_dataset(dir, opt):
images = []
assert os.path.isdir(dir), '%s is not a valid directory' % dir
fileList = sorted(os.walk(dir))
for root, _, fnames in fileList:
for fname in fnames:
if is_image_file(fname):
path = os.path.join(root, fname)
if ((opt.phase=='test') or (opt.phase=='train') and min(Image.open(path).size) >= 512):
images.append(path)
return images
当加载的图片小于512就会报错,把判断改小就解决了bug。
所以出现这个报错,就说明是训练数据没有加载成功,检查数据加载的相关程序。
然而以上并不能解决报错
然后我结合了VOC2007的数据集,发现应该是朋友训练图片尺寸问题(VOC2007基本都是500乘以(350-450)的长宽)。
1.首先对图片进行尺寸转换
import PIL.Image as Image
infile = 'images/train/202108315.jpg'
outfile = 'images/train/1202108315.jpg'
im = Image.open(infile)