annotate data_generation/pipeline/pipeline.py @ 181:f0f47b045cbf

Remove a stray cast in the FTDataSet code and export the ocr dataset.
author Arnaud Bergeron <abergeron@gmail.com>
date Sat, 27 Feb 2010 17:10:37 -0500
parents 72eee6a9f43f
children 992ca8035a4d
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
156
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
40 # PARSE COMMAND LINE ARGUMENTS
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
41 def get_argv():
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
42 with open(ARGS_FILE) as f:
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
43 args = [l.rstrip() for l in f.readlines()]
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
44 return args
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
45
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
46 def usage():
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
47 print '''
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
48 Usage: run_pipeline.sh [-m ...] [-z ...] [-o ...] [-p ...]
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
49 -m, --max-complexity: max complexity to generate for an image
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
50 -z, --probability-zero: probability of using complexity=0 for an image
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
51 -o, --output-file: full path to file to use for output of images
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
52 -p, --params-output-file: path to file to output params to
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
53 -x, --labels-output-file: path to file to output labels to
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
54 -f, --data-file: path to filetensor (.ft) data file (NIST)
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
55 -l, --label-file: path to filetensor (.ft) labels file (NIST labels)
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
56 -c, --ocr-file: path to filetensor (.ft) data file (OCR)
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
57 -d, --ocrlabel-file: path to filetensor (.ft) labels file (OCR labels)
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
58 -a, --prob-font: probability of using a raw font image
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
59 -b, --prob-captcha: probability of using a captcha image
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
60 -g, --prob-ocr: probability of using an ocr image
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
61 -y, --seed: the job seed
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
62 '''
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
63
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
64 try:
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
65 opts, args = getopt.getopt(get_argv(), "rm:z:o:p:x:s:f:l:c:d:a:b:g:y:", ["reload","max-complexity=", "probability-zero=", "output-file=", "params-output-file=", "labels-output-file=",
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
66 "stop-after=", "data-file=", "label-file=", "ocr-file=", "ocrlabel-file=", "prob-font=", "prob-captcha=", "prob-ocr=", "seed="])
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
67 except getopt.GetoptError, err:
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
68 # print help information and exit:
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
69 print str(err) # will print something like "option -a not recognized"
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
70 usage()
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
71 pdb.gimp_quit(0)
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
72 sys.exit(2)
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
73
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
74 for o, a in opts:
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
75 if o in ('-y','--seed'):
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
76 random.seed(int(a))
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
77 numpy.random.seed(int(a))
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
78
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
79 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
80 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
81 pylab.ion()
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
82
171
72eee6a9f43f making the data_generation folder (and subdirs) an importable module
Dumitru Erhan <dumitru.erhan@gmail.com>
parents: 168
diff changeset
83 from ift6266.data_generation.transformations import *
72eee6a9f43f making the data_generation folder (and subdirs) an importable module
Dumitru Erhan <dumitru.erhan@gmail.com>
parents: 168
diff changeset
84
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
85 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
86 from thick import Thick
81
95c491bb5662 add all transformation to pipeline
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 67
diff changeset
87 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
88 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
89 from PermutPixel import PermutPixel
81
95c491bb5662 add all transformation to pipeline
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 67
diff changeset
90 from gimp_script import GIMP1
95c491bb5662 add all transformation to pipeline
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents: 67
diff changeset
91 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
92 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
93 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
94 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
95 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
96 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
97 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
98 from ttf2jpg import ttf2jpg
156
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
99 from Facade import generateCaptcha
41
fdb0e0870fb4 Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP.
fsavard
parents: 15
diff changeset
100
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
101 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
102 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
103 # 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
104 # 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
105 # 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
106 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
107
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
108 ###---------------------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
109 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
110
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 # 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
112 # (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
113 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
114 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
115 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
116
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
117 # 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
118 # (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
119 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
120 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
121 END_TRANSFORM_HOOK = [VISUALIZER]
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
122
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
123 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
124 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
125 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
126 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
127 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
128 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
129
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
130 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
131
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
132 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
133 # 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
134 # 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
135 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
136 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
137 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
138
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 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
140 self.init_num_params_stored()
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
141
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
142 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
143 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
144
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
145 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
146 # +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
147 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
148 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
149
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
150 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
151 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
152
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
153 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
154 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
155
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
156 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
157 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
158
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
159 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
160
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
161 img = img.reshape(img_size)
15
f6b6c74bb82f Fix the datatypes.
Arnaud Bergeron <abergeron@gmail.com>
parents: 10
diff changeset
162
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
163 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
164 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
165 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
166 # 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
167 # 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
168 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
169 #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
170 #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
171 #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
172 #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
173 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
174 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
175
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
176 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
177 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
178 param_idx += len(p)
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
179
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
180 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
181
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
182 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
183 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
184 hook.after_transform_callback(img)
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
185
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
186 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
187 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
188 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
189
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
190 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
191 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
192 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
193
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
194 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
195 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
196 ft.write(f, self.res_data)
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
197
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
198 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
199
cc4be6b25b8e Data iterator alternating between NIST/font/captcha, removed the use of batches, keep track of labels (Not fully done yet)
boulanni <nicolas_boulanger@hotmail.com>
parents: 52
diff changeset
200 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
201 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
202
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
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
204 ##############################################################################
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 # 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
206 # 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
207 # 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
208
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
209 # 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
210 # 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
211 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
212 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
213 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
214 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
215 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
216 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
217 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
218 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
219
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
220 ##############################################################################
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
221 # 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
222 # 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
223
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
224 '''
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
225 # 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
226
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
227 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
228 _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
229 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
230 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
231 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
232 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
233 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
234
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
235 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
236 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
237 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
238 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
239
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
240 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
241 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
242 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
243 '''
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
244
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
245 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
246 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
247 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
248 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
249 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
250 # 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
251 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
252 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
253 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
254 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
255
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
256 # 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
257 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
258 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
259 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
260 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
261 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
262 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
263 ttf = ttf2jpg()
128
ccce06590e64 Added captcha support in pipeline.py
boulanni <nicolas_boulanger@hotmail.com>
parents: 116
diff changeset
264 L = [chr(ord('0')+x) for x in range(10)] + [chr(ord('A')+x) for x in range(26)] + [chr(ord('a')+x) for x in range(26)]
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
265
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 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
267 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
268 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
269 yield ttf.generate_image()
134
4981c729149c Fixed various bugs in pipeline for Python 2.5 support
boulanni <nicolas_boulanger@hotmail.com>
parents: 128
diff changeset
270 elif r <=prob_font + prob_captcha:
128
ccce06590e64 Added captcha support in pipeline.py
boulanni <nicolas_boulanger@hotmail.com>
parents: 116
diff changeset
271 (arr, charac) = generateCaptcha(0,1)
134
4981c729149c Fixed various bugs in pipeline for Python 2.5 support
boulanni <nicolas_boulanger@hotmail.com>
parents: 128
diff changeset
272 yield arr.astype(numpy.float32)/255, L.index(charac[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
273 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
274 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
275 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
276 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
277 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
278 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
279
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
280
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
281 # 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
282 # 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
283 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
284 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
285 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
286
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
287 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
288
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
289 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
290
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
291 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
292 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
293
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
294
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
295 ##############################################################################
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 # 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
297
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
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 # 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
300 # 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
301 # 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
302 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
303 #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
304 #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
305
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 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
307 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
308 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
309 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
310 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
311 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
312 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
313 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
314 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
315 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
316 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
317 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
318 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
319 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
320
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
321 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
322 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
323 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
324 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
325 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
326 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
327 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
328 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
329 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
330 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
331 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
332 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
333 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
334 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
335 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
336 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
337 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
338 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
339 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
340 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
341 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
342 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
343 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
344 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
345 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
346 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
347 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
348 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
349 prob_captcha = float(a)
134
4981c729149c Fixed various bugs in pipeline for Python 2.5 support
boulanni <nicolas_boulanger@hotmail.com>
parents: 128
diff changeset
350 elif o in ('-g', "--prob-ocr"):
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
351 prob_ocr = float(a)
156
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
352 elif o in ('-y', "--seed"):
6f3b866c0182 On peut maintenant launcher le pipeline avec un seed donné, résultats déterministes
boulanni <nicolas_boulanger@hotmail.com>
parents: 134
diff changeset
353 pass
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
354 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
355 assert False, "unhandled option"
10
faacc76d21c2 Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff changeset
356
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
357 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
358 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
359 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
360 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
361 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
362
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
363 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
364 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
365 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
366 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
367 '''
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
368 # 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
369 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
370 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
371 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
372 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
373 '''
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
374 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
375 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
376 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
377 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
378 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
379 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
380 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
381
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
382 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
383 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
384 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
385
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
386 _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
387
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
388 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
389 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
390 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
391
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
392 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
393