0
点赞
收藏
分享

微信扫一扫

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


对于如何使用tensorBoard的方法已经在前文中进行描述,传送门:

首先还是导入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

这里我们载入一张我们同学的图片~

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


我们通过Image.open方法来打开这张图片。

通过type方法,我们能够得到,通过Image方法打开的图片是一张PIL格式的图片。

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

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

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

官方文档如下:

配合TensorBoard通过transform对图像进行规范化处理_深度学习_02


根据文档描述,这个方法是不支持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类型。

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

至于ToTensor函数,官方文档描述如下:

配合TensorBoard通过transform对图像进行规范化处理_深度学习_04

接下来我们使用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通过transform对图像进行规范化处理_计算机视觉_05


同样采用tensorboard进行数据可视化。

图像处理过程如下:

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

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

配合TensorBoard通过transform对图像进行规范化处理_计算机视觉_08


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


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


配合TensorBoard通过transform对图像进行规范化处理_深度学习_11


配合TensorBoard通过transform对图像进行规范化处理_深度学习_12


配合TensorBoard通过transform对图像进行规范化处理_深度学习_13


(漏一张自己补…………)


举报

相关推荐

matlab实现图像漫画化处理

0 条评论