一.Transforms简介
定义与作用:数据预处理在深度学习中的重要性
常见应用场景:图像分类、目标检测、数据增强
二.常见Transforms结构及入门用法
(其实可以把Transforms看成一种工具箱,在使用时就是使用里面的工具,接下来博主会讲解Transforms中几种入门时常用的“工具”)
(1) ToTensor
作用:将PIL图像或ndarray转化为tensor(张量:深度学习常用的数据结构),并相应的缩放数值
用法及案例:
from PIL import Image
from torchvision import transforms
img_path = "一张图片的地址" #自定义
img = Image.open(img_path)
print('PIL类型:')
print(img)
tensor = transforms.ToTensor()
tensor_img =tensor(img)
print('tensor类型:')
print(tensor_img)
tensor = transforms.ToTensor():打开“工具箱”transforms,取出工具ToTensor并给工具命名为tensor
tensor_img =tensor(img):用“工具”加工原料‘img’,成品另外命名
结果:
(2)Normalize
作用:使用均值和标准差对张量图像进行归一化(Normalize)操作,通过该操作可以将图像张量的数值按指定的均值和标准差做标准化变换,有助于模型训练时更快收敛、提升性能
用法及案例:
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
writer = SummaryWriter("../logs")
img_path = "你的图片路径"
img = Image.open(img_path)
tensor = transforms.ToTensor()
tensor_img =tensor(img)
print(tensor_img[0][0][0])
trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
norm_img = trans_norm(tensor_img)
print(norm_img[0][0][0])
writer.add_image("Normalize", norm_img)
writer.close()
trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]):打开“工具箱”transforms,取出工具Normalize规定好均值和标准差并给工具命名为trans_norm
norm_img = trans_norm(tensor_img):将tensor类型(必须)的数据传入,得到返回值
结果:
(归一化后0行0列像素点的数字变化)
(图像的变化,在改变均值和标准差后又会不一样,可以自己尝试一下)
(3)Resize
作用:将输入的图像调整为给定尺寸(如果为tensor类型需满足[···,H,W]形状,···表示最多两个前置维度,H是高度,W是宽度),最好先为PIL类型,转化后再改为tensor
用法及案例:
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
writer = SummaryWriter("../logs")
img_path = "你的图片路径"
img = Image.open(img_path)
tensor = transforms.ToTensor()
print(img)
writer.add_image("img",tensor(img))
trans_resize = transforms.Resize((1024,512))
img_resize = trans_resize(img)
print(img_resize)
writer.add_image("img_resize",tensor(img_resize))
writer.close()
rans_resize = transforms.Resize((1024,512)):使用Resize“工具”并设定好要改变的数据
img_resize = trans_resize(img):改变数值并返回
注:当Resize中只输入一个值时它会把最小的值改变,再等比放缩
结果:
(长宽发生变化)
(变化的图像)
(4)Compose
作用:将多个图像变换操作组合起来,让输入的图像按顺序变换
用法及案例:
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
writer = SummaryWriter("../logs")
img_path = "你的图片路径"
img = Image.open(img_path)
tensor = transforms.ToTensor()
trans_resize = transforms.Resize(1024)
trans_compose = transforms.Compose([trans_resize,tensor])
print(img)
writer.add_image("img",tensor(img))
img_compose = trans_compose(img)
print(img_compose)
writer.add_image("img_compose",img_compose)
writer.close()
trans_compose = transforms.Compose([trans_resize,tensor]):用中括号把定义好的工具放一起,调用时按顺序进行
结果: