[Deep learning target detection] Pytorch learning (3) the use of transform

from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from PIL import Image
import cv2

# transform是一个工具箱,里面一个类对应一个工具
# 好比totensor resize等工具
# python的用法  tensor数据类型
# 通过transform.totensor去看两个问题
# 1、transform该如何使用在python里面
# 2、为什么我们需要tensor的数据类型

img_path = "DataSet/Data/train/ants_image/0013035.jpg"
img = Image.open(img_path)
# print(img)
write = SummaryWriter("logs")
# 1、transform该如何使用在python里面
# 创建一个具体的工具,例如:tensor_trans=transforms.ToTensor()
# 工具的使用,保证输入输出的正确性 result=tensor_trans(input)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
write.add_image("tensor_img", tensor_img)

# print(tensor_trans)
# print(tensor_img)
# 2、为什么我们需要tensor的数据类型
# tensor里面记录一些重要的参数,比如backword,学习率;包装了神经网络的基础属性
# 常见的transform
cv_img = cv2.imread(img_path)
img_tensor = tensor_trans(cv_img)
write.add_image("ToTenSer", img_tensor)
# normlize
# output[channel] = (input[channel] - mean[channel]) / std[channel]
# (input-0.5)/0.5=2*input-1
# input[0,1]--->result[-1,1]
print(img_tensor[0][0][0])
trans_norm = transforms.Normalize([9, 8, 7], [1, 2, 3])
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0])
write.add_image("Normliza", img_norm, 2)

# resize
print(img.size)
trans_resize = transforms.Resize((100, 100))
img_resize = trans_resize(img)
img_resize = tensor_trans(img_resize)
print(img_resize.size)
write.add_image("Resize", img_resize, 1)
# compose
# 跟上面resize的效果一样,进行队列按顺序处理
trans_resize2 = transforms.Resize(100)
trans_compose = transforms.Compose([trans_resize2, tensor_trans])
img_resize2 = trans_compose(img)
# RandomCrop
trans_randomcrop = transforms.RandomCrop(512)
trans_compose_2 = transforms.Compose([trans_randomcrop, tensor_trans])
for i in range(10):
    img_crop = trans_compose_2(img)
    write.add_image("RandomCrop", img_crop, i)
write.close()

 

Guess you like

Origin blog.csdn.net/beyond951/article/details/126310182