annotate transformations/pipeline.py @ 61:cc4be6b25b8e

Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
author boulanni <nicolas_boulanger@hotmail.com>
date Mon, 08 Feb 2010 23:45:17 -0500
parents c89defea1e65
children 1afa95285b9c
rev   line source
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
1 #!/usr/bin/python
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
2 # coding: utf-8
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
3
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
4 from __future__ import with_statement
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
5
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
6 # This is intended to be run as a GIMP script
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
7 #from gimpfu import *
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
8
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
9 import sys, os, getopt
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
10 import numpy
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
11 import filetensor as ft
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
12 import random
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
13
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
14 # To debug locally, also call with -s 100 (to stop after ~100)
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
15 # (otherwise we allocate all needed memory, might be loonnng and/or crash
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
16 # if, lucky like me, you have an age-old laptop creaking from everywhere)
52
c89defea1e65 Modification aux déformations élastiques pour mettre en cache 50x10 champs de déformation, selon 10 niveaux de complexité
fsavard
parents: 50
diff changeset
17 DEBUG = True
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
18 DEBUG_X = False
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
19 if DEBUG:
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
20 DEBUG_X = False # Debug under X (pylab.show())
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
21
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
22 DEBUG_IMAGES_PATH = None
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
23 if DEBUG:
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
24 # UNTESTED YET
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
25 # To avoid loading NIST if you don't have it handy
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
26 # (use with debug_images_iterator(), see main())
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
27 # To use NIST, leave as = None
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
28 DEBUG_IMAGES_PATH = None#'/home/francois/Desktop/debug_images'
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
29
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
30 # Directory where to dump images to visualize results
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
31 # (create it, otherwise it'll crash)
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
32 DEBUG_OUTPUT_DIR = 'debug_out'
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
33
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
34 DEFAULT_NIST_PATH = '/data/lisa/data/ift6266h10/train_data.ft'
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
35 DEFAULT_LABEL_PATH = '/data/lisa/data/ift6266h10/train_labels.ft'
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
36 ARGS_FILE = os.environ['PIPELINE_ARGS_TMPFILE']
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
37
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
38 if DEBUG_X:
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
39 import pylab
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
40 pylab.ion()
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
41
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
42 #from add_background_image import AddBackground
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
43 #from affine_transform import AffineTransformation
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
44 from PoivreSel import PoivreSel
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
45 from thick import Thick
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
46 #from BruitGauss import BruitGauss
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
47 #from gimp_script import GIMPTransformation
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
48 #from Rature import Rature
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
49 from contrast import Contrast
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
50 from local_elastic_distortions import LocalElasticDistorter
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
51 from slant import Slant
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
52
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
53 if DEBUG:
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
54 from visualizer import Visualizer
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
55 # Either put the visualizer as in the MODULES_INSTANCES list
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
56 # after each module you want to visualize, or in the
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
57 # AFTER_EACH_MODULE_HOOK list (but not both, it's redundant)
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
58 VISUALIZER = Visualizer(to_dir=DEBUG_OUTPUT_DIR, on_screen=False)
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
59
52
c89defea1e65 Modification aux déformations élastiques pour mettre en cache 50x10 champs de déformation, selon 10 niveaux de complexité
fsavard
parents: 50
diff changeset
60 MODULE_INSTANCES = [LocalElasticDistorter()]
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
61
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
62 # These should have a "after_transform_callback(self, image)" method
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
63 # (called after each call to transform_image in a module)
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
64 AFTER_EACH_MODULE_HOOK = []
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
65 if DEBUG:
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
66 AFTER_EACH_MODULE_HOOK = [VISUALIZER]
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
67
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
68 # These should have a "end_transform_callback(self, final_image" method
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
69 # (called after all modules have been called)
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
70 END_TRANSFORM_HOOK = []
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
71 if DEBUG:
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
72 END_TRANSFORM_HOOK = [VISUALIZER]
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
73
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
74 class Pipeline():
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
75 def __init__(self, modules, num_img, image_size=(32,32)):
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
76 self.modules = modules
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
77 self.num_img = num_img
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
78 self.num_params_stored = 0
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
79 self.image_size = image_size
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
80
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
81 self.init_memory()
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
82
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
83 def init_num_params_stored(self):
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
84 # just a dummy call to regenerate_parameters() to get the
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
85 # real number of params (only those which are stored)
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
86 self.num_params_stored = 0
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
87 for m in self.modules:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
88 self.num_params_stored += len(m.regenerate_parameters(0.0))
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
89
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
90 def init_memory(self):
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
91 self.init_num_params_stored()
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
92
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
93 total = self.num_img
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
94 num_px = self.image_size[0] * self.image_size[1]
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
95
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
96 self.res_data = numpy.empty((total, num_px), dtype=numpy.uint8)
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
97 # +1 to store complexity
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
98 self.params = numpy.empty((total, self.num_params_stored+1))
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
99 self.res_labels = numpy.empty(total, dtype=numpy.int32)
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
100
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
101 def run(self, img_iterator, complexity_iterator):
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
102 img_size = self.image_size
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
103
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
104 should_hook_after_each = len(AFTER_EACH_MODULE_HOOK) != 0
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
105 should_hook_at_the_end = len(END_TRANSFORM_HOOK) != 0
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
106
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
107 for img_no, (img, label) in enumerate(img_iterator):
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
108 sys.stdout.flush()
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
109 complexity = complexity_iterator.next()
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
110
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
111 global_idx = img_no
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
112
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
113 img = img.reshape(img_size)
15
f6b6c74bb82f Fix the datatypes.
Arnaud Bergeron <abergeron@gmail.com>
parents: 10
diff changeset
114
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
115 param_idx = 1
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
116 # store complexity along with other params
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
117 self.params[global_idx, 0] = complexity
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
118 for mod in self.modules:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
119 # This used to be done _per batch_,
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
120 # ie. out of the "for img" loop
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
121 p = mod.regenerate_parameters(complexity)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
122 self.params[global_idx, param_idx:param_idx+len(p)] = p
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
123 param_idx += len(p)
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
124
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
125 img = mod.transform_image(img)
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
126
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
127 if should_hook_after_each:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
128 for hook in AFTER_EACH_MODULE_HOOK:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
129 hook.after_transform_callback(img)
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
130
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
131 self.res_data[global_idx] = \
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
132 img.reshape((img_size[0] * img_size[1],))*255
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
133 self.res_labels[global_idx] = label
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
134
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
135 if should_hook_at_the_end:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
136 for hook in END_TRANSFORM_HOOK:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
137 hook.end_transform_callback(img)
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
138
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
139 def write_output(self, output_file_path, params_output_file_path, labels_output_file_path):
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
140 with open(output_file_path, 'wb') as f:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
141 ft.write(f, self.res_data)
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
142
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
143 numpy.save(params_output_file_path, self.params)
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
144
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
145 with open(labels_output_file_path, 'wb') as f:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
146 ft.write(f, self.res_labels)
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
147
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
148
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
149 ##############################################################################
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
150 # COMPLEXITY ITERATORS
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
151 # They're called once every img, to get the complexity to use for that img
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
152 # they must be infinite (should never throw StopIteration when calling next())
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
153
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
154 # probability of generating 0 complexity, otherwise
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
155 # uniform over 0.0-max_complexity
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
156 def range_complexity_iterator(probability_zero, max_complexity):
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
157 assert max_complexity <= 1.0
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
158 n = numpy.random.uniform(0.0, 1.0)
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
159 while True:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
160 if n < probability_zero:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
161 yield 0.0
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
162 else:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
163 yield numpy.random.uniform(0.0, max_complexity)
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
164
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
165 ##############################################################################
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
166 # DATA ITERATORS
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
167 # They can be used to interleave different data sources etc.
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
168
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
169 '''
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
170 # Following code (DebugImages and iterator) is untested
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
171
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
172 def load_image(filepath):
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
173 _RGB_TO_GRAYSCALE = [0.3, 0.59, 0.11, 0.0]
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
174 img = Image.open(filepath)
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
175 img = numpy.asarray(img)
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
176 if len(img.shape) > 2:
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
177 img = (img * _RGB_TO_GRAYSCALE).sum(axis=2)
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
178 return (img / 255.0).astype('float')
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
179
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
180 class DebugImages():
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
181 def __init__(self, images_dir_path):
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
182 import glob, os.path
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
183 self.filelist = glob.glob(os.path.join(images_dir_path, "*.png"))
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
184
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
185 def debug_images_iterator(debug_images):
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
186 for path in debug_images.filelist:
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
187 yield load_image(path)
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
188 '''
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
189
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
190 class NistData():
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
191 def __init__(self, nist_path, label_path):
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
192 self.train_data = open(nist_path, 'rb')
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
193 self.train_labels = open(label_path, 'rb')
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
194 self.dim = tuple(ft._read_header(self.train_data)[3])
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
195
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
196 def nist_supp_iterator(nist, prob_font, prob_captcha, num_img):
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
197 subtensor = slice(0, num_img)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
198 img = ft.read(nist.train_data, subtensor).astype(numpy.float32)/255
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
199 labels = ft.read(nist.train_labels, subtensor)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
200
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
201 for i in xrange(num_img):
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
202 r = numpy.random.rand()
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
203 if r<= prob_font:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
204 pass #get font
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
205 elif r<= prob_font + prob_captcha:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
206 pass #get captcha
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
207 else:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
208 j = numpy.random.randint(num_img)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
209 yield img[j], labels[j]
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
210
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
211
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
212 # Mostly for debugging, for the moment, just to see if we can
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
213 # reload the images and parameters.
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
214 def reload(output_file_path, params_output_file_path):
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
215 images_ft = open(output_file_path, 'rb')
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
216 images_ft_dim = tuple(ft._read_header(images_ft)[3])
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
217
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
218 print "Images dimensions: ", images_ft_dim
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
219
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
220 params = numpy.load(params_output_file_path)
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
221
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
222 print "Params dimensions: ", params.shape
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
223 print params
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
224
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
225
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
226 ##############################################################################
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
227 # MAIN
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
228
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
229 def usage():
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
230 print '''
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
231 Usage: run_pipeline.sh [-m ...] [-z ...] [-o ...] [-p ...]
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
232 -m, --max-complexity: max complexity to generate for an image
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
233 -z, --probability-zero: probability of using complexity=0 for an image
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
234 -o, --output-file: full path to file to use for output of images
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
235 -p, --params-output-file: path to file to output params to
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
236 -r, --labels-output-file: path to file to output labels to
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
237 -f, --data-file: path to filetensor (.ft) data file (NIST)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
238 -l, --label-file: path to filetensor (.ft) labels file (NIST labels)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
239 -a, --prob-font: probability of using a raw font image
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
240 -b, --prob-captcha: probability of using a captcha image
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
241 '''
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
242
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
243 # See run_pipeline.py
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
244 def get_argv():
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
245 with open(ARGS_FILE) as f:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
246 args = [l.rstrip() for l in f.readlines()]
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
247 return args
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
248
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
249 # Might be called locally or through dbidispatch. In all cases it should be
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
250 # passed to the GIMP executable to be able to use GIMP filters.
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
251 # Ex:
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
252 def _main():
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
253 max_complexity = 0.5 # default
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
254 probability_zero = 0.1 # default
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
255 output_file_path = None
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
256 params_output_file_path = None
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
257 labels_output_file_path = None
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
258 nist_path = DEFAULT_NIST_PATH
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
259 label_path = DEFAULT_LABEL_PATH
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
260 prob_font = 0.0
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
261 prob_captcha = 0.0
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
262 stop_after = None
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
263 reload_mode = False
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
264
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
265 try:
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
266 opts, args = getopt.getopt(get_argv(), "rm:z:o:p:r:s:f:l:a:b:", ["reload","max-complexity=", "probability-zero=", "output-file=", "params-output-file=", "labels-output-file=", "stop-after=", "data-file=", "label-file=", "prob-font=", "prob-captcha="])
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
267 except getopt.GetoptError, err:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
268 # print help information and exit:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
269 print str(err) # will print something like "option -a not recognized"
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
270 usage()
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
271 sys.exit(2)
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
272
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
273 for o, a in opts:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
274 if o in ('-m', '--max-complexity'):
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
275 max_complexity = float(a)
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
276 assert max_complexity >= 0.0 and max_complexity <= 1.0
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
277 elif o in ('-r', '--reload'):
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
278 reload_mode = True
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
279 elif o in ("-z", "--probability-zero"):
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
280 probability_zero = float(a)
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
281 assert probability_zero >= 0.0 and probability_zero <= 1.0
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
282 elif o in ("-o", "--output-file"):
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
283 output_file_path = a
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
284 elif o in ('-p', "--params-output-file"):
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
285 params_output_file_path = a
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
286 elif o in ('-r', "--labels-output-file"):
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
287 labels_output_file_path = a
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
288 elif o in ('-s', "--stop-after"):
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
289 stop_after = int(a)
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
290 elif o in ('-f', "--data-file"):
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
291 nist_path = a
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
292 elif o in ('-l', "--label-file"):
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
293 label_path = a
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
294 elif o in ('-a', "--prob-font"):
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
295 prob_font = float(a)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
296 elif o in ('-b', "--prob-captcha"):
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
297 prob_captcha = float(a)
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
298 else:
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
299 assert False, "unhandled option"
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
300
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
301 if output_file_path == None or params_output_file_path == None or labels_output_file_path == None:
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
302 print "Must specify the three output files."
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
303 print
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
304 usage()
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
305 sys.exit(2)
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
306
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
307 if reload_mode:
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
308 reload(output_file_path, params_output_file_path)
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
309 else:
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
310 if DEBUG_IMAGES_PATH:
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
311 '''
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
312 # This code is yet untested
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
313 debug_images = DebugImages(DEBUG_IMAGES_PATH)
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
314 num_img = len(debug_images.filelist)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
315 pl = Pipeline(modules=MODULE_INSTANCES, num_img=num_img, image_size=(32,32))
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
316 img_it = debug_images_iterator(debug_images)
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
317 '''
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
318 else:
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
319 nist = NistData(nist_path, label_path)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
320 num_img = nist.dim[0]
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
321 if stop_after:
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
322 num_img = stop_after
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
323 pl = Pipeline(modules=MODULE_INSTANCES, num_img=num_img, image_size=(32,32))
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
324 img_it = nist_supp_iterator(nist, prob_font, prob_captcha, num_img)
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
325
50
ff59670cd1f9 Ajouté l'enregistrement de la complexité, et un strict minimum pour reloader les fichiers d'images et de paramètres
fsavard
parents: 48
diff changeset
326 cpx_it = range_complexity_iterator(probability_zero, max_complexity)
61
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
327 pl.run(img_it, cpx_it)
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
328 pl.write_output(output_file_path, params_output_file_path, labels_output_file_path)
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
329
48
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
330 _main()
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
331
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
332 if DEBUG_X:
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
333 pylab.ioff()
fabf910467b2 Ajouté des hooks pour visualisation à différentes étapes. On peut dumper la grille d'images pour chaque image transformée ou visualiser live avec pylab.imshow() (pas encore essayé cette façon... j'ai un problème avec GIMP+python sur mon laptop).
fsavard
parents: 41
diff changeset
334 pylab.show()
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
335
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
336 pdb.gimp_quit(0)
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
337