【Pytorch 04】torchvision中的transform

目录

1. 使用Tensorform的ToTensor()类,将 PIL 类型的图像转换成 tensor 类型。

2. opencv 读取图片

3. 用 tensorboard 可视化数据

4. 总结

5. python是区分大小写的,在setting中去掉 Match case 不用设置首字母大小写匹配。

【重点】6. 在tensorboard上绘制 y=x 的图像,引入一张图片:

【重点】7. transforms方法使用:Normalize 、Resize、Compose、RandomCrop。

【重点】8. 使用 CIFAR10 数据集 显示测试集中的图片(两种方式)


transform.py 主要是对图片进行处理变换,产生我们想要的结果。

1. 使用Tensorform的ToTensor()类,将 PIL 类型的图像转换成 tensor 类型。

2. opencv 读取图片

pip install opencv-python

3. 用 tensorboard 可视化数据

# 作者:要努力,努力,再努力
# 开发时间:2022/5/2 14:42
from PIL import Image
from torchvision import transforms
import cv2
from torch.utils.tensorboard import SummaryWriter

img_path = '../dataset/train/ants_images/24335309_c5ea483bb8.jpg'
img = Image.open(img_path)
# print(img)

# 1. transform 的使用
tensor_trains = transforms.ToTensor()  # 看 ToTensor()类 ,可以返回 Image to be converted to tensor. tensor类的图像
tensor_img = tensor_trains(img)  # 将 PIL 类型的图像转换成 tensor 类型

# 2. opencv使用
cv_img = cv2.imread(img_path)

# 3、画图
write = SummaryWriter('logs')
write.add_image('tensor_img', tensor_img)
# write.add_image('cv_img', cv_img)
write.close()

4. 总结

PIL Python自带的图片打开方式 Image.open()
tensor  tensor类型 ToTensor()
opencv numpy.array cv.imread()

启用 tensorboard ,必须切换到日志文件的上一级目录:

tensorboard --logdir="logs" --port=6007

5. python是区分大小写的,在setting中去掉 Match case 不用设置首字母大小写匹配。

【Pytorch 04】torchvision中的transform_第1张图片

【重点】6. 在tensorboard上绘制 y=x 的图像,引入一张图片:

# 作者:要努力,努力,再努力
# 开发时间:2022/5/4 8:59
import numpy as np
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
from torchvision import transforms

# 写log
writer = SummaryWriter('logs2')

# 引入一张图片
# img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data
# 可以用tensor也可以用numpy的方式
img_path = '../dataset/train/bees_images/36900412_92b81831ad.jpg'
image_open = Image.open(img_path)
# numpy.array 方式
img_npy = np.array(image_open)
writer.add_image('tb2_image', img_npy, 1, dataformats='HWC')
# totensor 方式
trans_totensor = transforms.ToTensor()
img_totensor = trans_totensor(image_open)
writer.add_image('tb2_image', img_totensor, 2)


# 画 y = x 图像
for i in range(100):
    writer.add_scalar('y=x', i, i)

writer.close()

总结:

① 引入图片:可以用tensor也可以用numpy的方式  用 writer.add_image()

② 绘制:用 writer.add_scalar()

【重点】7. transforms方法使用:Normalize 、Resize、Compose、RandomCrop。

# 作者:要努力,努力,再努力
# 开发时间:2022/5/4 10:08

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

img_path = '../dataset/train/ants_images/24335309_c5ea483bb8.jpg'
img_PIL = Image.open(img_path)  # PIL
writer = SummaryWriter('logs2')

# totensor方式
trans_tensor = transforms.ToTensor()
img_tensor = trans_tensor(img_PIL)
writer.add_image('img_tensor', img_tensor)

# Normalize
trans_normal = transforms.Normalize([5, 6, 7], [2, 3, 6])  # 输入均值和方差,均为列表方式,这里是随便填的
img_normal = trans_normal(img_tensor)  # This transform does not support PIL Image.  所以只能用上面的 totenosr 类型
writer.add_image('img_normal', img_normal)

# Resize
trans_resize = transforms.Resize([512, 512])
img_resize = trans_resize(img_tensor)
writer.add_image('img_resize', img_resize)

# Compose 按照比例缩放
trans_resize_2 = transforms.Resize(512)
trans_compose = transforms.Compose([trans_resize_2, trans_tensor])  # def __init__(self, transforms)  需要transform类型
img_compose = trans_compose(img_PIL)
writer.add_image('img_resize', img_compose, 2)

# RandomCrop  截图
trans_random = transforms.RandomCrop(500, 1000)
trans_compose_2 = transforms.Compose([trans_random, trans_tensor])
for i in range(10):
    img_crop = trans_compose_2(img_PIL)
    writer.add_image('img_crop', img_crop, i)

writer.close()

总结: 多用crtl,去查查 这些方法的使用方式。

【重点】8. 使用 CIFAR10 数据集 显示测试集中的图片(两种方式)

在下面的链接中可以下载想学习的对应数据集

Datasets — Torchvision 0.12 documentationhttps://pytorch.org/vision/stable/datasets.html

方式一:下载数据集,不设置格式,显示图片。

方式二:下载tensor数据集,在 tensorboard 中展示10张图片。

# 作者:要努力,努力,再努力
# 开发时间:2022/5/4 11:13

from torchvision import transforms
from torchvision import datasets
from torch.utils.tensorboard import SummaryWriter

# 1. 下载数据集 建议都把download设置成True
# tran_set = datasets.CIFAR10(root='./dataset', train=True, download=True)
# test_set = datasets.CIFAR10(root='./dataset', train=False, download=True)
# img, target = test_set[0]
# print(img)
# img.show()


# 2. 设置 数据格式为tensor,再展示到tensorboard中
dataset_forms = transforms.Compose({
    transforms.ToTensor()
})
tran_set = datasets.CIFAR10(root='./dataset', train=True, transform=dataset_forms, download=True)
test_set = datasets.CIFAR10(root='./dataset', train=False, transform=dataset_forms, download=True)
writer = SummaryWriter('chap04_2')
for i in range(10):
    img, target = test_set[i]
    writer.add_image('dataset_tensor', img, i)

writer.close()

总结:

1. 数据下载太慢,可以复制下方链接迅雷下载,有镜像加速。

2. 可以设置数据格式。

【Pytorch 04】torchvision中的transform_第2张图片

你可能感兴趣的:(Pytorch,pytorch,深度学习,python)