annotate transformations/pipeline.py @ 121:4a29910eae93

Maintenant, les ratures sont fabriquees a partir de 1 qui ont ete transformes pas mal. Les ratures peuvent maintenant etre plus d'une. Proba 0.15 d'effectuer une rature
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Thu, 18 Feb 2010 10:53:36 -0500
parents 3bec123dd75d
children ccce06590e64
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)
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
17 DEBUG = False
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'
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
36 DEFAULT_OCR_PATH = '/data/lisa/data/ocr_breuel/filetensor/unlv-corrected-2010-02-01-shuffled.ft'
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
37 DEFAULT_OCRLABEL_PATH = '/data/lisa/data/ocr_breuel/filetensor/unlv-corrected-2010-02-01-labels-shuffled.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
38 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
39
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
40 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
41 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
42 pylab.ion()
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
43
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
81
95c491bb5662 add all transformation to pipeline
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 67
diff changeset
46 from BruitGauss import BruitGauss
108
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
47 from DistorsionGauss import DistorsionGauss
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
48 from PermutPixel import PermutPixel
81
95c491bb5662 add all transformation to pipeline
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 67
diff changeset
49 from gimp_script import GIMP1
95c491bb5662 add all transformation to pipeline
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 67
diff changeset
50 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
51 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
52 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
53 from slant import Slant
108
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
54 from Occlusion import Occlusion
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
55 from add_background_image import AddBackground
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
56 from affine_transform import AffineTransformation
109
9c45e0071b52 Adapté le générateur d'images de fontes pour utiliser en amont du pipeline
boulanni <nicolas_boulanger@hotmail.com>
parents: 108
diff changeset
57 from ttf2jpg import ttf2jpg
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
58
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
59 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
60 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
61 # 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
62 # 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
63 # 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
64 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
65
108
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
66 ###---------------------order of transformation module
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
67 MODULE_INSTANCES = [Slant(),Thick(),AffineTransformation(),LocalElasticDistorter(),GIMP1(),Rature(),Occlusion(), PermutPixel(),DistorsionGauss(),AddBackground(), PoivreSel(), BruitGauss(), Contrast()]
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
68
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 # 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
70 # (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
71 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
72 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
73 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
74
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
75 # 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
76 # (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
77 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
78 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
79 END_TRANSFORM_HOOK = [VISUALIZER]
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
80
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
81 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
82 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
83 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
84 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
85 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
86 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
87
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.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
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_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
91 # 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
92 # 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
93 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
94 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
95 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
96
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
97 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
98 self.init_num_params_stored()
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
99
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
100 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
101 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
102
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
103 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
104 # +1 to store complexity
115
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
105 self.params = numpy.empty((total, self.num_params_stored+len(self.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
106 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
107
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
108 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
109 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
110
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
111 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
112 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
113
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
114 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
115 sys.stdout.flush()
115
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
116
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
117 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
118
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
119 img = img.reshape(img_size)
15
f6b6c74bb82f Fix the datatypes.
Arnaud Bergeron <abergeron@gmail.com>
parents: 10
diff changeset
120
115
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
121 param_idx = 0
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
122 mod_idx = 0
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
123 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
124 # This used to be done _per batch_,
115
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
125 # ie. out of the "for img" loop
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
126 complexity = complexity_iterator.next()
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
127 #better to do a complexity sampling for each transformations in order to have more variability
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
128 #otherwise a lot of images similar to the source are generated (i.e. when complexity is close to 0 (1/8 of the time))
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
129 #we need to save the complexity of each transformations and the sum of these complexity is a good indicator of the overall
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
130 #complexity
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
131 self.params[global_idx, mod_idx] = complexity
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
132 mod_idx += 1
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
133
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
134 p = mod.regenerate_parameters(complexity)
115
b84a0d009af8 changes on pipeline mecanism: we now sample a different complexity for each transformations, this because when we use the same sampled complexity for all the modules 1/8 of the time we are close to 0 and we obtain an image very close to the source, we now save a complexity for each module in the parameters array
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 109
diff changeset
135 self.params[global_idx, param_idx+len(self.modules):param_idx+len(p)+len(self.modules)] = 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
136 param_idx += len(p)
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
137
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
138 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
139
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
140 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
141 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
142 hook.after_transform_callback(img)
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
143
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 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
145 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
146 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
147
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
148 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
149 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
150 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
151
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
152 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
153 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
154 ft.write(f, self.res_data)
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
155
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
156 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
157
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
158 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
159 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
160
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
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 ##############################################################################
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 # 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
164 # 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
165 # 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
166
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
167 # 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
168 # 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
169 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
170 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
171 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
172 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
173 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
174 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
175 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
176 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
177
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
178 ##############################################################################
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
179 # 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
180 # 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
181
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
182 '''
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 # 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
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 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
186 _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
187 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
188 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
189 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
190 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
191 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
192
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
193 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
194 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
195 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
196 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
197
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
198 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
199 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
200 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
201 '''
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
202
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
203 class NistData():
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
204 def __init__(self, nist_path, label_path, ocr_path, ocrlabel_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
205 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
206 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
207 self.dim = tuple(ft._read_header(self.train_data)[3])
64
1afa95285b9c fixed small bug related to loading the data - should seek back to the beginning of the file
Dumitru Erhan <dumitru.erhan@gmail.com>
parents: 61
diff changeset
208 # in order to seek to the beginning of the file
1afa95285b9c fixed small bug related to loading the data - should seek back to the beginning of the file
Dumitru Erhan <dumitru.erhan@gmail.com>
parents: 61
diff changeset
209 self.train_data.close()
1afa95285b9c fixed small bug related to loading the data - should seek back to the beginning of the file
Dumitru Erhan <dumitru.erhan@gmail.com>
parents: 61
diff changeset
210 self.train_data = open(nist_path, 'rb')
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
211 self.ocr_data = open(ocr_path, 'rb')
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
212 self.ocr_labels = open(ocrlabel_path, 'rb')
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
213
108
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
214 # cet iterator load tout en ram
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
215 def nist_supp_iterator(nist, prob_font, prob_captcha, prob_ocr, num_img):
108
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
216 img = ft.read(nist.train_data)
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
217 labels = ft.read(nist.train_labels)
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
218 if prob_ocr:
108
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
219 ocr_img = ft.read(nist.ocr_data)
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
220 ocr_labels = ft.read(nist.ocr_labels)
109
9c45e0071b52 Adapté le générateur d'images de fontes pour utiliser en amont du pipeline
boulanni <nicolas_boulanger@hotmail.com>
parents: 108
diff changeset
221 ttf = ttf2jpg()
64
1afa95285b9c fixed small bug related to loading the data - should seek back to the beginning of the file
Dumitru Erhan <dumitru.erhan@gmail.com>
parents: 61
diff changeset
222
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
223 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
224 r = numpy.random.rand()
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
225 if r <= prob_font:
109
9c45e0071b52 Adapté le générateur d'images de fontes pour utiliser en amont du pipeline
boulanni <nicolas_boulanger@hotmail.com>
parents: 108
diff changeset
226 yield ttf.generate_image()
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
227 elif r <= prob_font + prob_captcha:
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
228 pass #get captcha
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
229 elif r <= prob_font + prob_captcha + prob_ocr:
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
230 j = numpy.random.randint(len(ocr_labels))
108
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
231 yield ocr_img[j].astype(numpy.float32)/255, ocr_labels[j]
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 else:
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
233 j = numpy.random.randint(len(labels))
108
a7cd8dd3221c pipeline.py: placé les modules dans le bon ordre + store NIST en bytes plutôt qu'en float32 dans la RAM
boulanni <nicolas_boulanger@hotmail.com>
parents: 81
diff changeset
234 yield img[j].astype(numpy.float32)/255, 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
235
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
236
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
237 # 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
238 # 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
239 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
240 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
241 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
242
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
243 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
244
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
245 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
246
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
247 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
248 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
249
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
250
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 ##############################################################################
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
252 # 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
253
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 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
255 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
256 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
257 -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
258 -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
259 -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
260 -p, --params-output-file: path to file to output params to
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
261 -x, --labels-output-file: path to file to output labels 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
262 -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
263 -l, --label-file: path to filetensor (.ft) labels file (NIST labels)
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
264 -c, --ocr-file: path to filetensor (.ft) data file (OCR)
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
265 -d, --ocrlabel-file: path to filetensor (.ft) labels file (OCR labels)
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 -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
267 -b, --prob-captcha: probability of using a captcha image
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
268 -e, --prob-ocr: probability of using an ocr 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
269 '''
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
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 # 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
272 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
273 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
274 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
275 return args
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
276
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
277 # 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
278 # 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
279 # 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
280 def _main():
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
281 #global DEFAULT_NIST_PATH, DEFAULT_LABEL_PATH, DEFAULT_OCR_PATH, DEFAULT_OCRLABEL_PATH
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
282 #global getopt, get_argv
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
283
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
284 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
285 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
286 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
287 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
288 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
289 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
290 label_path = DEFAULT_LABEL_PATH
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
291 ocr_path = DEFAULT_OCR_PATH
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
292 ocrlabel_path = DEFAULT_OCRLABEL_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
293 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
294 prob_captcha = 0.0
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
295 prob_ocr = 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
296 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
297 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
298
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
299 try:
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
300 opts, args = getopt.getopt(get_argv(), "rm:z:o:p:x:s:f:l:c:d:a:b:e:", ["reload","max-complexity=", "probability-zero=", "output-file=", "params-output-file=", "labels-output-file=", "stop-after=", "data-file=", "label-file=", "ocr-file=", "ocrlabel-file=", "prob-font=", "prob-captcha=", "prob-ocr="])
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
301 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
302 # 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
303 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
304 usage()
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
305 pdb.gimp_quit(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
306 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
307
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
308 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
309 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
310 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
311 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
312 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
313 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
314 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
315 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
316 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
317 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
318 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
319 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
320 params_output_file_path = a
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
321 elif o in ('-x', "--labels-output-file"):
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 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
323 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
324 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
325 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
326 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
327 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
328 label_path = a
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
329 elif o in ('-c', "--ocr-file"):
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
330 ocr_path = a
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
331 elif o in ('-d', "--ocrlabel-file"):
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
332 ocrlabel_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
333 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
334 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
335 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
336 prob_captcha = float(a)
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
337 elif o in ('-e', "--prob-ocr"):
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
338 prob_ocr = 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
339 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
340 assert False, "unhandled option"
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
341
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
342 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
343 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
344 usage()
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
345 pdb.gimp_quit(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
346 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
347
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
348 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
349 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
350 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
351 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
352 '''
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
353 # 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
354 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
355 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
356 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
357 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
358 '''
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
359 else:
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
360 nist = NistData(nist_path, label_path, ocr_path, ocrlabel_path)
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
361 num_img = 819200 # 800 Mb file
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
362 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
363 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
364 pl = Pipeline(modules=MODULE_INSTANCES, num_img=num_img, image_size=(32,32))
67
5e448ea129b3 Ajouté la source (optionnelle) de données OCR Autriche avec une probabilité passée en argument
boulanni <nicolas_boulanger@hotmail.com>
parents: 64
diff changeset
365 img_it = nist_supp_iterator(nist, prob_font, prob_captcha, prob_ocr, 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
366
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
367 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
368 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
369 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
370
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
371 _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
372
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
373 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
374 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
375 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
376
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
377 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
378