图像分类----测试及评估模型性能

图像分类----测试及评估模型性能

测试及评估模型性能

  • 图像分类----测试及评估模型性能
  • 代码流程
    • 1.引入库
    • 2.图片预处理
    • 3.图像分类预测并生成可解释分析图

代码流程

通过Python API方式,使用torchcam算法库,对Pytorch预训练ImageNet-1000图像分类模型进行基于CAM的可解释性分析。

1.引入库

import torch
from PIL import Image
import matplotlib.pyplot as plt
from torchvision import transforms
from torchvision.models import resnet18
from torchcam.methods import SmoothGradCAMpp 
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')

2.图片预处理

# 测试集图像预处理-RCTN:缩放、裁剪、转 Tensor、归一化
test_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])
                                    ])

3.图像分类预测并生成可解释分析图

cam_extractor = SmoothGradCAMpp(model)
model = resnet18(pretrained=True).eval().to(device)
img_path = '图像'
img_pil = Image.open(img_path)
input_tensor = test_transform(img_pil).unsqueeze(0).to(device) # 预处理
pred_logits = model(input_tensor)
pred_top1 = torch.topk(pred_logits, 1)
pred_id = pred_top1[1].detach().cpu().numpy().squeeze().item()
activation_map = cam_extractor(pred_id, pred_logits)
activation_map = activation_map[0][0].detach().cpu().numpy()

你可能感兴趣的:(图像分类,分类,python,深度学习)