annotate data_generation/pipeline/visualizer.py @ 266:1e4e60ddadb1

Merge. Ah, et dans le dernier commit, j'avais oublié de mentionner que j'ai ajouté du code pour gérer l'isolation de différents clones pour rouler des expériences et modifier le code en même temps.
author fsavard
date Fri, 19 Mar 2010 10:56:16 -0400
parents 5e0e5f1860ec
children
rev   line source
49
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
1 #!/usr/bin/python
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
2
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
3 import numpy
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
4 import Image
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
5 from image_tiling import tile_raster_images
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
6 import pylab
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
7 import time
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
8
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
9 class Visualizer():
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
10 def __init__(self, num_columns=10, image_size=(32,32), to_dir=None, on_screen=False):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
11 self.list = []
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
12 self.image_size = image_size
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
13 self.num_columns = num_columns
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
14
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
15 self.on_screen = on_screen
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
16 self.to_dir = to_dir
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
17
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
18 self.cur_grid_image = None
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
19
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
20 self.cur_index = 0
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
21
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
22 def visualize_stop_and_flush(self):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
23 self.make_grid_image()
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
24
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
25 if self.on_screen:
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
26 self.visualize()
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
27 if self.to_dir:
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
28 self.dump_to_disk()
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
29
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
30 self.stop_and_wait()
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
31 self.flush()
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
32
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
33 self.cur_index += 1
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
34
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
35 def make_grid_image(self):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
36 num_rows = len(self.list) / self.num_columns
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
37 if len(self.list) % self.num_columns != 0:
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
38 num_rows += 1
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
39 grid_shape = (num_rows, self.num_columns)
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
40 self.cur_grid_image = tile_raster_images(numpy.array(self.list), self.image_size, grid_shape, tile_spacing=(5,5), output_pixel_vals=False)
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
41
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
42 def visualize(self):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
43 pylab.imshow(self.cur_grid_image)
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
44 pylab.draw()
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
45
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
46 def dump_to_disk(self):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
47 gi = Image.fromarray((self.cur_grid_image * 255).astype('uint8'), "L")
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
48 gi.save(self.to_dir + "/grid_" + str(self.cur_index) + ".png")
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
49
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
50 def stop_and_wait(self):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
51 # can't raw_input under gimp, so sleep)
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
52 print "New image generated, sleeping 5 secs"
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
53 time.sleep(5)
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
54
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
55 def flush(self):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
56 self.list = []
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
57
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
58 def get_parameters_names(self):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
59 return []
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
60
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
61 def regenerate_parameters(self):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
62 return []
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
63
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
64 def after_transform_callback(self, image):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
65 self.transform_image(image)
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
66
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
67 def end_transform_callback(self, final_image):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
68 self.visualize_stop_and_flush()
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
69
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
70 def transform_image(self, image):
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
71 sz = self.image_size
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
72 self.list.append(image.copy().reshape((sz[0] * sz[1])))
8ce089f30463 Oublier d'add deux fichiers pour dernier commit.
fsavard
parents:
diff changeset
73