Pytorch深度学习_常见的Transforms(一)

 继续复习PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】

1>转换为PIL格式

from PIL import Image

#PIL的Image模块打开指定路径下的图像文件,并将其存储在变量img中。路径字符串指定了图像文件的位置,该图像是一个蜜蜂的图片
img = Image.open("data_set/hymenoptera_data/train/bees/17209602_fe5a5a746f.jpg")

#这行代码打印出图像对象img。在Python中,打印图像对象通常会显示图像的尺寸和模式
print(img)

2>python中__call__的用法

class Person:
    # 定义一个__call__函数,使得实例对象可以用括号的方式调用
    def __call__(self, name):
        print("__call__" + "Hello" + name)

    # 定义一个hello函数,用于打印问候语
    def hello(self, name):
        print("hello" + name)

# 创建Person类的实例
person_instance = Person()

# 使用__call__方法,像调用函数一样调用实例对象
person_instance("华为")  # 输出: __call__Hello华为

# 使用hello方法,像调用普通函数一样调用实例的hello方法
person_instance.hello("小米")  # 输出: hello小米

这个示例中,person_instancePerson 类的一个实例。通过实现 __call__ 方法,我们可以直接使用 person_instance("Kimi") 来调用这个实例,就像它是一个函数一样。这将打印出 "__call__Hello华为"

同时,我们也可以通过点操作符 . 来调用 hello 方法,像这样:person_instance.hello("Kimi")。这将打印出 "hello小米"

3>ToTensor() 输入参数为PIL格式或者ndarray格式转化为tensor

from PIL import Image # 导入PIL库中的Image模块,用于处理图像。
from torch.utils.tensorboard import SummaryWriter # 从PyTorch中导入SummaryWriter,用于创建和写入TensorBoard日志。
from torchvision import transforms # 从torchvision库导入transforms模块,包含图像预处理的转换函数。

writer = SummaryWriter("logs") # 创建一个SummaryWriter实例,指定日志目录为"logs"。

# 使用PIL库打开图像文件,路径是原始字符串,避免反斜杠的转义问题。
img = Image.open(rE:\program1-Classified Protection Assessment\data_set\hymenoptera_data\train\bees\39672681_1302d204d1.jpg")
print(img) # 打印图像对象,显示图像的格式和大小。

# 创建ToTensor转换对象,用于将PIL图像转换为PyTorch张量。
trans_totensor = transforms.ToTensor()

# 应用ToTensor转换,将图像转换为张量。
img_tensor = trans_totensor(img)

# 将转换后的图像张量添加到TensorBoard日志中,使用标签"ToTensor"。
writer.add_image("ToTensor", img_tensor)

# 关闭SummaryWriter,确保所有日志数据都被写入到文件中。
writer.close()


在python终端中输入

tensorboard --logdir=logs

即可得到图像

4>Normalize()使用

代码实战:

# 打印原始图像张量中第一个通道的第一个像素点的第一个值
print(img_tensor[0][0][0])

# 创建Normalize转换对象,用于归一化处理
trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])

# 对原始图像张量img_tensor应用归一化
img_norm = trans_norm(img_tensor)

# print(img_norm[0][0][0]) # 打印归一化后的图像张量中第一个通道的第一个像素点的第一个值
print(img_norm[0][0][0])

# 创建一个SummaryWriter实例,用于写入TensorBoard日志
writer = SummaryWriter("logs")

# 使用SummaryWriter的add_image方法将原始图像张量添加到TensorBoard,标签为"before"
# 注意:add_image方法需要一个dataformats参数来指定图像张量的形状格式
writer.add_image("before", img_tensor, dataformats='CHW')

# 使用SummaryWriter的add_image方法将归一化后的图像张量添加到TensorBoard,标签为"Normalize"
writer.add_image("Normalize", img_norm, dataformats='CHW')

# 关闭SummaryWriter对象,确保所有日志数据都被写入
writer.close()

3、4部分整段代码:

from PIL import Image # 导入PIL库中的Image模块,用于处理图像。
from torch.utils.tensorboard import SummaryWriter # 从PyTorch中导入SummaryWriter,用于创建和写入TensorBoard日志。
from torchvision import transforms # 从torchvision库导入transforms模块,包含图像预处理的转换函数。

writer = SummaryWriter("logs") # 创建一个SummaryWriter实例,指定日志目录为"logs"。

# 使用PIL库打开图像文件,路径是原始字符串,避免反斜杠的转义问题。
img = Image.open(r"E:\program1-Classified Protection Assessment\data_set\hymenoptera_data\train\bees\39672681_1302d204d1.jpg")
print(img) # 打印图像对象,显示图像的格式和大小。

# 创建ToTensor转换对象,用于将PIL图像转换为PyTorch张量。
trans_totensor = transforms.ToTensor()

# 应用ToTensor转换,将图像转换为张量。
img_tensor = trans_totensor(img)

# 将转换后的图像张量添加到TensorBoard日志中,使用标签"ToTensor"。
writer.add_image("ToTensor", img_tensor)

# 关闭SummaryWriter,确保所有日志数据都被写入到文件中。
writer.close()

# 打印原始图像张量中第一个通道的第一个像素点的第一个值
print(img_tensor[0][0][0])

# 创建Normalize转换对象,用于归一化处理
trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])

# 对原始图像张量img_tensor应用归一化
img_norm = trans_norm(img_tensor)

# print(img_norm[0][0][0]) # 打印归一化后的图像张量中第一个通道的第一个像素点的第一个值
print(img_norm[0][0][0])

# 创建一个SummaryWriter实例,用于写入TensorBoard日志
writer = SummaryWriter("logs")

# 使用SummaryWriter的add_image方法将原始图像张量添加到TensorBoard,标签为"before"
# 注意:add_image方法需要一个dataformats参数来指定图像张量的形状格式
writer.add_image("before", img_tensor, dataformats='CHW')

# 使用SummaryWriter的add_image方法将归一化后的图像张量添加到TensorBoard,标签为"Normalize"
writer.add_image("Normalize", img_norm, dataformats='CHW')

# 关闭SummaryWriter对象,确保所有日志数据都被写入
writer.close()

结果:

然后我们在终端中输入:

tensorboard --logdir=data_set/logs

即可得到图像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值