torchvision.utils.make_grid
torchvision.utils.make_grid
官方文档: make_grid
make_grid能够将tensor以网格形式可视化
torchvision.utils.make_grid(tensor, nrow=8, padding=2, normalize=False, value_range= None, scale_each=False, pad_value=0.0, **kwargs)
- tensor: 一般就是4D大小的mini-batch(b, 3, h, w)或者列表
- nrow: 可视化图片中每一行有几幅图,default=8
- padding: 可视化图片中图于图之间的间距,default=2
- pad_value: 可视化图片中图与图之间间距的颜色,default=0.0,最大是1.0,分别代表纯黑和纯白
这里以tensor为mini-batch的形式展示几个例子
example 1
默认的tensor已经被归一化了(0, 1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import torch import numpy as np
from torchvision import utils from torchvision import transforms from PIL import Image
to_tensor = transforms.ToTensor() clip1 = to_tensor(np.array(Image.open("00000001.jpg"))) clip2 = to_tensor(np.array(Image.open("00000010.jpg"))) clip3 = to_tensor(np.array(Image.open("00000011.jpg"))) clip4 = to_tensor(np.array(Image.open("00000012.jpg"))) clip5 = to_tensor(np.array(Image.open("00000013.jpg"))) clip6 = to_tensor(np.array(Image.open("00000014.jpg"))) clip7 = to_tensor(np.array(Image.open("00000015.jpg"))) clip8 = to_tensor(np.array(Image.open("00000016.jpg")))
img_all = torch.stack([clip1, clip2, clip3, clip4, clip5, clip6, clip7, clip8], dim=0)
img_all = utils.make_grid(img_all, nrow=4, padding=20, pad_value=0.0)
img_all = (img_all.numpy()*255).astype('uint8').transpose(1,2,0) img_all = Image.fromarray(img_all) img_all.save('all.jpg')
|
下面展示了可视化的结果
我们将pad_value参数变为1.0再看一下结果,显然图片之间的填充从黑色变为了白色
如果想一行8张图,那么就只有一行,只需要将nrow参数变为8即可