配合TensorBoard通过transform对图像进行规范化处理

对于如何使用tensorBoard的方法已经在前文中进行描述,传送门:
https://blog.csdn.net/qq_27180763/article/details/125741091?spm=1001.2014.3001.5501
首先还是导入PIL和torch的模块,同时我们也可以导入cv2模块,cv2模块中存在transform方法,而torchvision模块中存在transforms类。

此处,我们导入的包内容如下:

#coding=utf-8
from asyncore import write
from PIL import Image
from cv2 import transform
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter

这里我们载入一张我们同学的图片~
请添加图片描述
我们通过Image.open方法来打开这张图片。
通过type方法,我们能够得到,通过Image方法打开的图片是一张PIL格式的图片。

from PIL import Image
img = Image.open(img_path)
print(type(img))

输出内容:<class ‘PIL.JpegImagePlugin.JpegImageFile’>

在这里,我们针对图片规范化的处理需要使用到transforms的Normalize方法。

官方文档如下:
请添加图片描述
根据文档描述,这个方法是不支持PIL Image格式的。这在官方文档中明确的给出了。

This transform does not support PIL Image.

如果我们使用错误的代码进行,那么我们会得到错误信息。

TypeError: img should be Tensor Image. Got <class ‘PIL.JpegImagePlugin.JpegImageFile’>

因此,我们需要对PIL.Image格式的图片进行张量化处理,使用tensor类型的格式作为输入。

PIL.images格式转换为tensor的方法,可以使用transforms提供的ToTensor方法进行。

trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)

在张量化后,我们能够看到我们的张量场中的数据都是float32类型。
请添加图片描述

至于ToTensor函数,官方文档描述如下:请添加图片描述

接下来我们使用for循环对其进行处理

for i in range(10,1,-1):
    trans_norm = transforms.Normalize([0.1*i,0.1*i,0.1*i],[0.1*i,0.1*i,0.1*i])
    img_norm = trans_norm(img_tensor)
    img_norm = img_norm.double()
    writer.add_image("tensor_img",img_norm,10-i)

并在处理结束后关闭writer

writer.close()

完整代码如下:

#coding=utf-8
from asyncore import write
from PIL import Image
from cv2 import transform
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter


writer = SummaryWriter("logs")
img_path = "0E86E9932FF1E53803F022DB333C2ABE.jpg"
img = Image.open(img_path)

trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
#writer.add_image("tensor_img_test",img_tensor)

for i in range(10,1,-1):
    trans_norm = transforms.Normalize([0.1*i,0.1*i,0.1*i],[0.1*i,0.1*i,0.1*i])
    img_norm = trans_norm(img_tensor)
    img_norm = img_norm.double()
    writer.add_image("tensor_img",img_norm,10-i)
writer.close()

在运行完代码之后,我们能够得到一个日志存储在logs下。
请添加图片描述
同样采用tensorboard进行数据可视化。

图像处理过程如下:

请添加图片描述

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
(漏一张自己补…………)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小黑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值