PIL与TorchVision概述
PIL(Python Imaging Library)及其分支Pillow是Python中处理图像的基础库,提供打开、操作和保存多种图像格式的功能。TorchVision是PyTorch的官方库,专注于计算机视觉任务,包含数据集、模型架构和图像转换工具,常与PIL/Pillow结合使用。
PIL/Pillow的核心功能
图像加载与保存
通过Image.open()
加载图像,image.save()
保存图像,支持JPEG、PNG等格式。
基础操作
包括裁剪(crop
)、旋转(rotate
)、调整大小(resize
)和色彩模式转换(如RGB转灰度)。
示例代码
from PIL import Image
image = Image.open("example.jpg")
image = image.resize((256, 256))
image.save("resized.jpg")
TorchVision的核心功能
数据预处理
提供transforms
模块,包含Compose
、ToTensor
、Normalize
等工具,用于将PIL图像转换为张量并标准化。
预训练模型
内置ResNet、VGG等模型,可直接加载用于迁移学习或推理。
数据集工具
包含常见数据集(如CIFAR-10、ImageNet)的加载接口,兼容torch.utils.data.DataLoader
。
PIL与TorchVision的协作
转换流程
PIL处理原始图像(如裁剪),TorchVision的transforms
将图像转为张量并归一化,适合模型输入。
代码示例
from torchvision import transforms
transform = transforms.Compose([
transforms.Resize(256),
transforms.ToTensor(),
transforms.Normalize(mean=[0.5], std=[0.5])
])
tensor_image = transform(image) # image为PIL对象
关键差异
用途
- PIL:基础图像处理(编辑、格式转换)。
- TorchVision:计算机视觉任务(数据增强、模型训练)。
数据类型
- PIL操作
Image
对象,TorchVision处理torch.Tensor
。
应用场景建议
PIL适用场景
需手动调整图像尺寸、色彩或保存中间结果时。
TorchVision适用场景
构建数据管道(如训练CNN)或使用预训练模型时。
两者常结合使用:PIL预处理原始数据,TorchVision完成后续自动化转换和模型集成。