我正在做多任务学习的研究,想从YOLOv8的头部提取特征图进行比较。我正在使用 YOLOv8n 而不是使用的 ResNet18 模型修改 here 的教程。
model = YOLO('models/yolov8n.pt')
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize(mean=0., std=1.)
])
image = Image.open(str('images/puppies.jpg'))
image = transform(image)
image = image.unsqueeze(0)
feature_map = model.model.model[15](image)
feature_map.shape
错误: RuntimeError:给定 groups=1,权重大小为 [128, 64, 3, 3],预期输入 [1, 3, 224, 224] 有 64 个通道,但得到了 3 个通道
我阅读了 YOLOv8 架构,怀疑传递到模型中的图像是恒定的,并且不会改变各层所期望的图像(如果我错了,请纠正我)。原因是因为当我想在发生任何串联之前从图层中提取特征时,代码会起作用。我很确定我的代码是错误的,但不确定如何正确实现它。
这个问题你解决了吗?我还需要在 Yolov8 中提取任意层。