DaSE-Computer-Vision-2021
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

73 rindas
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