资源包:
import torchvision:PyTorch 提供的视觉库,包含了常用的计算机视觉模型架构、数据集以及图像转换工具。
from torchvision import datasets, models:导入 torchvision 中的 datasets 和 models 模块,用于加载常用的数据集和模型。
import subprocess:用于调用系统子进程执行命令。
from tkinter import filedialog:导入 tkinter 模块,用于创建 GUI 界面、文件对话框和消息框等用户交互组件。
import torch
import numpy as np
from torchvision import datasets, models
import torch.nn as nn
from torch.utils.data import DataLoader
import torchvision.transforms as transforms
import os
import tkinter as tk
from tkinter import filedialog
import cv2
import subprocess
from PIL import Image, ImageTk
from PIL.Image import Resampling
注:这段代码主要是结合 PyTorch 和 tkinter 构建了一个图像处理应用程序,通过 tkinter 提供的界面与用户进行交互,然后利用 PyTorch 和 OpenCV 进行图像处理和深度学习任务。
注:这两个路径变量是用来指定数据集和模型文件的存储路径,以便程序能够方便地访问数据和载入模型进行相关的深度学习任务。
# 设置数据目录和模型路径
data_dir = 'C:/Users/HUAWEI/PycharmProjects/pythonProject1/二分类/data'
model_path = 'cat_dog_classifier.pth'
# 定义图像转换
data_transforms = {
'test': transforms.Compose([
transforms.Resize(size=224),
transforms.CenterCrop(size=224),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),
}
注:在这段代码中,作者定义了一个名为 data_transforms 的字典,其中包含了针对测试数据的图像转换操作。这些图像转换操作通常用于将原始图像数据转换为神经网络模型可接受的格式,同时进行一定的预处理以提高模型性能,通过这些图像转换操作,测试数据在输入神经网络之前会被经过一系列的预处理操作,以便更好地适应神经网络的训练和推断需求,同时有助于提高模型的性能和收敛速度。
# 使用GPU
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
注:torch.cuda.is_available():这是 PyTorch 提供的函数,用于检测当前系统是否支持 CUDA,即是否有可用的 GPU 资源,通过这段代码,作者实现了将模型加载到 GPU 上进行计算的逻辑,这样可以利用 GPU 的并行计算能力加速深度学习任务的执行速度。如果系统支持 CUDA,模型将在 GPU 上执行,否则将在 CPU 上执行。
# 加载没有预训练权重的ResNet模型
model = models.resnet50(weights=None) # 使用pretrained=False
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 2)
model.load_state_dict(torch.load(model_path))
model = model.to(device)
model.eval()
注:加载了一个不带预训练权重的 ResNet-50 模型,并对其进行了适应二分类任务的定制化处理,以便进行后续训练或推理操作。
# 创建Tkinter窗口
root = tk.Tk()
root.title('猫狗识别'