我有一批医学图像,想对它们进行特征提取。为此,我打算使用预训练的卷积神经网络VGG16。该网络有一系列目标类别,这些类别都是普通物体的名称。我想知道如何修改它以进行特征提取而不是对象分类?我是说应该对其架构进行哪些更改?
回答:
这取决于你使用的语言和框架,你应该在问题中指定这些信息。在PyTorch中,你可以这样做:
original_model = models.vgg19(pretrained=True).eval()feature_extractor = nn.Sequential(*list(original_model.features.children()))normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])img = io.imread("some_image.png")img = transform.resize(img, (224, 224), order=3)img = torch.from_numpy(img)img = img.permute(2, 0, 1)img = normalize(img)img = img.unsqueeze(0)with torch.no_grad(): features = feature_extractor.forward(img)
请注意缩放和归一化,VGG在224×224的归一化图像(使用代码中的值)上表现最佳。