Mercurial > ift6266
annotate data_generation/pipeline/pipeline.py @ 177:be714ac9bcbd
Use izip(), not zip() to return a lazy iterator. (datasets)
author | Arnaud Bergeron <abergeron@gmail.com> |
---|---|
date | Sat, 27 Feb 2010 14:15:11 -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 | 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 |