欢迎访问宙启技术站
智能推送

使用Python实现的torchvision.modelsmobilenet_v2模型的图像识别能力

发布时间:2023-12-12 08:25:05

torchvision.models模块中提供了许多常用的预训练模型,包括mobilenet_v2模型。下面是使用Python实现的torchvision.models.mobilenet_v2模型的图像识别能力的例子。

import torch
from PIL import Image
from torchvision import models, transforms

# 加载预训练模型
model = models.mobilenet_v2(pretrained=True)
model.eval()

# 定义图像转换
preprocess = 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_path = 'path/to/your/image.jpg'
image = Image.open(image_path)

# 预处理图像
input_tensor = preprocess(image)
input_batch = input_tensor.unsqueeze(0)

# 判断是否支持GPU加速
if torch.cuda.is_available():
    input_batch = input_batch.to('cuda')
    model.to('cuda')

# 进行图像分类
with torch.no_grad():
    output = model(input_batch)

# 加载类标签
labels_path = 'path/to/imagenet_labels.txt'
with open(labels_path) as f:
    labels = f.readlines()
labels = [label.strip() for label in labels]

# 输出结果
_, predicted_idx = torch.max(output, 1)
predicted_label = labels[predicted_idx.item()]
print('Predicted label: {}'.format(predicted_label))

在上面的例子中,首先加载了预训练的mobilenet_v2模型,并将其设置为评估模式。然后,定义了一个图像转换函数,对输入图像进行预处理。接下来,加载待分类的图像,并应用预处理函数得到输入张量。如果GPU可用,则将输入张量和模型转移到GPU上。然后,通过使用该模型进行前向传播得到输出。最后,加载类标签并利用预测的类索引获取预测结果。

请注意,你需要将'path/to/your/image.jpg''path/to/imagenet_labels.txt'分别替换为你的图像路径和类标签文件路径。

此示例仅适用于在ImageNet数据集上进行的分类任务,该数据集包含1000个类别。如果你希望使用该模型进行其他类别的图像分类任务,你需要根据自己的需求修改加载的类标签文件和相应的类索引。