
通过PyTorch,利用Resnet提取特征并将其保存为txt文件是一种常见方法。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
经过仅一天的时间的接触,我发现使用PyTorch的学习曲线确实比TensorFlow更为迅速。它允许更便捷地运用预训练的网络来提取图像特征。以下是提取一张JPEG图像特征的程序的示例:
```python
# -*- coding: utf-8 -*-
import os.path
import torch
import torch.nn as nn
from torchvision import models, transforms
from torch.autograd import Variable
import numpy as np
from PIL import Image
features_dir = ./features
class FeatureExtractor(nn.Module):
def __init__(self):
super(FeatureExtractor, self).__init__()
self.resnet = models.resnet18(pretrained=True)
self.resnet.eval() # 设置为评估模式
def forward(self, image):
transform = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
image = transform(image) # 应用转换
input_tensor = Variable(image.unsqueeze(0)) # 添加批次维度
features = self.resnet(input_tensor) # 通过网络提取特征
return features
if __name__ == __main__:
extractor = FeatureExtractor()
image_path = path/to/your/image.jpg # 将此替换为您的图像路径
try:
image = Image.open(image_path) # 打开图像文件
features = extractor(image) # 使用提取器提取特征
print(Features shape:, features[0].size()) # 打印特征形状
except FileNotFoundError: # 处理文件未找到错误情况,避免程序崩溃。可以根据实际情况进行更详细的错误处理。 比如提示用户输入正确的路径等。
```
全部评论 (0)


