【PyTorch】(基础四)---- 图像处理

图像处理

关于计算机图像处理都在torchvision库中,其中transforms 模块提供了丰富的图像预处理功能,用于数据增强和标准化等操作。比如我们之前使用的ToTensor类就来自这个模块,接下来介绍一些如何使用这个类完成其它的图像处理功能。

  1. 基本变换
    • ToTensor():将 PIL 图像或 NumPy 数组转换为 PyTorch 张量,并将像素值归一化到 [0, 1] 范围。
    • Normalize(mean, std):对张量进行标准化,减去均值并除以标准差。
    • Resize(size):调整图像大小。
    • CenterCrop(size):从中心裁剪图像。
    • RandomCrop(size):随机裁剪图像。
    • RandomHorizontalFlip(p):以给定的概率水平翻转图像。
    • RandomVerticalFlip(p):以给定的概率垂直翻转图像。
    • ColorJitter(brightness=0, contrast=0, saturation=0, hue=0):随机改变图像的亮度、对比度、饱和度和色调。
  2. 组合变换
    • Compose(transforms):将多个变换组合在一起,按顺序应用。

Normalize

Normalize用于将一个tensor类型的图像进行规范化处理,其主要参数为mean(均值)和std(方差),使用``input[channel] - mean[channel]) / std[channel]` 公式进行处理。

图片的Normalize处理主要应用于深度学习、机器学习和计算机视觉任务的预处理阶段,它的目的是为了使得数据具有更好的数值属性,实现加速训练过程和减少过拟合的目的,提高模型训练的效率和效果。

py 复制代码
from PIL import Image
import torchvision
from torch.utils.tensorboard import SummaryWriter
# 归一化
# Image读取图片
img = Image.open("test.jpg")

# 转换成tensor格式
myToTensor = torchvision.transforms.ToTensor()
img_tensor = myToTensor(img)

# 归一化,使用方法和ToTensor类似,先创建对象
myNormalize = torchvision.transforms.Normalize([0.5,0.5,0.5],[1,1,1])
img_norm = myNormalize(img_tensor)

# tensorboard可视化
writter = SummaryWriter('logs/log2')
writter.add_image('img_norm',img_norm)
writter.close()

运行结果:

Resize

在transform中,用resize实现调整图像大小的功能,resize的参数可以有两种表示方法,如果传入了两个数字,则宽高分别变为指定的大小;如果只传入一个数字,则使用最小边匹配,另一条变进行等比缩放

py 复制代码
# resize缩放图像
# 使用Image读取PIL类型的图像
img_PIL = Image.open('test.jpg')

# 使用ToTensor将PIL转为tensor类型
myTotensor = torchvision.transforms.ToTensor()
img_tensor = myTotensor(img_PIL)

# 将tensor图片进行resize
myResize = torchvision.transforms.Resize((2000, 1500))
img_resize = myResize(img_tensor)

# 只传一个参数
myResize2 = torchvision.transforms.Resize((1000))
img_resize2 = myResize2(img_tensor)

# 可视化
writter = SummaryWriter("logs/log3")
writter.add_image('原图:', img_tensor)
writter.add_image('两个参数变形后:', img_resize)
writter.add_image('一个参数变形后:', img_resize2)
writter.close()

RandomCrop

实现随机裁剪,用于数据增强

py 复制代码
writter = SummaryWriter("logs/log4")

# 使用Image读取PIL类型的图像
img_PIL = Image.open('test.jpg')

# 使用ToTensor将PIL转为tensor类型
myTotensor = torchvision.transforms.ToTensor()
img_tensor = myTotensor(img_PIL)

# 随机裁剪
my_randomcrop = torchvision.transforms.RandomCrop((1000,2000))
for i in range(10):
    img_randomcrop = my_randomcrop(img_tensor)
    # 指定迭代步数
    writter.add_image('random:',img_randomcrop,global_step=i)
writter.close()

通过拖动上面的进度条就可以看出每一次迭代产生的结果

Compose

Compose用于将多个变换组合在一起,按顺序应用。

py 复制代码
# 组合多个方法
my_compose = torchvision.transforms.Compose([
    torchvision.transforms.ToTensor(),
    torchvision.transforms.Normalize([0.5,0.5,0.5], [1,1,1]),
    torchvision.transforms.RandomCrop((1000,2000))
])

img_com = my_compose(img_PIL)
writter = SummaryWriter("logs/log5")
writter.add_image('组合变形:', img_com)
writter.close()
相关推荐
无风听海22 分钟前
神经网络之特征值与特征向量
人工智能·深度学习·神经网络
艾莉丝努力练剑27 分钟前
【C++:红黑树】深入理解红黑树的平衡之道:从原理、变色、旋转到完整实现代码
大数据·开发语言·c++·人工智能·红黑树
九章云极AladdinEdu31 分钟前
论文分享 | BARD-GS:基于高斯泼溅的模糊感知动态场景重建
人工智能·新视角合成·动态场景重建·运动模糊处理·3d高斯泼溅·模糊感知建模·真实世界数据集
希露菲叶特格雷拉特43 分钟前
PyTorch深度学习笔记(二十)(模型验证测试)
人工智能·pytorch·笔记
NewsMash1 小时前
PyTorch之父发离职长文,告别Meta
人工智能·pytorch·python
IT_陈寒1 小时前
Python 3.12新特性实测:10个让你的代码提速30%的隐藏技巧 🚀
前端·人工智能·后端
Ztop1 小时前
GPT-5.1 已确认!OpenAI下一步推理升级?对决 Gemini 3 在即
人工智能·gpt·chatgpt
qq_436962181 小时前
奥威BI:打破数据分析的桎梏,让决策更自由
人工智能·数据挖掘·数据分析
金融Tech趋势派1 小时前
金融机构如何用企业微信实现客户服务优化?
大数据·人工智能·金融·企业微信·企业微信scrm
Antonio9151 小时前
【图像处理】libtiff 的介绍与使用
图像处理