当前位置:   article > 正文

利用预训练的VGG提取图像特征(pytorch)_.avgpool classifier

.avgpool classifier

核心部分

a=vgg.features(img)#使用feature获取特征层(卷积层)的特征;输出特征维度为【1,512,4,4】
b=vgg.avgpool(a)#使用vgg定义的池化操作;输出特征维度为【1,512,7,7】
b=torch.flatten(b,1)#将特征变成一维度;输出特征维度为【1,25088】
c=vgg.classifier[:1]#使用分类层的的第一层,当然可以选择数;输出特征维度为【1,4096】
  • 1
  • 2
  • 3
  • 4

前言

需要pytorch预训练模型VGG19提取图像特征,但VGG19最后一层输出1000维的图像分类结果。我们仅仅需要模型中某一层的输出特征,例如全连接层4096维度的特征。

1、配置预训练模型

import torch
import torchvision.models as models
# 如果联网使用pytorch的预训练模型,
# 将pretrained设置为True, 就会自动下载vgg19的模型放在本地缓存中.
vgg = models.vgg19(pretrained=True)
  • 1
  • 2
  • 3
  • 4
  • 5

2、输出网络结构

print(vgg)
  • 1

可以看到vgg有features,avgpool,classifier三部分组成

3、查看vgg实现细节

vgg19下右击鼠标,依次选择goto,implementations
在这里插入图片描述
找到forward部分,我们发现vgg总共分四步执行,这样我们可以分步获得图像的特征
在这里插入图片描述
4、自定义获取图像的特征

a=vgg.features(img)#使用feature获取特征层(卷积层)的特征;输出特征维度为【1,512,4,4】
b=vgg.avgpool(a)#使用vgg定义的池化操作;输出特征维度为【1,512,7,7】
b=torch.flatten(b,1)#将特征变成一维度;输出特征维度为【1,25088】
c=vgg.classifier[:1]#使用分类层的的第一层,当然可以选择数;输出特征维度为【1,4096】
  • 1
  • 2
  • 3
  • 4

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/289224
推荐阅读
相关标签
  

闽ICP备14008679号