【pyTorch基础】数据加载和处理

本文介绍了使用PyTorch和PIL库进行图像预处理的方法,包括图像裁剪、翻转、旋转等操作,并展示了如何将PIL图像转换为Tensor张量及反向转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from PIL import Image
from torchvision import transforms as T
import torch
to_tensor = T.ToTensor() # 转换一个PIL库的图片或者numpy的数组转为tensor张量类型:[0,255]->[0,1]
to_pil = T.ToPILImage() # 将Numpy的ndarray或者Tensor转化成PILImage类型
cat = Image.open('./data/image/cat.jpg')
cat_c = to_tensor(cat) # 图片转张量
print(cat_c.shape)
cat_c = to_pil(cat_c) # 张量转PILImage
torch.Size([3, 1274, 1280])
# 将tensor转换为PILImage
t_out = torch.randn(3,256,256)
img1 = T.ToPILImage()(t_out)
img1

torchvision.transforms.CenterCrop:从图像中心裁剪图片
transforms = T.Compose([T.Resize(224),T.CenterCrop(224),T.ToTensor()])# 当T.CenterCrop()的参数大于T.Resize()的参数时,周围用0(黑色)填充
print(transforms)
# 先将整张图片大小缩小为长宽224,再对中心裁剪长宽224,相当于缩小图片
# T.Compose:将操作整合
# 生成了一个带有T.resize等功能的转换器
cat_t = transforms(cat)# 将图片放入转换器进行转换
print(cat_t.shape)
to_pil(cat_t) # 将tensor格式的图片转为pil
Compose(
    Resize(size=224, interpolation=bilinear, max_size=None, antialias=None)
    CenterCrop(size=(224, 224))
    ToTensor()
)
torch.Size([3, 224, 224])

torchvision.transforms.RandomCrop:从图片中随机裁剪出尺寸为size的图片
transforms = T.Compose([T.Resize(224),T.RandomCrop(256, padding=(16, 64)),T.ToTensor()])
# 先上下填充64,左右填充16(图像变大了),再随机256*256裁剪
cat_t = transforms(cat)
print(cat_t.shape)  # 3*224*224
to_pil(cat_t)
torch.Size([3, 256, 256])

# padding_mode:constant,edge,reflect,symmetric,constant时像素值由fill设定
transforms = T.Compose([T.Resize(224), T.RandomCrop(352,padding=(64,64),padding_mode = 'constant', fill=66),T.ToTensor()])
cat_t = transforms(cat)
to_pil(cat_t)

# torchvision.transforms.RandomHorizontalFlip
transforms = T.Compose([T.Resize(224),T.RandomHorizontalFlip(p=0.5),T.ToTensor()])  # 以0.5的概率左右翻转
cat_t = transforms(cat)  
cat_t.shape 
to_pil(cat_t)

# torchvision.transforms.RandomRotation
transforms = T.Compose([T.Resize(224),T.RandomRotation(30, center=(0, 0), expand=True),T.ToTensor()]) 
cat_t = transforms(cat)  
cat_t.shape  
to_pil(cat_t)

transform方法

裁剪
  1. transforms.CenterCrop
  2. transforms.RandomCrop
  3. transforms.RandomResizedCrop
  4. transforms.FiveCrop
  5. transforms.TenCrop
翻转和旋转
  1. transforms.RandomHorizontalFlip
  2. transforms.RandomVerticalFlip
  3. transforms.RandomRotation
图像变换
  1. transforms.Pad
  2. transforms.ColorJitter
  3. transforms.Grayscale
  4. transforms.RandomGrayscale
  5. transforms.RandomAffine
  6. transforms.LinearTransformation
  7. transforms.RandomErasing
  8. transforms.Lambda
  9. transforms.Resize
  10. transforms.Totensor
  11. transforms.Normalize
transforms的操作
  1. transforms.RandomChoice
  2. transforms.RandomApply
  3. transforms.RandomOrder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值