AI知识分享AI知识分享
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
  • Transformer

    • Transformer - 概述
    • Transformer - Encoding and Decoding Context with Attention
    • Transformer - Tokenizers
    • Transformer - 架构
    • Transformer - Block
    • Transformer - 自注意力
    • Transformer - MoE
    • Transformer - Transformer
  • Pytorch

    • Pytorch - Dataset
    • Pytorch - TensorBoard
    • Pytorch - transforms
    • Pytorch - DataLoader
    • Pytorch - nn
    • Pytorch - Model
    • Pytorch - train
    • Pytorch - Practice
    • Pytorch - pytorch
  • HuggingFace

    • HuggingFace - Transformers
    • HuggingFace - Pipeline
    • HuggingFace - Tokenizer
    • HuggingFace - Model
    • HuggingFace - Datasets
    • HuggingFace - Evaluate
    • HuggingFace - Trainer

Pytorch - transforms

torchvision.transforms 是 PyTorch 中用于对图像进行常见变换的库,特别适用于数据预处理和数据增强。

(pytorch) D:\code\klc\learn_pytorch>tensorboard --logdir=logs
TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.19.0 at http://localhost:6006/ 

示例:

详情
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms 

writer=SummaryWriter("logs")
img=Image.open("images/pytorch.png")
print(img)

# ToTensor
trans_totensor = transforms.ToTensor() 
img_tensor=trans_totensor(img)
writer.add_image("ToTensor",img_tensor,0)

# Normalize
print(img_tensor[0][0][0])
trans_norm=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
img_norm =trans_norm(img_tensor) 
print(img_norm[0][0][0])
writer.add_image("Normalize",img_norm,0)

# Resize
print(img.size)
trans_resize=transforms.Resize((512,512))
# img PIL -> resize -> img_resize PIL 
img_resize = trans_resize(img)
# img_resize PIL -> totenso r> img_resize tensor
img_resize =trans_totensor(img_resize) 
writer.add_image("Resize",img_resize,0) 
print(img_resize)

# Compose - resize - 2
trans_resize_2 = transforms.Resize(512)
# PIL -> PIL -> tensor
trans_compose=transforms.Compose([trans_resize_2,trans_totensor])
img_resize_2 = trans_compose(img)
writer.add_image("Resize",img_resize_2,1)

#Randomcrop
trans_random=transforms.RandomCrop((500, 1000))
trans_compose_2= transforms.Compose([trans_random,trans_totensor]) 

for i in range(10):
    img_crop = trans_compose_2(img)
    writer.add_image("RandomCropHW",img_crop,i)

writer.close()

效果图:

描述文本

理解transforms

torchvision.transforms 是 PyTorch 中用于对图像进行常见变换的库,特别适用于数据预处理和数据增强。它提供了丰富的图像变换操作,可以单独使用也可以组合使用。下面是一些关于如何学习和使用 transforms 类的基本指导:

基础概念

  • Transforms: 这些是应用于图像上的各种转换,包括裁剪、缩放、翻转等。它们可以帮助你标准化输入数据,或者通过数据增强来增加模型的泛化能力。

  • Compose: 由于通常需要将多个转换组合在一起使用,torchvision.transforms.Compose 允许你将多个变换串联起来作为一个整体应用。

常见的 Transforms

  1. Resize: 调整图像大小。

    from torchvision import transforms
    resize = transforms.Resize((256, 256))
    
  2. RandomCrop: 随机裁剪图像。

    crop = transforms.RandomCrop(224)
    
  3. CenterCrop: 中心裁剪图像。

    center_crop = transforms.CenterCrop(224)
    
  4. ToTensor: 将PIL Image或numpy.ndarray (H x W x C) 转换为tensor(C x H x W),并归一化到[0,1]。

    to_tensor = transforms.ToTensor()
    
  5. Normalize: 使用均值和标准差归一化张量图像。

    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    
  6. RandomHorizontalFlip: 随机水平翻转给定的PIL图像。

    flip = transforms.RandomHorizontalFlip(p=0.5)
    
  7. ColorJitter: 随机改变图片的亮度、对比度和饱和度。

    jitter = transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2)
    

如何使用

你可以使用 transforms.Compose 来组合多个变换。例如,创建一个训练集的数据变换管道可能看起来像这样:

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

这个例子中,首先随机调整图像大小并裁剪到224x224像素,然后以一定的概率水平翻转图像,接着将图像转换为张量,并最后归一化。

学习资源

  • 查看官方文档:PyTorch 官方提供了详细的 torchvision.transforms 文档,这里包含了所有可用的变换及其参数的详细说明。
最近更新: 2025/4/14 07:18
Contributors: klc407073648
Prev
Pytorch - TensorBoard
Next
Pytorch - DataLoader