in visualization/np_visualizer.py [0:0]
def make_numpy_grid(arrays_list, gridMaxWidth=2048,
imgMinSize=128,
interpolation='nearest'):
# NCWH format
N, C, W, H = arrays_list.shape
arrays_list = ((arrays_list + 1.0) * 255.0 / 2.0).astype(np.uint8)
if C == 1:
arrays_list = np.reshape(arrays_list, (N, W, H))
gridMaxWidth = max(gridMaxWidth, W)
imgSize = max(W, imgMinSize)
imgHeight = int((float(imgSize) / W) * H)
nImgsPerRows = min(N, int(gridMaxWidth // imgSize))
gridWidth = nImgsPerRows * imgSize
nRows = N // nImgsPerRows
if N % nImgsPerRows > 0:
nRows += 1
gridHeight = nRows * imgHeight
if C == 1:
outGrid = np.zeros((gridHeight, gridWidth), dtype='uint8')
else:
outGrid = np.zeros((gridHeight, gridWidth, C), dtype='uint8')
outGrid += 255
interp = {
'nearest': Image.NEAREST,
'lanczos': Image.LANCZOS,
'bilinear': Image.BILINEAR,
'bicubic': Image.BICUBIC
}
indexImage = 0
for r in range(nRows):
for c in range(nImgsPerRows):
if indexImage == N:
break
xStart = c * imgSize
yStart = r * imgHeight
img = np.array(arrays_list[indexImage])
img = Image.fromarray(np.transpose(img, (1,2,0)))
tmpImage = np.array(img.resize((imgSize, imgHeight), resample=interp[interpolation]))
if C == 1:
outGrid[yStart:(yStart + imgHeight),
xStart:(xStart + imgSize)] = tmpImage
else:
outGrid[yStart:(yStart + imgHeight),
xStart:(xStart + imgSize), :] = tmpImage
indexImage += 1
return outGrid