VGG16提取图片特征

2023-05-16

import os
import numpy as np

import torch
import torch.nn
import torchvision.models as models
from torch.autograd import Variable
import torch.cuda
import torchvision.transforms as transforms

from PIL import Image

TARGET_IMG_SIZE = 224
img_to_tensor = transforms.ToTensor()


def make_model():
    model = models.vgg16(pretrained=True).features[:28]  # 其实就是定位到第28层,对照着上面的key看就可以理解
    model = model.eval()  # 一定要有这行,不然运算速度会变慢(要求梯度)而且会影响结果
   # model.cuda()  # 将模型从CPU发送到GPU,如果没有GPU则删除该行
    return model


# 特征提取
def extract_feature(model, imgpath):
    model.eval()  # 必须要有,不然会影响特征提取结果

    img = Image.open(imgpath)  # 读取图片
    img = img.resize((TARGET_IMG_SIZE, TARGET_IMG_SIZE))
    tensor = img_to_tensor(img)  # 将图片转化成tensor
    #tensor = tensor.cuda()  # 如果只是在cpu上跑的话要将这行去掉
    tensor = Variable(torch.unsqueeze(tensor, dim=0).float(), requires_grad=False)

    result = model(Variable(tensor))
    result_npy = result.data.cpu().numpy()  # 保存的时候一定要记得转成cpu形式的,不然可能会出错

    return result_npy[0]  # 返回的矩阵shape是[1, 512, 14, 14],这么做是为了让shape变回[512, 14,14]


if __name__ == "__main__":
    model = make_model()
    imgpath = 'imageplace/1.jpg'
    tmp = extract_feature(model, imgpath)
    print(tmp.shape)  # 打印出得到的tensor的shape
    print(tmp) 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VGG16提取图片特征 的相关文章

  • 如何理解RL中on-policy与off-policy

    on policy 和off policy是强化学习中出现最多的两个概念 xff0c 也是最容易让初学者迷惑的概念之一 网上很多博客都是从是否使用当前policy和其它policy角度出发解释的 xff0c 但是笔者认为这样解释诚然正确但是
  • COCO image caption数据集格式

    最近在做image caption的任务 xff0c 因为有自己的数据集 xff0c 因此需要自己创建字典 annotation等信息 而COCO官方针对coco image caption任务的数据集写了一个API接口 xff08 pyc
  • OpenCV的highgui模块

    Opencv把用于操作系统 文件系统以及摄像机等硬件设备交互的函数纳入到highgui xff08 High level Graphical User Interface 模块中 xff0c 我们可以利用该模块方便地打开窗口 显示图像 读出
  • 我程序人生的启蒙书

    是这本书 xff0c 大一的我接触了c和c 43 43 xff0c 为数学专业的我打开了通往另一个世界的道路 xff0c 做一名优秀的程序员 是这本书 xff0c 大一的我开始废寝忘食的学习 xff0c 自习室里往往就放着这一本数 xff0
  • 解决当使用element table fix column 固定列时,滚动条在固定列下方无法滚动

    解决当使用element table fix column 固定列时 xff0c 滚动条在固定列下方无法滚动 在全局css中添加这行代码 xff0c 提高滚动条在z轴的坐标 建议使用下面的代码 xff0c 使用参考文章里面的代码会导致 右f
  • 使用funcraft管理阿里云函数计算

    Fun 是一个用于支持Serverless应用部署的工具 xff0c 能帮助您便捷地管理函数计算 API 网关和日志服务等资源 它通过一个资源配置文件 xff08 template yml xff09 xff0c 协助您进行开发 构建和部署
  • 阿里云 ServerLess:Todo list 应用安装

    安装Node js环境 执行如下命令 xff0c 下载Node js安装包 xff1a wget https npm taobao org mirrors node v12 4 0 node v12 4 0 linux x64 tar xz
  • 如何通过CSS绘制三角形和小箭头

    1 绘制三角形的作用 xff0c 主要是提供指示性 xff0c 如下图 2 那么如何画出三角形呢 xff1f 我们先看下border的用法 lt div class 61 34 box 34 gt lt div gt box box siz
  • 利用python pil 实现给图片上添加文字

    最近的一个工程项目是讲文字添加到图像上 使用了opencv xff0c 结果发现利用opencv给图像添加文字有局限 xff08 1 xff09 可利用的字体类型比较少 xff0c 需要安装Freetype扩展 xff0c 比较复杂 xff
  • Sklearn到底是什么?

    更多详细代码关注sklearn中文官方文档 xff1a http www scikitlearn com cn http lijiancheng0614 github io scikit learn index html 1 概念 Skle
  • esp8266 error: espcomm_open failed

    gpi0 没有接地 xff0c 接上地就可以了注意和usb分出的gnd接口接的是同一个地
  • 微信小程序quickstart项目中有关userInfoReadyCallback的解释

    userInfoReadyCallback 在index js中定义 xff0c 在app js中使用 附app js代码 xff1a app js App onLaunch function 展示本地存储能力 var logs 61 wx
  • 微信小程序引入模块中wxml、wxss、js

    先描述下目录结构 xff0c 见下图 UI页面见下图 其中ok按键是引入的log模块 xff0c log模块非page页 indexButton是index页本身拥有的组件 xff0c index页直接导入Log模块中的组件 xff0c c

随机推荐