使用pytorch预训练模型分类与特征提取
2017-06-01 12:12
549 查看
pytorch应该是深度学习框架里面比较好使用的了,相比于tensorflow,mxnet。可能在用户上稍微少一点,有的时候出问题不好找文章。下面就使用pytorch预训练模型做分类和特征提取,pytorch文档可以参考:pytorch docs , 模型是imagenet2012训练的标签可参考:imagenet2012
labels ,模型预测的下标按从上到下,起始(n01440764)为0
labels ,模型预测的下标按从上到下,起始(n01440764)为0
#encoding=utf-8 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 img_to_tensor = transforms.ToTensor() def make_model(): resmodel=models.resnet34(pretrained=True) resmodel.cuda()#将模型从CPU发送到GPU,如果没有GPU则删除该行 return resmodel #分类 def inference(resmodel,imgpath): resmodel.eval()#必需,否则预测结果是错误的 img=Image.open(imgpath) img=img.resize((224,224)) tensor=img_to_tensor(img) tensor=tensor.resize_(1,3,224,224) tensor=tensor.cuda()#将数据发送到GPU,数据和模型在同一个设备上运行 result=resmodel(Variable(tensor)) result_npy=result.data.cpu().numpy()#将结果传到CPU,并转换为numpy格式 max_index=np.argmax(result_npy[0]) return max_index #特征提取 def extract_feature(resmodel,imgpath): resmodel.fc=torch.nn.LeakyReLU(0.1) resmodel.eval() img=Image.open(imgpath) img=img.resize((224,224)) tensor=img_to_tensor(img) tensor=tensor.resize_(1,3,224,224) tensor=tensor.cuda() result=resmodel(Variable(tensor)) result_npy=result.data.cpu().numpy() return result_npy[0] if __name__=="__main__": model=make_model() imgpath='path_to_img/xxx.jpg' print inference(model,imgpath) print extract_feature(model, imgpath)
相关文章推荐
- 使用mxnet的预训练模型(pretrained model)分类与特征提取
- 使用opensmile提取音频的特征,得到特征向量,并扔进libsvm中进行分类训练测试
- 使用keras预训练VGG16模型参数分类图像并提取特征
- Tensorflow保存模型,恢复模型,使用训练好的模型进行预测和提取中间输出(特征)【转】
- NLP用CNN分类Mnist,提取出来的特征训练SVM及Keras的使用(demo)
- Tensorflow保存模型,恢复模型,使用训练好的模型进行预测和提取中间输出(特征)
- [原]有关Caffe训练好的模型在Python接口下使用分类不准确的问题解决
- 基于caffe特征可视化 以及 用训练好的模型进行分类
- 代码笔记:caffereid利用训练好的模型提取特征
- caffe学习笔记2_用一个预训练模型提取特征
- caffe提取已训练好模型的特征
- caffe+python 使用训练好的VGG16模型 对 单张图片进行分类,输出置信度
- 使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类
- 薛开宇学习笔记二之总结笔记(用一个预训练模型提取特征)--Linux语法总结
- 基于caffe特征可视化 以及 用训练好的模型进行分类 2
- 【Caffe的C++接口使用说明(三)】Ubuntu14.04下Caffe利用训练好的模型进行分类的C++接口使用说明(三)
- 使用MATLAB加载训练好的caffe模型进行识别分类
- 【caffe:从一个预训练模型中提取特征】
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【三】使用Caffe的MemoryData层与VGG网络模型提取Mat的特征
- caffe+python 使用训练好的VGG16模型 对 单张图片进行分类,输出置信度