torchvision.utils

torchvision.utils.make_grid(tensor, nrow=8, padding=2, normalize=False, range=None, scale_each=False)

猜测,用来做 雪碧图的sprite image)。

给定 4D mini-batch Tensor, 形状为 (B x C x H x W),或者一个a list of image Tensor,做成一个size(B / nrow, nrow)的雪碧图。

  • normalize=True ,会将图片的像素值归一化处理

  • 如果 range=(min, max), min和max是数字,那么minmax用来规范化image

  • scale_each=True ,每个图片独立规范化,而不是根据所有图片的像素最大最小值来规范化

  • padding: 小图之间的间隔

NOTE: 如果使用的是python3x,如果下面代码跑不起来的话,就把报错地方的源码 long改成int。 还有一个需要注意的是:Channel不能为4,是4的话会报错,3可以正常运行。

例子:

import torchvision.transforms as transforms
from torchvision.utils import make_grid
import matplotlib.pyplot as plt
import numpy as np
import scipy.misc

def show(img):
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1,2,0)), interpolation='nearest')

lena = scipy.misc.face()
img = transforms.ToTensor()(lena)
print(img.size())
imglist = [img, img, img, img.clone().fill_(-10)]
show(make_grid(imglist, nrow=2, padding=5))
plt.show()

Example usage is given in this notebook

torchvision.utils.save_image(tensor, filename, nrow=8, padding=2, normalize=False, range=None, scale_each=False)

将给定的Tensor保存成image文件。如果给定的是mini-batch tensor,那就用make-grid做成雪碧图,再保存。