Advertisement
Guest User

Untitled

a guest
May 25th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. import pylab
  2. from scipy import random, zeros, linspace, dot
  3. import numpy, scipy
  4. from pybrain.structure.modules import KohonenMap
  5. from pybrain.datasets.unsupervised import UnsupervisedDataSet
  6. import matplotlib.pyplot as plt
  7. import matplotlib.image as mpimg
  8. import itertools
  9. import colorsys
  10. import os
  11.  
  12. KOHONEN_SIZE = 3
  13. KOHONEN_DIM = 8
  14.  
  15. som = KohonenMap(KOHONEN_DIM, KOHONEN_SIZE)
  16.  
  17. pylab.ion()
  18.  
  19. img = mpimg.imread('flowers.png')
  20.  
  21. IMAGE_WIDTH = len(img)
  22. IMAGE_HEIGHT = len(img[0])
  23.  
  24. newimg = zeros((IMAGE_WIDTH, IMAGE_HEIGHT, KOHONEN_DIM))
  25.  
  26.  
  27.  
  28. image = mpimg.imread("flowers.png")
  29. r, g, b = image[:,:,0], image[:,:,1], image[:,:,2]
  30. h, s, v = r, g, b
  31.  
  32. for i in range(IMAGE_WIDTH):
  33. for j in range(IMAGE_HEIGHT):
  34. h[i,j] = colorsys.rgb_to_hsv(r[i,j], g[i,j], b[i,j])[0]
  35. s[i,j] = colorsys.rgb_to_hsv(r[i,j], g[i,j], b[i,j])[1]
  36. v[i,j] = colorsys.rgb_to_hsv(r[i,j], g[i,j], b[i,j])[2]
  37. if (colorsys.rgb_to_hsv(r[i,j], g[i,j], b[i,j])[2]*255.0 < 255): v[i,j] = 1 - v[i,j];
  38.  
  39. img[:,:,0] = v
  40. img[:,:,1] = v
  41. img[:,:,2] = v
  42. '''
  43. pylab.imshow(img)
  44. pylab.draw()
  45.  
  46. '''
  47. NEIGHBORING_RANGE = 1
  48.  
  49. for i in range(IMAGE_WIDTH):
  50. for j in range(IMAGE_HEIGHT):
  51. newimg[i,j,:3] = img[i,j,:3]
  52. add_feat = zeros((3))
  53. div = 0
  54. for k in range(i-NEIGHBORING_RANGE if i-NEIGHBORING_RANGE>0 else 0, i+NEIGHBORING_RANGE+1 if i+NEIGHBORING_RANGE+1<IMAGE_WIDTH else IMAGE_WIDTH-1):
  55. for m in range(j-NEIGHBORING_RANGE if j-NEIGHBORING_RANGE>0 else 0, j+NEIGHBORING_RANGE+1 if j+NEIGHBORING_RANGE+1<IMAGE_HEIGHT else IMAGE_HEIGHT-1):
  56. if not (k==i and m==j):
  57. div+=1
  58. for layer in range(3):
  59. add_feat[layer] += img[k,m,layer]
  60. add_feat = add_feat/[div]
  61. newimg[i,j,3:6] = add_feat
  62. newimg[i,j,6:] = [0.004*i,0.004*j]
  63.  
  64. dataset = newimg.reshape(IMAGE_WIDTH*IMAGE_HEIGHT, KOHONEN_DIM)
  65. order = [i for i in range(len(dataset))]
  66. #scipy.random.shuffle(order)
  67. ds = UnsupervisedDataSet(KOHONEN_DIM)
  68. for sample in dataset:
  69. ds.addSample(sample[:KOHONEN_DIM])
  70.  
  71. print("start learning")
  72. for i in range(1):
  73. it = 0
  74. for n in order:
  75. point = dataset[n]
  76. # one forward and one backward (training) pass
  77. som.activate(point[:KOHONEN_DIM])
  78. som.backward()
  79. if it % 10000 == 0:
  80. print (it)
  81. it+=1
  82.  
  83. print("activating")
  84. res = som.activateOnDataset(ds)
  85. im = zeros((IMAGE_WIDTH, IMAGE_HEIGHT, 3))
  86.  
  87. colors = list(itertools.permutations([i*51 for i in range(6)], 3))
  88.  
  89. '''
  90. #different colors
  91. for i in range(IMAGE_WIDTH):
  92. for j in range(IMAGE_HEIGHT):
  93. n = res[i*IMAGE_WIDTH + j]
  94. im[i,j,:] = colors[int(n[0]*KOHONEN_SIZE + n[1])]
  95.  
  96. pylab.imshow(im)
  97. pylab.draw()
  98. '''
  99.  
  100. #avarage colors
  101. im = zeros((IMAGE_WIDTH, IMAGE_HEIGHT, 3))
  102. for i in range(IMAGE_WIDTH):
  103. for j in range(IMAGE_HEIGHT):
  104. n = res[i*IMAGE_WIDTH + j]
  105. im[i,j,:] = som.neurons[int(n[0]), int(n[1]), :3]
  106.  
  107. pylab.imshow(im)
  108. pylab.draw()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement