Equa ion Chap e 1 Sec ion 1
T abajo Fin de G ado
G ado en Ingenie ía Elec ónica, Robó ica y
Meca ónica
Reconocimien o au omá ico de ca ac e es
manusc i os u ilizando ap endizaje máquina
Dp o. de Teo ía de la Señal y Comunicaciones
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Au o : Robe o Gallo Ga cía
Tu o : F ancisco José Simois Ti ado
Se illa,diciemb e 2021
iii
T abajo Fin de G ado
G ado en Ingenie ía Elec ónica, Robó ica y Meca ónica
Reconocimien o au omá ico de ca ac e es
manusc i os u ilizando ap endizaje máquina
Au o :
Robe o Gallo Ga cía
Tu o :
F ancisco José Simois Ti ado
P o eso Con a ado Doc o
Dp o. de Teo ía de la Señal y Comunicaciones
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, sep iemb e 2022
T abajo Fin de G ado: Reconocimien o au omá ico de ca ac e es manusc i os u ilizando ap endizaje máquina
Au o :
Robe o Gallo Ga cía
Tu o :
F ancisco José Simois Ti ado
El ibunal nomb ado pa a juzga el P oyec o a iba indicado, compues o po los siguien es miemb os:
P esiden e:
Vocales:
Sec e a io:
Acue dan o o ga le la cali icación de:
Se illa, 2022
El Sec e a io del T ibunal
ii
A mi amilia
ix
Ag adecimien os
Quisie a ag adece en p ime luga a odos aquellos que es u ie on conmigo al empeza la ca e a y hoy en día
siguen a mi lado iéndome da es os úl imos empujones. A mi amilia, que es u o ahí con cada bache y me
ayudó a supe a lo y a segui adelan e cuando ni yo mismo podía. A mis amigos del ba io, que siemp e me
dije on que podía con odo lo que me echasen y a día de hoy aún me dan ánimos y es án a mi lado. A mis amigos
del ins i u o y de la Uni e sidad, de los que ap endí que la dis ancia o los obs áculos en el camino no sepa an a
las pe sonas y g acias a las cuáles sigo pe siguiendo con ilusión es e p oyec o. También me quisie a ag adece
a mi pa eja Ma ía el apoyo incondicional que me apo ó en mis mejo es y peo es momen os y ha sido una de las
mejo es pe sonas que me ha dado la ca e a. Po úl imo, me gus a ía ag adece especialmen e a odos aquellos
p o eso es que han sido pa e de mi ida; desde que empecé a educa me a mi u o en es e p oyec o, F ancisco,
pues eúnen odas aquellas cualidades que he ci ado an e io men e y han sido uen e de inspi ación y de
cons ancia pa a mí.
Te mino así es a e apa en la que el ap endizaje y el descub imien o han o mado una pa e especial de mi ida.
G acias de nue o a odas las pe sonas que han hecho que es o se pueda lle a a cabo.
Robe o Gallo Ga cía
Es udian e de ingenie ía
Se illa, 2022
x ii
ÍNDICE DE TABLAS
Tabla 1. Ma iz de e i icación 23
Tabla 2. Mues a del cos e del con a o dependiendo del iempo de llamada y del núme o de es as 35
Tabla 3. Especi icaciones de la compu ado a local. 43
Tabla 4. Especi icaciones de la máquina i ual de Google Colab [26]. 43
Tabla 5. Compa a i a de esul ados con dis in os op imizado es 62
Tabla 6. Compa a i a de esul ados con dis in os amaños de lo e 63
Tabla 7. Compa a i a con edes de di e en e p o undidad 64
Tabla 8. Resul ados u ilizando el Modelo 1 (CNN) en el se de p uebas de EMNIST Balanced 74
Tabla 9. Resul ados u ilizando el Modelo 2 (CNN+D opou ) en el se de p uebas de EMNIST Balanced 75
Tabla 10. Resul ados u ilizando el Modelo 3 (ResNe 50) en el se de p uebas de EMNIST Balanced 76
Tabla 11. Resul ados u ilizando el Modelo 4 (CNN Le as + CNN Núme os) en el se de p uebas de EMNIST
Balanced 77
Tabla 12. Compa a i a en e los di e en es modelos en las ases de desa ollo del p oyec o. 84
Tabla 13. Diag ama de Gan 86
xix
ÍNDICE DE FIGURAS
Figu a 1. F agmen o de la pa en e de la Máquina de Gismo. [4] 25
Figu a 2. Análisis de las ca ac e ís icas y di e encias p incipales en e un co mo án y un zo o 29
Figu a 3. Esquema de un pe cep ón con es en adas y una salida. 30
Figu a 4. Esquema de ed neu onal con es en adas, es capas ocul as y una salida 31
Figu a 5. Rep esen ación g á ica de la salida en neu onas sigmoidales 32
Figu a 6. Red compues a po pe cep ones 32
Figu a 7. Ejemplos de co ección de pesos en una ed con neu onas sigmoidales 33
Figu a 8. Rep esen ación g á ica de cómo ac úa el descenso del g adien e en una unción de e o 34
Figu a 9. Esquema de la ed neu onal p opues a 35
Figu a 10. Implemen ación de la ed neu onal 36
Figu a 11. Compilación del modelo de ejemplo 37
Figu a 12. Función de pé dida del modelo de ed simple 37
Figu a 13. Código y esul ados ob enidos 38
Figu a 14. Ejemplos de dos edes neu onales 39
Figu a 15. Esquema de una neu ona incluyendo la unción de ac i ación 40
Figu a 16. Rep esen ación g á ica de la unción de ac i ación ReLU 40
Figu a 17. Esquema del p og ama 42
Figu a 18. He amien as de desa ollo de código y lib e ías pa a la implemen ación de p og amas de Deep
Lea ning [27] [28] [29] 43
Figu a 19. Ejemplo de le as y núme os omado de una de las bases de da os de EMNIST 45
Figu a 20. Implemen ación de la no malización de los da os 45
Figu a 21. Dis ibución de los di e en es ca ac e es y su núme o de mues as 46
Figu a 22. Código de la no malización con la ansposición ealizada 46
Figu a 23. Algunos de los ca ac e es del se de en enamien o, e ique ados 47
Figu a 24. Diag ama de la ed neu onal diseñada 47
Figu a 25. Resumen de la ed neu onal 48
Figu a 26. Ejemplos de p edicciones con el se de p uebas 50
Figu a 27. Ejemplos de p edicciones con imágenes eales de una G 50
Figu a 28. Mues as p o enien es del Fashion MNIST Da ase de Zalando. [37] 52
Figu a 29. Va ios pun os de is a de una misma zapa illa depo i a (JD, s. .) [38] 53
Figu a 30. Pa es de un ga o 53
Figu a 31. Esquema del p oceso de con olución 54
Figu a 32. Esquema del p oceso de ag upación 54
Figu a 33. Esquema LeNe de la CNN que u iliza emos 55
Figu a 34. Resul ados de la con olución de dos imágenes del ca ác e 8 pasadas po es p ocesos de
con olución y ag upación. 56
Figu a 35. Resumen de la ed diseñada. 57
Figu a 36. Implemen ación del en enamien o u ilizando unciones de Ke as [42] 58
Figu a 37. P og amación y esul ado de aplica ImageDa aGene a o sob e imagen de le a “h” 60
Figu a 38. P edicciones ob enidas pa a el p ime modelo 63
Figu a 39. Resumen del modelo con D opou 65
Figu a 40. Resul ados de pé didas sin aumen o de da os e incluyendo D opou . 65
Figu a 41. Resul ados de p ecisión sin aumen o de da os e incluyendo D opou . 66
Figu a 42. Resul ados de pé didas con aumen o de da os e incluyendo D opou . 67
Figu a 43. Resul ados de p ecisión con aumen o de da os e incluyendo D opou . 67
Figu a 44. P edicciones ob enidas pa a el segundo modelo con D opou 68
Figu a 45. Esquema de una conexión esidual. 69
Figu a 46. Diag ama y esumen de pa áme os de nues a ed ResNe 50 [46] 69
Figu a 47. Resul ados de pé didas u ilizando ResNe 70
Figu a 48. Resul ados de p ecisión u ilizando ResNe 70
Figu a 49. P edicciones ob enidas pa a el e ce modelo con ResNe 71
Figu a 50. Resul ados de pé didas y p ecisión únicamen e pa a las le as 71
Figu a 51. Resul ados de pé didas y p ecisión únicamen e pa a las le as 72
Figu a 52. Compa a i a del da o de en ada al p og ama s da o de en ada a la Red Neu onal 73
Figu a 53. P edicciones u ilizando el Modelo 1 (CNN) 74
Figu a 54. P edicciones u ilizando el modelo 2 (CNN+D opou ) 75
Figu a 55. P edicciones u ilizando el modelo 3 (ResNe 50) 76
Figu a 56. P edicciones u ilizando el modelo 4 (Dos modelos) 77
Figu a 57. Le a “b” u ilizando el modelo ResNe 50. 77
Figu a 58. Resul ados u ilizando CNN, indicando p obabilidad de acie o 79
Figu a 59. Resul ados u ilizando CNN+D opou 79
Figu a 60. Resul ados u ilizando ResNe 50 79
Figu a 61. Resul ados con dos CNN, así como el ca ác e elegido y su p obabilidad en cada caso. 80
Figu a 62. Compa a i a en e usa un mismo p edic o pa a le as y núme os y selecciona en cada zona de la
imagen qué p edic o usa 81
Figu a 63. Relación en e el mapa de ca ac e ís icas de un agmen o de imagen y el agmen o del mapa de
ca ac e ís icas de la imagen comple a. 82
Figu a 64. Nue a o ganización de los da os de en enamien o y alidación; con imágenes y e ique as 83
21
1 INTRODUCCIÓN
lo la go de los úl imos 20 años, la ecnología de econocimien o óp ico de ca ac e es se ha usado pa a
ansc ibi millones de lib os, pe iódicos y a ículos a ex o que pueda se encon ado ácilmen e usando
cualquie buscado en In e ne . Pa a ello, se emplean he amien as capaces de p ocesa la imagen y luego
ex ae de las mismas el ex o.
Aún así, es a a ea solo puede ealiza se de mane a e icien e si la imagen se p esen a de o ma cla a y el ex o es
lo su icien emen e isible. La a ea de econocimien o implica po lo an o la localización del ex o, la
segmen ación de es e en ca ac e es y la co ec a iden i icación de los mismos. Aunque algunos de los sis emas
son capaces de iden i ica las palab as sin esa segmen ación p e ia, equie en de un mayo cos e compu acional
pa a ob ene la misma p ecisión que los o os.
Pa a ello, p ime o se ha de aplica écnicas de p ocesamien o de la imagen como son la de ección de con o nos,
la educción de uidos, e osión y dila ado de la imagen en e o as pa a consegui que cada uno de los ca ac e es
se p esen en de la mejo o ma. Elimina somb as, aplica il os de colo y bina iza la imagen son o os de los
pasos pos e io es que se han de segui pa a no maliza la imagen. Pos e io men e se ha de segmen a la imagen
en cada uno de los elemen os que lo con o man e in oduci los en nues o p og ama ya en enado pa a de ec a
el ca ác e an e el cual nos encon amos.
Aunque son muchas las écnicas u ilizadas pa a en ena a nues o sis ema en el econocimien o de ca ac e es,
la más u ilizada es aquella que se basa en Redes Neu onales, simila es a las que con o man el ce eb o humano
y que a a és de múl iples i e aciones con da os ya econocidos pode c ea las conexiones necesa ias pa a pode
p edeci co ec amen e da os que no o man pa e del en enamien o.
Es a ecnología la aplican hoy en día de o ma sa is ac o ia en nume osas en idades banca ias, cen os de
ma ke ing, académicos y no solo son capaces agiliza el p ocesamien o de in o mación sino de mejo a la ida
de las pe sonas haciendo que un p og ama lea en oz al a iche os de ex o pa a pe sonas con p oblemas de
isión. Las aplicaciones de es a ecnología cada ez aba can más ámbi os de nues a sociedad y ida co idiana.
1.1. Alcance del P oyec o
1.1.1. Obje i o
El obje i o de es e p oyec o es es udia y en ena di e en es modelos de Redes Neu onales pa a p oba su
desempeño en el econocimien o de ca ac e es an o en da os de alidación como en ca ac e es esc i os a mano
en di e en es condiciones. También se p oba á el p og ama de ec e más de un ca ác e en la misma imagen y
que puede hace lo en iempo eal dada una en ada de ídeo
Es e abajo pod ía ene nume osas aplicaciones apa e de las ya mencionadas, pasando de la de ección de
ca ac e es a palab as y luego usa lo po ejemplo pa a el econocimien o de secciones de un ca ne de iden idad.
A
In oducción
22
1.1.2. Requisi os
Según la no ma ISO 21500 [1] se es uc u a á el p oyec o en bloques di e enciados pa a ealiza un seguimien o
adecuado del mismo. De es a o ma los equisi os pasa on a se los siguien es:
1.1.2.1. Requisi os uncionales
• F.1: El sis ema lee á co ec amen e los da os de en ada pa a el en enamien o, alidación y p uebas.
• F.2: El sis ema p ocesa á y mos a á los esul ados de cada expe imen o de o ma legible, y se á capaz
de con as a los con p edicciones omadas de los da os de alidación
• F.3: El sis ema se á capaz de p ocesa imágenes de ca ac e es indi iduales y p edeci los
• F.4: El sis ema de ec a á si hay más de un ca ác e en la imagen y ealiza á una p edicción de cada uno,
mos ando el esul ado y el ca ác e en una caja delimi ado a
• F.5: El sis ema se á capaz de ealiza p edicciones en iempo eal pa a una en ada de ídeo dada.
1.1.2.2. Requisi os de p es aciones
• P.5: El sis ema con a á con una en ada de ídeo pa a ealiza las p edicciones en iempo eal
1.1.3. Res icciones
• R.5: La calidad de la cáma a y las condiciones de iluminación de la es ancia pod án no se las óp imas
pa a la co ec a de ección de los ca ac e es.
1.2. Plani icación del p oyec o
A la ho a de ealiza cualquie p oyec o es muy impo an e la o ganización y plani icación de és e, ma cando
los obje i os y los pasos que debemos segui desde el p incipio.
La plani icación de es e p oyec o se di idi á en a ias e apas que coinciden con las del desa ollo del p oyec o.
La p ime a e apa consis i á en la búsqueda de in o mación y es udio del es ado del a e de o ma que se pa a de
los concep os básico en In eligencia A i icial y cómo unciona el ap endizaje de una ed neu onal. Vis o los
di e en es componen es de un sis ema de ap endizaje au omá ico se p opond á un ejemplo sencillo pa a
en ende los y desde esa base nos en en a emos al p oblema plan eado en el p oyec o.
En la segunda e apa nos en ocamos en nues o p oblema p incipal y analizamos el en o no de abajo y los
equisi os necesa ios pa a un co ec o en enamien o. Una ez comp obado que se ealiza la lec u a de los se s
elegidos pa a el en enamien o, se ealiza án dis in os en enamien os con dis in as a qui ec u as y se compa a án
los esul ados, buscando p edeci el compo amien o de cada modelo en un en o no eal de abajo.
Una ez supe ada la e apa an e io , en una e ce a e apa ealiza emos las p uebas pa a ca ac e es de di e en e
ipog a ía de o ma que se puedan con as a las hipó esis del apa ado an e io con los esul ados ob enidos.
Realizado es e análisis in oduci emos el p oblema de la de ección de múl iples ca ac e es y cómo se ía posible
segmen a la imagen de o ma e icaz. Realiza emos nue amen e p uebas con los dis in os modelos y
aslada emos la solución p opues a pa a ídeos y comp oba que el sis ema se compo a co ec amen e an e
casos en iempo eal.
Po úl imo, se expond án las conclusiones a las que se llega on con la in o mación ecogida y los expe imen os
que se ealiza on, así como p opues as de op imización y mejo a.
23
1.3. Ma iz de e i icación
• F.1: El sis ema lee á co ec amen e los da os de en ada pa a el en enamien o, alidación y p uebas:
o El sis ema mues a co ec amen e da os de en enamien o e ique ados ( es 1.1)
o El sis ema mues a co ec amen e da os de alidación e ique ados ( es 1.2)
o El sis ema lee co ec amen e imagen y ídeo ( es 1.3)
• F.2: El sis ema p ocesa á y mos a á los esul ados de cada expe imen o de o ma legible, y se á capaz
de con as a los con p edicciones omadas de los da os de alidación
o Ob ención de g á icas de p ecisión y de pé dida pa a cada uno de los modelos ( es 2.1)
o Ob ención de los esul ados de p edicción pa a ca ac e es alea o ios del se de alidación ( es
2.2)
• F.3: El sis ema se á capaz de p ocesa imágenes de ca ac e es indi iduales y p edeci los
o P edicción de di e en es ca ac e es pa a los dis in os modelos ( es 3)
• F.4: El sis ema de ec a á si hay más de un ca ác e en la imagen y ealiza á una p edicción de cada uno,
mos ando el esul ado y el ca ác e en una caja delimi ado a
o P edicción y delimi ación pa a dis in as imágenes de múl iples ca ac e es ( es 4)
• F.5: El sis ema se á capaz de ealiza p edicciones en iempo eal pa a una en ada de ídeo dada.
o P uebas con en ada de ídeo (webcam) donde apa ezcan ca ac e es, y p edicción y
delimi ación de los mismos ( es 5)
Requisi o
Nomb e del
equisi o
Ve i icación
Nomb e de p ueba
Es ado
I
A
D
T
F1
Lec u a de da os
X
1.1. Lec u a de da os de
p ueba
comple ado
F1
Lec u a de da os
X
1.2. Lec u a de da os de
alidación
comple ado
F1
Lec u a de ados
X
1.3. Lee imagen y ídeo
comple ado
F2
P ocesamien o de
esul ados
X
2.1. Ob ención de g á icas de
p ecisión y pé didas
comple ado
F2
P ocesamien o de
esul ados
X
2.2. Ob ención de esul ados
(se de alidación)
comple ado
F3
P uebas en
imágenes
X
3. P edicción pa a ca ac e es
indi iduales
comple ado
F4
Caso de múl iples
ca ac e es
X
4. P edicción pa a múl iples
ca ac e es
comple ado
F5
P edicción en
iempo eal
X
5. P edicción y delimi ación
de ca ac e es en TR
comple ado
Tabla 1. Ma iz de e i icación
Es ado del a e
24
2 ESTADO DEL ARTE
l econocimien o óp ico de ca ac e es, usualmen e ab e iado como OCR po sus siglas en inglés (Op ical
Cha ac e Recogni ion) es la con e sión po pa e de una compu ado a de una imagen de ex o, bien sea
imp eso o manusc i o, a ex o en endible po el o denado . En la ac ualidad sus usos aba can in inidad de
campos; como la lec u a de pasapo es, no as banca ias, aducción au omá ica de documen os o en
cualquie o o sec o en el que se usen a chi os imp esos. Es la o ma más común en la que se digi aliza ex o
pa a luego se almacenado, edi ado o usado en di e sos p ocesos como ans o ma el ex o en audio ( ex - o-
speech) o ges ión de bases de da os. [2]
Un p og ama que implemen e OCR debe á, po lo an o, econoce “pa ones” que pe mi an dis ingui los
di e en es ca ac e es, ap endiendo a a és de una ed neu onal; y almacena ese ex o esc i o en un iche o
ASCII. Es o no es una a ea ácil y ha sido desa ollada ecien emen e g acias al g an desa ollo y éxi o del Deep
Lea ning, has a consegui modelos con una p ecisión y e iciencia del o den del 99% en el econocimien o de
dígi os manusc i os. Aunque en un p incipio pudiese pa ece que el OCR es una consecuencia del desa ollo de
la In eligencia A i icial, la ealidad es que el se humano lle a in en ando implemen a es a ecnología desde
inales de los años 20. La in ención de es e sis ema se le a ibuye a Gus a Tauschek, un in en o aus iaco que
en 1929 desa olló un p imi i o sis ema de econocimien o de ca ac e es pa a las máquinas de cálculo basadas
en a je as pe o adas. El disposi i o, bau izado como la Máquina de Tauscheck [3], e a un apa a o mecánico en
el cual se colocaba un o ode ec o y una se ie de plan illas de o ma que cuando la plan illa y el ca ác e
es u iesen alineados, una luz e a di igida hacia el o ode ec o , que almacenaba el alo del ca ác e econocido.
Es e sis ema, aunque limi ado, puso en pie ya desde esa época la necesidad de aslada ex o imp eso a un
sis ema de almacenaje y ges ión de da os.
A pesa de ene o igen en esa época, no ue has a 1953 cuando se empeza on a usa e siones come ciales de
máquinas que con e ían mensajes imp esos en lenguajes pa a almacena los en un compu ado . Es os modelos
u ilizaban un análisis de la imagen en ez de una compa ación pudiendo acep a a iaciones en la uen e,
necesidad undamen al pa a econoce ca ac e es manusc i os y base sob e la que uncionan los sis emas de
econocimien o de ca ac e es óp icos ac uales. La máquina llamada Gismo [4] ue u ilizada pa a au oma iza
da os de agencias, lee imp esiones en a je as de c édi o e incluso po la ue za aé ea de los Es ados Unidos pa a
ansc ibi mensajes esc i os a máquina.
E
25
Figu a 1. F agmen o de la pa en e de la Máquina de Gismo. [4]
Los sis emas OCR has a aho a asumían que el ex o seguía una es uc u a p ede e minada y los ca ac e es se
encon aban en posiciones ijas (como pod ía se el caso de la ma ícula de un coche). En la ealidad las imágenes
no siguen una plan illa y end án a iaciones de ipog a ía, o mas, iluminación y o ien ación po lo que es os
sis emas seguían siendo ex emadamen e limi ados.
Los sis emas OCR ac uales se consiguie on implemen a a inales de los 90 combinando los mé odos
con empo áneos que se usaban con mé odos de econocimien o de pa ones e in eligencia a i icial. La mejo a
de es os sis emas ambién ha sido posible g acias al desa ollo no solo de los algo i mos sino ambién de la
ecnología enca gada de cap u a y p ocesa la in o mación: escáne es, cáma as, o denado es… Todos es os
a ances han pe mi ido el p ocesamien o de más da os an o po la mayo capacidad de cómpu o como po la
mejo esolución de los senso es. [5]
A pesa de que los esul ados mejo an de o ma exponencial con el paso de los años, oda ía quedan mul i ud
de e os po a on a pa a el econocimien o óp ico de ca ac e es, como la g an a iedad de si uaciones de
iluminación de los o og amas, la si uación y a iedad de uen es de los ca ac e es y sob e odo la di e encia de
o mas en las que a ias pe sonas pueden esc ibi un mismo ca ác e , lo que di icul a la clasi icación con
p ecisión de ca ac e es.
Con obje o del es udio de es as écnicas de clasi icación, así como su e iciencia y mos a esul ados empí icos
de di e en es modelos de clasi icado es, nace es e T abajo de Fin de G ado, donde se p e ende en p ime luga
da unos esbozos y de ini las bases que cimien an las edes de Deep Lea ning, es ableciendo los concep os y
e minología que usa emos, el es ado del a e de la In eligencia A i icial al y como hoy en día la conocemos y
se explica á el diseño ealizado desde ce o del mé odo de en enamien o y p edicción de di e sos sis emas.
In oducción a las Redes Neu onales
32
posible la unción de cos e. Pa a ello los pe cep ones suponen un p ime ace camien o al Machine Lea ning,
pe o al ene una salida en escalón en o ma de ce os y unos p o ocan a la ue za que la salida se modi ique
b uscamen e al modi ica lige amen e los pa áme os de nues a ed. El modelo que buscamos debe ía cambia
lige amen e su salida si así lo hacen su peso o bias. Pa a ello es necesa io habla de las neu onas sigmoidales,
cuya exp esión gene a es e escalón más sua izado y que po p ime a ez in oduce alo es in e medios en e 0
y 1.
𝜙(𝑧)=1
1+𝑒−𝑧
( 3 )
Figu a 5. Rep esen ación g á ica de la salida en neu onas sigmoidales.
Es e cambio implica que si, po ejemplo, p e endemos en ena una ed pa a que ac úe como un econocedo de
masco as, suponiendo que una salida de 1 es un pe o y de 0 es un ga o, la ed modi ica á sus pa áme os en
cuan o de alejada es é de la ealidad.
Figu a 6. Si nues a ed es á compues a po pe cep ones y se ob iene una p edicción equi ocada, el
p og ama no sab á cuán o ha de a ia los pa áme os de la ed, ya que no sabemos a qué dis ancia
nos encon amos de una p edicción co ec a.
33
Figu a 7. Ejemplos de co ección de pesos en una ed con neu onas sigmoidales. Pa a el segundo caso las
neu onas co egi án menos sus alo es, pues se encuen an más ce ca de p edeci el esul ado “pe o”, ya que
ob iene un eedback de cuán o se es á alejando de la p edicción co ec a.
In oducción a las Redes Neu onales
34
Ya sabemos cuál es el c i e io que u ilizamos pa a modi ica los alo es de los pa áme os. Pe o ¿cómo sabe la
ed neu onal cuán o hay que modi ica los pesos? Pa a ello se in oduce el concep o de descenso del g adien e.
Pa a isualiza lo mejo se ha ep esen ado una g á ica del e o de nues a ed dependiendo de los pa áme os
in oducidos. Los ejes x e y se ían los pa áme os de nues a ed y el eje z, el e o . Buscamos ace ca nos lo más
posible a algún mínimo de la unción pa iendo desde un pun o alea o io y pa a ello nos ap o echa emos de la
de inición del g adien e, que apun a a la di ección en la que mayo es la pendien e y se lo es a emos al pun o
en el que es emos. Es e p oceso se ealiza á de o ma con inuada, descendiendo así po la unción has a encon a
el mínimo deseado. [17]
Figu a 8. Rep esen ación g á ica de cómo ac úa el descenso del g adien e en una unción de e o
Po úl imo y pa a pe ila es a b e e in oducción a la es uc u a de una ed neu onal, es necesa io es ablece los
concep os de capa de en ada, capas ocul as y capa de salida. La capa de en ada es la que ecibe los alo es
dados po el usua io y los únicos que noso os podemos con ola . Las capas in e medias con ienen más neu onas
con di e en es pesos y bias. Es o lo u iliza emos pa a ajus a de mejo o ma, el compo amien o de la ed.
Cuan as más neu onas, más ajus es pod án ealiza se pa a pe ecciona el compo amien o de la ed, pe o más
complicada se á de en ena . Po úl imo, enemos la capa de salida que mues a los alo es en e ce o y uno
ob enidos po sus neu onas y los esul ados de nues o sis ema.
Po lo gene al las edes suelen oma una es uc u a eed o wa d o sin ealimen ación, no u ilizando las salidas
de capas más p o undas pa a capas a la izquie da de es as. C ea un sis ema con ealimen ación pod ía p o oca
bucles donde la en ada de una neu ona acabe dependiendo de su salida, si uación no aconsejable. Aunque no
nos ex ende emos en el es udio de las edes eedback, son obje o de in e és al e a a de mane a más iel cómo
unciona y ap ende el ce eb o humano y algunos modelos cuyas neu onas se ac i an y desac i an du an e un
b e e pe iodo de iempo han p obado ob ene una cu a de ap endizaje mayo en menos iempo que sus
homólogos más simples. [17]
3.1 Diseño de las Redes Neu onales
Explicados los componen es de las edes neu onales, comencemos c eando y analizando nues a p ime a ed
neu onal y con la que c ea emos un p ime modelo pa a p edeci la salida dada una en ada. Como se comen ó
en el apa ado an e io , las neu onas de las edes que usa emos se componen de pesos y bias, pe o ¿Es necesa io
ealiza un p ocedimien o complejo pa a su en enamien o? ¿Es capaz nues o p og ama de saca una unción
álida únicamen e a a és de en adas y salidas?
Pongamos como ejemplo un p og ama que in oduciendo el núme o de minu os que hemos es ado hablando po
35
elé ono nos indicase cuán o debemos paga en nues a ac u a. Es e eje cicio que en un p incipio esul a ácil
de diseña con mé odos de p og amación egula se i á pa a en ende de o ma p ác ica cómo se compo a una
ed neu onal. Nues a unción po calcula se á la siguien e
𝐶(€)=0.12∗𝑡(min)+0.54∗𝑛+5
( 4 )
Lo que quie e deci que el minu o cues a 12 cén imos y el es ablecimien o de llamada, cincuen a y cua o.
Además, nues a a i a base es de 5 eu os.
Po lo an o, algunos de nues os cos es asociados pod ían se :
Tiempo (minu os)
Núme o de llamadas
Ta i a (eu os)
200
10
34.40
145
12
24.02
300
20
51.80
32
1
9.38
0
0
5
100
60
49.4
1
1
5.66
Tabla 2. Mues a del cos e del con a o dependiendo del iempo de llamada y del núme o de es as
Vamos a p og ama nues a ed neu onal pa a que enga la siguien e o ma:
Figu a 9. Esquema de la ed neu onal p opues a
In oducción a las Redes Neu onales
36
Nues o p og ama in e namen e en cada i e ación modi ica á los alo es de los pesos y sesgos de o ma que el
e o aya siendo cada ez meno . De es a o ma, se es ablece án elaciones en e las neu onas que componen
la ed y sus pa áme os. Toda ed neu onal sigue el siguien e esquema pa a se en enada:
1. Se inicia la ed con pesos y bias alea o ios
2. Calcula e o de cada mues a y p omedia el e o de cada una de ellas.
3. Relaciona cada peso y sesgo con la impo ancia que han enido a la ho a de gene a ese e o .
4. Modi ica los pa áme os de o ma p opo cional (mayo e o , mayo cambio) de o ma que el e o se
eduzca
5. Repe i los pasos 2, 3 y 4 has a consegui que el e o se eduzca lo máximo posible.
La op imización ealizada y el ajus e de pesos y bias se p oduce, como ya se comen ó an e io men e, median e
el algo i mo de e op opagación (backp opaga ion) y la op imización po descenso de g adien e (g adien
descen ).
U ilizando el lenguaje de p og amación Py hon de ini emos cada una de las capas de la ed neu onal y
compila emos el modelo comple o
Figu a 10. Implemen ación de la ed neu onal
Lo siguien e se á usa un op imizado pa a indica la o ma en la que se ajus an los pa áme os. La unción
gene al pa a el cálculo de los pesos como explicamos an e io men e es la siguien e, aunque in oduciendo un
nue o pa áme o:
𝑤𝑡+1=𝑤𝑡−𝛿𝑓(𝑐𝑜𝑠𝑡𝑒)
𝛿𝑤 ∗𝑙𝑟
( 5 )
Es deci , el peso nue o se ía el peso an iguo menos el g adien e de la unción de cos e pa a minimiza el e o .
El pa áme o l se ía el llamado ac o de en enamien o o ap endizaje (lea ning a e). Los op imizado es son
los enca gados de calcula un pa áme o adecuado pa a el mismo. Un alo de l muy bajo comp ome e ía a
nues a ed modi icándola de o ma muy len a o es ancándose en un po cen aje de e o . Po el con a io. Un
ac o de en enamien o muy ele ado p o oca una ines abilidad pe manen e al ealiza cambios de pesos muy
b uscos. [18]
A o unadamen e y g acias a los a ances en es e campo, enemos a nues a disposición una g an can idad de
op imizado es que p e enden busca un mínimo local, siendo los p incipales [19] [20]:
• S ochas ic G adien Descen (SGD)
• Adap a i e G adien Algo i hm (AdaG ad)
• Adadel a
• RMSp op (Roo Mean Squa e P opaga ion)
• Adam
Las mejo as en los op imizado es más ecien es su gen como combinación o a pa i de algunos modelos
an e io es, po lo que siemp e se espe a que los mode nos sean supe io es a los an iguos. Pa a nues o ejemplo
37
u iliza emos el op imizado Adam.
Po úl imo, pa a e alua el compo amien o de nues a unción indica emos qué unción de pé dida oma emos
como e e encia, que mide la des iación en e p edicciones y esul ados eales. Unos alo es pequeños indica an
que nues a ed neu onal unciona de mane a e icien e y ajus ando bien el modelo y lo con a io pa a unos
alo es al os. Que la unción de pé dida aya omando cada ez alo es más ce canos a ce o signi ica que el
ajus e de los pesos se es á ealizando de o ma co ec a. Pa a es e ejemplo u iliza emos el e o cuad á ico medio.
Figu a 11. Compilación del modelo de ejemplo
Pa a en ena nues o modelo u iliza emos a pa i de aho a la unción i , que iene como pa áme os las en adas
y salidas u ilizadas pa a el en enamien o y el núme o de epe iciones pa a en ena a la ed con los da os de
en enamien o. Una ez inalizada analicemos la unción de pé dida:
Figu a 12. Función de pé dida del modelo de ed simple
Podemos obse a que a las 100 i e aciones (épocas) el e o ha conseguido descende lo su icien e pa a ajus a se
con p ecisión al modelo espe ado. Hagamos una p ueba con unos alo es que no apa ezcan en la abla
p opo cionada al p og ama.
In oducción a las Redes Neu onales
38
Figu a 13. Código y esul ados ob enidos
El esul ado, aun con ando con un muy pequeño e o , es lo su icien e p eciso pa a de e mina el p ecio que
paga emos po nues o consumo. El algo i mo pa iendo de la nada ha conseguido encon a unos alo es pa a
los pesos adecuados pa a que nues a ed neu onal se compo e como la ecuación de la que pa imos.
A la is a del éxi o de las p edicciones y sabiendo lo simple que ha esul ado p og ama es e sis ema do ado de
In eligencia A i icial podemos ene la alsa idea de que nues o p og ama se á esul ado de ex apola lo is o
has a aho a con, quizás, una ed más densa. El p og ama y la ed p esen ada p esen an en e o as cosas los
siguien es incon enien es:
• La can idad de da os es muy pequeña. Noso os sólo hemos do ado a nues a ed de unos pocos
alo es, aunque su icien es pa a nues o p oblema ( eco demos que es posible halla la ecuación de un
plano; que se ía la ep esen ación g á ica de la unción dada, sabiendo únicamen e 3 pun os). En el
p oblema que que emos esol e necesi a emos muchísimos más da os ya que exis en muchos amaños,
uen es y sang ías di e en es pa a cada uno de los ca ac e es
• Y el más impo an e de odos: nues o p oblema iene una solución lineal y en casos simila es como el
de ecuaciones de ec as, planos o hipe planos pod emos u iliza es a ed o cualquie o a que la e iciencia
se á la misma.
Al es a oda la ed o mada po neu onas que mul iplican los alo es de en ada po un peso y le suma un sesgo
(ope ación lineal) pa a se en ada de o as neu onas lineales el esul ado po compa ación ambién lo se á. Po
muchas capas que pongamos po lo an o ob end emos el mismo esul ado que si únicamen e hubié amos pues o
una capa.
Pa a un mismo p oblema lineal las edes de la igu a 14 end án el mismo compo amien o y alcanza án unos
esul ados idén icos, po lo que pa ece poco in ui i o usa es uc u as complejas más di íciles de en ena .
39
Figu a 14. Ejemplos de dos edes neu onales.
Los p oblemas del mundo eal no siguen po lo gene al un compo amien o lineal, lo que una ez más uel e a
complica nues a a ea de log a un econocimien o de ca ac e es lo más p eciso posible. En el siguien e
apa ado in en a emos modi ica la ed c eada pa a que la combinación de odas salidas las sean ecuaciones no
lineales.
3.2 Sali de la linealidad: Funciones de ac i ación
Ya hemos modelado nues a p ime a ed neu onal pe o es ingida y limi ada po la linealidad. Pa a soluciona
es e p oblema se implemen a on las unciones de ac i ación: unciones a las que se le pasa la salida de una
neu ona an es de en a a la siguien e y eliminan ese compo amien o lineal. Cada unción de ac i ación que
de inamos end á po lo an o como en ada la suma ponde ada de las en adas mul iplicadas po los pesos y la
suma de la Bias.
In oducción a las Redes Neu onales
40
Figu a 15. Esquema de una neu ona incluyendo la unción de ac i ación
Concep ualmen e ya imos dos unciones de ac i ación en la in oducción que se dio al mundo de las edes
neu onales. La p ime a es la unción de ac i ación en escalón, que no es ú il pa a los sis emas de In eligencia
a i icial. Al ene de i ada nula en casi la o alidad de su dominio no pe mi e adecua co ec amen e los sesgos,
po lo que a pa i de aho a lo que busca emos en una unción de ac i ación es que sea di e enciable. Es a
condición la cumplía, como podemos comp oba , la unción de ac i ación sigmoidal.
No obs an e, las unciones de es e ipo in oducen un p oblema en los modelos llamado “p oblema del
des anecimien o del g adien e” [19]. Al i mejo ando nues a ed neu onal obse amos que nues o g adien e
es cada ez más pequeño po lo que i emediablemen e nues o p og ama al llega a de e minadas i e aciones
deja á de mejo a signi ica i amen e y man end á un e o esidual. Aun así, es as unciones son ú iles en la capa
de salida de las edes neu onales y siguen siendo las más u ilizadas en las capas de salida pa a p oblemas de
clasi icación bina ia como el de pe os y ga os. Una mejo a de es a unción se ía la angen e hipe bólica, que
cuen a con un mayo eco ido (de -1 a 1) y su de i ada es mayo , lo que implica un ap endizaje más ápido.
Como nues o p oblema p e ende clasi ica ca ac e es en más de dos ca ego ías, es as unciones no se án ú iles
y se ha op ado po desca a las pa a las capas ocul as.
Ac ualmen e la unción de ac i ación más u ilizada en Machine Lea ning y la que aplica emos más adelan e en
nues o p oyec o es la llamada ReLU (Rec i ied Linea Uni ), que iene la siguien e o ma:
𝑓(𝑥)=max(0,𝑥)
( 6 )
Figu a 16. Rep esen ación g á ica de la unción de ac i ación ReLU
Es a unción p esen a dos en ajas undamen ales espe o a las an e io es. La p ime a es que el g adien e de la
41
unción pa a alo es posi i os es cons an e y la unción no es á aco ada, lo que pe mi i á acele a el ap endizaje.
O o mo i o po el que nos pod ía in e esa elegi es a unción es po su bajo cos e compu acional [21]. Al no
depende de exponenciales u o as ó mulas ma emá icas más complejas su elocidad de p ocesamien o es
meno y pe mi e ob ene esul ados simila es a los de o as unciones en menos iempo (has a 6 eces más ápida
que la angen e hipe bólica según el a ículo Deep Spa se Rec i ied Neu al Ne wo ks [22]). Po el con a io, el
dominio nega i o de la unción hace que exis a la posibilidad de que se gene en “neu onas mue as” que
únicamen e dan como salida ce o, en o peciendo el ap endizaje. Ac ualmen e, y aunque han su gido nue as
a ian es de es a (Leaky ReLU, PReLU y GeLU en e o as), ReLU sigue siendo la unción de ac i ación más
u ilizada en las capas ocul as y se á aquella que u iliza emos pa a implemen a an o nues o p opio modelo
como o os desa ollados con base en es a unción, como ResNe .
Po úl imo, esul a de in e és pa a nues o p oblema es udia la unción So max [20] U ilizada p incipalmen e
en la salida de las edes neu onales enca gadas de a eas de clasi icación. Es a unción nos da á pa a cada una
de nues as salidas una p obabilidad en e 0 y 1 y se queda á con la mayo . Calculando el exponen e na u al de
cada una de las salidas y di idiéndolo en e el suma o io de los esul ados conseguimos que los núme os g andes
engan mucho mayo po cen aje que los pequeños. Se á po lo an o de g an u ilidad inclui So max en nues a
ed en cualquie a de las p uebas que hagamos de ca a a ob ene la iabilidad con la que nues a ed de ec a los
ca ac e es y de e mina si el alo de ec ado es ú il o no.
Pa a conclui con es a in oducción, cabe des aca el campo de la In eligencia A i icial es obje o de es udio e
in es igación cons an e, po lo que en los úl imos años su gi ían o as unciones que sin se mono ónicas han
mejo ado el endimien o de ReLU, aunque a cos a de in oduci una mayo ca ga compu acional. Algunas de
las que se han inco po ado al as o ca álogo de unciones de ac i ación son Swish (2017) y Mish (2020) po
enume a algunas [23], siendo ya a ea del p og amado elegi la más adecuada pa a cada necesidad y capa.
Habiendo explicado cada uno de los componen es de las edes neu onales y los pa áme os necesa ios pa a
diseña las co ec amen e, inalmen e comenza emos con el p oblema que mo i ó la ealización de es e T abajo
de Fin de G ado y que pasa emos a explica a con inuación: pa i de un a chi o acío y cons ui , ob eniendo
los esul ados óp imos, una ed neu ona uncional que de ec e median e imágenes o ídeo le as de o ma
co ec a.
C eación de un clasi icado de imágenes pe cep ón mul icapa
48
Figu a 25. Resumen de la ed neu onal. Tiene como en ada cada uno de los píxeles, dos capas ocul as y en la
capa de salida apa ecen cada uno de los 47 ca ac e es econocibles.
De es a ed ob enemos los esul ados expues os en las igu as 26 y 27. Resul a de in e és explica y analiza las
g á icas ob enidas, pues es as se u iliza án a pa i de aho a en las p uebas que ealicemos pa a alo a como de
bien se compo a nues a ed con los da os de en enamien o y de p ueba:
Figu a 26. G á ica de pé didas del modelo 1
49
En la igu a 26 se mues a la llamada “ unción de pé dida” o “ unción de cos e” e indica cuán o a ía el alo
p edicho con el alo eal de la mues a a lo la go de las épocas (ciclos de p opagación hacia de ás y hacia
delan e pa a ajus a los pesos de la ed). Las pé didas se calculan como el suma o io de los e o es pa a cada una
de las mues as en los se s de en enamien o y alidación. Como ya se comen ó en los apa ados in oduc o ios,
es a unción se u iliza pa a modi ica los pesos de las neu onas y mejo a la ed.
Figu a 27. G á ica de p ecisión del modelo 1
En la igu a 27 obse amos la unción que nos indica el po cen aje de p ecisión de la ed neu onal a lo la go del
en enamien o. En los en enamien os es a p ecisión se aduce en el po cen aje de acie os de nues o sis ema.
Dado una en ada se compa an de o ma bina ia si el esul ado es igual o dis in o al espe ado y se ealiza es a
ope ación pa a cada una de las mues as de nues os se s.
Aunque no exis e elación ma emá ica en e las dos unciones an es is as en la mayo ía de los casos
obse a emos que cuando la g á ica de p ecisión c ece la de pé didas dec ece, ya que una meno can idad de
pé didas suelen implica que los esul ados del sis ema se án mejo es. Sin emba go, es o no siemp e es así, sob e
odo cuando se p oduce un sob eajus e en la ed que hace que la p ecisión aumen e, pe o las pé didas suban
ambién.
C eación de un clasi icado de imágenes pe cep ón mul icapa
50
Figu a 26. Ejemplos de p edicciones con el se de p uebas
Como podemos obse a , es a ed no p oduce un esul ado del odo insa is ac o io en el en enamien o, pe o a
la ho a de p edeci elemen os nue os nos encon a emos conque no ob enemos ese ni el de p ecisión. Es o se
debe a que nues a ed lo único que ha hecho es elaciona la in ensidad de cada píxel con la salida, que pa a
imágenes muy pa ecidas en amaño y o ma a las del en enamien o da buenos esul ados, pe o en el momen o
que cambiamos la posición o amaño del núme o o le a la ed nos empieza a da p oblemas.
Figu a 27. Ejemplos de p edicciones con imágenes eales de una G.
51
En la imagen de la izquie da el p og ama nos de ec a un 6 lo cual es inco ec o, pe o has a cie o pun o asumible
dado los esul ados de p ecisión de nues o modelo. Sin emba go, en la segunda imagen la cual es esul ado de
un desplazamien o de la p ime a ob enemos un esul ado comple amen e di e en e. Es e compo amien o no es
deseable y nues o obje i o se á elimina lo. Es a pa i de es e momen o cuando las edes is as has a el momen o
no son su icien es pa a aba ca nues o p oblema y ue as un análisis de o os modelos que p e endían
soluciona a eas de clasi icación de imágenes que se in oducen o o ipo de edes no is as has a aho a: Las
Redes Neu onales Con olucionales.
C eación de un clasi icado de imágenes: Redes Neu onales Con olucionales.
52
5 CREACIÓN DE UN CLASIFICADOR DE
IMÁGENES: REDES NEURONALES
CONVOLUCIONALES.
s e ipo de edes nos dan una ap oximación dis in a al p oblema de ap endizaje de nues o p og ama. Has a
aho a los algo i mos ajus aban los pesos dadas unas en adas y salidas p ede e minadas. Es a solución es
ideal pa a en adas en o ma de núme o o cadena de ca ac e es, siemp e que es as de inan ca ac e ís icas
como pod íamos pensa de un p og ama que calcula p ecios de i iendas basándose en en adas numé icas. Un
píxel po sí solo no es una ca ac e ís ica, pe o un g upo de ellos o mando un pa ón de e minado pueden se lo.
En de e minado da ase s, como el c eado po la web de en a de opa Zalando [37], las p endas ienen en una
disposición p ede e minada e igual al es o de elemen os con la misma e ique a. Aunque g acias a es o podamos
acili a el en enamien o, ambién limi amos el ap endizaje del sis ema pues un obje o idimensional puede
encon a se en dis in os escena ios y o ien aciones.
Figu a 28. Mues as p o enien es del Fashion MNIST Da ase de Zalando. [37]
E
53
Figu a 29. Va ios pun os de is a de una misma zapa illa depo i a (JD, s. .) [38]
Po la an o llegamos a la conclusión de que pa a es e ipo de p oblemas una ed neu onal al uso no es ideal,
como se ha is o an e io men e. Las edes neu onales con olucionales nos ace can más al azonamien o
humano.
Nues o ce eb o asocia a cada obje o pa ones y o mas. Si las ca ac e ís icas del elemen o isualizado coinciden
con algún concep o que engamos le pod emos asocia a ese obje o una salida, sin impo a la posición, o ación
o amaño.
Figu a 30. Pa es de un ga o. Nues o ce eb o in e namen e al e la imagen la segmen a en pa ones
econocibles, y el conjun o de ellos es lo que le pe mi e iden i ica al animal como un ga o, aunque o emos,
ol eemos o modi iquemos de alguna o ma la imagen
¿Cómo puede nues a ed neu onal consegui eso? Pa a ello es necesa io p esen a dos nue as capas que se
si úan después de las capas de en ada. Es as son las capas de con olución y de ag upación, que ex ae án las
ca ac e ís icas de cada ca ác e de mane a au ónoma pa a luego in oduci es as ca ac e ís icas en las capas
C eación de un clasi icado de imágenes: Redes Neu onales Con olucionales.
54
ocul as y abaja como las edes que hemos is o has a aho a. Las dos capas imi an el có ex isual de nues o
ce eb o, que se componen de neu onas simples que de ec an líneas o ejes en una egión muy conc e a y las
complejas que ag upan la in o mación de neu onas simples pa a c ea o mas más conc e as y encadenándose
en e sí es como o mamos pa ones econocibles po nues o ce eb o [39].
En p ime luga , pa a la de ección de ejes se á necesa io un p oceso de con olución de la imagen en la capa del
mismo nomb e, concep o es udiado en el campo de Sis emas de Pe cepción y que implica mul iplica un píxel
y sus ecinos po una ma iz llamada núcleo o ke nel y suma los esul ados, ob eniendo un nue o alo pa a
cada píxel.
Figu a 31. Esquema del p oceso de con olución
En la ed neu onal noso os no especi icamos los núcleos que se an a usa pa a la con olución de nues a
imagen, solo el núme o y el amaño de es os, ya que al igual que imos con los pesos, se ajus a án
au omá icamen e.
La segunda capa, la capa de ag upación, educe el amaño de la imagen con el obje i o de ex ae las
ca ac e ís icas p incipales y que las mismas no dependan de la posición.
Figu a 32. Esquema del p oceso de ag upación
Una ez ob enidas las imágenes esul an es, ol e íamos a pasa las po más capas de con olución y ag upación
usando no malmen e más núcleos al habe educido el amaño de nues a imagen. Una o ma de e lo
g á icamen e es la siguien e:
55
Figu a 33. Esquema LeNe de la CNN que u iliza emos
T as coloca a ias de es as capas hab emos ob enido las ca ac e ís icas de en adas necesa ias pa a nues a ed
neu onal y pod emos pasa al en enamien o. An es de con inua , eamos como nues a ed ha ex aído las
“ca ac e ís icas de la imagen” pa a su clasi icación [40].
En ada
P ime a con olución
Segunda con olución
Te ce a con olución
C eación de un clasi icado de imágenes: Redes Neu onales Con olucionales.
56
En ada
P ime a con olución
Segunda con olución
Te ce a con olución
Figu a 34. Resul ados de la con olución de dos imágenes del ca ác e 8 pasadas po es p ocesos de
con olución y ag upación. La úl ima ag upación ac ua á como las ca ac e ís icas de cada imagen, eniendo
ca ac e es iguales ma ices muy pa ecidas
5.1 Modelos u ilizados
U iliza emos a ias edes neu onales pa a p oba su e icacia y compa a las en e sí, en cada una de ellas
mos a emos los cambios que se añaden, así como p uebas de p edicción pa a los da os de la p ueba.
Dis ingui emos cua o modelos:
1. Red Con olucional simple, únicamen e añadiendo las capas de con olución y ag upación
2. Red Con olucional con D opou
3. Red con a qui ec u a ResNe
4. Dos edes di e en es pa a le as y pa a núme os
5.1.1 Red Con olucional.
Nues a ed con olucional simple es a á compues a po un pa de capas de con olución y ag upación, colocadas
en se ie, luego una capa ocul a de 100 neu onas y inalmen e una capa de salida con 47 neu onas, una pa a
ca ác e que ha de se econocido. Las capas ocul as ienen la unción de ac i ación ReLu ya is a en apa ados
an e io es y la de salida la unción So max. Pa a es e p ime modelo ealiza emos p uebas con los op imizado es
y pa áme os de en enamien o pa a comp oba la e icacia de cada uno.
57
Figu a 35. Resumen de la ed diseñada.
Necesi amos de ini pa a cada uno de los en enamien os un amaño de lo e (o BS po sus siglas en inglés), el
núme o de épocas y el núme o de mues as po lo e (s eps pe epoch).
El amaño de lo e es el núme o de mues as que se u iliza án pa a en ena a la ed, calcula el e o cuad á ico
medio y a ia los pesos de las neu onas. Es o signi ica que un núme o bajo de nues o BS pe mi e un ajus e
más p eciso y un meno cos e compu acional ya que nues a memo ia únicamen e se ca ga con unas pocas
mues as pa a el en enamien o. Como des en aja ob enemos un compo amien o más uidoso y el iesgo de
es anca nos en un mínimo local u ilizando el eo ema del Descenso del G adien e. Po el con a io, un alo más
ele ado esul a ía en un en enamien o algo más len o y un mayo cos e compu acional, pe o ob eniendo mayo
con ianza en los esul ados [41].
El núme o de mues as po lo e a su ez es á elacionado adicionalmen e con el BS median e la siguien e
ecuación, ya que pe mi e en cada época u iliza odos los da os disponibles pa a el en enamien o.
𝑆𝑡𝑒𝑝𝑠 𝑝𝑒𝑟 𝑒𝑝𝑜𝑐ℎ=𝐿𝑜𝑛𝑔𝑖𝑡𝑢𝑑 𝑑𝑒 𝑙𝑜𝑠 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 𝑒𝑛𝑡𝑟𝑒𝑛𝑎𝑚𝑖𝑒𝑛𝑡𝑜
𝐵𝑎𝑡𝑐ℎ 𝑆𝑖𝑧𝑒
( 7 )
El núme o de épocas lo ajus a emos en base a los esul ados ob enidos, ya que implica iempo de compu ación
y puede no i acompañado de una mejo a no o ia de la p ecisión. U iliza emos en p ime luga unas 50 épocas.
El ipo de unción de pé dida que ep esen a emos es la llamada Ca ego ical C oss-En opy, que se u iliza en
los p oblemas de clasi icación con más de dos clases. La salida de la unción se calcula mul iplicando la salida
espe ada po el loga i mo de la p oducida y sumando los esul ados de cada una de las clases.
C eación de un clasi icado de imágenes: Redes Neu onales Con olucionales.
64
La ed es capaz de econoce la mayo ía de los ca ac e es co ec amen e y con una p ecisión bas an e ele ada.
En o as ocasiones se equi oca debido a la simili ud con o os ca ac e es, aunque algo en endible debido al
pa ecido en e algunos ca ac e es como la G y el 6, la I y la L…
Toma una ed con olucional con más capas ocul as pod ía ayuda a mejo a la p ecisión de nues o modelo. En
es e caso ob enemos los esul ados siguien es pa a una ed con un mayo núme o de capas.
Núme o de
capas
Pé didas
P ecisión
10
30
Tabla 7. Compa a i a con edes de di e en e p o undidad
Como podemos obse a , una ed neu onal más compleja no siemp e implica á una mejo a de los esul ados y
se á muy impo an e comp oba los g á icamen e pa a queda nos con los mejo es modelos y e i a el o e i ing.
5.1.2 Red Con olucional con D opou
Pa a la siguien e ed lo que ha emos se á añadi una egula ización median e D opou . El D opou p e ende
mi iga el e ec o de sob eajus e, “apagando” de o ma alea o ia algunas neu onas de nues a ed du an e el
en enamien o de o ma que los alo es de los pesos se dis ibuyan uni o memen e y no engan mayo impac o
unas neu onas que o as ya que es a emos abajando con edes neu onales di e en es, aunque pa ecidas las unas
a las o as [41]. Lo con igu a emos con un alo de 0.5, que signi ica que en cada época cada neu ona end á un
50% de posibilidades de apaga se. Añadiendo es e nue o elemen o a nues o p og ama los esul ados se án los
siguien es:
65
Figu a 39. Resumen del modelo con D opou
Figu a 40. Resul ados de pé didas sin aumen o de da os e incluyendo D opou .
C eación de un clasi icado de imágenes: Redes Neu onales Con olucionales.
66
Figu a 41. Resul ados de p ecisión sin aumen o de da os e incluyendo D opou .
Como se ap ecia en las igu as 49 y 50, emos que hemos eliminado el e ec o de sob eajus e que había en el
apa ado an e io y los esul ados en la alidación es án en o no al 89% pa a la p ecisión y en 0.34 pa a las
pé didas. P ocedamos en onces a inclui el aumen o de da os y e si se obse a alguna mejo a.
67
Figu a 42. Resul ados de pé didas con aumen o de da os e incluyendo D opou .
Figu a 43. Resul ados de p ecisión con aumen o de da os e incluyendo D opou .
Podemos no a que añadiendo el D opou los esul ados en la p ueba mejo an lige amen e (compa a con igu as
42 y 43), pe o sob e odo conseguimos educi el uido a de las g á icas haciendo es e modelo más iable. Más
adelan e se ealiza á una compa a i a con ca ac e es esc i os a mano.
O o de los esul ados que podemos obse a ; con y sin aumen o de da os, es que los esul ados de alidación
C eación de un clasi icado de imágenes: Redes Neu onales Con olucionales.
68
son mejo es que los de en enamien o, al menos du an e un g an núme o de épocas. Es o en un p incipio no
debe ía se así po que el modelo in en a ajus a se cada ez más a los da os de en enamien o, pe o debido al
d opou y a que las neu onas que se ac i an en cada i e ación no son las mismas, al sis ema le cos a á a ina los
pa áme os en base al en enamien o a la ez que las p uebas de alidación segui án mejo ando a un i mo más
ele ado. Una solución pa a e i a es e e ec o se ía educi el d opou pe o, con el in de ob ene la obus ez
necesa ia pa a el modelo, se decidió man ene las g á icas de es a o ma habiendo jus i icado su p ocedencia.
Figu a 44. P edicciones ob enidas pa a el segundo modelo con D opou
5.1.3 ResNe
En los apa ados an e io es llegamos a la conclusión de que inclui más capas ocul as a nues a ed a pesa de
hace la en eo ía más obus a y lexible pa a p oblemas más complejos pueden in oduci el p oblema del
des anecimien o del g adien e, e i ando que se modi iquen los pesos en las capas in e nas y po lo an o más
p o undidad ambién implique un e o mayo .
Sin emba go, en el año 2015, el equipo de Mic oso Resea ch, al mando del cien í ico Kaiming He, p esen a on
en su a ículo “Deep Residual Lea ning o Image Recogni ion” el concep o de las edes esiduales [44]. Es as
in oducen una conexión a ajo o esidual en e capas an es de aplica una unción de ac i ación.
69
Figu a 45. Esquema de una conexión esidual.
Al ene esas conexiones lo que ocu i á es que el g adien e a a esa á an o el camino común como el a ajo,
mejo ando la o ma en la que se modi ican los pesos de las neu onas en capas más p o undas [45]. G acias a
es o pod emos ene modelos de cien os incluso miles de capas sin a ec a al endimien o de es e y pe mi iendo
ope aciones más complejas. Pa a es e caso u iliza emos el modelo ResNe 50 que iene la siguien e es uc u a,
eniendo la conexión esidual 3 capas ocul as y eniendo los a ajos luga en las capas de con olución, como se
ap ecia en la igu a 51.
Figu a 46. Diag ama y esumen de pa áme os de nues a ed ResNe 50 [46]
C eación de un clasi icado de imágenes: Redes Neu onales Con olucionales.
70
En enando al modelo ob enemos los siguien es esul ados:
Figu a 47. Resul ados de pé didas u ilizando ResNe
Figu a 48. Resul ados de p ecisión u ilizando ResNe
71
Podemos e que, aunque engamos g an can idad de capas su endimien o sigue siendo muy bueno, aunque los
modelos an e io es pa ecen se mejo es pa a los da os ecibidos
Figu a 49. P edicciones ob enidas pa a el e ce modelo con ResNe
5.1.4 En enamien o con dos modelos
Se plan eó ambién un ap oximamien o al p oblema de o ma dis in a, donde end íamos dos p edic o es
uncionando al mismo iempo: uno pa a las le as y o o pa a los núme os, dado que las edes con olucionales
ob enían una mayo p ecisión po sepa ado que las is as an e io men e. Emplea emos la ed neu onal del p ime
ejemplo, pe o duplicada.
Figu a 50. Resul ados de pé didas y p ecisión únicamen e pa a las le as
C eación de un clasi icado de imágenes: Redes Neu onales Con olucionales.
72
Figu a 51. Resul ados de pé didas y p ecisión únicamen e pa a las le as
En el caso p ác ico a cada imagen se le aplica ían los dos p edic o es y aquél que alcanzase un mayo po cen aje
de segu idad se ía el ca ác e econocido.
73
6 RESULTADOS OBTENIDOS.
6.1 Resul ados en imágenes
Pa a comenza el análisis p ime o es necesa io e el desempeño de la ed en imágenes con un solo ca ác e en
di e en es posiciones. Pa a que la imagen sea simila a la de los da os de en ada y con el obje i o de elimina el
uido en la imagen, se con e i á la imagen a blanco y neg o y se aplica á un il o gaussiano, eliminando el
uido de la imagen. A con inuación, bina iza emos la imagen y la eescala emos a 28x28 píxeles, pa a que la ed
neu onal pueda ecibi la como en ada [47].
Figu a 52. Compa a i a del da o de en ada al p og ama s da o de en ada a la Red Neu onal
Po úl imo, lanzamos la p edicción y la esc ibimos encima de la imagen o iginal. Se ealiza án p uebas pa a los
4 modelos con di e en es imágenes de ca ac e es con a iaciones en amaño y o ma. Pa a ellos se u iliza á
OpenCV, una biblio eca especializada en la isión po compu ado a [48].
Resul ados ob enidos.
80
Figu a 61. Resul ados con dos CNN, así como el ca ác e elegido y su p obabilidad en cada caso.
De los esul ados ob enidos ob enemos las di e en es conclusiones. La p ime a de ellas es que, al y como
supusimos en las conclusiones an e io es, el hecho de eco a la en ada y que el ca ác e ocupe el máximo
amaño posible ha supues o una mejo a signi ica i a en cuan o a la calidad de los esul ados, pasando de un 55%
de acie o has a un 78% de media pa a es os ejemplos, ace cándose más a los alo es ob enidos en el
en enamien o.
Obse amos ambién que la ed CNN+D opou pa ece ene un compo amien o simila an o en mayúsculas
como en minúsculas, siendo el más obus o de los 4. Aun así, Los esul ados son siemp e mejo es u ilizando
mayúsculas. Es o es po que los ca ac e es en mayúsculas son más econocibles y ienden menos a con undi se
en e sí. Es in e esan e po lo an o des aca el pa alelismo que exis e en e el Deep Lea ning y la me odología
humana, pues en muchos documen os ambién se pide ellena los da os en mayúsculas pa a e i a con usiones
en e le as.
Nue amen e des acan los alo es a ojados po el úl imo p og ama. Si se hubiese usado únicamen e el p edic o
de le as hab íamos ob enido la mayo p ecisión de odos los modelos, po lo que la conclusión ob enida as
es os expe imen os es que siemp e que sea posible a a emos de indica le a la ed si la en ada son ca ac e es
al abé icos o numé icos.
81
Figu a 62. Compa a i a en e usa un mismo p edic o pa a le as y núme os y selecciona en cada zona de la
imagen qué p edic o usa
6.3 Es udio e implemen ación de los Resul ados en Tiempo Real
6.3.1 YoloV5
Po úl imo, se ha que ido p oba y analiza una a qui ec u a ecien e pa a compa a sus esul ados con aquellas
ya is as a lo la go de es e p oyec o y plan ea p uebas en Tiempo Real pa a u u as líneas. Se ha op ado po
u iliza YoloV5 (lanzado en mayo de 2020) pa a es e in.
YoloV5 es la quin a e sión del algo i mo YOLO, ac ónimo de You Only Look Once (solo mi as una ez), que
di ide la imagen en celdas y de una sola pasada no solo ealiza el abajo de p edicción sino además el de
de ección de obje os, pudiendo ene en una misma imagen más de un obje o y siendo capaz de encon a los y
clasi ica los. La en aja que supone es e mé odo espec o a los an e io es is os es la elocidad ya que, según la
Resul ados ob enidos.
82
documen ación p opo cionada po su c eado , Glenn Joche , es a he amien a puede abaja a una ecuencia
de has a 45 imágenes po segundo en una esolución HD, lo que nos da un compo amien o p ác icamen e en
Tiempo Real [51].
A di e encia de las Redes Neu onales Con olucionales (CNN) que analizan oda la imagen de una sola ez pa a
lanza una p edicción, Yolo de ec a en p ime luga egiones de in e és de la imagen pa a luego pasa esa egión
a la ed. Se in oduce po lo an o el concep o de R-CNN (Regional CNN) y en ellos se demues a que el mapa
de ca ac e ís icas de una egión de la imagen man iene la posición en el mapa de ca ac e ís icas y es idén ico al
de la egión analizada po sepa ado.
Figu a 63. Relación en e el mapa de ca ac e ís icas de un agmen o de imagen y el agmen o del mapa de
ca ac e ís icas de la imagen comple a.
Pa a cada en ana de nues a imagen end emos el siguien e ec o asociado:
[𝑝𝑐,𝑐1,𝑐2,…,𝑥,𝑦,𝑤,ℎ]
( 13 )
𝑝𝑐:𝑃𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑑𝑎𝑑 𝑑𝑒 𝑞𝑢𝑒 𝑒𝑥𝑖𝑠𝑡𝑎 𝑢𝑛 𝑜𝑏𝑗𝑒𝑡𝑜 𝑒𝑛 𝑒𝑠𝑎 𝑣𝑒𝑛𝑡𝑎𝑛𝑎
𝑐𝑛:𝐶𝑙𝑎𝑠𝑒 𝑎 𝑙𝑎 𝑞𝑢𝑒 𝑝𝑒𝑟𝑡𝑒𝑛𝑒𝑐𝑒 𝑒𝑙 𝑜𝑏𝑗𝑒𝑡𝑜 𝑎𝑠𝑜𝑐𝑖𝑎𝑑𝑜 𝑎 𝑒𝑠𝑎 𝑣𝑒𝑛𝑡𝑎𝑛𝑎
𝑥,𝑦:𝐶𝑜𝑜𝑟𝑑𝑒𝑛𝑎𝑑𝑎𝑠 𝑑𝑒𝑙 𝑐𝑒𝑛𝑡𝑟𝑜 𝑑𝑒 𝑙𝑎 𝑣𝑒𝑛𝑡𝑎𝑛𝑎
𝑤,ℎ: 𝐴𝑛𝑐ℎ𝑜 𝑦 𝑎𝑙𝑡𝑜 𝑟𝑒𝑙𝑎𝑡𝑖𝑣𝑜 𝑑𝑒 𝑙𝑎 𝑣𝑒𝑛𝑡𝑎𝑛𝑎 𝑟𝑒𝑠𝑝𝑒𝑐𝑡𝑜 𝑎 𝑙𝑎 𝑖𝑚𝑎𝑔𝑒𝑛 𝑐𝑜𝑚𝑝𝑙𝑒𝑡𝑎
La imagen di idida en celdas jun o con el ec o pa a cada una se á la en ada en nues a CNN pa a el
en enamien o. Podemos encon a nos a la ho a de p edeci una imagen que el mismo obje o se de ec e en
múl iples ocasiones gene ando una g an can idad de cajas delimi ado as. Pa a e i a lo la ed ealiza el siguien e
p ocedimien o:
1. Mi a el ec o salida de cada en ana.
2. Elimina odas aquellas p edicciones que cuen en con un pc meno a cie o umb al, po ejemplo 0,6.
3. Selecciona aquella con el pc máximo pa a cada clase.
4. Elimina las egiones que se solapen en exceso con la seleccionada.
Habiendo explicado el p ocedimien o pa a la clasi icación de obje os, a la ho a de implemen a el p og ama pa a
el p oblema de de ección de ca ac e es nos encon amos con un g an p oblema, y es que el da ase que es amos
u ilizando se encuen a en o ma o .cs y el p og ama de en enamien o de YoloV5 pa a el cálculo de los pesos
de la ed exige que las imágenes se encuen en en o ma o .jpg y e ique adas con su clase y posición y amaño
de los obje os. Pa a sol en a es e p oblema se decidió c ea un p og ama auxilia que leyese cada imagen, la
83
gua dase en el o denado en o ma o jpg y c ease una única e ique a con cen o en el cen o de la imagen y que
aba case el cien po cien de es a.
Figu a 64. Nue a o ganización de los da os de en enamien o y alidación; con imágenes y e ique as
Pa a es e expe imen o al ene una g an can idad de da os de en enamien o en o ma de imágenes
ans o mábamos los p og amas an e io es que se podían en ena con cie a acilidad en uno muy cos oso
compu acionalmen e y pa a el cuál el o denado ísico no es aba capaci ado. Se en enó po lo an o u ilizando
el sis ema i ual de Google Colab [52] y debido a las limi aciones del p og ama se en enó únicamen e po 10
épocas, ob eniendo una p ecisión del 65% pe o que iba en aumen o. Los esul ados en es e caso son muy pob es,
pe o es o se debe en un p ime luga a la limi ación empo al pa a el uso del p og ama y en segundo luga debido
al amaño an educido de las imágenes. Se llega a la conclusión po lo an o de que con un da ase más pequeño,
pe o con un mayo amaño de imagen y e ique ado manualmen e se consegui ían mejo es esul ados, quedando
pendien e ealiza p uebas en imágenes y ídeo.
Conclusiones
84
7 CONCLUSIONES
l obje i o de es e p oyec o ha sido el de ealiza una ap oximación al Deep Lea ning, conc e amen e al
que con o mado po edes neu onales y comp oba cómo uncionan algunos de los p og amas de OCR
que se u ilizan hoy en día como puede se el de Google. Asimismo, se que ía hace una compa a i a
en e múl iples y modelos y compa a los esul ados ob enidos en el en enamien o con aquellos que se dan en
la ealidad.
T as ealiza una in es igación en p o undidad sob e dis in os ipos de Redes Neu onales se han encon ado
dis in as a iaciones de CNNs que dan buenos esul ados an o con da os del Da ase EMNIST como con
ca ac e es de dis in as pe sonas, con i mando la iabilidad de los modelos. Además, las p edicciones esponden
bien en p oblemas de iempo eal, log ando segmen a y localiza los ca ac e es.
A modo de esumen, los esul ados ob enidos pa a los di e en es modelos han sido los siguien es:
Modelos
CNN
CNN+D opou
Resne
2 Modelos CNN
En enamien o
88.56%
88.94%
88.48%
94.05% / 99.72%
Da ase de p ueba
88.11%
88.21%
88.11%
96.20%
(93.95%/99.54%)
Ca ac e es
Indi iduales
77.78%
55.56%
66.67%
55.56%
Múl iples ca ac e es
80.77%
88.46%
76.92%
76.92%
Tabla 12. Compa a i a en e los di e en es modelos en las ases de desa ollo del p oyec o.
Podemos conclui que los esul ados Los p incipales obje i os plan eados inicialmen e se han cumplido de
mane a sa is ac o ia, quedando pendien es cie as mejo as y a ances que pod ían plan ea se en u u as líneas de
in es igación sob e es a ma e ia.
E
“Nobody ph ases i his way, bu I hink ha a i icial
in elligence is almos a humani ies discipline. I ’s eally
an a emp o unde s and human in elligence and
human cogni ion.”
- Sebas ian Th un-
85
7.1 Fu u as mejo as
Como ya se mencionó en las p uebas ealizadas, cie as mejo as y a ances pod ían hace se siguiendo con la
in es igación y p uebas de más modelos u ilizados en econocimien o óp ico de pa ones y o mas, ya que las
mejo as en es e campo muchas eces se ealizan en cues ión de meses. Como mejo as a implemen a se plan ean
las siguien es:
• Con inua con las p uebas de los modelos p opues os, cambiando pa áme os de en enamien o pa a
op imiza los alo es de p ecisión y pé didas, así como consegui mejo es esul ados en menos épocas.
Se p opone, po ejemplo, ealiza un bucle en el que se cambien cie os pa áme os como el núme o de
capas ocul as de la ed, los op imizado es o el amaño de lo e en el en enamien o y analiza las g á icas
ob enidas has a queda nos con la mejo . Es impo an e que los pesos iniciales en el en enamien o sean
los mismos en cada i e ación pa a e i a la alea o iedad de los expe imen os.
• Se ha abajado con el conjun o de da os EMNIST po se el más comple o pa a el econocimien o de
ca ac e es esc i os indi iduales, pe o en muchos casos la o ma de esc ibi un ca ác e es dis in a en
cada pe sona (sob e odo pa a ca ac e es como la s, la o la m). Implemen a un da ase p opio donde
se pudiesen inclui esas a iaciones pod ía mejo a la p ecisión de los esul ados, aunque eque i ía un
g an abajo de ecopilación y e ique ado p e io de mues as.
• P oba a ealiza en enamien os pa a de ec a g upos de ca ac e es o de palab as, ya que muchas eces
un único ca ác e no apo a su icien e. Se pod ía in en a implemen a los modelos u ilizando o os
da ase s y ealiza p uebas pa a ex os mecanog a iados, ya que ex os manusc i os equi ían de una
g an can idad de da os y iempo de en enamien o pa a consegui unos esul ados acep ables. Algunos
de los da ase s empleados en es os casos son el Coco-Tex Da ase y el To al-Tex Da ase . Pa a su
en enamien o se u ilizan p incipalmen e Redes Neu onales comple amen e con olucionales (FCNN)
como pueden se la ed EAST o la CRAFT [53]
• P oba o os modelos pa a la de ección de ca ac e es. Pa a nues o p oyec o se p oba on 4 a ian es pa a
ealiza la compa a i a, pe o exis en in ini ud de modelos que ap oximan el p oblema de OCR de
o mas dis in as. Los T ans o me s, RAMs y CRNNs son modelos que han demos ado se muy iables
en la de ección de ex o manusc i o [53]
• Cambio y mejo a de las condiciones óp imas. Es udia el compo amien o en o as ci cuns ancias en
las que no se puedan cumpli las mejo es condiciones de luminosidad. Con la inalidad de adap a el
disposi i o al medio en ez de adap a el medio al disposi i o.
7.2. C onog ama
Como ya se explicó en el apa ado de in oducción y plani icación del p oyec o, el abajo se ha compues o de
cua o ases p incipales: ecopilación de in o mación y es udio del es ado del a e, es udio del p oblema de
de ección de ca ac e es manusc i os e implemen ación de di e en es modelos, ealización de p uebas pa a cada
uno de los modelos en di e en es condiciones y elabo ación de la documen ación.
El iempo dedicado al desa ollo del p oyec o ha sido de unas 400 ho as e ec i as de abajo, unos dos meses y
medio.
La p ime a e apa de búsqueda de documen ación y o mación en Py hon e In eligencia A i icial, pues se pa ió
de conocimien os básicos al empeza el p oyec o, aba có las p ime as dos semanas. A lo la go de es as se
ealiza on cu sos ace ca del Deep Lea ning a la ez que analizábamos código de p oblemas simila es, como
p oblemas de clasi icación bina ia o clasi icación de núme os con una uen e de e minada.
La siguien e e apa, en la que ealizamos la búsqueda y diseño de modelos compa ibles pa a nues o p oblema a
la ez que se ealizaban pequeñas p uebas ace ca del uncionamien o de los modelos, ocupó la mayo pa e del
iempo del desa ollo del p oyec o, unas 150 ho as. Es o se debe a la modi icación que se es u o ealizando a
Conclusiones
86
los modelos pa a log a mejo es esul ados, a lo que añadíamos o a ase de búsqueda de in o mación de cómo
aplica los co ec amen e. Los iempos de en enamien o pa a cada uno de los modelos ue on de 25 minu os
excep o el del YoloV5, que du ó 3 ho as. Se emplea on po lo an o unas 10 ho as únicamen e en en ena a los
modelos y comp oba su e icacia.
La e ce a e apa supuso unas 100 ho as de abajo, y en es a e apa se buscó in o mación ace ca de la
segmen ación de ca ac e es en imágenes y se in en ó op imiza el p ocesamien o de las imágenes y el ídeo de
o ma que se consiguiese en adas a la ed neu onal muy pa ecida a las del en enamien o pa a mejo a los
esul ados. Adicionalmen e se ealiza on las p uebas pa a cada modelo y se ecopila on los esul ados ob enidos.
Po úl imo, la e apa de documen ación, que engloba la ealización de es e documen o, ha supues o un o al de
dos semanas, ap oximadamen e. Pasamos en es a e apa a documen a las p uebas y los es udios ealizados
p e iamen e sob e el es ado del a e.
En el siguien e c onog ama puede ap ecia se de mane a isual la dis ibución del abajo en las dis in as semanas:
Tabla 13. Diag ama de Gan
7.3. P esupues o
El p esupues o que supond ía que un ingenie o ealiza a es e abajo, omando el sueldo de un i ulado de g ado
supe io que se expone en el BOE, en la esolución del 22 de eb e o de 2018, de la Di ección Gene al de Empleo
[54], se ía de unos 6300 €.
Teniendo en cuen a que el sala io o al anual es de 25.289,02 €, el sala io mensual se ía de 2.099,09 € y el iempo
abajado de 3 meses.
En cuan o a los ma e iales empleados, sólo ha sido necesa io un o denado de sob emesa, cuyo alo a día de
hoy es de algo menos de 1000 €.
En caso de ealiza a ances en el p oyec o y aumen a el núme o de expe imen os o mejo a el equipo, hab ía
que ene es o en cuen a de ca a al p esupues o inal.
87
Re e encias
88
REFERENCIAS
[1] STELLINGWERF, Romme ; ZANDHUIS, An on, 2013. ISO 21500 Guidance on p ojec
managemen –A Pocke Guide. Van Ha en.
[2] IBM CORPORATION, 5 de ene o de 2022. Wha Is Op ical Cha ac e Recogni ion (OCR)? En: IBM
[en línea]. Disponible en: h ps://www.ibm.com/cloud/blog/op ical-cha ac e - ecogni ion
[3] BERCHMANS, Deepa; KUMAR, S. S. Op ical cha ac e ecogni ion: an o e iew and an insigh . En
2014 In e na ional Con e ence on Con ol, Ins umen a ion, Communica ion and Compu a ional
Technologies (ICCICCT). IEEE, 2014. p. 1361-1365. SHEPARD, D. H. (1951). EEUU Pa en No.
US2663758A. En: His o y o In o ma ion.
[4] AGARWAL, Rahul, 2021. Deep Lea ning Based OCR o Tex in he Wild. En: Nanone s [en línea].
Disponible en: h ps://nanone s.com/blog/deep-lea ning-oc / [consul a: 26 de junio de 2021]
[5] TURING, Alan M. 1 de oc ub e de 1950. Compu ing Machine y and in elligence. En: Mind, 59(236).
pp. 433-460.
[6] SERRANO, Albe o G. 2012. In eligencia A i icial. Fundamen os, p ác ica y aplicaciones. San
Fe nando de Hena es, Mad id: RC Lib os.
[7] BOBROW, Daniel G. 1964. Na u al language inpu o a compu e p oblem sol ing sys em. PhD.
Massachuse s Ins i u e o Technology.
[8] NORVIG, Pe e , 1992. Pa adigms o A i icial In elligence P og amming. New Yo k: Mo gan
Kau mann Publishe s, pp. 151–154. ISBN 1-55860-191-0.
[9] HAENLEIN, Michael; KAPLAN, And eas., 2019 A b ie his o y o a i icial in elligence: On he
pas , p esen , and u u e o a i icial in elligence. Cali o nia managemen e iew, ol. 61, no 4, pp. 5-
14.
[10] BINI, S e ano A. 2018. A i icial In elligence, Machine Lea ning, Deep Lea ning, and Cogni i e
Compu ing: Wha Do These Te ms Mean and How Will They Impac Heal h Ca e? En: The Jou nal
o a h oplas y, 33(8), pp. 2358-2361.
[11] LUNA, Ja ie , 2018. Tipos de ap endizaje au omá ico. En: SoldAi [en línea]. Disponible en:
h ps://medium.com/soldai/ ipos-de-ap endizaje-au om%C3%A1 ico-6413e3c615e2
[12] ALPHASTAR TEAM, 2019. AlphaS a : Mas e ing he eal- ime s a egy game S a C a II. En:
DeepMind [en línea]. Disponible en: h ps://www.deepmind.com/blog/alphas a -mas e ing- he- eal-
ime-s a egy-game-s a c a -ii
[13] NIELSEN, Michael A. 2015. Neu al ne wo ks and deep lea ning. San F ancisco, CA, USA:
De e mina ion p ess.
89
[14] BECKER, Dan, s. . In o o Machine Lea ning. En: Kaggle [en línea]. Disponible en:
h ps://www.kaggle.com/lea n/in o- o-machine-lea ning
[15] WOODFORD, Ch is, 30 de junio de 2021. Neu al Ne wo ks. En: ExplainTha S u [en línea]
Disponible en: h ps://www.explain ha s u .com/in oduc ion- o-neu al-ne wo ks.h ml [consul a: 19
de julio de 2021]
[16] FINLAY, S e en, 2020. A i icial In elligence o E e yone. Lancas e Uni e si y.
[17] LLAMAS, Luis, 10 de eb e o de 2019. Machine Lea ning con Tenso low y Ke as en Py hon. En:
LuisLlamas.es [en línea]. Disponible en: h ps://www.luisllamas.es/machine-lea ning-con- enso low-
y-ke as-en-py hon/
[18] JOO, Gihun; PARK, Chihyun; IM, Hyeonseung, 2020. Pe o mance e alua ion o machine lea ning
op imize s. Jou nal o IKEEE, ol. 24, no 3, p. 766-776.
[19] VANI, S.; RAO, T. 2019. An Expe imen al App oach owa ds he Pe o mance Assessmen o
Va ious Op imize s on Con olu ional Neu al Ne wo k. En: 3 d In e na ional Con e ence on T ends
in Elec onics and In o ma ics (ICOEI), (pp. 331-336). Ti unel eli, India.
[20] RINGA TECH, 25 de mayo de 2022. Funciones de ac i ación a de alle (Redes neu onales). En:
You ube [en línea]. Disponible en: h ps://www.you ube.com/wa ch? =_0wdp oo 34& =898s
[21] BROWNLEE, Jason, 9 de junio de 2019. A Gen le In oduc ion o he Rec i ied Linea Uni (ReLU).
En: Machine Lea ning Mas e y [en línea]. Diponible en:
h ps://machinelea ningmas e y.com/ ec i ied-linea -ac i a ion- unc ion- o -deep-lea ning-neu al-
ne wo ks/
[22] GLOROT, Xa ie ; BORDES, An oine; BENGIO, Yoshua. junio de 2011. Deep spa se ec i ie neu al
ne wo ks. En: P oceedings o he ou een h in e na ional con e ence on a i icial in elligence and
s a is ics. JMLR Wo kshop and Con e ence P oceedings. pp. 315-323.
[23] RASAMOELINA, And inand asana Da id; ADJAILIA, Fouzia; SINČÁK, Pe e , ene o de 2020. A
e iew o ac i a ion unc ion o a i icial neu al ne wo k. En: 2020 IEEE 18 h Wo ld Symposium on
Applied Machine In elligence and In o ma ics (SAMI). IEEE. pp. 281-286.
[24] SEGURA MORALES, San iago; DAVID MOGOLLON, Juan; CATALINA VILLAMIL, Angie, 24
de sep iemb e de 2020. Reconocimien o de ca ac e es de documen os de iden idad u ilizando
Tesse ac y Py hon en 4 pasos. En: Da a Science Analy icLab [en línea]. Disponible en:
h ps://da ascience-alw.medium.com/ econocimien o-de-ca ac e es-de-documen os-u ilizando-
esse ac -y-py hon-en-4-pasos-721d861cc 8c
[25] AGARWAL, Rahul, 2021. Deep Lea ning Based OCR o Tex in he Wild. En: Nanone s [en línea].
Disponible en: h ps://nanone s.com/blog/deep-lea ning-oc / [consul a: 26 de junio de 2021]
[26] KAZEMNEJAD, Ami hossein, 2019. How o do Deep Lea ning esea ch wi h absolu ely no GPUs -
Pa 2. En: Ami hossein Kazemnejad's Blog [en línea]. Disponible en:
h ps://kazemnejad.com/blog/how_ o_do_deep_lea ning_ esea ch_wi h_absolu ely_no_gpus_pa _2/
[27] TENSORFLOW TEAM, 26 de Ene o de 2022. Gua da y ca ga modelos. En: Tenso Flow [en línea].
Disponible en: h ps://www. enso low.o g/ u o ials/ke as/sa e_and_load [consul a: 18 de mayo de
2022]
[28] KERAS, s. .. Ke as da ase s. En: ke as.io [en línea]. Disponible en: h ps://ke as.io/api/da ase s/
[consul a: 27 de julio de 2021]
Anexo B
96
42. laye = modelo.laye s #Las capas con olucionales son la 0 y
la 2
43. il e s, biases = modelo.laye s[0].ge _weigh s()
44. p in (laye [0].name, il e s.shape)
45.
46. #Mos amos los il os
47. ig1=pl . igu e( igsize=(8, 12))
48. columns = 8
49. ows = 8
50. n_ il e s = columns * ows
51. o i in ange(0, n_ il e s):
52. = il e s[:, :, :, i]
53. ig1 =pl .subplo ( ows, columns, i+1)
54. ig1.se _x icks([]) #Tu n o axis
55. ig1.se _y icks([])
56. pl .imshow( [:, :, 0], cmap='g ay')
57. pl .show()
58.
59. #De inimos un modelo mas co o pa a ob ene como salida la
con olucion
60. con _laye _index = [0, 2, 4]
61. ou pu s
= [modelo.laye s[i].ou pu o i in con _laye _index]
62. model_sho = Model(inpu s=modelo.inpu s, ou pu s=ou pu s)
63. p in (model_sho .summa y())
64.
65. #La en ada es 28x28, asi que ajus amos la imagen de en ada
a es e amanio
66. img = load_img('ex accion_ca ac e is icas/imagen_1.jpeg',
a ge _size=(28, 28)) #VGG use 224 as inpu
67.
68. # con e he image o an a ay
69. img = img_ o_a ay(img)
70. img = c 2.c Colo (img, c 2.COLOR_BGR2GRAY)
71. img = img.as ype(" loa 32") / 255.0
72. img = np.expand_dims(img, axis=0)
73.
74. # Gene amos la salida de nues a ed
75. ea u e_ou pu = model_sho .p edic (img)
76.
77. columns = 8
78. ows = 8
79. o in ea u e_ou pu :
80. ig=pl . igu e( igsize=(12, 12))
81. o i in ange(1, columns* ows +1):
82. ig =pl .subplo ( ows, columns, i)
83. ig.se _x icks([]) #Tu n o axis
84. ig.se _y icks([])
85. pl .imshow( [0, :, :, i-1], cmap='g ay')
86. pl .show()
97
ANEXO C
Código co espondien e al en enamien o de los modelos CNN:
1. #Impo amos lib e ias necesa ias
2.
3. impo numpy as np
4. impo enso low as
5. impo o ch
6. impo pandas as pd
7. impo ma plo lib.pyplo as pl
8. impo seabo n as sns
9. om ke as.models impo Sequen ial
10. om ke as.laye s impo Dense, Con 2D, Fla en,
MaxPooling2D, Ba chNo maliza ion, Ac i a ion, D opou
11. om enso low.ke as.op imize s impo Adam
12. om enso low.ke as.p ep ocessing.image impo ImageDa aGe
ne a o
13. om ke as.laye s.con olu ional impo Con 2D
14. om ke as.laye s.con olu ional impo MaxPooling2D
15. om ke as impo backend as K
16. om ke as.u ils impo np_u ils
17. om ke as.u ils impo load_img, img_ o_a ay
18. om sklea n.model_selec ion impo ain_ es _spli
19. impo c 2
20. om imu ils impo build_mon ages
21. impo andom
22. om o ch.u ils.da a.sample impo Subse RandomSample
23. impo models
24. om da e ime impo da e ime
25.
26. #Llamamos y almacenamos los Da ase s de p ueba
27.
28. p in ("ADQUIRIENDO DATASET...")
29. da a_ ain= pd. ead_cs ('emnis -balanced- ain.cs ') #Da os
de en enamien o
30. da a_ es = pd. ead_cs ('emnis -balanced- es .cs ') #Da os
pa a el es
31. p in ("DATASET CARGADO")
32.
33. #Funcion pa a no maliza los da ase s (Hace los de ipo
loa 32
34. #y con alo es en e 0 y 1)
35.
36. de No maliza (da a, label):
37. x = da a.d op(label ,axis=1)
38. x=x.as ype(' loa 32')
39. x=x/255
40. y = da a[label]
41. x= x. alues. eshape(-1,28,28,1)
Anexo C
98
42. x=np. anspose(x,[0, 2, 1, 3]) #Hay que anspone los
da os po que si no el ca ac e no se esc ibe co ec amen e
43. e u n x,y
44.
45. #El en enamien o y el es ienen e ique as dis in as
46. ain_x, ain_y= No maliza (da a_ ain,'45')
47. es _x, es _y = No maliza (da a_ es , '41')
48.
49. #Imp imimos diag ama de dis ibución de nues os da os de
en enamien o. En el eje x se ep esen a an
50. #las a iables y en el eje y, el nume o de eces que apa ece
51. sns.se (s yle=" icks", con ex =" alk", on _scale = 1)
52. #pl .s yle.use("da k_backg ound")
53. pl . igu e( igsize = (30,16))
54. ax =
ain_y. alue_coun s().so _ alues(axis=0,ascending=False).plo (
kind='ba ',
55. g id = False,
56. on size=20,
57. colo ='g ey')
58. pl .x icks( o a ion=0)
59. o p in ax.pa ches:
60. heigh = p.ge _heigh ()
61. ax. ex (p.ge _x()+ p.ge _wid h() / 2., heigh + 30,
heigh ,
62. ha = 'cen e ', size = 15)
63. sns.despine()
64.
65. pl .sa e ig(' igu es/dis ibucion_da ase .png')
66.
67. #Lis a con las di e en es e ique as pa a su pos e io
aduccion
68. #y isualizacion
69.
70. clases=['0','1','2','3','4','5','6','7','8','9','A','B',
71. 'C','D','E','F','G','H','I','J','K','L','M','N',
72. 'O','P','Q','R','S','T','U','V','W','X','Y','Z',
73. 'a','b','d','e',' ','g','h','n','q',' ',' ']
74.
75. #Tomamos 9 mues as alea o ias del da ase de p ueba
76. ain_samples = andom.sample( ange(0, len( ain_x)), 9)
77. #Mos amos los nume os que ha cogido po si es necesa io
con as a lo con el da ase
78. p in ( ain_samples)
79.
80. #Imp imimos las mues as
81. ig,axes = pl .subplo s(4,4, igsize=(10,8))
82. pl .sup i le('Se de en enamien o')
83. o i in ain_samples:
84. pl .subplo (3, 3, ain_samples.index(i)+1)
85. pl .imshow( ain_x[i], cmap='bina y')
86. pl . i le( 'E ique a: {clases[ ain_y[i]]}')
87. pl .axis('o ')
88. pl .sa e ig(' igu es/ejemplos_da ase .png')
89.
90.
99
91. modelo_a_compila =3
92.
93.
94. #Modelo secuencial no mal
95. i modelo_a_compila ==1:
96. p in ('Vas a usa el MODELO 1: Red Neu onal
Simple')
97.
98. modelo = .ke as.Sequen ial([
99. .ke as.laye s.Fla en(inpu _shape=(28,28,1)),
100. .ke as.laye s.Dense(uni s=25, ac i a ion=' elu'),
101. .ke as.laye s.Dense(uni s=40, ac i a ion=' elu'),
102. .ke as.laye s.Dense(47, ac i a ion='so max')
103. ])
104.
105.
106. eli modelo_a_compila ==2:
107. p in ('Vas a usa el MODELO 2: Red Neu onal
Con olucional')
108. modelo = .ke as.Sequen ial([
109. .ke as.laye s.Con 2D(32, (3,3),
inpu _shape=(28,28,1), ac i a ion=' elu'),
110. .ke as.laye s.MaxPooling2D(2,2), #2,2 es el
amano de la ma iz
111.
112. .ke as.laye s.Con 2D(64, (3,3),
ac i a ion=' elu'),
113. .ke as.laye s.MaxPooling2D(2,2), #2,2 es el
amano de la ma iz
114.
115. .ke as.laye s.Fla en(),
116. .ke as.laye s.Dense(uni s=100,
ac i a ion=' elu'),
117. .ke as.laye s.Dense(47, ac i a ion='so max')
118. ])
119.
120. #Modelo con d opou
121.
122. eli modelo_a_compila ==3:
123. p in ('Vas a usa el MODELO 3: Red Neu onal
Con olucional con D opou ')
124. modelo = .ke as.models.Sequen ial([
125. .ke as.laye s.Con 2D(32, (3,3), ac i a ion=' elu',
inpu _shape=(28, 28, 1)),
126. .ke as.laye s.MaxPooling2D(2, 2),
127.
128. .ke as.laye s.Con 2D(64, (3,3), ac i a ion=' elu'),
129. .ke as.laye s.MaxPooling2D(2,2),
130.
131. .ke as.laye s.D opou (0.5),
132. .ke as.laye s.Fla en(),
133. .ke as.laye s.Dense(100, ac i a ion=' elu'),
134. .ke as.laye s.Dense(47, ac i a ion="so max")
135. ])
136.
Anexo C
100
137. eli modelo_a_compila ==4:
138. p in ('Vas a usa el MODELO 4: P ueba de Red Neu onal
con nume osas capas ocul as')
139.
140. modelo = .ke as.models.Sequen ial([
141. .ke as.laye s.Con 2D(32, (3,3), ac i a ion=' elu',
inpu _shape=(28, 28, 1)),
142. .ke as.laye s.MaxPooling2D(2, 2),
143.
144. .ke as.laye s.Con 2D(64, (3,3), ac i a ion=' elu'),
145. .ke as.laye s.MaxPooling2D(2,2),
146.
147. # .ke as.laye s.D opou (0.5),
148. .ke as.laye s.Fla en(),
149. .ke as.laye s.Dense(100, ac i a ion=' elu'),
150. .ke as.laye s.Dense(100, ac i a ion=' elu'),
151. .ke as.laye s.Dense(100, ac i a ion=' elu'),
152. .ke as.laye s.Dense(100, ac i a ion=' elu'),
153. .ke as.laye s.Dense(47, ac i a ion="so max")
154. ])
155.
156. #Compila el modelo
157. modelo.compile(
158. op imize ='adam',
159. loss= .ke as.losses.Spa seCa ego icalC ossen opy(),
160. me ics=['accu acy']
161. )
162.
163. modelo.summa y()
164. p in ('Nume o de capas de la Red Neu onal')
165. p in (len(modelo.laye s))
166.
167. #Sepa amos es y en enamien o
168. X_ ain, X_ alid, Y_ ain, Y_ alid =
ain_ es _spli ( ain_x, ain_y, es _size=0.25,
andom_s a e=42)
169.
170.
171. p in ( ain_y.shape)
172. p in ( es _y.shape)
173. p in ( ain_x[1].shape)
174. # Realizamos el aumen o de imagenes de p ueba median e
dis o siones, desplazamien os y gi os
175. aug = ImageDa aGene a o ( o a ion_ ange=20, zoom_ ange=0.05,
wid h_shi _ ange=0.1,
176. heigh _shi _ ange=0.1,
shea _ ange=0.15, ho izon al_ lip=False, ill_mode="nea es ")
177.
178. #Loads in image pa h
179. image_pa h='da a/images/ ain/imagen_26.jpg'
180. img = load_img(image_pa h, a ge _size= (28,28))
181. img_ enso = img_ o_a ay(img)
182. img_ enso = np.expand_dims(img_ enso , axis=0)
183. #Uses ImageDa aGene a o o lip he images
184. #C ea es ou ba ch o one image
185. pic = aug. low(img_ enso , ba ch_size =1)
101
186. pl . igu e( igsize=(10,8))
187. #Plo s ou igu es
188. o i in ange(1,10):
189. pl .subplo (3, 3, i)
190. ba ch = pic.nex ()
191. image_ = ba ch[0].as ype('uin 8')
192. pl .imshow(image_)
193. pl .axis('o ')
194. pl .show()
195. EPOCHS = 50
196. INIT_LR = 1e-1
197. BS = 128
198. p in ('COMENZANDO ENTRENAMIENTO...')
199. now = da e ime.now(). ime() # ime objec
200. cu en _ ime = now.s ime("%H:%M:%S")
201. p in ("Ho a de inicio =", cu en _ ime)
202. H = modelo. i (
203. aug. low( ain_x, ain_y, ba ch_size=BS),
alida ion_da a=( X_ alid, Y_ alid),
s eps_pe _epoch=len( ain_x) // BS, epochs=EPOCHS,
204. e bose=1)
205. '''H = modelo. i (
206. ain_x, ain_y, ba ch_size=BS, alida ion_da a=(
X_ alid, Y_ alid), s eps_pe _epoch=len( ain_x) // BS,
epochs=EPOCHS,
207. e bose=1)'''
208. p in ('LISTO')
209. now = da e ime.now(). ime() # ime objec
210. end_ ime = now.s ime("%H:%M:%S")
211. p in ("Ho a de inalizacion =", end_ ime)
212.
213.
214. #Mos amos los esul ados del en enamien o s es pa a la
p ecisión
215.
216. pl . igu e( igsize = (9,9))
217. p in (H.his o y.keys())
218. pl .plo (H.his o y['accu acy'])
219. pl .plo (H.his o y[' al_accu acy'])
220. pl . i le('P ecisión del modelo')
221. pl .ylabel('P ecisión (pu)')
222. pl .xlabel('Núme o de épocas')
223. pl .legend(['En enamien o', 'Tes '], loc='uppe le ')
224. pl .x icks(np.a ange(0, 50, s ep=5)) # Se label
loca ions.
225. pl .y icks(np.a ange(0.54, 1, s ep=0.02)) # Se label
loca ions.
226. pl .g id()
227. pl .sa e ig(' igu es/p ecision_modelo.png')
228. pl .show()
229.
230.
231. #Mos amos los esul ados del en enamien o s es pa a las
pé didas
232. pl . igu e( igsize = (9,9))
Anexo C
102
233. pl .plo (H.his o y['loss'])
234. pl .plo (H.his o y[' al_loss'])
235. pl . i le('Pe didas del modelo')
236. pl .ylabel('Pé didas')
237. pl .xlabel('Núme o de épocas')
238. pl .legend(['En enamien o', 'Tes '], loc='uppe le ')
239. pl .x icks(np.a ange(0, 50, s ep=5)) # Se label
loca ions.
240. pl .y icks(np.a ange(0, 1.5, s ep=0.05)) # Se label
loca ions.
241. pl .g id()
242. pl .sa e ig(' igu es/pe didas_del_modelo.png')
243. pl .show()
244.
245. es _samples = andom.sample( ange(0, len( es _x)), 9)
246.
247. p in ( es _samples)
248.
249. ig,axes = pl .subplo s(4,4, igsize=(10,8))
250. pl .sup i le('P ueba de p edicción')
251. o i in es _samples:
252. #p in ( es _y)
253. #p in (X_ es .shape)
254. p obs = modelo.p edic ( es _x[np.newaxis, i])
255. p in (p obs)
256. p edic ion = p obs.a gmax(axis=1)
257. p in (p edic ion)
258. label_p edic = clases[p edic ion[0]]
259. pl .subplo (3, 3, es _samples.index(i)+1)
260. #imagen= ain_x.loc[[i]]. alues. eshape(28,28)
261. #imagen=np. anspose(imagen)
262. #p in (p edic ion[i])
263. #p in (clases[label_p edic [i]])
264. pl .imshow( es _x[i], cmap='bina y')
265. pl . i le( 'E a: {clases[ es _y[i]]} p edijo:
{label_p edic }')
266. pl .axis('o ')
267. pl .sa e ig(' igu es/p uebas_p ediccion_modelo.png')
268.
269. # sa e he model o disk
270. p in ()
271. i modelo_a_compila ==1:
272.
273. modelo.sa e('sa ed_model/my_modelSimple',
sa e_ o ma ="h5")
274. eli modelo_a_compila ==2:
275. modelo.sa e('sa ed_model/my_modelCon ',
sa e_ o ma ="h5")
276. eli modelo_a_compila ==3:
277. modelo.sa e('sa ed_model/my_modelD op',
sa e_ o ma ="h5")
278. eli modelo_a_compila ==3:
279. modelo.sa e('sa ed_model/my_modelMal',
sa e_ o ma ="h5")
103
ANEXO D
Código pe enecien e al Algo i mo de en enamien o del ResNe 50:
1. #2022 Robe o Gallo TFG
2. #En enamien o ResNe
3. #Impo amos lib e ias necesa ias
4.
5. impo numpy as np
6. impo enso low as
7. impo o ch
8. impo pandas as pd
9. impo ma plo lib.pyplo as pl
10. impo seabo n as sns
11. om ke as.models impo Sequen ial
12. om ke as.laye s impo Dense
13. om ke as.laye s impo D opou
14. om ke as.laye s impo Fla en
15. om enso low.ke as.op imize s impo Adam
16. om enso low.ke as.p ep ocessing.image impo ImageDa aGe
ne a o
17. om ke as.laye s.con olu ional impo Con 2D
18. om ke as.laye s.con olu ional impo MaxPooling2D
19. om ke as impo backend as K
20. om ke as.u ils impo np_u ils
21. impo c 2
22. om imu ils impo build_mon ages
23. impo andom
24. om o ch.u ils.da a.sample impo Subse RandomSample
25. impo models
26. om sklea n.p ep ocessing impo LabelBina ize
27.
28. #Llamamos y almacenamos los Da ase s de p ueba
29. p in ("ADQUIRIENDO DATASET...")
30. da a_ ain= pd. ead_cs ('emnis -balanced- ain.cs ')
31. da a_ es = pd. ead_cs ('emnis -balanced- es .cs ')
32. p in ("DATASET CARGADO")
33.
34. #Funcion pa a no maliza los da ase s (Hace los de ipo
loa 32
35. #y con alo es en e 0 y 1)
36.
37. de No maliza (da a, label):
38. x = da a.d op(label ,axis=1)
39. x=x.as ype(' loa 32')
40. x=x/255
41. y = da a[label]
42. x= x. alues. eshape(-1,28,28,1)
43. x=np. anspose(x,[0, 2, 1, 3])
44. e u n x,y
45.
46. #El en enamien o y el es ienen e ique as dis in as
Anexo D
104
47. ain_x, ain_y= No maliza (da a_ ain,'45')
48. ain_x
= [c 2. esize(image, (32, 32)) o image in ain_x]
49. ain_x = np.expand_dims( ain_x, axis=-1)
50.
51. es _x, es _y = No maliza (da a_ es , '41')
52. es _x = [c 2. esize(image, (32, 32)) o image in es _x]
53. es _x = np.expand_dims( es _x, axis=-1)
54.
55. #Lis a con las di e en es e ique as pa a su pos e io
aduccion
56. #y isualizacion
57.
58. clases=['0','1','2','3','4','5','6','7','8','9','A','B',
59. 'C','D','E','F','G','H','I','J','K','L','M','N',
60. 'O','P','Q','R','S','T','U','V','W','X','Y','Z',
61. 'a','b','d','e',' ','g','h','n','q',' ',' ']
62.
63. #Con es e bloque imp imimos y mos amos di e en es
ca ac e es de
64. #nues as p uebas
65.
66. ain_samples = andom.sample( ange(0, len( ain_x)), 9)
67. p in ( ain_samples)
68. ig,axes = pl .subplo s(4,4, igsize=(10,8))
69. pl .sup i le('T aining se ')
70. o i in ain_samples:
71. pl .subplo (3, 3, ain_samples.index(i)+1)
72. pl .imshow( ain_x[i], cmap='bina y')
73. pl . i le( 'E ique a: {clases[ ain_y[i]]}')
74. pl .axis('o ')
75.
76. p in ('Vas a usa el MODELO ResNe 50')
77.
78. EPOCHS = 50
79. INIT_LR = 1e-1
80. BS = 128
81. model =
models.ResNe .build(32, 32, 1, 47, (3, 3, 3), (64, 64, 128, 256),
eg=0.0005)
82. model.compile(loss="ca ego ical_c ossen opy",
op imize ='adam', me ics=["accu acy"])
83.
84. le = LabelBina ize ()
85. ain_y = le. i _ ans o m( ain_y)
86. oun s = ain_y.sum(axis=0)
87.
88. es _y = le. i _ ans o m( es _y)
89.
90. classTo als = ain_y.sum(axis=0)
91. classWeigh = {}
92. model.summa y()
93. p in (len(model.laye s))
94.
95. #Sepa amos es y en enamien o
105
96. X_ ain, X_ alid, Y_ ain, Y_ alid =
ain_ es _spli ( ain_x, ain_y, es _size=0.25,
andom_s a e=42)
97.
98.
99. p in ( ain_y.shape)
100. p in ( es _y.shape)
101. p in ( ain_x[1].shape)
102. # Realizamos el aumen o de imagenes de p ueba median e
dis o siones, desplazamien os y gi os
103. aug = ImageDa aGene a o ( o a ion_ ange=20, zoom_ ange=0.05,
wid h_shi _ ange=0.1,
104. heigh _shi _ ange=0.1,
shea _ ange=0.15, ho izon al_ lip=False, ill_mode="nea es ")
105.
106. #Loads in image pa h
107. image_pa h='da a/images/ ain/imagen_26.jpg'
108. img = load_img(image_pa h, a ge _size= (28,28))
109. img_ enso = img_ o_a ay(img)
110. img_ enso = np.expand_dims(img_ enso , axis=0)
111. #Uses ImageDa aGene a o o lip he images
112. #C ea es ou ba ch o one image
113. pic = aug. low(img_ enso , ba ch_size =1)
114. pl . igu e( igsize=(10,8))
115. #Plo s ou igu es
116. o i in ange(1,10):
117. pl .subplo (3, 3, i)
118. ba ch = pic.nex ()
119. image_ = ba ch[0].as ype('uin 8')
120. pl .imshow(image_)
121. pl .axis('o ')
122. pl .show()
123.
124. p in ("[INFO] compiling model...")
125.
126. EPOCHS = 50
127. INIT_LR = 1e-1
128. BS = 128
129. p in ("[INFO] aining ne wo k...")
130.
131. H = model. i (
132. aug. low(X_ ain, Y_ ain, ba ch_size=BS),
alida ion_da a=( X_ alid, Y_ alid),
s eps_pe _epoch=len(X_ ain) // BS, epochs=EPOCHS,
133. e bose=1)
134.
135. p in ('LISTO')
136.
137. #Mos amos los esul ados del en enamien o s es pa a la
p ecisión
138.
139. pl . igu e( igsize = (9,9))
140. p in (H.his o y.keys())
141. pl .plo (H.his o y['accu acy'])
142. pl .plo (H.his o y[' al_accu acy'])
Anexo F
112
ANEXO F
P og ama dedicado a la p edicción de ca ac e es indi iduales (CNNs y ResNe ):
1. #2022 Robe o Gallo TFG
2. #P ediccion usando los es p ime os modelos
3. #Impo amos lib e ias necesa ias
4. om enso low.ke as.models impo load_model
5. om imu ils.con ou s impo so _con ou s
6. impo numpy as np
7. impo a gpa se
8. impo imu ils
9. impo c 2
10. impo ma plo lib.pyplo as pl
11.
12. p in ("[INFO] loading handw i ing OCR model...")
13. model = load_model('sa ed_model/model_ esne ') # u a del
modelo gua dado
14. ca ac e es=['imagenes/ca ac e _indi idual/0.jpeg', 'imagenes
/ca ac e _indi idual/7.jpeg',
15. 'imagenes/ca ac e _indi idual/8.jpeg', 'imagenes/
ca ac e _indi idual/8_de o mado.jpeg',
16. 'imagenes/ca ac e _indi idual/a.jpeg', 'imagenes/
ca ac e _indi idual/b_gi ada.jpeg',
17. 'imagenes/ca ac e _indi idual/i.jpeg', 'imagenes/
ca ac e _indi idual/l_mayuscula.jpeg',
18. 'imagenes/ca ac e _indi idual/l_mayuscula_desplaz
ada.jpeg', 'imagenes/ca ac e _indi idual/l_minuscula.jpeg',
19. 'imagenes/ca ac e _indi idual/m.jpeg', 'imagenes/
ca ac e _indi idual/ .jpeg']
20. clases=['0','1','2','3','4','5','6','7','8','9','A','B','C',
'D','E','F','G','H','I','J',
21. 'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y',
'Z','a','b','d','e',' ','g','h','n','q',' ',' ']
22.
23.
24. im = c 2.im ead(ca ac e es[2])
25. # calcula e mean alue om RGB channels and la en o 1D
a ay
26. als = im.mean(axis=2). la en()
27. # plo his og am wi h 255 bins
28. b, bins, pa ches = pl .his ( als, 255)
29. pl .xlim([0,255])
30. pl .show()
31. j=0
32. o i in ca ac e es:
33.
34. image = c 2.im ead(i)
35. scale_pe cen = 50
36. wid h = in (image.shape[1] * scale_pe cen / 100)
37. heigh = in (image.shape[0] * scale_pe cen / 100)
38. dim = (wid h, heigh )
113
39.
40. # esize image
41. image_ es = c 2. esize(image, dim, in e pola ion =
c 2.INTER_AREA)
42. g ay = c 2.c Colo (image_ es, c 2.COLOR_BGR2GRAY)
43. blu ed = c 2.GaussianBlu (g ay, (5, 5), 0)
44. edged = c 2.Canny(blu ed, 10, 100)
45.
46. cn s = c 2. indCon ou s(edged.copy(),
c 2.RETR_EXTERNAL,
47. c 2.CHAIN_APPROX_SIMPLE)
48. cn s = imu ils.g ab_con ou s(cn s)
49.
50.
51. #p in (image.shape)
52. image = c 2. h eshold(blu ed, 0, 255,
53. c 2.THRESH_BINARY_INV | c 2.THRESH_OTSU)[1]
54.
55. wid h = 28 #in (image.shape[1] * scale_pe cen / 100)
56. heigh = 28 #in (image.shape[0] * scale_pe cen / 100)
57. dim = (wid h, heigh )
58. c 2.imshow("cd", image)
59. image = c 2. esize(image, dim, in e pola ion =
c 2.INTER_AREA)
60.
61.
62.
63. c 2.wai Key(0)
64. image = image.as ype(" loa 32") / 255.0
65.
66. image= image. eshape(-1,28,28,1)
67. p in (image.shape)
68.
69. image = np.a ay(image, d ype=" loa 32")
70. #p in (image)
71. p eds = model.p edic (image)
72. i = np.a gmax(p eds)
73.
74. p ob = p eds[0][i]
75. label = clases[i]
76. #p in (p ob)
77. #p in (label)
78.
79. p in ("[INFO] {} - {:.2 }%". o ma (label, p ob * 100))
80.
81. image = c 2.im ead(ca ac e es[j])
82. j=j+1
83.
84.
85. c 2.pu Tex (image_ es, label, (50, 70),
86. c 2.FONT_HERSHEY_SIMPLEX, 3, (0, 0, 0), 2)
87.
88.
89. # show he image
90. c 2.imshow("Image", image_ es)
Anexo F
114
91. c 2.wai Key(0)
92.
93.
94. image = image.as ype(" loa 32") / 255.0
95. image = np.expand_dims(image, axis=0)
96. p in (image.shape)
97.
98. # OCR he cha ac e s using ou handw i ing ecogni ion model
99. p eds = model.p edic (image)
100.
101. clases=['0','1','2','3','4','5','6','7','8','9','A','B','C',
'D','E','F','G','H','I','J',
102. 'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y',
'Z','a','b','d','e',' ','g','h','n','q',' ',' ']
103.
104. i = np.a gmax(p eds)
105. p in (p eds)
106. p in (i)
107. p ob = p eds[0][i]
108. label = clases[i]
109. p in (p ob)
110. p in (label)
111.
112. p in ("[INFO] {} - {:.2 }%". o ma (label, p ob * 100))
113.
114. image = c 2.im ead('imagenes/imagen_G_desplazado.jpeg')
115.
116. c 2.pu Tex (image, label, (50, 50),
117. c 2.FONT_HERSHEY_SIMPLEX, 1.2, (0, 255, 0), 2)
118.
119.
120. # show he image
121. c 2.imshow("Image", image)
122. c 2.wai Key(0)
115
ANEXO G
Código co espondien e a la p edicción de ca ac e es indi iduales (2 Redes CNN pa a le as y núme os):
1. #2022 Robe o Gallo TFG
2. #P ediccion usando el cua o modelo
3. #Impo amos lib e ias necesa ias
4. om enso low.ke as.models impo load_model
5. om imu ils.con ou s impo so _con ou s
6. impo numpy as np
7. impo a gpa se
8. impo imu ils
9. impo c 2
10. impo ma plo lib.pyplo as pl
11. p in ("[INFO] loading handw i ing OCR model...")
12. model1 = load_model('sa ed_model/modelo_solo_le as') # u a
del modelo gua dado
13. model2 =
load_model('sa ed_model/modelo_solo_digi os') # u a del modelo
gua dado
14. ca ac e es=['imagenes/ca ac e _indi idual/0.jpeg', 'imagenes
/ca ac e _indi idual/7.jpeg',
15. 'imagenes/ca ac e _indi idual/8.jpeg', 'imagenes/
ca ac e _indi idual/8_de o mado.jpeg',
16. 'imagenes/ca ac e _indi idual/a.jpeg', 'imagenes/
ca ac e _indi idual/b_gi ada.jpeg',
17. 'imagenes/ca ac e _indi idual/i.jpeg', 'imagenes/
ca ac e _indi idual/l_mayuscula.jpeg',
18. 'imagenes/ca ac e _indi idual/l_mayuscula_desplaz
ada.jpeg', 'imagenes/ca ac e _indi idual/l_minuscula.jpeg',
19. 'imagenes/ca ac e _indi idual/m.jpeg', 'imagenes/
ca ac e _indi idual/ .jpeg']
20. clases_le as=['0','A','B',
21. 'C','D','E','F','G','H','I','J','K','L','M','N',
22. 'O','P','Q','R','S','T','U','V','W','X','Y','Z']
23. clases_digi os=['0','1','2','3','4','5','6','7','8','9']
24.
25. im = c 2.im ead(ca ac e es[2])
26. # calcula e mean alue om RGB channels and la en o 1D
a ay
27. als = im.mean(axis=2). la en()
28. # plo his og am wi h 255 bins
29. b, bins, pa ches = pl .his ( als, 255)
30. pl .xlim([0,255])
31. pl .show()
32.
33. j=0
34. o i in ca ac e es:
35.
36. image = c 2.im ead(i)
Anexo G
116
37. scale_pe cen = 50 #
38. wid h = in (image.shape[1] * scale_pe cen / 100)
39. heigh = in (image.shape[0] * scale_pe cen / 100)
40. dim = (wid h, heigh )
41.
42. # esize image
43. image_ es = c 2. esize(image, dim, in e pola ion =
c 2.INTER_AREA)
44. g ay = c 2.c Colo (image_ es, c 2.COLOR_BGR2GRAY)
45. blu ed = c 2.GaussianBlu (g ay, (5, 5), 0)
46. edged = c 2.Canny(blu ed, 10, 100)
47. cn s = c 2. indCon ou s(edged.copy(),
c 2.RETR_EXTERNAL,
48. c 2.CHAIN_APPROX_SIMPLE)
49. cn s = imu ils.g ab_con ou s(cn s)
50.
51.
52. image = c 2. h eshold(g ay, 120, 255,
53. c 2.THRESH_BINARY_INV)[1]
54.
55. wid h = 28 #in (image.shape[1] * scale_pe cen / 100)
56. heigh = 28 #in (image.shape[0] * scale_pe cen / 100)
57. dim = (wid h, heigh )
58. image = c 2. esize(image, dim, in e pola ion =
c 2.INTER_AREA)
59.
60.
61. c 2.imshow("cd", image)
62. c 2.wai Key(0)
63. image = image.as ype(" loa 32") / 255.0
64. image= image. eshape(-1,28,28,1)
65. p in (image.shape)
66. image = np.a ay(image, d ype=" loa 32")
67. p eds_le a = model1.p edic (image)
68. i = np.a gmax(p eds_le a)
69. #p in (p eds)
70. #p in (i)
71. p ob_le a = p eds_le a[0][i]
72. label_le a = clases_le as[i]
73. #-------------
74. p eds_digi o = model2.p edic (image)
75. i = np.a gmax(p eds_digi o)
76. p ob_digi o= p eds_digi o[0][i]
77. label_digi o = clases_digi os[i]
78.
79. i p ob_le a>p ob_digi o:
80. label=label_le a
81. p ob=p ob_le a
82. else:
83. label=label_digi o
84. p ob=p ob_digi o
85. #p in (p ob)
86. #p in (label)
87.
88. p in ("[INFO] {} - {:.2 }%". o ma (label_le a,
p ob_le a * 100))
117
89. p in ("[INFO] {} - {:.2 }%". o ma (label_digi o,
p ob_digi o * 100))
90.
91. image = c 2.im ead(ca ac e es[j])
92. j=j+1
93.
94.
95. c 2.pu Tex (image_ es, label, (50, 70),
96. c 2.FONT_HERSHEY_SIMPLEX, 3, (0, 0, 0), 2)
97.
98.
99.
100. c 2.imshow("Image", image_ es)
101. c 2.wai Key(0)
Anexo H
118
ANEXO H
P og ama diseñado pa a p edicción de a ios ca ac e es (CNNs y ResNe )
1. #2022 Robe o Gallo TFG
2. #P ediccion de a ios ca ac e es usando los es p ime os modelos
3. #Impo amos lib e ias necesa ias
4. om enso low.ke as.models impo load_model
5. om imu ils.con ou s impo so _con ou s
6. impo numpy as np
7. impo a gpa se
8. impo imu ils
9. impo c 2
10. p in ("[INFO] loading handw i ing OCR model...")
11. model = load_model('sa ed_model/model_ esne ') # u a del
modelo gua dado
12. image = c 2.im ead('imagenes/le as_nume os.jpeg')
13.
14. scale_pe cen = 50 # pe cen o o iginal size
15. wid h = in (image.shape[1] * scale_pe cen / 100)
16. heigh = in (image.shape[0] * scale_pe cen / 100)
17. dim = (wid h, heigh )
18.
19. # esize image
20. image = c 2. esize(image, dim, in e pola ion =
c 2.INTER_AREA)
21. g ay = c 2.c Colo (image, c 2.COLOR_BGR2GRAY)
22. blu ed = c 2.GaussianBlu (g ay, (5, 5), 0)
23. edged = c 2.Canny(blu ed, 60, 100)
24. c 2.imshow("Image", edged)
25. c 2.wai Key(0)
26. cn s = c 2. indCon ou s(edged.copy(), c 2.RETR_EXTERNAL,
27. c 2.CHAIN_APPROX_SIMPLE)
28. cn s = imu ils.g ab_con ou s(cn s)
29. cn s = so _con ou s(cn s, me hod="le - o- igh ")[0]
30. #C ea co ina blanca
31. emp = np.ones(edged.shape,np.uin 8)*255
32. # Dibuje el con o no: la empe a u a es la co ina blanca,
los con o nos son el con o no, -1 es la imagen comple a, luego el
colo , el g oso
33. c 2.d awCon ou s( emp,cn s,-1,(0,255,0),3)
34. c 2.imshow("con ou s", emp)
35. c 2.wai Key(0)
36.
37. #Inicializa la lis a de con o nos y ca ac e es asociados
38.
39. cha s = []
40.
41. # loop
42. o c in cn s:
43. (x, y, w, h) = c 2.boundingRec (c)
119
44.
45. #Nos asegu amos que los con o nos no son demasiados
g andes ni demasiado pequenios
46. i (h >=(image.shape[0])/30) and (h<20*w) and (w<10*h):
47. oi = g ay[y:y + h, x:x + w]
48. h esh = c 2. h eshold( oi, 0, 255,
49. c 2.THRESH_BINARY_INV | c 2.THRESH_OTSU)[1]
50. ( H, W) = h esh.shape
51.
52. i W > H:
53. h esh = imu ils. esize( h esh, wid h=32)
54.
55. else:
56. h esh = imu ils. esize( h esh, heigh =32)
57.
58. #De e minamos cuan o hay edimensiona la imagen
59. ( H, W) = h esh.shape
60. dX = in (max(0, 32 - W) / 2.0)
61. dY = in (max(0, 32 - H) / 2.0)
62.
63. # Fo zamos una dimension de 28x28
64. padded = c 2.copyMakeBo de ( h esh, op=dY,
bo om=dY,
65. le =dX, igh =dX,
bo de Type=c 2.BORDER_CONSTANT,
66. alue=(0, 0, 0))
67. padded = c 2. esize(padded, (32, 32))
68.
69. #P epa amos la imagen pa a su clasi icacion
70. padded = padded.as ype(" loa 32") / 255.0
71. padded = np.expand_dims(padded, axis=-1)
72. p in (padded.shape)
73.
74. #Ac ualizamos lis a
75. cha s.append((padded, (x, y, w, h)))
76.
77. #Lanzamos p ediccion
78. p eds = model.p edic (cha s)
79. clases=['0','1','2','3','4','5','6','7','8','9','A','B','C',
'D','E','F','G','H','I','J',
80. 'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y',
'Z','a','b','d','e',' ','g','h','n','q',' ',' ']
81.
82. o (p ed, (x, y, w, h)) in zip(p eds, boxes):
83. i = np.a gmax(p ed)
84. p ob = p ed[i]
85. label = clases[i]
86. #Dibujamos los cuad os delimi ado es
87. p in ("[INFO] {} - {:.2 }%". o ma (label, p ob * 100))
88. i (p ob*100)>40:
89. c 2. ec angle(image, (x, y), (x + w, y +
h), (0, 255, 0), 2)
90. c 2.pu Tex (image, label, (x - 10, y - 10),
91. c 2.FONT_HERSHEY_SIMPLEX, 1.2, (0, 255, 0), 2)
92.
Anexo H
120
93.
94. # Mos amos la imagen
95. c 2.imshow("Image", image)
96. c 2.wai Key(0)
97.
98. #P ueba sob e un da ase comple o
99. p in ("ADQUIRIENDO DATASET...")
100. da a_ es = pd. ead_cs ('emnis -balanced- es .cs ')
101. p in ("DATASET CARGADO")
102.
103. de No maliza (da a, label):
104. x = da a.d op(label ,axis=1)
105. x=x.as ype(' loa 32')
106. x=x/255
107. y = da a[label]
108. x= x. alues. eshape(-1,28,28,1)
109. x=np. anspose(x,[0, 2, 1, 3]) #Hay que anspone los
da os po que si no el ca ac e no se esc ibe co ec amen e
110. e u n x,y
111.
112. es _x, es _y= No maliza (da a_ es ,'41')
113. es _x = [c 2. esize(image, (32, 32)) o image in es _x]
114. es _x = np.expand_dims( es _x, axis=-1)
115. co ec as=0
116. inco ec as=0
117. p ueba=0
118. o i in ange(len( es _x)):
119. #p in ( es _y)
120. #p in (X_ es .shape)
121. p obs = model.p edic ( es _x[np.newaxis,
i], e bose=False)
122. #p in (p obs)
123. p edic ion = p obs.a gmax(axis=1)
124. #p in (p edic ion)
125. #label_p edic = clases[p edic ion[0]]
126. #pl .subplo (3, 3, es _samples.index(i)+1)
127. #imagen= ain_x.loc[[i]]. alues. eshape(28,28)
128. #imagen=np. anspose(imagen)
129. #p in (p edic ion[i])
130. #p in (clases[label_p edic [i]])
131. #pl .imshow( es _x[i], cmap='bina y')
132. i es _y[i]==p edic ion[0]:
133. co ec as=co ec as+1
134. else:
135. inco ec as=inco ec as+1
136. p ueba=p ueba+1
137. p in (p ueba)
138. p in ("Da os co ec os:")
139. p in (co ec as)
140. p in ("Da os inco ec os:")
141. p in (inco ec as)
142. p in ("To al:")
143. p in (co ec as+inco ec as)
121
ANEXO I
Código co espondien e a la p edicción de a ios ca ac e es (2 Redes CNN)
1. #2022 Robe o Gallo TFG
2. #P ediccion de a ios ca ac e es usando el cua o modelo
3. #Impo amos lib e ias necesa ias
4. om enso low.ke as.models impo load_model
5. om imu ils.con ou s impo so _con ou s
6. impo numpy as np
7. impo a gpa se
8. impo imu ils
9. impo c 2
10. p in ("[INFO] loading handw i ing OCR model...")
11. model_le as =
load_model('sa ed_model/modelo_solo_le as') # u a del modelo
gua dado
12. #model_digi os =
load_model('sa ed_model/modelo_solo_digi os') # u a del modelo
gua dado
13. model_digi os =
load_model('sa ed_model/modelo_solo_digi os') # u a del modelo
gua dado
14. image = c 2.im ead('imagenes/le as_nume os.jpeg')
15.
16. scale_pe cen = 50
17. wid h = in (image.shape[1] * scale_pe cen / 100)
18. heigh = in (image.shape[0] * scale_pe cen / 100)
19. dim = (wid h, heigh )
20.
21. image = c 2. esize(image, dim, in e pola ion =
c 2.INTER_AREA)
22. g ay = c 2.c Colo (image, c 2.COLOR_BGR2GRAY)
23. blu ed = c 2.GaussianBlu (g ay, (5, 5), 0)
24. edged = c 2.Canny(blu ed, 60, 100)
25. c 2.imshow("Image", edged)
26. c 2.wai Key(0)
27. cn s = c 2. indCon ou s(edged.copy(), c 2.RETR_EXTERNAL,
28. c 2.CHAIN_APPROX_SIMPLE)
29. cn s = imu ils.g ab_con ou s(cn s)
30. cn s = so _con ou s(cn s, me hod="le - o- igh ")[0]
31. #C ea co ina blanca
32. emp = np.ones(edged.shape,np.uin 8)*255
33. # Dibuje el con o no: la empe a u a es la co ina blanca,
los con o nos son el con o no, -1 es la imagen comple a, luego el
colo , el g oso
34. c 2.d awCon ou s( emp,cn s,-1,(0,255,0),3)
35.
36. c 2.imshow("con ou s", emp)
37. c 2.wai Key(0)