图像分类模型评估之用python绘制混淆矩阵confusion_matrix_python confusion_matrix

简介: 图像分类模型评估之用python绘制混淆矩阵confusion_matrix_python confusion_matrix

设置设备

device = torch.device(“cuda:0” if torch.cuda.is_available() else “cpu”)

定义数据增强

transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

加载数据集

data_path = “path/to/dataset”
dataset = datasets.ImageFolder(root=data_path, transform=transform)

加载模型

model_path = “path/to/model.pth”
model = torch.load(model_path)
model.to(device)
model.eval()

获取预测结果和标签

labels = []
preds = []
for inputs, targets in dataset:
inputs = inputs.unsqueeze(0).to(device)
targets = targets.to(device)
outputs = model(inputs)
_, predicted = torch.max(outputs.data, 1)
labels.append(targets.item())
preds.append(predicted.item())

生成混淆矩阵

cm = confusion_matrix(labels, preds)
classes = dataset.classes
cm_df = pd.DataFrame(cm, index=classes, columns=classes)

保存为CSV文件

cm_df.to_csv(“confusion_matrix.csv”)
print(“Confusion matrix saved as confusion_matrix.csv”)
#### 
#### 
#### 非 ImageNet数据格式,定义导入数据的类名和方法!!!!
导入数据的类和函数定义代码:
import os
import numpy as np
import torch
from torch.utils.data import Dataset
from torchvision import transforms
from PIL import Image
class CustomDataset(Dataset):
def init(self, data_dir, transform=None):
self.data_dir = data_dir
self.transform = transform
self.img_files = os.listdir(data_dir)
def __len__(self):
    return len(self.img_files)
def __getitem__(self, index):
    img_path = os.path.join(self.data_dir, self.img_files[index])
    img = Image.open(img_path).convert('RGB')
    label = self.get_label_from_filename(self.img_files[index])
    
    if self.transform:
        img = self.transform(img)
    return img, label
def get_label_from_filename(self, filename):
    label = filename.split('.')[0] # 假设文件名为"label.image_id.jpg"格式
    label = label.split('_')[0] # 仅保留label信息
    return int(label)

加载数据集并进行预处理

data_dir = “your_data_dir”
transform = transforms.Compose([
transforms.Resize((224, 224)), # 图像大小调整为224x224
transforms.ToTensor(), # 将图像转换为Tensor格式,并将像素值缩放到[0, 1]
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) # 图像标准化
])
dataset = CustomDataset(data_dir, transform=transform)
#### 非imageNet数据格式,完成生成混淆矩阵程序代码!!!!
注意点:
1.自定义数据通过 “\_” 来进行获取图片的类别 label 标签值,所以你的命名中是否包含了标签值,如果没有标签值,还是需要自行修改的,当然有的话,也需要思考一下,标签值放置的位置在spilt后列表的那个位置!  
  
 2.对了,那个后面部分需要缩进,哈哈,python代码简洁,但缩进问题就很抽象,从
model = torch.load('model.pth')  开始直接缩进!!!
import torch
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
from sklearn.metrics import confusion_matrix
import pandas as pd
import numpy as np

自定义数据集类

class MyDataset(torch.utils.data.Dataset):
def init(self, root_dir, transform=None):
self.root_dir = root_dir
self.transform = transform
self.img_list = os.listdir(root_dir)
def __len__(self):
    return len(self.img_list)
def __getitem__(self, idx):
    img_name = os.path.join(self.root_dir, self.img_list[idx])

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


相关文章
|
6天前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:Transformer模型
使用Python实现深度学习模型:Transformer模型
18 0
使用Python实现深度学习模型:Transformer模型
|
8天前
|
机器学习/深度学习 自然语言处理 TensorFlow
|
10天前
|
机器学习/深度学习 算法 TensorFlow
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
谷物识别系统,本系统使用Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经算法网络模型,通过对11种谷物图片数据集('大米', '小米', '燕麦', '玉米渣', '红豆', '绿豆', '花生仁', '荞麦', '黄豆', '黑米', '黑豆')进行训练,得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。
44 0
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
|
14天前
|
机器学习/深度学习 人工智能 算法
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
52 0
|
15天前
|
Java 程序员 API
全民上手大模型--ollama+langchain+通义千问零费用java+python跑通本机大模型
全民上手大模型--ollama+langchain+通义千问零费用java+python跑通本机大模型
104 0
|
16天前
|
机器学习/深度学习 自然语言处理 TensorFlow
构建高效的机器学习模型:基于Python和TensorFlow的实践
构建高效的机器学习模型:基于Python和TensorFlow的实践
36 0
|
16天前
|
机器学习/深度学习 Python
利用Python实现一个简单的机器学习模型:线性回归详解
利用Python实现一个简单的机器学习模型:线性回归详解
31 2
|
21天前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:注意力机制(Attention)
使用Python实现深度学习模型:注意力机制(Attention)
32 0
使用Python实现深度学习模型:注意力机制(Attention)
|
21天前
|
机器学习/深度学习 算法 数据可视化
统计建模——模型——python为例
统计建模——模型——python为例
|
23天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:迁移学习与预训练模型
使用Python实现深度学习模型:迁移学习与预训练模型
43 0