DaSE-Computer-Vision-2021
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

73 lignes
2.1 KiB

  1. from builtins import range
  2. from past.builtins import xrange
  3. from math import sqrt, ceil
  4. import numpy as np
  5. def visualize_grid(Xs, ubound=255.0, padding=1):
  6. """
  7. Reshape a 4D tensor of image data to a grid for easy visualization.
  8. Inputs:
  9. - Xs: Data of shape (N, H, W, C)
  10. - ubound: Output grid will have values scaled to the range [0, ubound]
  11. - padding: The number of blank pixels between elements of the grid
  12. """
  13. (N, H, W, C) = Xs.shape
  14. grid_size = int(ceil(sqrt(N)))
  15. grid_height = H * grid_size + padding * (grid_size - 1)
  16. grid_width = W * grid_size + padding * (grid_size - 1)
  17. grid = np.zeros((grid_height, grid_width, C))
  18. next_idx = 0
  19. y0, y1 = 0, H
  20. for y in range(grid_size):
  21. x0, x1 = 0, W
  22. for x in range(grid_size):
  23. if next_idx < N:
  24. img = Xs[next_idx]
  25. low, high = np.min(img), np.max(img)
  26. grid[y0:y1, x0:x1] = ubound * (img - low) / (high - low)
  27. # grid[y0:y1, x0:x1] = Xs[next_idx]
  28. next_idx += 1
  29. x0 += W + padding
  30. x1 += W + padding
  31. y0 += H + padding
  32. y1 += H + padding
  33. # grid_max = np.max(grid)
  34. # grid_min = np.min(grid)
  35. # grid = ubound * (grid - grid_min) / (grid_max - grid_min)
  36. return grid
  37. def vis_grid(Xs):
  38. """ visualize a grid of images """
  39. (N, H, W, C) = Xs.shape
  40. A = int(ceil(sqrt(N)))
  41. G = np.ones((A*H+A, A*W+A, C), Xs.dtype)
  42. G *= np.min(Xs)
  43. n = 0
  44. for y in range(A):
  45. for x in range(A):
  46. if n < N:
  47. G[y*H+y:(y+1)*H+y, x*W+x:(x+1)*W+x, :] = Xs[n,:,:,:]
  48. n += 1
  49. # normalize to [0,1]
  50. maxg = G.max()
  51. ming = G.min()
  52. G = (G - ming)/(maxg-ming)
  53. return G
  54. def vis_nn(rows):
  55. """ visualize array of arrays of images """
  56. N = len(rows)
  57. D = len(rows[0])
  58. H,W,C = rows[0][0].shape
  59. Xs = rows[0][0]
  60. G = np.ones((N*H+N, D*W+D, C), Xs.dtype)
  61. for y in range(N):
  62. for x in range(D):
  63. G[y*H+y:(y+1)*H+y, x*W+x:(x+1)*W+x, :] = rows[y][x]
  64. # normalize to [0,1]
  65. maxg = G.max()
  66. ming = G.min()
  67. G = (G - ming)/(maxg-ming)
  68. return G