:::tips
Q & A
Q:为什么需要tensor图片类型?
A :tensor类型包含了神经网络所需要的各种信息
:::
- transforms就是一个工具箱,其中有ToTensor,resize等工具。
- ToTensor是一个类,作用是将图片类型转成ToTensor类型
ToTensor的使用方法
作用:
ToTensor是一个类,用来将图片转成tensor类型
使用:
tensor_trans=transforms.ToTensor()
tensor_img=tensor_trans(img)
举例:
将jpg类型转换成Tensor类型
from PIL import Image
from torchvision import transforms
img_path="./Data/train/ants_img/0013035.jpg"
img_JDP=Image.open(img_path)
tensor_trans=transforms.ToTensor()
tensor_img=tensor_trans(img_JDP)
Normalize
作用:
让图片的三个信道归一化;
归一化是未来消除奇异值,及样本数据中于其他数据相比特别大或特别小的数据,这样可以加快训练速度。
使用:
norm_trans=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
norm_img=norm_transforms(img)
第一行代码括号内的参数分别是三个信道的均值和标准差
举例:
from PIL import Image
from torchvision import transforms
img_path="./Data/train/ants_img/0013035.jpg"
img=Image.open(img_path)
norm_trans=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
norm_img=norm_trans(tensor_img)
Resize
作用
改变图片的尺寸
使用
trans_resize=transforms.Resize((521,512))
img_resize=trans_resize(img)
举例
trans_resize=transforms.Resize((521,512))
img_resize=trans_resize(img)
img_resize_tensore=trans_tensor(img_resize)
writer.add_image("Resize",img_resize_tensore,1)
Compose
作用
将多个图像变换操作组合在一起,使得在图像加载和预处理时更加灵活和高效。
使用
trans_compose=transforms.Compose([trans_resize_2,trans_tensor])
img_resize_2=trans_compose(img)
举例
#Compose
trans_resize_2=transforms.Resize(512)
trans_compose=transforms.Compose([trans_resize_2,trans_tensor])
img_resize_2=trans_compose(img)
writer.add_image("Resize",img_resize_2,2)
RandomCrop
作用
随机剪取
使用
trans_random=transforms.RandomCrop(512)
trans_compose_2=transforms.Compose([trans_random,trans_tensor])
for i in range(10):
img_crop=trans_compose_2(img)
writer.add_image("RandomCrop",img_crop,i)
本篇总代码
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img_path="./Data/train/ants_img/0013035.jpg"
img=Image.open(img_path)
writer=SummaryWriter("logs")
#ToTensor
trans_tensor=transforms.ToTensor()
tensor_img=trans_tensor(img)
writer.add_image("tensor",tensor_img,1)
#Normalize(归一化)
norm_trans=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
norm_img=norm_trans(tensor_img)
print(norm_img[0][0][0])
writer.add_image("Normalize",norm_img,2)
#Resize
trans_resize=transforms.Resize((521,512))
img_resize=trans_resize(img)
img_resize_tensore=trans_tensor(img_resize)
writer.add_image("Resize",img_resize_tensore,1)
#Compose
trans_resize_2=transforms.Resize(512)
trans_compose=transforms.Compose([trans_resize_2,trans_tensor])
img_resize_2=trans_compose(img)
writer.add_image("Resize",img_resize_2,2)
#randomCrop
trans_random=transforms.RandomCrop(512)
trans_compose_2=transforms.Compose([trans_random,trans_tensor])
for i in range(10):
img_crop=trans_compose_2(img)
writer.add_image("RandomCrop",img_crop,i)
writer.close()