8.TensorBoard的使用(二)
1.add_image() 的使用
同样的,按住Ctrl,查看add_image() 方法如何使用
def add_image(self, tag, img_tensor, global_step=None):
- tag:对应图像的title
- img_tensor:图像的数据类型,只能是torch.Tensor、numpy.array、string/blobnaem
- global_step:训练步骤,int 类型
查看数据集中图片数据类型
先复制一下第一张图片的相对路径,因为该图片文件夹就在项目文件夹所在的位置,故只需复制相对地址
在Python控制台输出图片类型:
image_path = "dataset/train/ants_image/0013035.jpg"
from PIL import Image
img = Image.open(image_path)
可以看到该图片是PIL.格式,不符合add_image()要求。
2.利用numpy.array(),对PIL图片进行转换,获得numpy型图片数据
import numpy as np
img_array=np.array(img)
print(type(img_array))
可以看到该图片已经由PIL.格式转为numpy型图片数据
代码实战 step1:蚂蚁为例
from torch.utils.tensorboard import SummaryWriter #导入SummaryWriter类
import numpy as np
from PIL import Image
#创建实例
writer=SummaryWriter("logs") #把对应的事件文件存储到logs文件夹下
image_path="dataset/train/ants_image/0013035.jpg"
img_PIL=Image.open(image_path)
img_array=np.array(img_PIL) #把PIL类型的图片转为numpy型
print(type(img_array)) #查看图片是否是numpy型
print(img_array.shape) #查看该numpy型的shape (512,768,3) 即(H,W,C)(高度,宽度,通道)
writer.add_image("test",img_array,1, dataformats='HWC') # 第1步
writer.close()
这里需要额外注意一点,图片的shape,从PIL到numpy型,需要在add_image()中指定每一个数字/维表示的含义
运行该python文件,控制台显示的运行结果如下:
显然该图片是numpy型,对应的shape是HWC
在pycharm的终端打开事件文件:
tensorboard --logdir=logs --port=6007
点击运行命令后出现的链接
可以看到多了个images
代码实战step2:蜜蜂为例
只需要在蚂蚁的代码里改两个地方
①先把image_path的值换成蜜蜂文件夹第一张图片的相对路径
image_path = "dataset/train/bees_image/16838648_415acd9e3f.jpg"
②再把writer.add_image() 里的步骤改成2
writer.add_image("test", img_array, 1, dataformats='HWC') # 第1步
运行该python文件,然后刷新一下事件
这两个的title都是test,在一个title下,通过滑块显示每一步的图形,可以直观地观察训练中给model提供了哪些数据,或者想对model进行测试时,可以看到每个阶段的输出结果
如果想要单独显示,重命名一下title即可,即 writer.add_image() 的第一个字符串类型的参数
运行结果如下,刷新可以看到train: