Skip to content

Commit 1ae4f9e

Browse files
committed
add range to make_grid
1 parent 429dbeb commit 1ae4f9e

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

README.rst

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,12 @@ make\_grid(tensor, nrow=8, padding=2)
355355
Given a 4D mini-batch Tensor of shape (B x C x H x W), makes a grid of
356356
images
357357

358-
save\_image(tensor, filename, nrow=8, padding=2)
359-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
358+
save\_image(tensor, filename, nrow=8, padding=2, range=None)
359+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
360360

361361
Saves a given Tensor into an image file.
362362

363363
If given a mini-batch tensor, will save the tensor as a grid of images.
364+
365+
If `range=(min, max)` where `min` and `max` are numbers, then it will normalize the
366+
image to `(0, 1)` using the given range.

torchvision/utils.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,19 @@ def make_grid(tensor, nrow=8, padding=2):
4242
return grid
4343

4444

45-
def save_image(tensor, filename, nrow=8, padding=2):
45+
def save_image(tensor, filename, nrow=8, padding=2, range=None):
4646
"""
4747
Saves a given Tensor into an image file.
4848
If given a mini-batch tensor, will save the tensor as a grid of images.
4949
"""
5050
from PIL import Image
5151
tensor = tensor.cpu()
5252
grid = make_grid(tensor, nrow=nrow, padding=padding)
53-
ndarr = grid.mul(255).byte().transpose(0,2).transpose(0,1).numpy()
53+
if range is not None:
54+
assert isinstance(tuple, range), "range has to be a tuple (min, max) if specified"
55+
grid = torch.clamp(grid, min=range[0], max=range[1])
56+
# make grid to be [0, 1]
57+
grid.add_(-range[0]).div(range[1] - range[0])
58+
ndarr = grid.mul(255).byte().transpose(0, 2).transpose(0, 1).numpy()
5459
im = Image.fromarray(ndarr)
5560
im.save(filename)

0 commit comments

Comments
 (0)