使用预先训练的VGG-16从图像中获取特征向量

时间:2020-04-13 05:02:19

标签: deep-learning computer-vision pytorch vgg-net

我想通过将图像通过预先训练的VGG-16来获得图像的特征向量。我使用了经过预训练的Resnet50来获取特征向量,并且效果很好。但是,当我使用相同的方法从VGG-16网络获取特征向量时,却没有获得我认为应该获得的4096维向量。我从各种来源获得了代码,如下所示:

vgg16_model=models.vgg16(pretrained=True)
modules=list(vgg16_model.children())[:-1]
vgg16_model=nn.Sequential(*modules)

data=moveaxis(data,2,0)
img_var=Variable(torch.from_numpy(data).unsqueeze(0)).float()
features_var=vgg16_model(img_var)
features=features_var.data
features=features.data.numpy()
print(features.shape)

变量“data”是尺寸为(300, 400, 3)的图像numpy数组 因此,我使用移动轴使轴混杂,因此我有3个通道而不是300个。 我得到的输出(features.shape)是:(1, 512, 7, 7) 我想要像softg层之前的VGG-16给出的4096-d向量。 我什至尝试了list(vgg16_model.classifier.children())[:-1]的方法,但是效果也不太好。关于此的讨论很多,但没有一个对我有用。让我知道我可能要去哪里了。谢谢!

0 个答案:

没有答案
相关问题