栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Pytorch 04】torchvision中的transform

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【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方法使用:PIL、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. 总结

PILPython自带的图片打开方式Image.open()
tensor tensor类型ToTensor()
opencvnumpy.arraycv.imread()

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

【重点】6. 在tensorboard上绘制 y=x 的图像,引入一张图片:
# 作者:要努力,努力,再努力
# 开发时间:2022/5/2 10:59

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

img_path = "../dataset/train/bees_images/29494643_e3410f0d37.jpg"  # 图片路径地址
img_PIL = Image.open(img_path)  # 打开图片地址 PIL 格式
img_array = np.array(img_PIL)  # 将 PIL 格式 的图片转成 numpy 方式
# print(img_array.shape)

write = SummaryWriter('logs')  # tensorboard写logs
write.add_image('test2', img_array, 1, dataformats='HWC')
# 看一下add_image函数使用,add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats='CHW'):

for i in range(100):
    write.add_scalar('y=x', i, i)  # 保存数据,做可视化

write.close()  # 书写关闭

【重点】7. transforms方法使用:PIL、Normalize 、Resize、Compose、RandomCrop。
# 作者:要努力,努力,再努力
# 开发时间:2022/5/2 16:52
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

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

# 2. transform方式  Totensor方法
trans_totensor = transforms.ToTensor()  # Convert a ``PIL Image`` or ``numpy.ndarray`` to tensor.
img_totensor = trans_totensor(img)
# tensorboard 可视化
writer = SummaryWriter('logs')
writer.add_image('ToTensor', img_totensor)

# Normalize 归一化 output[channel] = (input[channel] - mean[channel]) / std[channel]
print(img_totensor[0][0][0])  # 归一化之前
trans_normal = transforms.Normalize([6, 2, 9], [3, 5, 5])
img_normal = trans_normal(img_totensor)
print(img_normal[0][0][0])  # 归一化之后
writer.add_image('Normalize', img_normal, 2)

# Resize
print(img.size)
trans_resize = transforms.Resize((512, 512))
img_resize = trans_resize(img)
print(img_resize)  # PIL类型
img_resize_totensor = trans_totensor(img_resize)  # 转tensor类型
writer.add_image('Resize', img_resize_totensor, 1)

# Compose 按比例缩放
trans_resize_2 = transforms.Resize(512)
trans_compose = transforms.Compose([trans_resize_2, trans_totensor])  # Compose 中数据需要transform数据类型,且数据时一个列表
img_compose = trans_compose(img)
writer.add_image('Resize', img_compose, 2)

# RandomCrop
trans_random = transforms.RandomCrop(500, 1000)  # 指定高和宽
trans_compose_2 = transforms.Compose([trans_random, trans_totensor])
for i in range(10):
    img_crop = trans_compose_2(img)
    writer.add_image('RandomCrop', img_crop, i)

writer.close()

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

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

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

 方式一:

# 作者:要努力,努力,再努力
# 开发时间:2022/5/2 22:24
import torchvision
from torch.utils.tensorboard import SummaryWriter

# 1. 下载数据集
train_set = torchvision.datasets.CIFAR10(root='./dataset', train=True, download=True)
test_set = torchvision.datasets.CIFAR10(root='./dataset', train=False, download=True)
# print(test_set[0])
# print(test_set.classes)

# 显示测试数据集第一张图片
img, target = test_set[0]
# print(img)
# print(target)
# print(test_set.classes[target])
img.show()

 方式二:

# 作者:要努力,努力,再努力
# 开发时间:2022/5/2 22:24
import torchvision
from torch.utils.tensorboard import SummaryWriter


# 2. 将数据集转换成tensor的类型
dataset_transform = torchvision.transforms.Compose({
    torchvision.transforms.ToTensor()
})
# 使用tensor类型下载数据下载数据集
train_set2 = torchvision.datasets.CIFAR10(root='./dataset', train=True, transform=dataset_transform, download=True)
test_set2 = torchvision.datasets.CIFAR10(root='./dataset', train=False, transform=dataset_transform, download=True)
# print(test_set2[0]) # 看出是tensor数据类型
writer = SummaryWriter('chap04')
for i in range(10):
    img, target = test_set2[i]
    writer.add_image('test_set2', img, i)

writer.close()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号