详细介绍Pytorch中torchvision的相关使用

torchvision 是 PyTorch 的一个官方库,主要用于处理计算机视觉任务。提供了许多常用的数据集、模型架构、图像转换等功能,使得计算机视觉任务的开发变得更加高效和便捷。以下是对 torchvision 主要功能的详细介绍:

1. 数据集(Datasets)

torchvision 提供了许多常用的计算机视觉数据集,如 CIFAR-10、MNIST、ImageNet 等。这些数据集可以直接通过 torchvision.datasets 模块加载。

示例:加载 CIFAR-10 数据集
python 复制代码
from torchvision import datasets
from torch.utils.data import DataLoader

# 加载 CIFAR-10 数据集
train_dataset = datasets.CIFAR10(root='./data', train=True, download=True)
test_dataset = datasets.CIFAR10(root='./data', train=False, download=True)

# 使用 DataLoader 加载数据
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)

2. 图像转换(Transforms)

torchvision.transforms 模块提供了许多常用的图像转换操作,如裁剪、缩放、旋转、翻转等。这些转换操作可以单独使用,也可以组合使用。

示例:组合图像转换操作
python 复制代码
from torchvision import transforms

# 定义转换操作
transform = transforms.Compose([
    transforms.Resize((256, 256)),
    transforms.RandomCrop(224),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

# 应用转换操作
train_dataset.transform = transform
test_dataset.transform = transform

3. 预训练模型(Models)

torchvision.models 模块提供了许多常用的预训练模型,如 ResNet、VGG、AlexNet、DenseNet 等。这些模型可以直接用于迁移学习或作为基准模型。

示例:加载预训练的 ResNet-50 模型
python 复制代码
from torchvision import models
import torch.nn as nn

# 加载预训练的 ResNet-50 模型
model = models.resnet50(pretrained=True)

# 修改最后一层以适应新的分类任务
num_classes = 10
model.fc = nn.Linear(model.fc.in_features, num_classes)

4. 数据加载器(DataLoader)

torch.utils.data.DataLoader 是一个实用的数据加载器,可以与 torchvision 提供的数据集一起使用,方便地进行批量加载和数据迭代。

示例:使用 DataLoader 加载数据
python 复制代码
from torch.utils.data import DataLoader

# 使用 DataLoader 加载数据
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)

# 训练模型
for images, labels in train_loader:
    # 训练代码
    pass

5. 自定义数据集(Custom Datasets)

如果需要使用自定义数据集,可以继承 torch.utils.data.Dataset 类,并实现 __len____getitem__ 方法。

示例:自定义数据集
python 复制代码
from torch.utils.data import Dataset
from PIL import Image
import os

class CustomDataset(Dataset):
    def __init__(self, root_dir, transform=None):
        self.root_dir = root_dir
        self.transform = transform
        self.images = os.listdir(root_dir)

    def __len__(self):
        return len(self.images)

    def __getitem__(self, idx):
        img_path = os.path.join(self.root_dir, self.images[idx])
        image = Image.open(img_path)
        if self.transform:
            image = self.transform(image)
        return image

# 使用自定义数据集
custom_dataset = CustomDataset(root_dir='path/to/dataset', transform=transform)
custom_loader = DataLoader(custom_dataset, batch_size=64, shuffle=True)

6. 可视化(Visualization)

torchvision 还提供了一些用于可视化的工具,如 torchvision.utils.make_grid 可以将多个图像拼接成一个网格图像。

示例:可视化图像
python 复制代码
import matplotlib.pyplot as plt
from torchvision import utils

# 获取一批图像
images, labels = next(iter(train_loader))

# 将图像拼接成网格
grid = utils.make_grid(images)

# 显示图像
plt.imshow(grid.permute(1, 2, 0))
plt.show()
相关推荐
charley.layabox1 小时前
8月1日ChinaJoy酒会 | 游戏出海高端私享局 | 平台 × 发行 × 投资 × 研发精英畅饮畅聊
人工智能·游戏
DFRobot智位机器人2 小时前
AIOT开发选型:行空板 K10 与 M10 适用场景与选型深度解析
人工智能
想成为风筝4 小时前
从零开始学习深度学习—水果分类之PyQt5App
人工智能·深度学习·计算机视觉·pyqt
F_D_Z4 小时前
MMaDA:多模态大型扩散语言模型
人工智能·语言模型·自然语言处理
江沉晚呤时4 小时前
在 C# 中调用 Python 脚本:实现跨语言功能集成
python·microsoft·c#·.net·.netcore·.net core
大知闲闲哟4 小时前
深度学习G2周:人脸图像生成(DCGAN)
人工智能·深度学习
飞哥数智坊5 小时前
Coze实战第15讲:钱都去哪儿了?Coze+飞书搭建自动记账系统
人工智能·coze
wenzhangli75 小时前
低代码引擎核心技术:OneCode常用动作事件速查手册及注解驱动开发详解
人工智能·低代码·云原生
电脑能手5 小时前
如何远程访问在WSL运行的Jupyter Notebook
ide·python·jupyter
Edward-tan5 小时前
CCPD 车牌数据集提取标注,并转为标准 YOLO 格式
python