annotate data_generation/pipeline/visualizer.py @ 633:13baba8a4522

merge
author Yoshua Bengio <bengioy@iro.umontreal.ca>
date Sat, 19 Mar 2011 22:51:40 -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