Equa ion Chap e 1 Sec ion 1
T abajo Fin de G ado
Ingenie ía de Telecomunicación
De ección de Obje os con TinyYOLO 3 sob e
Raspbe y Pi 3
Au o : Ángel Mo eno P ie o
Tu o : An onio Jesús Sie a Collado
Co u o : Ál a o Ma ín Rod íguez
Dp o. de Ingenie ía Telemá ica
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, 2020
iii
T abajo Fin de G ado
Ingenie ía de Telecomunicación
De ección de Obje os con TinyYOLO 3 sob e
Raspbe y Pi 3
Au o :
Ángel Mo eno P ie o
Tu o :
An onio Jesús Sie a Collado
Co u o :
Ál a o Ma ín Rod íguez
Dp o. de Ingenie ía Telemá ica
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, 2020
T abajo Fin de G ado: De ección de Obje os con TinyYOLO 3 sob e Raspbe y Pi 3
Au o :
Ángel Mo eno P ie o
Tu o :
An onio Jesús Sie a Collado
Co u o
Ál a o Ma ín Rod íguez
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, 2020
El Sec e a io del T ibunal
ii
A mi amilia
A mis maes os
ix
Ag adecimien os
Va ias pe sonas son a í ices de que es e p oyec o haya salido adelan e.
A mis u o es, An onio y Ál a o, que siemp e han es ado ahí pese a las complicaciones de es e año; y en gene al
a los p o eso es de la Escuela Técnica Supe io de Ingenie ia, que me han enseñado a en en a me a cualquie
p oblema con en e eza y sin miedo, po muy di ícil que ue a.
A los compañe os y g andes amigos que he hecho a lo la go de la ca e a, y sin los cuáles es p obable que no
hubie a llegado an lejos. En especial, a Pepe y Chema, que me han enido que sopo a es os úl imos cua o
años en bas an es p oyec os y a en u as.
A mi amilia y amigos, po siemp e con ia en mí y pone me las pilas cuando me hacía al a un empujón.
Ángel Mo eno P ie o
Se illa, 2020
4.1.4 Código pa a análisis de las p uebas de en enamien o 51
P uebas de in e encia 51
4.2.1 Expe imen o a ealiza 52
4.2.2 Desa ollo 53
4.2.3 Resul ados y alidación 54
P uebas de en enamien o 59
4.3.1 Expe imen o a ealiza 60
4.3.2 Desa ollo 60
4.3.3 Resul ados y alidación 63
5 Conclusiones y líneas u u as 71
Líneas u u as 72
Re e encias 73
Anexo A: P epa ación Raspbe y Pi 77
Anexo B: A chi o de con igu ación de TinyYOLO 3 79
Anexo C: Sc ip de de ección ápida 83
Anexo D: Sc ip pa a P uebas de In e encia 85
Anexo E: Sc ip pa a Análisis de En enamien o 93
Anexo F: His ó ico de p uebas de en enamien o 97
Anexo G: Código auxilia en C pa a sc ip de in e encia 101
x ii
ÍNDICE DE TABLAS
Tabla 2-1. En adas y salidas espe adas del ejemplo de suma median e machine lea ning 7
Tabla 2-2. Ejemplo de posibles si uaciones en unción de los e o es de en enamien o y alidación 16
Tabla 2-3. Compa a i a en e pa áme os e hipe pa áme os 17
Tabla 2-4. Compa a i a placas compu ado as pa a IA 37
Tabla 3-1. Sección de ed de los a chi os de con igu ación de Da kne 41
Tabla 3-2. Con igu ación pa a las capas de con olución 42
Tabla 3-3. Con igu ación de las capas de max-pooling 43
Tabla 3-4. Con igu ación de las capas de de ección de YOLO 43
Tabla 4-1. Resul ados p uebas de p ecisión en in e encia 55
Tabla 4-2. Compa a i a F1 en e di e en es algo i mos 57
Tabla 4-3. Resul ados de p uebas de du ación en in e encia 57
Tabla 4-4. Resul ados inales p uebas de in e encia 58
Tabla 4-5. Resul ados de las p uebas de in e encia 59
Tabla 4-6. Resumen de obje i os y esul ados del en enamien o 70
Tabla 5-1. Obse aciones de los obje i os del p oyec o 71
ÍNDICE DE FIGURAS
Figu a 1-1. Ejemplo de de ección de obje os median e YOLO 3 2
Figu a 2-1. P og amación adicional con a machine lea ning 6
Figu a 2-2. P og amación adicional con a machine lea ning y ejemplo de la suma 7
Figu a 2-3. Red neu onal a i icial es ánda 8
Figu a 2-4. Neu ona simpli icada 9
Figu a 2-5. Esquema de un pe cep ón 10
Figu a 2-6. Funciones de ac i ación más popula es. 11
Figu a 2-7. Función logís ica 12
Figu a 2-8. G á ica del g adien e descenden e 13
Figu a 2-9. Compa a i a mé odos de g adien e descenden e p incipales. 15
Figu a 2-10. Compa a i a e o de en enamien o con a e o en in e encia. 15
Figu a 2-11. Machine Lea ning con a Deep Lea ning 18
Figu a 2-12. Ejemplo de ed neu onal con machine lea ning 19
Figu a 2-13. Ma iz de píxeles in e p e ada numé icamen e 20
Figu a 2-14. Ejemplo de ed con olucional gene al 21
Figu a 2-15. Ejemplo de capa con olucional con dis in os pasos 22
Figu a 2-16. Fil os de p ime a capa con olucional en una ed de K izhe sky 24
Figu a 2-17. Ejemplo g á ico de uncionamien o de una capa con olucional 24
Figu a 2-18. Ejemplo de max pooling 25
Figu a 2-19. Compa a i a econocimien o de imágenes y de ección de obje os 26
Figu a 2-20. Algo i mo de búsqueda selec i a 27
Figu a 2-21. Esquema R-CNN 28
Figu a 2-22. Capa de ag upación RoI 28
Figu a 2-23. A qui ec u a de Fas R-CNN 29
Figu a 2-24. Esquema de a qui ec u a de Fas e R-CNN 29
Figu a 2-25. Compa a i a dis in os mé odos de R-CNN 30
Figu a 2-26. Compa a i a de mé odos de de ección de obje os en iempo eal del es ado del a e 30
Figu a 2-27. De ección y localización po sepa ado en YOLO 31
Figu a 2-28. Red de YOLO 32
Figu a 2-29. Rep esen ación g á ica del IoU 33
Figu a 2-30. E ec o de la sup esión no-máxima 33
Figu a 2-31. Compa a i a YOLO 2 pa a Pascal VOC 2007 34
Figu a 2-32. A qui ec u a de YOLO 3 35
xix
Figu a 3-1. A qui ec u a de TinyYOLO 3 40
Figu a 3-2. Resul ado de la p ueba de de ección median e TinyYOLO 3 48
Figu a 4-1. Imágenes usadas pa a analiza la p ecisión 54
Figu a 4-2. G á ica de p ecisión pa a a ios amaños 56
Figu a 4-3. G á ica de exhaus i idad pa a a ios amaños 56
Figu a 4-4. G á ica de F1 pa a a ios amaños 56
Figu a 4-5. G á icas de p og esión de iempo y FPS 58
Figu a 4-6. Imagen o iginal con a imagen pe cibida po la ed al ealiza la edimensión 64
Figu a 4-7. P ueba 1, e olución de las pé didas en unción de las i e aciones 64
Figu a 4-8. P ueba 1, e olución de las pé didas en e a las p ime as 900 i e aciones 65
Figu a 4-9. P ueba 2, e olución de las pé didas en e a las i e aciones ( o al y p ime as 800) 66
Figu a 4-10. P ueba 2, e olución de las pé didas en e a las épocas ( o al y p ime as 14) 67
Figu a 4-11. P ueba 3, e olución de las pé didas en e a las i e aciones ( o al y p ime as 400) 67
Figu a 4-12. P ueba 3, e olución de las pé didas en e a las épocas ( o al y p ime as 5) 68
Figu a 4-13. P ueba 4, e olución de las pé didas en e a las i e aciones ( o al y p ime as 600) 68
Figu a 4-14. P ueba 4, e olución de las pé didas en e a las épocas ( o al y p ime as 9) 69
1
1 INTRODUCCIÓN
s e capí ulo si e como b e e in oducción al p oyec o de De ección de Obje os con TinyYOLO 3 en
Raspbe y Pi 3. Se jus i ica su elección e in e és, y se desc iben esumidamen e los obje i os y la inalidad
de és e, cen ándose p ime o en los concep os eó icos del p oyec o, y inalizando con las elecciones
conc e as que le dan nomb e.
A con inuación, el segundo capí ulo se enca ga á de desa olla el undamen o eó ico de ás de la p incipal
ecnología del p oyec o: la isión a i icial basada en in eligencia a i icial y edes neu onales. Al se odos es os
concep os ela i amen e mode nos, se a a á de explica cada uno de la o ma más p ecisa posible, pe o a la ez
siendo concisos y en ocándonos en la ecnología inal u ilizada y en el campo en el que se aplica.
Finalmen e, los capí ulos pos e io es a a án sob e la implemen ación del modelo elegido, y los esul ados
ob enidos de los di e en es expe imen os, así como una conclusión y b e e esquema de los pasos que se pod ían
segui en u u as in es igaciones.
In oducción
Desde los o ígenes del se humano, és e se ha ca ac e izado po que e mejo a se a sí mismo y supe a sus
p opias limi aciones. La in ención de he amien as y ú iles con las que acili a a eas y ac i idades es un cla o
ejemplo; y llega a au oma iza las has a incluso supe a nues as p opias capacidades es uno de los aspec os que
nos hace únicos como especie. A lo la go del siglo XX, es a ace a se io e olucionada po el descub imien o
e in ención de la compu ación y de las compu ado as, colocándonos en una au én ica ca e a de ondo
ecnológica en la que cada día pa ecía que se in en aba algo nue o. El siglo XXI no es sino la con inuación de
ese impulso. Aho a, con capacidades de p ocesamien o compu acional impensables hace años, ecnologías que
es án llamadas a e oluciona el p esen e y el u u o como lo hicie a la in o má ica el siglo pasado, ienen a
ma ca las pau as de es e jo en siglo. El In e ne de las Cosas, el Big Da a, el Cloud Compu ing o la In eligencia
A i icial, son sólo algunas de los nomb es que in adi án el mundo en los p óximos años [1]. Y en es e p oyec o
enimos a p esen a y desa olla una de ellas: la isión a i icial, y, en conc e o, la de ección de obje os.
La isión a i icial se puede de ini como la capacidad de una máquina de e e in e p e a el mundo que le
odea de la misma o ma que el se humano lo hace a a és de sus ojos [2]. A lo la go de su pa icula his o ia
se han lle ado a cabo di e en es en oques pa a log a al obje i o, que an desde el p ocesamien o digi al de
imágenes has a el econocimien o de pa ones; sin emba go, la isión a i icial que noso os a a emos –y que
E
The u u e belongs o hose who belie e in he beau y o hei d eams.
- Eleano Roose el -
es el camino a segui hoy en día-, es aquella que hace uso de la in eligencia a i icial y del ap endizaje au omá ico.
En pocas palab as, pod íamos deci que noso os no que emos p og ama una máquina que ea, po ejemplo,
compa ando imágenes unas con o as y dándonos un po cen aje de pa ecido; sino que que emos enseña le a e ,
que, as ap ende a econoce obje os en unas pocas imágenes, sea capaz de econoce los mismos en cualquie
o a.
La u ilidad de la isión a i icial no deja luga a dudas: desde la igilancia in eligen e [3], has a la conducción
au ónoma [4]; pasando po la medicina (diagnós icos in eligen es, de ección de en e medades [5]…) o la
in es igación cien í ica (po ejemplo, en elación a la pandemia de COVID-19 de 2020 [6]). La isión juega un
papel undamen al en la ida y ob a del se humano, y una máquina con la capacidad de e y en ende el mundo
como noso os supond ía una au én ica e olución ecnológica.
Consegui es e obje i o no es sencillo, y pa a log a lo la ecnología aún iene que a anza bas an e. En es e
p oyec o, nos cen a emos en uno de los múl iples componen es que o man la amilia de ecnologías de isión
a i icial: la de ección de obje os, que no es sino la capacidad de una máquina de de ec a y econoce obje os de
cie a clase (pe sonas, ehículos, señales de á ico…) en un ídeo o imagen digi al, con la mayo p ecisión y
segu idad posible [7]. Den o de es a ama, u iliza emos la amilia YOLO (de sus siglas en inglés “You Only
Look Once”; “Sólo Mi as Una Vez”), que es un conjun o de sis emas de de ección de obje os de úl ima
gene ación. Más adelan e en a emos en de alle sob e es o.
Figu a 1-1. Ejemplo de de ección de obje os median e YOLO 3
Po o o lado, es e p oyec o no se cen a á únicamen e en la de ección de obje os. Uno de los p incipales
p oblemas al a a con in eligencia a i icial y sus de i ados, como es la isión a i icial, es el de la capacidad
de compu ación. Es os sis emas equie en la ealización de muchas ope aciones ma emá icas, an as, que pa a
aplicaciones de al o ni el muchas eces no bas a con o denado es con encionales. Incluso, se han desa ollado
disposi i os especí icos pa a abaja con és os, como pueden se las TPUs de Google [8], o los Tenso Co e de
NVIDIA [9]; ci cui os in eg ados diseñados especí icamen e pa a maneja se con las ope aciones básicas que
gobie nan la in eligencia a i icial. Y pese a que es as nue as ecnologías mejo an y hacen a anza la ciencia,
ambién las alejan del usua io medio. Es po ello que en es e p oyec o no sólo pond emos en p ác ica un sis ema
de isión a i icial, sino que lo ha emos en un disposi i o compu ado de p opósi o gene al, ácil de usa , y
asequible; lo que se conoce como una placa compu ado a (en inglés, single-boa d compu e , a eces
simpli icado como SBC). En el capí ulo 3 en a emos más en de alles espec o a es os disposi i os.
3
Obje i os
Las en ajas de abaja con placas compu ado as son múl iples, sob e odo po su sencillez, a iedad de usos y
disponibilidad. Sin emba go, no son disposi i os especialmen e po en es, p incipalmen e po que las aplicaciones
pa a las que suelen usa se no equie en una capacidad cómpu o excesi a, además de que suelen a a de
man ene un p ecio económico. El obje i o de es e p oyec o se á, po an o, p oba cómo un sis ema pun e o de
isión a i icial unciona sob e uno de es os disposi i os. En conc e o, se u iliza á una e sión lige a de
YOLO 3, TinyYOLO 3 sob e una Raspbe y Pi 3. Se en a á en de alle sob e cada uno de ellos más adelan e.
Se a a á de comp oba el endimien o de dicho p og ama en el disposi i o, en aquellas unciones p incipales
que YOLO 3 nos pe mi e ealiza (in e encia y ap endizaje, en de alle en u u os capí ulos), y que son la base
de la isión a i icial. Pos e io men e da emos una conclusión basada en los esul ados ob enidos, así como un
esbozo de las líneas de in es igación u u as que pod ían lle a se a cabo.
En esumen, se de inen los siguien es obje i os:
Comp oba la co ec a pues a en uncionamien o de TinyYOLO 3 en una Raspbe y Pi 3.
Comp oba el uncionamien o en in e encia y medi sus p es aciones.
Comp oba el uncionamien o en ap endizaje y medi sus p es aciones.
Conclui y esboza posibles líneas de in es igación u u a.
5
2 FUNDAMENTO TEÓRICO
n es e capí ulo se en a á en de alles en el aspec o eó ico de las ecnologías que con o man es e p oyec o.
Al se la de ección de obje os una ama de la in eligencia a i icial, no se puede en ende una sin la o a,
po lo que se a a á de explica cada concep o desde su o igen, comenzando po una b e e in oducción
de en qué consis en la in eligencia a i icial, el machine lea ning y las edes neu onales; pa a luego cen a nos
en la isión a i icial y cómo se usan es as ecnologías pa a log a el econocimien o de imágenes y la de ección
de obje os. Finalmen e, explica emos de alladamen e YOLO 3 en su aspec o más eó ico; y ese a emos una
b e e sección pa a habla de las placas compu ado as y de la decisión de usa Raspbe y Pi. En esumen, al
inaliza es e capí ulo se end án conocimien os sob e:
Concep os básicos de in eligencia a i icial y machine lea ning.
Redes neu onales, deep lea ning y su aplicación en la isión a i icial.
El modelo de YOLO 3.
Placas compu ado as y Raspbe y Pi 3.
In eligencia A i icial y Machine Lea ning
Cuando hablamos de in eligencia a i icial es ácil que se nos engan a la cabeza imágenes de obo s con o ma
humana, exp esiones humanas y compo amien o humano, capaces de hace esas cosas que, has a el momen o,
c eíamos exclusi as de noso os. Y puede que en pa e, ése sea el obje i o. Pe o pa a lo que espec a a es e
p oyec o, en ende emos que la in eligencia a i icial es el es udio y diseño de disposi i os capaces de pe cibi su
en o no y oma acciones que maximicen la p obabilidad de éxi o en di e en es obje i os y a eas [10]. Uno
pod ía pensa que ya exis en máquinas capaces de in e p e a su al ededo y ejecu a a eas en consecuencia con
bas an e éxi o, sin in oluc a ningún ipo de in eligencia a i icial, como pod ía se una cáma a de segu idad con
de ección de mo imien o; pe o los disposi i os a los que nos e e imos en es a de inición no son cualesquie a:
se denominan agen es in eligen es, y sus ca ac e ís icas p incipales es que deben se lo su icien emen e lexibles
como pa a adap a se a cambios en su en o no, ap ende de la expe iencia, y oma la decisión óp ima bajo una
pe cepción limi ada y unas capacidades de compu ación ini as [10]; odo ello sin la in e ención del se humano
E
Can machines hink?
- Alan Tu ing -
Figu a 2-7. Función logís ica
Con es o enemos su icien es conocimien os sob e el uncionamien o básico de una neu ona a i icial y sus
ope aciones in e nas. Si ol emos la is a a la Figu a 2-3, podemos obse a que cada neu ona ealiza á es as
acciones con cada en ada, gene ando así una p opagación de in o mación que desemboca á en la salida inal.
A es e p oceso que se conoce como o wa d p opaga ion, o p opagación hacia delan e. G acias a és e, las edes
neu onales pueden se con igu adas pa a emula cualquie unción ma emá ica eal (pa a lo que es equisi o
indispensable que la unción de ac i ación sea no lineal), independien emen e de su o ma o complejidad; es o
es, dada una unción a bi a ia (x), exis e una ed neu onal a i icial cuya salida pa a cualquie x se á (x). Es o
se conoce como eo ema uni e sal de ap oximación [19], y es uno de los p incipios que ga an iza que las edes
neu onales puedan, en eo ía, ap ende a ealiza cualquie a ea. Po lo an o, ya an sólo nos queda e qué
acciones hay que oma pa a consegui que las neu onas, y po ende las edes neu onales, sean capaces de
ap ende .
2.2.2 Ap endizaje
Como ya se in odujo en pá a os an e io es, el ap endizaje de una ed neu onal se lle a a cabo du an e la ase
de en enamien o, y su p incipio básico es u iliza un conjun o lo su icien emen e amplio de ejemplos del
p oblema que que emos esol e , con el obje i o de enseña a la ed pa a que sea capaz de esol e cualquie a
simila . A es e conjun o de ejemplos se le conoce como mues as, o samples. También hemos adelan ado que
es o se consegui á ajus ando poco a poco y au omá icamen e los pa áme os in e nos de la ed, de cada neu ona.
El p oceso que se sigue pa a consegui dicho obje i o se conoce como p opagación hacia a ás, o
backp opaga ion [20], y puede desc ibi se en los siguien es pasos:
1. Se pa e de una ed a bi a iamen e con igu ada, habiendo elegido las que se án las unciones de
p opagación y ac i ación; y dándoles un alo inicial (gene almen e ce cano a 0) a los pesos y los
sesgos.
2. Se alimen a la ed con la p ime a mues a (sample) del conjun o. Las en adas de és a se p opaga án po
odas las neu onas ( o wa d p opaga ion), que lle a án a cabo sus ope aciones, has a da con un
esul ado en la úl ima capa. Aho a, la ed compa a á dicho esul ado con el esul ado espe ado de la
mues a median e una unción de cos e, con la que ob end emos un e o de en enamien o, o pé didas
de en enamien o ( aining loss) [15], que en cie o modo medi á cuán o se ha equi ocado, como
idealmen e se ep esen a en la ecuación (2-2), donde y es la salida ob enida, e y’ la espe ada. El obje i o
se á minimiza dicho e o .
𝐸 =𝐶(𝑦,𝑦′)
(2-2)
3. El e o de en enamien o se á analizado po cada neu ona de cada capa de la ed, en o den, y se u iliza á
pa a ajus a los pesos y el sesgo de cada una (backp opaga ion), siguiendo un algo i mo que puede
a ia en unción de la ed que hayamos diseñado. Las siguien es ecuaciones ep esen an
concep ualmen e el p oceso, siendo Δwi: la a iación con la que ajus a emos el peso de cada neu ona.
13
∆𝑤𝑖=𝐺(𝐸)=𝐺(𝐶(𝑦,𝑦′))
(2-3)
𝑤𝑖=𝑤𝑖+∆𝑤𝑖
(2-4)
4. Se epi en los pasos a pa i del 2, a ando de minimiza al máximo el e o , haciéndolo 0 o muy ce cano
a 0. En unción del ipo de da os que que amos que la ed ap enda, acep a emos un alo de e o más
o menos al o pa a de e mina que la ed ha inalizado su ap endizaje.
A la ejecución comple a de es os pasos pa a una única mues a la llama emos bucle, o loop. Cuando odas las
mues as de las que se compone el se de en enamien o han pasado po el bucle y han enido la opo unidad de
ac ualiza los pa áme os, se dice que ha pasado una época, o epoch. El núme o de épocas es uno de los
pa áme os más u ilizados pa a de e mina cuán o debe du a el en enamien o [21].
Es os pasos ep esen an una explicación muy eó ica de los algo i mos eales que se lle an a cabo pa a en ena
una ed neu onal. En unción de la ed y el mé odo conc e o, exis i án a ian es adap adas a la aplicación o a lo
que se quie e enseña , y se de e mina á qué unción de cos e u iliza y qué algo i mo usa pa a ajus a los pesos
en cada i e ación. En es a memo ia explica emos el más ex endido, el algo i mo de g adien e descenden e, que
es, además, el que u iliza YOLO 3.
El algo i mo pa e eligiendo como unción de cos e el cuad ado de la dis ancia euclidiana, cuya ecuación se
ep esen a a con inuación (man end emos la no ación de los pasos an e io es):
𝐸 =𝐶(𝑦,𝑦′)= 1
2‖𝑦−𝑦′‖2
(2-5)
G á icamen e, es a ecuación end á una o ma pa abólica que se puede ap oxima de la siguien e mane a:
Figu a 2-8. G á ica del g adien e descenden e
Donde F(x) se á en nues o caso el e o , po lo que, como podemos obse a , pa a log a el obje i o
( eco demos, minimiza al máximo dicho e o ), hab ía que descende po la cu a has a su pun o mínimo. Aquí
es donde en a en juego el g adien e descenden e.
El g adien e descenden e es un algo i mo que si e pa a minimiza una unción obje i o (en nues o caso, C(y,
y’)) pa iendo de un pun o a bi a io de és a median e la ac ualización de sus pa áme os en la di ección opues a
al g adien e de la unción [22]. Como la salida y de dicha unción es p oducida po los pesos de las neu onas,
podemos u iliza el g adien e de la unción de cos e pa a ac ualiza el alo de los pesos. Si eu ilizamos las
ecuaciones (2-3) y (2-4):
∆𝑤𝑖= −∇𝐶(𝑦,𝑦′)
(2-6)
𝑤𝑖=𝑤𝑖+∆𝑤𝑖= 𝑤𝑖−𝜂∇𝐶(𝑦,𝑦′)
(2-7)
Donde el ope ado nabla ∇ ep esen a el g adien e, y η es un nue o pa áme o llamado a io de ap endizaje
(lea ning a e). No en a emos en de alle espec o a cómo se esuel e la ope ación de g adien e, po que es un
desa ollo ma emá ico que sob epasa las in enciones de es a memo ia, y bas a á con sabe que en a en juego la
de i ada pa cial de la unción de cos e espec o al peso o a los pesos que ayamos a ajus a . Po o o lado, el
a io de ap endizaje se u iliza pa a de e mina el amaño del paso que se da pa a alcanza el mínimo.
G á icamen e, se ep esen a ía como la dis ancia que a anzamos en la cu a de la g á ica con cada ejecución.
Su alo a ía en e 0 y 1, y es con igu ado a mano an es de comenza el en enamien o. Idealmen e debe ía se
el más g ande posible, po que a mayo sean los pasos que demos, más ápido llega emos al óp imo; sin emba go,
escoge un alo demasiado g ande puede p o oca que la unción obje i o di e ja, es deci , que “nos pasemos”
del mínimo, como si sal ásemos al o o lado de la cu a, no ob eniendo buenos esul ados; y escoge un alo
demasiado pequeño puede esul a en un ap endizaje demasiado len o [23]. Selecciona un buen alo de a io
de ap endizaje es impo an e, y pa a ello se equie e un análisis p e io del ipo de in o mación que se quie e
ap ende y de la a qui ec u a de ed neu onal que amos a u iliza . En algunos modelos, además, el alo del
a io de ap endizaje i á a iando a medida que se sucedan las épocas. En YOLO 3, po ejemplo, se u iliza un
ango que a desde 0’01 has a 0’0001 [24].
Den o de los algo i mos de g adien e descenden e, exis en es a ian es, di e enciadas po el núme o de
mues as necesa ias pa a lle a a cabo la ac ualización de los pesos, conjun o que se conoce como lo e o ba ch.
És as son:
G adien e descenden e po lo es: conocida en inglés como ba ch g adien descen , es el modelo
es ánda , y en muchas ocasiones apa ece mencionado como g adien e descenden e a secas. En és e, el
amaño del lo e equi ale al núme o de mues as que componen el se de en enamien o, o lo que es lo
mismo: se ac ualizan los pesos al inaliza cada época [22]. Pa a ello, el e o de cada bucle se acumula
y luego se di ide en e el núme o de mues as, y se usa és e pa a ealiza los cálculos que de e mina án
los nue os pesos. Al p oceso po el que un lo e pasa po ed an es de que es a se ac ualice se lo conoce
como i e ación.
Su p incipal en aja es la ga an ía de llega a una solución óp ima, en es e caso, a un mínimo absolu o
de la unción de cos e [22]; po o o lado, sus des en ajas son que, al ene que espe a a que odas las
imágenes del da ase alimen en la ed, el p oceso se puede ala ga bas an e, más cuan o mayo sea dicho
da ase Además, al ene que almacena los e o es en cada bucle pa a pos e io men e ajus a los
pa áme os, se equie e de una mayo capacidad en memo ia.
G adien e descenden e es ocás ico: conocido en inglés como s ochas ic g adien descen y
comúnmen e simpli icado como SGD, es un modelo que ealiza la ac ualización de pa áme os en cada
bucle, que se ía lo mismo que deci que iene un amaño de lo e igual a 1. Pod íamos deci que, en cie o
modo, es la e sión opues a del sis ema po lo es. En es e caso, la en aja p incipal es que el p oceso es
conside ablemen e más ápido, pues los pa áme os se ac ualizan con cada imagen, y equie e de menos
memo ia, po que ya no hay que almacena un his ó ico de e o es, lo que lo hace especialmen e
con enien e pa a disposi i os poco po en es. A su ez, su mayo des en aja es que pie de la ga an ía de
con e gencia en un mínimo absolu o de la unción. Es o quie e deci que puede “pa a se” y no a anza
al llega a un mínimo local de la unción, que aunque pod ía se álido pa a cie o en enamien o, no es
óp imo. Po o o lado, el núme o de ope aciones a ealiza ambién se e inc emen ado, debido a la
ápida ac ualización de pa áme os, lo que pod ía supone un mayo cos e compu acional.
Si compa ásemos g á icamen e ambos mé odos, ob end íamos unas cu as simila es a las de la
siguien e igu a, donde podemos e cómo a ía el e o de en enamien o a medida que más da os
pasan po la ed:
15
Figu a 2-9. Compa a i a mé odos de g adien e descenden e p incipales.
Las di e encias en el e o de los sis emas es ocás icos son más alea o ias po que son ela i amen e
independien es unas de o as (cada imagen gene a su p opio e o ), mien as que en el caso del sis ema po lo es
lle amos a cabo una ponde ación de e o es en e el conjun o comple o de imágenes, sua izando así la cu a.
G adien e descenden e po mini-lo es: es un pun o in e medio en e el mé odo po lo es y el SGD.
Como se puede adi ina po su nomb e, median e es e sis ema usa emos mini-lo es: subconjun os del
g upo o al de mues as, cuyo amaño puede se a iable (aunque odos los mini-lo es debe ían ene el
mismo), y que se gene an alea o iamen e en cada época. Es uno de los mecanismos más popula es,
po que mezcla lo mejo de ambas opciones: po una pa e, educe el núme o de ac ualizaciones de
pa áme os que se ealizan, alige ando el cos e compu acional; pe o a la ez el núme o de mini-lo es
puede se ajus ado lo su icien e pa a no sob eca ga la memo ia, ol iéndolo acep able en disposi i os
menos po en es. Además, ga an iza la con e gencia en un mínimo absolu o de la unción obje i o, al
y como conseguíamos con el sis ema po lo as, pe o en un núme o de épocas simila al alcanzable
median e SGD [22].
Con es a explicación, podemos da po concluida la isión gene al del p oceso de ap endizaje de las edes
neu onales. Exis en, no obs an e, más mecanismos y a ian es que se han ido diseñando pa a mejo a las
p es aciones de edes neu onales gené icas y especí icas, con el in de aumen a la elocidad de és as o su
p ecisión media (mAP, Mean A e age P ecision, un pa áme o muy u ilizado pa a medi la calidad de acie o
de las edes neu onales). El documen o e e enciado en [22], en el que se ha basado una g an pa e de es a
explicación, p o undiza sob e es as al e na i as, haciendo una desc ipción de allada y compa ando en ajas y
de ec os de cada una de ellas.
An es de inaliza con es e apa ado, se ha á mención de e o es comunes que pueden da se du an e el
en enamien o; en conc e o, el o e i ing y el unde i ing. Podemos empeza echando un is azo a la siguien e
g á ica:
Figu a 2-10. Compa a i a e o de en enamien o con a e o en in e encia.
En és a podemos e cómo a ían el e o de en enamien o (que usa el se de en enamien o) y el e o de
in e encia (que usa da os di e en es a los que se han usado en el en enamien o). El e o de en enamien o (en
ojo) man iene su umbo na u al, minimizándose a medida que a anzan las épocas. Sin emba go, emos que el
e o de in e encia (en azul) comienza pa alelo al de en enamien o pe o acaba inc emen ándose adicalmen e.
És e es un e o que se suele da con mucha ecuencia a la ho a de en ena edes neu onales. Si ma camos el
pun o donde se c uzan las líneas discon inuas como el óp imo, la si uación p e ia se conoce como unde i ing,
y, la pos e io , o e i ing o sob eajus e.
La p ime a se da cuando ni los da os de en enamien o ni los de in e encia a ojan un buen esul ado de e o .
Es el caso más sencillo, pues simplemen e quie e deci que la ed no es á lo su icien emen e en enada, y hay
que deja le más iempo. El segundo, más complejo, es en el que el e o de en enamien o comienza a se
acep able pe o, po alguna azón, el de in e encia comienza a inc emen a se o a ez. És e, el o e i ing, se da
cuando la ed se ha acos umb ado demasiado a los pa ones de los da os del se de en enamien o; an o, que es
incapaz de p edeci esul ados álidos en cualquie o o.
No exis e una o ma conc e a de esol e es os p oblemas, más allá del análisis de los esul ados a lo la go del
en enamien o y la modi icación del se de en enamien o o de los pa áme os de la ed en caso de que se de ec en
los allos. Uno de los mecanismos más popula es pa a acili a la obse ación es el uso de un se de alidación,
que no es más que un conjun o de da os, dis in os a los del se de en enamien o y que no se usa án pa a en ena
la ed, con los que se p ueba és a cada cie o iempo mien as se es á en enando, calculando así un e o de
alidación que puede compa a se con el e o de en enamien o, y así de e mina en qué si uación nos
encon amos. Se p esen a la siguien e abla como ejemplo, basándose en la que se puede encon a en la
e e encia [25]:
Tabla 2-2. Ejemplo de posibles si uaciones en unción de los e o es de en enamien o y alidación
E o de
en enamien o
E o de
alidación
Obse ación
1%
11%
Pod íamos es a an e un caso de o e i ing, po que el en enamien o
es á yendo co ec amen e, pe o no así la alidación. Hab ía que
comp oba la e olución del e o de alidación pa a de e mina si
és e es á ol iendo a c ece .
14%
32%
Ambos e o es son al os, bien pod íamos es a an e un caso de
unde i ing, donde necesi a íamos más en enamien o; o bien pod ía
se que los da ase s de en enamien o y alidación no son los más
adecuados.
0,3%
1,1%
El en enamien o y la alidación an bien, po lo que es e modelo
pa ece que unciona á co ec amen e.
2.2.3 Pa áme os e hipe pa áme os
Has a aho a, hemos a ado a odas las a iables, cons an es y, en gene al, elemen os que o man pa e de las
edes neu onales y que son con igu ables (ya sea manual, o au omá icamen e) como pa áme os. Sin emba go,
en el ocabula io del machine lea ning, se ealiza una di isión: se llaman exclusi amen e pa áme os a aquellas
a iables que se con igu an au omá icamen e median e los da os que iajan po la ed; y se llaman
hipe pa áme os a aquéllos que se pueden manipula manualmen e y no se ob ienen median e los da os. Una
desc ipción más p o unda se de alla en la siguien e abla [26]:
17
Tabla 2-3. Compa a i a en e pa áme os e hipe pa áme os
Pa áme os
Hipe pa áme os
Se necesi an pa a ealiza las p edicciones
Se u ilizan pa a con igu a la ed y gene a los
pa áme os del modelo
Sus alo es de e minan la habilidad del modelo
Gene almen e son especi icados manualmen e po el
diseñado de la ed
Se es iman y ap enden median e los da os de en ada
du an e el en enamien o
Se pueden con igu a median e heu ís ica [51]
Ra a ez se modi ican a mano
Se ajus an a un p oblema de e minado
Se almacenan como pa e del modelo, una ez és e
es á de ini i amen e en enado
La impo ancia de sabe di e encia pa áme os e hipe pa áme os se e á más cla a cuando analicemos las edes
neu onales dedicadas a la isión a i icial en la siguien e sección y en emos lige amen e en el Deep Lea ning.
Po aho a, amos a lis a algunos de los pa áme os e hipe pa áme os más ele an es, muchos de los cuales ya
se han explicado p e iamen e:
Pa áme os: Los pesos y sesgos de las neu onas; los coe icien es de las unciones de cos e de algunos
modelos de ed neu onal; el e o de en enamien o y alidación.
Hipe pa áme os: El núme o máximo de i e aciones, épocas o ba ches an es de da po inalizado el
en enamien o; el amaño de los ba ches o de los mini-ba ches y de los se s de en enamien o y
alidación; el a io de ap endizaje y su a iación a lo la go del en enamien o.
Con es a b e e acla ación, se da po e minado la sección dedicada a edes neu onales. Cabe únicamen e
pun ualiza que en es os apa ados y pá a os, aunque se han explicado los p incipios básicos de las edes
neu onales, comunes en su inmensa mayo ía a odas és as, se ha hecho oco en un ipo conc e o de edes, las
llamadas edes neu onales hacia adelan e ( eed o wa d neu al ne wo ks, gene almen e se usa la denominación
en inglés). És as son aquéllas en las que las que las neu onas sólo se conec an en una di ección, sin que haya
bucles (en con aposición, po ejemplo, de las edes neu onales ecu en es), y el lujo de da os en in e encia es
exclusi amen e de capa de en ada a capa de salida. La azón po la que nos hemos cen ado en es e modelo es
que es el más u ilizado en el campo que nos concie ne, la isión a i icial, conc e amen e median e un sub ipo
conocido como edes neu onales con olucionales, gene almen e simpli icado como CNN o Con Ne s (de sus
siglas en inglés, Con olu ional Neu al Ne wo ks). Es as edes ienen la ca ac e ís ica p incipal de que asumen
que sus da os de en ada se án imágenes (gene almen e, aunque écnicamen e su unción es explo a la elación
espacial de cualquie conjun o de da os), po lo que es án diseñadas pa a abaja con és as de di e en es mane as,
buscando op imiza las ope aciones que se quie an hace sob e ellas. Es o es algo que gua da mucha elación
con el deep lea ning, o o de los múl iples campos en los que se di ide la in eligencia a i icial, y que
de alla emos en la p óxima sección.
Deep Lea ning y edes neu onales aplicadas a isión a i icial
Has a aho a nos hemos cen ado en el uncionamien o in e no de las edes neu onales y en cómo se lle a a cabo
el p oceso de ap endizaje de és as. Hemos hablado de neu onas, de backp opaga ion y de hipe pa áme os; pe o
hemos dejado de lado uno de los elemen os más impo an es a la ho a de abaja con in eligencia a i icial: los
da os.
Has a aho a, hemos a ado lo da os de o ma gene alizada, usándolos como en adas que luyen po la ed y
desembocan en una salida; o como se s o conjun os que se usan de o ma di e enciada pa a en ena , alida o
p oba las edes. Pa a aplicaciones sencillas, como pod ía se el ejemplo que poníamos al comienzo en el que
buscábamos que una máquina ap endiese a suma , con es o pod ía se su icien e, pues, al in y al cabo, el obje i o
que buscábamos (suma ) y los da os que u ilizábamos (núme os) e an a su ez sencillos. Sin emba go, si
eco damos que uno de los ines de la in eligencia a i icial es el de se capaz de ealiza abajos que ac ualmen e
pa ecen exclusi os de los se es humanos, enemos que acep a que en la g an mayo ía de ocasiones, los da os
que que emos que nues a in eligencia a i icial maneje no se án simplemen e núme os, sino oda aquella
in o mación que el p opio se humano es capaz de pe cibi .
La isión a i icial es un cla o ejemplo de es a si uación. Si el obje i o es diseña máquinas que sean capaces de
e como lo hace el se humano, end á que se capaz, de alguna mane a, de pe cibi de igual mane a o simila
a como lo hace el se humano median e la isión. Ac ualmen e, podemos digi aliza aquello que emos median e
cáma as que p oducen ídeos e imágenes; pe o una ed neu onal, como hemos is o, abaja con algo i mos y
ope aciones ma emá icas numé icas, po lo que de alguna o ma debemos con e i esas en adas complejas –
que bien pueden se imágenes, como en la isión a i icial, o audios pa a econocimien o de oz, o ex o pa a un
in é p e e de lenguaje- en da os que la ed pueda “en ende ” y en los que pueda abaja .
El endimien o de los mé odos de machine lea ning depende ue emen e de la o ma de ep esen a es os da os
complejos, en consecuencia [27]. En edes neu onales con encionales, es o se aduce en el empleo de un g an
es ue zo en p ep ocesa y ans o ma dichos da os, con el in de adecua los al sis ema conc e o; con adiciendo
el p incipio de que e que la in eligencia a i icial ap enda po sí sola como lo ha ía un se humano. Po lo an o,
lo ideal se ía diseña un sis ema que uese capaz de abs ae se lo su icien e de los da os p incipales, median e
mecanismos gene ales que pe mi an ans o ma dichos da os y econoce ca ac e ís icas y pa ones en ellos sin
necesidad alguna, en p incipio, de supe isión, y ga an izando un buen esul ado den o de los mé odos de
machine lea ning. A odo es e p oceso se le conoce como ep esen a ion lea ning, o ap endizaje de
ca ac e ís icas, y uno de los mecanismos más popula es pa a a on a lo es el ap endizaje p o undo o deep
lea ning.
Figu a 2-11. Machine Lea ning con a Deep Lea ning
Exis en di e sas de iniciones de lo que es el deep lea ning. Gene almen e, se conoce así a la ecnología que usa
edes neu onales con múl iples capas, y cuyo obje i o es se capaz de iden i ica ca ac e ís icas de al o ni el de
un conjun o de da os sin p ocesa [28]. Su aplicación es muy a iada: desde isión a i icial, como ya hemos
is o, has a econocimien o del habla, aducción, bioin o má ica, diseño de medicamen os o análisis de
imágenes médicas; en e o as. Median e el deep lea ning, los da os se an ans o mando capa a capa, de i ando
en una ep esen ación abs ac a que esul a en una mejo a de la e iciencia y la capacidad de la ed. En la Figu a
2-12 emos un sencillo ejemplo de cómo una ed neu onal que usa ap endizaje p o undo ac úa sob e una imagen.
19
Figu a 2-12. Ejemplo de ed neu onal con machine lea ning
Cuando la ed es é en enada, cada capa se hab á especializado en un pa ón o ca ac e ís ica común de las
imágenes que hayamos usado como en enamien o, desde di e encias de con as e has a igu as conc e as, como
acciones o silue as. Y lo más impo an e es que no hab á eque ido de in e ención humana pa a a a los da os
en un p ime momen o, sino que pod á abaja di ec amen e sob e dichos da os en cues ión, independien emen e
de cuáles sean es os.
Las capas de una ed neu onal con deep lea ning ealizan di e en es ope aciones en unción de los da os que
ayan a ecibi . Así, aunque el p incipio es el mismo, una ed diseñada pa a econocimien o de imágenes no
abaja á de la misma o ma que una diseñada pa a, po ejemplo, in e p e ación del lenguaje o aducción. Po
ello, a con inuación explica emos aquellas edes diseñadas especí icamen e pa a abaja con imágenes, que,
como ya adelan ábamos an e io men e, se engloban den o de las edes neu onales con olucionales, o CNNs.
2.3.1 Redes Neu onales Con olucionales
A p ime a is a, una CNN no di ie e excesi amen e de una ed neu onal común básica como la que hemos
explicado p e iamen e. Sus neu onas abajan con pesos y sesgos de la misma o ma, se conec an en e ellos en
un lujo unidi eccional o ganizadas en capas, y calculan su ac i ación y pos e io e o siguiendo los mismos
mecanismos de suma ponde ada y il o median e unción obje i o. Lo que las dis ingue es que las edes
con olucionales asumen que sus en adas se án imágenes (es ic amen e, da os bidimensionales que se án
in e p e ados como una ma iz; más adelan e en ende emos el mo i o), po lo que podemos diseña su
a qui ec u a especí ica con la que inc emen a la p ecisión y educi los iempos de en enamien o e in e encia
y el cos e compu acional de la ed.
Pa a pode comenza a explica cómo uncionan es as edes, p ime o end emos que hace una e lexión sob e
cómo debe íamos a a las imágenes que amos a u iliza como da os. Pa a noso os, una imagen es el esul ado
de la pe cepción de la luz a a és de nues os ojos po pa e de nues o ce eb o; pe o en una máquina, una
imagen no es más que una ma iz de píxeles, siendo a su ez un píxel la unidad mínima de in o mación que
compone una imagen digi al. Visualmen e, podemos ep esen a un píxel como un pun o con colo ; pe o como
mencionábamos al comienzo de es a sección, pa a pode u iliza una ed neu onal debemos aduci nues os
da os a lenguaje ma emá ico que la ed pueda in e p e a . En es e caso, pod íamos asigna le a cada colo un
núme o, y con e i nues a ma iz de píxeles en una ma iz numé ica, como se ep esen a en la siguien e igu a:
Figu a 2-13. Ma iz de píxeles in e p e ada numé icamen e
Aho a, enemos una ma iz numé ica de 18x18 alo es, algo con lo que sí pod íamos alimen a nues a ed
neu onal. En es e caso conc e o, pod íamos diseña una capa de en ada con 18*18=324 neu onas, cada una
“dedicada” a uno de los píxeles de nues a imagen. Si además asumimos que enemos una ed o almen e
conec ada, cada neu ona de una hipo é ica p ime a capa ocul a end ía 324 pesos, uno po cada neu ona de
en ada. Es o se ía algo acep able en cuan o a can idad de pesos (N*324, siendo N el núme o de neu onas en la
p ime a capa ocul a), pe o es amos pa iendo de un ejemplo muy simple, de una imagen muy pequeña, y,
además, en blanco y neg o; se puede p e e que es e modelo es ánda con neu onas o almen e conec adas no
escala á bien si complicamos la imagen.
Supongamos que u ié amos algo más eal, po ejemplo, una o o de ca ne de 378x508 píxeles, y a colo , pues
que emos diseña una ed neu onal pa a econocimien o acial. Podemos eu iliza la idea de c ea una ma iz
de alo es, pe o pa a el colo , ya no nos ald ía con un alo numé ico ep esen a i o como el de an es, po que
aho a no sólo di e enciamos en e onos de blanco y neg o, sino en odo el espec o isual. Pa a sol en a es e
p oblema, gene almen e se u iliza un sis ema de sepa ación de colo es en canales, de al mane a que, pa a cada
canal de colo , los alo es que asignemos a cada píxel ep esen an la in ensidad de és e. La suma de odos los
canales de colo , da ía la imagen o iginal. Un modelo de canales de colo muy ex endido es el RGB, que c ea
es canales, uno pa a el ojo, o o pa a el e de, y el úl imo pa a el azul (que son los colo es p ima ios de la luz,
a su ez). Así, as nues a con e sión de la imagen a alo es numé icos, end íamos es ma ices de 378x508
núme os; o lo que es lo mismo, un olumen de en ada de 378x508x3. Si man enemos el mismo modelo de ed
neu onal en el que cada alo de en ada iene asignado una neu ona, el o al de és as en nues a capa de en ada
se inc emen a ía a 576072, que se aduce en que cada neu ona de la p ime a capa ocul a end á 576072 pesos a
u iliza , y po lo an o, 576072 ope aciones a ejecu a ; y odo es o sólo en una neu ona de la p ime a capa. A la
al a de escalabilidad, se le suma ambién el cos e compu acional, que se e á inc emen ado a medida que
aumen emos el amaño de la imagen. Además, gene almen e no con iene ene demasiados pa áme os cuando
a amos edes neu onales, ya que suele de i a en sob eajus es.
Pa a eludi es e p oblema, los modelos de edes neu onales con olucionales siguen los siguien es pasos:
Las neu onas de las capas es án o ganizadas idimensionalmen e: poseen anchu a, al u a y
p o undidad. Es o quie e deci que ecibi án un olumen idimensional como en ada, ambién
conocido como enso , y gene a án o o como salida. Po ejemplo, la p ime a capa de la ed que
diseñábamos an es enía una en ada idimensional de 378x508x3, y pod ía p oduci una salida de
189x254x5. Hay que des aca que, en es e caso, las dimensiones de la en ada ienen un alo ísico
iden i icable (anchu a, al u a, canales de colo ), pe o cuando és a se a ans o mando a lo la go de la
ed, es o no iene po qué se así (la ed se a abs ayendo).
Las neu onas de capas pos e io es sólo se conec a án a una pequeña egión de las de la capa an e io ,
en ez de es a conec adas odas con odas, como has a aho a hemos es ado iendo. Es o no sólo educe
la can idad de pa áme os y ope aciones a ealiza , sino que ambién pe mi e a subg upos conc e os de
21
neu onas especializa se en ca ac e ís icas conc e as de las imágenes.
Como podemos obse a , ambos p incipios cumplen los obje i os del deep lea ning que desa ollábamos an es:
abs acción y capacidad de ap ende ca ac e ís icas especí icas. Pa a log a lo, las edes con olucionales
p esen an una se ie de capas que ealizan ope aciones especí icas, y és as a su ez se o denan siguiendo una
a qui ec u a de inida, como la que se ep esen a en la siguien e igu a:
Figu a 2-14. Ejemplo de ed con olucional gene al
Algunas de es as capas ya las hemos comen ado en apa ados y secciones an e io es. La en ada, po ejemplo,
ya sabemos que se á un olumen de WxHx3, donde W se á la anchu a, y H la al u a, en píxeles; y 3 se e ie e al
núme o de canales de colo que con o man la imagen. Las unciones ReLU y So max ambién las hemos is o
p e iamen e: la p ime a se usa á pa a il a po alo es ( eco demos que la unción ReLU ealiza una ope ación
max(umb al, en ada)); y la segunda, pa a gene a una p obabilidad pa a odas las opciones posibles de salida,
y de e mina cuál es la más adecuada.
El es o de capas se á lo que explica emos a con inuación, de allando su labo , ca ac e ís icas p incipales e
hipe pa áme os elacionados.
2.3.1.1 Capa con olucional
La capa con olucional (con olu ional laye ) es uno de los pun os cla e de es e ipo de edes, y lle a a cabo las
ope aciones más pesadas compu acionalmen e. Es á enca gada de de ec a elemen os ca ac e ís icos en las
imágenes, como bo des, zonas de cie o colo o igu as. Pa a ello, se ale de una se ie de il os que ope an sob e
los da os de en ada, median e un p oceso que se explica a con inuación:
1. Se de ine el amaño de il o, de e minado po su al u a y anchu a, y ex endido en oda la p o undidad
del olumen de en ada. Todos los il os end án el mismo amaño.
2. El il o se desliza a lo la go y ancho del olumen de en ada, calculando los p oduc os escala es de los
alo es de en ada del á ea de inida pa a el il o espec o a los pa áme os de és e, y gene ando en cada
aplicación una salida. A es e p oceso se le llama con olución. Cada il o esul a á en un mapa
bidimensional, cuya al u a y anchu a se á, en gene al, meno que la del olumen de en ada.
3. Cuando odos los il os sean aplicados, end emos un conjun o K de mapas bidimensionales, uno po
cada il o; o lo que es lo mismo, un olumen de salida de W’xH’xK, donde W’ y H’ ep esen an las
nue as anchu a y al u a, y K el núme o de il os aplicados.
Con es e sis ema, las neu onas ya no necesi a án es a conec adas odas con oda en capas sucesi as. Cada una
de ellas se conec a á exclusi amen e a las salidas de la capa an e io que o man pa e del amaño de su il o.
Veámoslo más cla o con un ejemplo: si pa imos de nues a o o de ca ne an e io , que se aducía en un
olumen de en ada de 378x508x3; y ijamos el amaño del il o en 5x5 ( eco demos, la p o undidad siemp e
equi ale a la del olumen de en ada, po lo que no se especi ica), cada neu ona cub i á una egión de 5x5x3 de
la en ada, lo que equi ale a 5*5*3=75 pesos; bas an e menos de los ce ca de medio millón que se necesi aban
en el modelo o almen e conec ado. Al conjun o de in e conexiones de una neu ona con el olumen de en ada
Figu a 2-21. Esquema R-CNN
La p incipal des en aja de las R-CNN es que, pese a se uncionales, son ex emadamen e len as an o en
en enamien o como en in e encia, ya que el p oceso de búsqueda selec i a debe designa las 2000 egiones en
cada imagen que se p ocese. Es o p o oca que en in e encia, po ejemplo, se omen al ededo de 47 segundos
po imagen, que es bas an e si enemos en cuen a que muchos de es os mecanismos p e enden unciona en
de ección sob e ídeo. A es o se le suma que el algo i mo de selección selec i a ealmen e no pa icipa en el
p oceso de ap endizaje, ya que no iene mecanismos pa a “ap ende ”, lo que lo con ie e en pa e del p e-
p ocesado, ase que, como ya comen amos al comienzo de la sección, con iene limi a o elimina del odo en la
medida de lo posible.
2.3.2.2 Fas R-CNN
Las des en ajas de las R-CNN ue on sol en adas po uno de sus p opios au o es en una nue a ap oximación a
la que se llamó Fas R-CNN [33] (en español, R-CNN Rápida). A di e encia de su p edeceso , Fas R-CNN
p ime o pasa la imagen comple a po una capa con olucional, de donde se ex ae á un mapa de ca ac e ís icas
en el que se iden i ica án las di e en es egiones p opues as. Dicha egión p opues a end á un amaño a bi a io,
po lo que usa emos una capa de ag upación pa a edimensiona la a un olumen más egula . A es a capa se la
conoce como capa de ag upación po egión de in e és (Region o In e es pooling laye , muchas eces
ab e iado como RoI pooling laye ), y su sis ema de ag upación es idén ico al de las max pooling laye s, es deci ,
u iliza la unción max pa a disc imina . La di e encia p incipal, es que la RoI puede ene un amaño de il o
a iable, en unción del amaño de la egión p opues a. En la siguien e igu a puede e se un ejemplo de
uncionamien o:
Figu a 2-22. Capa de ag upación RoI
T as es e paso, aplana emos el olumen de salida de cada egión p opues a, y alimen a emos una ed neu onal
o almen e conec ada, pa alelo a lo que hacíamos en R-CNN. De és a úl ima ase ob end emos dos esul ados:
29
el p ime o lo pasa emos po un il o so max, pa a clasi ica el obje o iden i icado (a di e encia de R-CNN,
donde usábamos SVM); y el segundo, pasa á po un eg eso de caja delimi ado a (Bounding Box Reg esso ),
un algo i mo u ilizado pa a de ini con más p ecisión el ecuad o localizado del obje o [34].
Figu a 2-23. A qui ec u a de Fas R-CNN
Fas R-CNN es más ápido que el R-CNN común po que no equie e gene a las 2000 egiones p opues as sob e
la imagen de en ada, aho ando iempo de compu ación en las p ime as capa de la ed. Sin emba go, no es
pe ec a, pues, pa a encon a las egiones p opues as ( as la p ime a capa con olucional) uel e a u iliza el
algo i mo de búsqueda selec i a, que, si eco damos, no es dinámico y no puede ap ende . En consecuencia,
pese a la mejo a en elocidad, seguimos an e una p ác ica no aconsejable.
2.3.2.3 Fas e R-CNN
Con el in de sol en a el p oblema del uso de algo i mos pa a la iden i icación de egiones p opues as, se diseñó
Fas e R-CNN [35] (en español, R-CNN Más Rápido). El comienzo del algo i mo es igual que se p edeceso : la
imagen se pasa po una ed con olucional que de uel e un mapa de ca ac e ís icas sob e el que iden i ica
egiones p opues as. Sin emba go, aho a, en ez de usa un algo i mo es á ico, usa emos una ed neu onal
sepa ada pa a p edeci dichas egiones. El es o, se man iene igual: una ez ob enidas las egiones, an es con el
algo i mo, aho a con la ed neu onal al e na i a, u ilizamos una capa de ag upación RoI y luego una capa
o almen e conec ada con la que ob ene los obje os econocidos y sus cuad os delimi ado es.
Figu a 2-24. Esquema de a qui ec u a de Fas e R-CNN
La compa a i a en e los es modelos deja cla o cuál la opción más iable, si p io izamos iempos de ejecución:
Figu a 2-25. Compa a i a dis in os mé odos de R-CNN
Con Fas e R-CNN, e minamos el g upo de algo i mos in oduc o ios a la de ección de obje os. Tan sólo hemos
explicado b e emen e los más básicos, aquellos que se basan p incipalmen e en la iden i icación de egiones y
su pos e io clasi icación. Como comen ábamos al comienzo de la sección, és a es una ap oximación muy
sencilla, y se ha demos ado que puede llega a se e icaz. Sin emba go, los algo i mos que ac ualmen e se
u ilizan y o man pa e del es ado del a e p esen an o os mecanismos más a anzados pa a lle a a cabo el
obje i o, la mayo ía cen ados en el uso de una única ed neu onal que in e p e e oda la imagen en su conjun o,
y no an sólo sus subdi isiones, y diseñados pa a pe mi i su u ilización en la de ección de obje os en iempo
eal (como se u iliza ía, po ejemplo, en una cáma a de segu idad in eligen e o un coche au ónomo). Algunos
ejemplos son las SSD (Single Sho Mul iBox De ec o ), Re ineDe (Single Sho Re inemen Neu al Ne wo k),
Re inaNe ; o YOLO, en la que nos cen a emos a con inuación.
Figu a 2-26. Compa a i a de mé odos de de ección de obje os en iempo eal del es ado del a e
YOLO
YOLO son las siglas de You Only Look Once, que se aduce como “sólo mi as una ez”, y se pod ía deci que
és a es su p incipal p emisa. Como se puede obse a en la Figu a 2-26, es un sis ema muy e icien e, compa ado
con o os mecanismos ambién del es ado del a e. Compensa una p obabilidad de acie o media (mAP)
lige amen e in e io con una po en e elocidad de in e encia; más adelan e e emos el po qué de ambas
ca ac e ís icas.
Exis en ac ualmen e cua o e siones de YOLO. La p ime a y o iginal se llamó simplemen e YOLO, aunque
aquí usa emos YOLO 1 pa a e e i nos a la p ime a e sión del sis ema, y YOLO pa a cualquie e sión de
o ma gene al [36]. De inió los p incipios del de ec o , que en a emos a de alla en los siguien es pá a os. La
31
segunda e sión, conocida como YOLO 2 o YOLO9000 [37], p esen ó algunas mejo as, como el uso de capas
de no malización o la in oducción de cuad os delimi ado es p ede inidos pa a aumen a la elocidad de
ap endizaje de la ed. YOLO 3 [38], e ce a e sión y la que usa emos en es a memo ia, a ó de mejo a uno
de los p incipales p oblemas que YOLO a as aba desde su comienzo: la de ección de obje os pequeños (cuando
eamos el uncionamien o in e no, en ende emos el po qué). Finalmen e, en ab il de 2020 se p esen ó YOLO 4
[39], que busca con e i se en el sis ema más ápido pa a de ección en iempo eal.
2.4.1 YOLO 1
Como decíamos, la p emisa de YOLO es que sólo se mi a una ez. En YOLO, una sola ed neu onal se enca ga
de in e p e a oda la imagen, con lo que disminuye el iempo de ap endizaje. Además, en YOLO se lle a a cabo
una sepa ación en e los concep os de clasi icación y de ección de cuad os delimi ado es, a eas que se ealizan
pa alelamen e pa a aumen a la elocidad gene al del sis ema ( an o en in e encia como en ap endizaje). De es a
mane a, YOLO p edeci á de o ma sepa ada qué obje os apa ecen en la imagen y dónde se encuen an; pa a
luego combina ambas p edicciones en un esul ado de ini i o.
En ando en de alles, YOLO pa e de una di isión de la imagen de en ada en una cuad ícula egula ija de SxS
segmen os, donde cada uno se dedica á a la p edicción, po sepa ado, de un único obje o y de B cuad os
delimi ado es ( al y como mencionábamos an es, po un lado se de ec a qué es, y po o o dónde es á), como se
puede obse a en la Figu a 2-27. Cabe des aca que, pese a la di isión en segmen os, es o no quie e deci que
dicho obje o o cuad o delimi ado deba es a comple amen e limi ado en dicho ecuad o, sino que an sólo debe
apa ece el cen o de és e. Va ios segmen os con iguos pod ían de ec a el mismo obje o y la misma caja
delimi ado a si el mismo obje o ocupase a ias celdas, sin pe juicio pa a el esul ado inal. Po o o lado, la
es icción de de ec a un solo obje o po segmen o sí limi a la capacidad de YOLO, es ando aco ado el núme o
máximo de posibilidades a S*S obje os. Es po ello que una de las debilidades más conocidas del sis ema es su
incapacidad pa a econoce obje os pequeños, ya que acaban encuad ados en una misma celda, y an sólo uno
de los dos pod á se de ec ado.
Figu a 2-27. De ección y localización po sepa ado en YOLO
Con el in de de ec a un obje o en cada segmen o, YOLO gene a una p obabilidad de clase condicional
(condi ional class p obabili y) po cada clase que podamos de ec a ; es deci , gene a C p obabilidades. Sumado
a es o, cada cuad o delimi ado es á compues o de cinco componen es: comienzo del ecuad o en el eje X,
comienzo en el eje Y, anchu a, al u a y pun uación de con ianza de ecuad o (box con idence sco e). Los cua o
p ime os, designados gene almen e como (x, y, w, h) dibujan el ecuad o sob e la imagen, usando alo es
ela i os al amaño de és a (po lo que siemp e es a án en e 0 y 1); mien as que la pun uación de con ianza
de e mina con cuán a p obabilidad hay un obje o den o de és e (objec ness) y cuán p eciso es el ecuad o. Po
lo an o, cada segmen o de la imagen o iginal end á asociados un o al de (B*5 + C) alo es; o lo que es lo
mismo, el olumen de salida de la ed de YOLO end á una o ma de SxSx(B*5+C). Finalmen e, po cada clase
y cuad o delimi ado , se compu a á la pun uación de con ianza de clase, median e que le se mide la p obabilidad
de que cie o obje o apa ezca en cie a localización.
Pa a el caso conc e o de YOLO con el da ase Pascal VOC, se usó una ed con igu ada al que:
S = 7; es deci , una cuad ícula de 7x7 segmen os.
C = 20; ep esen ando las 20 clases ( ipos di e en es de obje os econocibles) que dicho da ase ecoge.
B = 2; dos cuad os delimi ado es po segmen o.
Lo que esul a un olumen de salida inal de 7x7x30, que se ep esen a en la Figu a 2-28 jun o con el es o de la
ed de YOLO.
Figu a 2-28. Red de YOLO
YOLO u iliza 24 capas con olucionales, con capas de ag upación ipo máximo, que inalizan en dos edes
comple amen e conec adas de las que se ob iene el olumen de salida. O os modelos de YOLO ajus an el
núme o de capas con olucionales, en unción de las ca ac e ís icas del disposi i o en el que se ejecu a á o de las
necesidades de la ed dado el ipo de imágenes en el que se quie e en ena . Po ejemplo, TinyYOLO es una
e sión más lige a, adecuada a disposi i os menos po en es, y po eso ha sido la elección pa a es a memo ia.
Du an e el en enamien o, YOLO calcula sus pé didas di idiendo la unción de pé didas en es g upos, cada
uno aplicado a cada celda:
Pé didas en clasi icación: si un obje o ha sido de ec ado, calcula el e o en las p obabilidades de clase
de e minadas pa a cada clase.
Pé didas en localización: calcula los e o es en los ecuad os p edichos espec o a los eales
( eco demos que, en el se de en enamien o, las imágenes que u ilicemos end án que indica la
localización de los obje os y sus ecuad os). Pa a ello, an sólo oma emos un único cuad o delimi ado
po cada obje o de ec ado. Pa a de e mina cuál, se u iliza á la i e sección sob e unión, o IoU (del inglés,
In e sec ion o e Union), una ope ación que pe mi e medi la supe posición de dos selecciones,
indicando de cie a mane a cuán simila es son. La Figu a 2-29 lo ep esen a más cla amen e. En es e
caso, aquel ecuad o con mayo IoU, se á el ep esen an e de dicho obje o, y el que se u iliza á pa a
en ena la ed.
Pé didas de con ianza: miden el e o del objec ness, es deci , la p obabilidad de que haya un obje o
en el ecuad o delimi ado encon ado. Debido a que la g an mayo ía de las eces los ecuad os no
encon a án obje os den o, se con abiliza de o ma con olada, pa a e i a que la ed se sob een ene
33
iden i icando ondos de imágenes sin con enido ú il.
Figu a 2-29. Rep esen ación g á ica del IoU
Po o o lado, du an e la in e encia, debemos ene en cuen a que, como adelan ábamos al comienzo, dos o a ios
segmen os con iguos pueden llega a de ec a el mismo obje o, incluso den o de ecuad os delimi ado es
simila es (con un al o IoU en e ellos, po ejemplo). Pa a co egi es e compo amien o, YOLO aplica una
sup esión no-máxima (non-maximal sup ession) o NMS, un algo i mo que disc imina en e los di e en es
candida os, y man iene an sólo aquellos con mayo índice de con ianza pe o que a la ez engan un bajo IoU
en e ellos, pa a e i a que obje os dis in os sean iden i icados como uno mismo. Es o puede llega a aumen a
el mAP en un 2 o 3%.
Figu a 2-30. E ec o de la sup esión no-máxima
Un ejemplo de la salida inal de una in e encia en YOLO puede e se al comienzo de es a memo ia, en la Figu a
1-1.
Las en ajas p incipales de YOLO, algunas de las cuales ya se han mencionado, son las siguien es:
La p opues a de una única ed neu onal y la di isión de a eas lo hace esencialmen e ápido, lo que a su
ez lo uel e álido pa a uso en de ección en iempo eal.
Fácil de en ena , de i ado del uso de una sola ed neu onal ambién.
Clasi icación y de ección en el con ex o o al de la imagen, sin di isión en pa es como o os mé odos
de econocimien o, lo que p opo ciona menos allos a la ho a de iden i ica obje os. Hay que eco da
que, pese a que YOLO sí u iliza una segmen ación de la imagen, cada segmen o puede obse a el
conjun o comple o de és a, no solo su ecuad o p ede inido.
Al o za se a encon a un obje o en cada segmen o de la imagen, admi e una di e sidad espacial que
mejo a la calidad de las p edicciones.
2.4.2 YOLO 2
YOLO 2 nace pa a compe i con los sis emas Single-Sho (dispa o único), o SSD, que a cie o ni el p esen an
una p ecisión mayo en el p ocesamien o en iempo eal de imágenes. Así, el obje i o de es a e sión,
p incipalmen e, ue mejo a en es e aspec o, pa a lo que se aplica on:
Capas de no malización po lo es (ba ch no maliza ion) en las capas con olucionales. Su unción es
no maliza los alo es de ac i ación de las capas an e io es, man eniéndolos así en un ango conc e o
que pe mi e agiliza el ap endizaje [40].
Clasi icación de al a esolución. Du an e el en enamien o, YOLO 1 en ena dos eces los se s de
imágenes, una pa a la clasi icación de obje os, y o a pa a la de ección y localización de és os. En
YOLO 2, el en enamien o de clasi icación se ejecu a dos eces (más o o en enamien o pa a
de ección), una con las imágenes escaladas a 224x224, y la o a a 448x448; lo que inc emen a la
p ecisión, aunque puede alen iza el ap endizaje.
Cuad os delimi ado es p e ios (p io bounding boxes) o cajas ancla. El concep o es sencillo: son
cuad os delimi ado es p ede inidos, con una o ma que suele se común en e a ios obje os muy
di e en es en e ellos. Po ejemplo, las pe sonas, cuando es án de pie, suelen ene un cuad o delimi ado
de o ma ec angula ala gada con una elación de aspec o de 0’41. Si analizamos a ios de es os
cuad os y emos pa ones que se epi en, podemos usa los pa a que la ed pa a de ellos, en ez de ene
que c ea los desde ce o sin ninguna e e encia. Luego, la p opia ed calcula a las di e encias necesa ias
espec o a los cuad os p e ios, alige ando y es abilizando el en enamien o, sob e odo en los p ime os
momen os.
El diseño de la ed ambién a ía lige amen e, ya que se libe a de la capa comple amen e conec ada y la sus i uye
po a ias capas con olucionales ex a que con ie en un olumen de 7x7x1024 en el olumen inal deseado,
que sigue man eniendo la o ma que jus i icábamos an es: SxSx(B*2+C).
La di e encia inal con espec o a YOLO 1, medido en el da ase de Pascal VOC 2007 ( eco demos, 20 clases,
9963 imágenes di e en es) es bas an e no able, siendo la mAP ( eco demos, a io de acie o medio) de és e de
63’4%, po los 78’6% de YOLO 2.
En la siguien e igu a se compa a ambién con o os mecanismos:
Figu a 2-31. Compa a i a YOLO 2 pa a Pascal VOC 2007
Los o og amas po segundo, ambién llamados FPS (de sus siglas en inglés, F ames Pe Second) equi alen al
núme o de imágenes que se in ie en cada segundo, po lo que cuan o mayo sea dicho alo , mejo se á el
sis ema.
35
2.4.3 YOLO 3
YOLO 2 consiguió con e i se en uno de los algo i mos más ápidos y p ecisos cuando apa eció po p ime a
ez, pe o con los años acabó pe diendo la ba alla de la p ecisión con a o os algo i mos como Re inaNe o SSD,
que ambién hemos mencionado en a ias ocasiones. La causa la hemos adelan ado ya en pá a os an e io es:
YOLO, po su uncionamien o in e no, iene di icul ades pa a de ec a obje os pequeños.
Con el in de mejo a la p ecisión, YOLO 3 sac i ica pa e de su has a aho a en idiable elocidad de in e encia,
pe o que supone un aumen o de ce ca del 13’5% de p ecisión (mAP). Pa a ello, las siguien es mejo as ue on
in oducidas:
Nue a a qui ec u a de ed neu onal: Donde YOLO 2 u ilizaba una ed de 30 capas (19 pa a
clasi icación, 11 pa a de ección), YOLO 3 p esen a un nue o sis ema de 106 capas con olucionales
(53 pa a clasi icación, 53 pa a de ección). És a es la azón de que aho a sea más len o; y ambién la de
que sea más p eciso. En la Figu a 2-32 se puede e un esquema con la nue a a qui ec u a.
De ección en es escalas: Como se puede e ep esen ado en la igu a que mencionábamos an es,
aho a YOLO lle a a cabo es de ecciones sob e la misma imagen, en ez de solo una, en es escalas
di e en es. De es a mane a, mejo a su capacidad de de ec a obje os pequeños, oda ez que aquellos
más g andes hab án sido de ec ados en las p ime as ocasiones, y pueden se igno ados pos e io men e.
Mayo olumen de salida: Donde las e siones an e io es enían una salida de amaño SxSx(B*5+C),
YOLO 3 p esen a un enso de SxSx(B*(5+C)); es deci , aho a, cada cuad o delimi ado p esen a sus
p opias p obabilidades po clase, en ez de se independien es. Se aumen an ambién el núme o de
cuad os, de 2 a 5, y no podemos ol ida que, además, aho a se ealizan es p edicciones a di e en es
escalas sob e la misma imagen; lo que inalmen e esul a en más de ecciones y, po lo an o, más
p obabilidad de ace a .
Uso de eg esión loga í mica pa a e ique ado de obje os: Has a aho a, YOLO había es ado
u ilizando el mé odo so max pa a de e mina a qué clase pe enecía un obje o cuando a ias opciones
se p esen aban. Es o se modi ica ya que la suposición de que una clase an sólo puede pe enece a un
obje o alla a medida que los da ase se uel en más complejos y poseen más clases. YOLO 3 admi e
múl iples e ique as pa a un mismo obje o, y u iliza una unción de eg esión loga í mica pa a
de e mina los.
Figu a 2-32. A qui ec u a de YOLO 3
Es os cambios se aducen en una mejo a no able de las p es aciones de YOLO 3, como podíamos e en la
Figu a 2-26, donde llega a supe a en elocidad e iguala en p ecisión a o os algo i mos del es ado del a e,
como Re inaNe . Es po ello que YOLO 3 se p esen a como un mecanismo excelen e pa a lle a a cabo
p oyec os complejos que equie an isión a i icial. En los p óximos capí ulos y pá a os lo p oba emos,
en ando en de alle sob e la pa e écnica del algo i mo, y midiendo sus p es aciones en una aplicación eal.
Ha dwa e
Una ez explicado y desa ollado odo el undamen o eó ico elacionado con la de ección de obje os y YOLO
en conc e o, queda po hace mención al ha dwa e en el que p oba emos el algo i mo. En es a sección nos
cen a emos en el aspec o eó ico y en la jus i icación de la elección de Raspbe y Pi como placa compu ado a;
mien as que en el p óximo capí ulo se en a á en el aspec o écnico an o del disposi i o como de YOLO, y se
desa olla á en de alle el la ins alación y pues a en ma cha.
Se comenza á con un b e e apa ado dedicado a explica la di e encia en e el uso de CPU y GPU pa a la
ejecución de sis emas de in eligencia a i icial, que se á necesa ia pa a en ende la decisión inal y pa e de la
ins alación de YOLO 3. A con inuación, se p ocede á a una compa a i a en e di e en es disposi i os popula es
con ca ac e ís icas simila es, y a la elección de ini i a de Raspbe y.
2.5.1 CPU s GPU
Como mencionábamos en la in oducción de es a memo ia, los sis emas de in eligencia a i icial pueden llega
a se cos osos compu acionalmen e y equie en de una g an can idad de ecu sos pa a unciona , sob e odo en
campos como la isión a i icial, que u ilizan da os y edes neu onales ex ensas y complejas; apa e de necesi a
la gas sesiones de en enamien o pa a ob ene un esul ado de calidad, p oceso que puede llega a se muy len o
si la máquina en la que se ejecu an no es á p epa ada.
En una compu ado a es ánda , la CPU es, gene almen e, la enca gada de lle a a cabo las ope aciones pe inen es
pa a cualquie p og ama que se ejecu e en és a. Es á p epa ada pa a ealiza ope aciones g andes y complejas en
muy poco iempo, pe o es á limi ada en la can idad de ope aciones di e en es que puede ealiza a la ez. Es o
puede se un p oblema en in eligencia a i icial, ya que la mayo ía de modelos equie en ealiza ope aciones
sencillas, pe o en mucha can idad, po lo que la pa alelización de és as (la capacidad de ealiza las a la ez) es
undamen al si que emos agiliza el p oceso. Es po ello que, en los úl imos años, se ha popula izado el uso de
las GPUs [41].
La GPU (G aphics P ocesso Uni , unidad de p ocesamien o de g á icos) es un p ocesado sepa ado de la CPU
que es á especializado en la ende ización de imágenes y ídeos, que no es sino la ep esen ación g á ico de
és os y su manejo y manipulación. Tiene especial impo ancia en p og amas undamen almen e g á icos, como
los iso es y edi o es de imágenes y ídeo, las he amien as de diseño 3D, o los ideojuegos [42]. Sin emba go,
debido a su modo de uncionamien o in e no, ambién puede se aplicado a in eligencia a i icial, y con muy
buenos esul ados [41]; ya que donde las CPUs se especializaban en ope aciones la gas y complejas, las GPUs
se especializan en ope aciones sencillas, pe o en g an can idad, y con una al a pa alelización. Es po ello que,
ac ualmen e, la mayo ía de sis emas de in eligencia a i icial es án p epa ados pa a abaja sob e GPU, has a el
pun o incluso de exis i pla a o mas dedicadas a la explo ación de los ecu sos de és as (como N idia CUDA
[43]).
Pese a su impo ancia, en es e p oyec o no u iliza emos la GPU pa a hace unciona nues o sis ema de isión
a i icial, ya que Raspbe y Pi 3 no iene una especialmen e po en e, mien as que su CPU sí lo es, como e emos
a con inuación. La azón po la que aun así se ha esc i o es a b e e sección es que, como se e á más adelan e,
se u iliza án cie as he amien as pa a op imiza el uncionamien o de YOLO en CPU; además de que la GPU
es una ca ac e ís ica impo an e pa a la compa a i a en e placas compu ado es que se ealiza á en la siguien e
sección.
37
2.5.2 Placas compu ado as
Como comen ábamos en la in oducción de es a memo ia, el obje i o de es e p oyec o no es solo p oba el
uncionamien o de un sis ema de de ección de obje os como YOLO 3, sino además hace lo en un disposi i o
no o iginalmen e diseñado pa a la ejecución de in eligencia a i icial, con el in de comp oba has a qué pun o
es iable.
La decisión de u iliza una placa compu ado a pa a el p oyec o iene de la p opia de inición de és os: son
sis emas compu acionales sencillos, económicos, y mul i unción. Además, en los úl imos años se es án
con i iendo en al e na i as iables pa a una g an can idad de a eas co idianas [44], y se es ima que el 98% de
los mic op ocesado es ab icados se des inan a sis emas embebidos [45]. Analiza y p oba el uncionamien o
de sis emas de in eligencia a i icial sob e es e ipo de disposi i os pod ía se i pa a ace ca es as nue as
ecnologías al usua io de a pie.
En conc e o, pa a es a memo ia in oduci emos es placas di e en es, dos de ellas siendo de las más popula es
en el me cado ac ual (A duino y Raspbe y Pi), y la o a siendo una placa dedicada especí icamen e a la
in eligencia a i icial (NVIDIA Je son). Explica emos b e emen e cada una de ellas y inalmen e expond emos
una abla compa a i a a a és de la cual jus i ica emos la decisión omada.
A duino: A duino se p esen a como una pla a o ma de elec ónica de código abie o, cuyo lema
p incipal es el diseño y c eación de ha dwa e y so wa e ácil de u iliza . Las placas A duino u ilizan
mic ocon olado es y a ios pe i é icos que le pe mi en se i pa a muchos y a iados p opósi os,
además de se ácilmen e p og amables. En conc e o, la placa A duino Nano 33 BLE Sense es
ecomendado po la p opia página o icial pa a su dedicación a in eligencia a i icial.
Raspbe y Pi: Las Raspbe y Pi son una se ie de placas desa olladas o iginalmen e pa a su dedicación
en la enseñanza de las ciencias de compu ación. Son placas gobe nadas po un mic op ocesado lige o
pe o su icien emen e po en e y que ca ece de pe i é icos po de ec o. Debido a su económico p ecio, en
los úl imos años han sido u ilizadas como base pa a muchos p oyec os dedicados a la obó ica y la
au oma ización. Ac ualmen e exis en a ias e siones, siendo la úl ima la 4, lanzada a comienzos del
año 2020. Pa a es e p oyec o, sin emba go, conside a emos la Raspbe y Pi 3, ya que es á más
ex endida.
NVIDIA Je son: Las placas NVIDA Je son ue on come cializadas po p ime a ez en 2014, y su
p emisa es se o denado es dedicados a in eligencia a i icial en o ma o de placa compu ado a,
exis iendo a ios modelos con di e en es p ecios y p es aciones. Posee ca ac e ís icas écnicas idóneas
pa a es e in; pe o no es án an ex endidas como las an e io men e mencionadas.
En la Tabla 2-4 se ealiza una compa ación de las di e en es ca ac e ís icas écnicas que nos debe ían se
ele an es a la ho a de decidi nues a elección. Se han escogido, pa a cada placa compu ado a, su modelo más
adecuado en elación endimien o-p ecio pa a el p oyec o que nos incumbe.
Tabla 2-4. Compa a i a placas compu ado as pa a IA
CPU
GPU
Dedicado a IA
So wa e IA
P ecio
A duino Nano 33
BLE Sense
ARM Co ex-M4
32bi (64MHz)
No iene
Sí
TinyML
27€
Raspbe y Pi 3 B
4xARM Co ex-A53
64bi (1.2GHz)
B oadcom VideoCo e IV
No
Cualquie a
40€
NVIDIA Je son Nano
4xARM Co ex-A57
64bi (1.43GHz)
128-co e N idia Maxwell
Sí
Je Pack SDK
100€
Como podemos obse a , an o los modelos de A duino como Je son son placas diseñadas con el in de abaja
Pa a inaliza con Da kne –a al a de de alla el p oceso de ins alación y pues a en ma cha-, quedan po discu i
un a chi o más que ambién es undamen ales pa a la ejecución del p og ama: el a chi o de da os (da a ile). Se
u iliza pa a da in o mación del da ase que se ha usado (in e encia) o se a a usa (en enamien o),
especi icando, po ejemplo, el núme o de clases disponibles y sus nomb es. Un ejemplo sencillo pod ía se el
siguien e:
classes = 3
ain = ain. x
alid = es . x
names = obj.names
backup = backup/
En es e caso, es a íamos indicando que nues o da ase posee 3 clases; y, además, ambién señalamos que las
mues as pa a el en enamien o es án lis adas en el a chi o ain. x y las de alidación en es . x ; que los
nomb es de las clases es án en obj.names (que ambién es un a chi o de ex o plano); y que los backups deben
gua da se en la ca pe a backup/. De los a chi os de en enamien o y alidación y de los backups habla emos
más adelan e, pe o el a chi o de nomb es (aquí llamado obj.names) es ele an e, ya que es en és e donde
lis a emos los nomb es de odas las clases disponibles en nues o da ase , y que la ed end á o bien que ap ende ,
o bien que de ec a . Po ejemplo, pa a es e caso, que disponemos de es clases según el a chi o de da os,
pod íamos ene un a chi o de nomb es al que:
dog
ca
bi d
Lo que que ía deci que en es e da ase buscamos de ec a pe os, ga os o pája os. E iden emen e, es o es á
ín eg amen e elacionado con las mues as de en enamien o, ya que pa a que nues a ed sea capaz de dis ingui
qué es cada cosa, end emos que ene un conjun o de ejemplos en los que cada uno es é bien iden i icado. Más
adelan e de alla emos cómo se lle a a cabo el p oceso de en enamien o en Da kne y YOLO.
3.1.2 NNPACK
NNPACK es un paque e de acele ación pa a cálculos en edes neu onales con olucionales, que se cen a en
p opo ciona implemen aciones de al o endimien o pa a edes que abajen sob e CPU. P o ee mecanismos y
p imi i as a bajo ni el, esc i as en C, que pueden se u ilizadas po amewo ks dedicados a deep lea ning, como
es en es e caso Da kne ; además de que pe mi e maneja odos los núcleos de la CPU, mejo ando la
pa alelización de ope aciones.
Su u ilidad en es e p oyec o es innegable, ya que amos a abaja sob e un disposi i o que depende o almen e
de su CPU pa a pode lle a a cabo las p uebas con YOLO. Es o no quie e deci que NNPACK sea obliga o io
pa a pode ejecu a Da kne , ya que el amewo k de po sí puede con igu a se pa a abaja exclusi amen e con
la CPU (o exclusi amen e con la GPU); pe o median e NNPACK pod emos mejo a sus ancialmen e su
endimien o. Po o o lado, como se ha comen ado, NNPACK an sólo es un paque e que de ine una se ie de
unciones y algo i mos, pe o no in eg a di ec amen e el amewo k de ed neu onal. Es po ello que, pa a pode
usa lo, enemos que busca una implemen ación de Da kne con NNPACK.
Exis en a ias dis ibuciones de Da kne -NNPACK de código abie o, con lige as di e encias en e unas y o as
en las que a ían la in e az y el endimien o. A lo la go de es e p oyec o se ha abajado con dos de ellas, a las
que se e e i á con los nomb es de sus c eado es: digi alb ain79 (h ps://gi hub.com/digi alb ain79/da kne -
nnpack), y shizukachan (h ps://gi hub.com/shizukachan/da kne -nnpack); siendo la p ime a la dis ibución
o iginal, que se basa di ec amen e en el Da kne es ánda e in eg a NNPACK desde ce o; mien as que la
segunda es una bi u cación de es a p ime a con cie as mejo as de endimien o y o ganización. Sin emba go,
pa a lle a a cabo las di e en es p uebas de es e p oyec o, se han enido que ealiza cie as modi icaciones del
código uen e de Da kne , además de añadi sc ip s y códigos auxilia es pa a au oma iza los expe imen os, po
lo que se ha p epa ado un eposi o io pe sonalizado (h ps://gi hub.com/angmo p i/da kne - g) en Gi Hub, que
oma de base la dis ibución p opues a po shizukachan (ya que és a ha demos ado ene mejo endimien o que
la de digi alb ain79, como se e á más adelan e). En líneas gene ales, cada ez que se lle en a cabo a eas sob e
Da kne , se especi ica á en qué dis ibuciones se han ealizado y se comen a án los di e en es esul ados (si los
hay), pe o si no se mencionase, siemp e nos e e i íamos a la e sión pe sonalizada.
45
Ins alación y pues a en ma cha
La ins alación de la dis ibución Da kne -NNPACK u ilizada se ha di ido en cua o secciones, dedicadas cada
una a los di e en es componen es que o man el p oyec o:
1) Requisi os p e ios
2) NNPACK
3) Da kne
4) TinyYOLO 3 y p ime a p ueba de uncionamien o
Ve emos cada uno de es os pun os en de alle a con inuación. Cabe des aca que, excep o pa a el e ce paso, pa a
el es o no es ele an e qué dis ibución de Da kne -NNPACK ayamos a u iliza , bien sea la de digi alb ain79,
shizukachan, o la pe sonalizada. En cualquie caso, sí que se ecomienda segui los pasos de ins alación aquí
explicados o los que ienen en el a chi o README del eposi o io pe sonalizado (en inglés); incluso aunque se
usase o a de las dis ibuciones, ya que és os es án más ac ualizados y son menos p opensos a allos.
3.2.1 Requisi os y paque es p e ios
Una ez pues a en ma cha la Rasbpe y Pi como se p opone en el Anexo A, end emos que ins ala algunos
paque es y lib e ías ex a pa a pode ins ala an o NNPACK como Da kne . En conc e o, es os se án CMake y
Ninja, ambos diseñados pa a cons ui y compila p og amas a pa i de cie as ins ucciones. También ha á al a
ins ala Gi , pa a pode clona los eposi o ios necesa ios desde Gi Hub.
Se p opone u iliza los siguien es comandos pa a ealiza la ins alación de ambos:
$> sudo ap -ge ins all gi cmake
$> gi clone gi ://gi hub.com/ninja-build/ninja.gi
$> cd ninja
$>./con igu e.py --boo s ap
$> sudo cp ninja /us /sbin/
$> expo PATH=”${PATH}:~/ninja”
Pa a comp oba que la ins alación de ambos paque es ha sido co ec a, podemos lle a a cabo las siguien es
acciones:
$> cmake -- e sion
cmake e sion 3.13.4
CMake sui e main ained and suppo ed by Ki wa e (ki wa e.com/cmake).
$> ninja -- e sion
1.10.0.gi
3.2.2 Ins alación de NNPACK
Bas a á con ejecu a los comandos a con inuación lis ados. Cabe des aca que no se u iliza á el eposi o io
o iginal de NNPACK (c eado po Ma a yszcza (h ps://gi hub.com/Ma a yszcza/NNPACK), sino la e sión de
shizukachan (h ps://gi hub.com/shizukachan/NNPACK), que ha dado menos allos du an e las p uebas y pa ece
unciona mejo con el Da kne del mismo c eado .
$> cd ~
$> gi clone h ps://gi hub.com/shizukachan/NNPACK
$> cd NNPACK
$> mkdi build && cd build
$> cmake –G Ninja –D BUILD_SHARED_LIBS=ON –DCMAKE_C_FLAGS=-ma ch=a m 6k ..
$> ninja
$> sudo ninja ins all
A con inuación, hay que c ea el a chi o nnpack.con en /e c/ld.so.con .d/ (c ea di ec o io si no
exis e) y esc ibi en és e /us /local/lib. Es o se á necesa io pa a que Da kne sepa dónde localiza las
lib e ías compiladas po NNPACK.
3.2.3 Ins alación de Da kne
Pa a desca ga Da kne , bas a á con clona el eposi o io de su URL co espondien e. En es e caso, u iliza emos
el eposi o io pe sonalizado, pe o pod ía sus i ui se an o po el de digi alb ain79 como shizukachan.
$> cd ~
$> gi clone h ps://gi hub.com/angmo p i/da kne - g
Luego, en a emos en el di ec o io que se hab á c eado, y que end á el mismo nomb e del eposi o io
(da kne - g si es el pe sonalizado, da kne -nnpack si es alguno de los o os). La o ganización de los
a chi os depende á de la dis ibución desca gada, pe o po aho a, an sólo se á ele an e el a chi o Make ile,
que iene las ins ucciones pa a lle a a cabo la compilación e ins alación de Da kne . En él end emos que
modi ica algunas bande as, que son a iables que con olan cómo y qué pa es se ins alan y cuáles no, con el
obje i o de p epa a lo pa a abaja con NNPACK y en CPU.
Las bande as a modi ica y sus alo es pa a la dis ibución pe sonalizada y shizukachan son las siguien es:
GPU=0
OPENCV=0
NNPACK=1
NNPACK_FAST=1
ARM_NEON=1
En caso de u iliza digi alb ain79, algunas de es as bande as no apa ece án, po lo que bas a á con igno a las,
pe o ambién hab á que ellena la siguien e:
LIBSO=1
A con inuación, ald á con ejecu a el siguien e comando, con el que, si no hay allos (apa ece án muchas líneas
de ad e encia que podemos igno a ), hab emos cons uido e ins alado Da kne co ec amen e:
$> make
Además, en caso de habe u ilizado el eposi o io pe sonalizado, se á necesa io ejecu a los comandos siguien es,
que pe mi en que algunos de los sc ip s pa a p uebas desa ollados puedan unciona co ec amen e:
$> sudo cp libda kne .so /us /local/lib
$> expo LD_LIBRARY_PATH=”/us /local/lib:/us /lib”
Pod emos comp oba que Da kne ha sido ins alado co ec amen e comp obando si el a chi o ejecu able
da kne ha sido gene ado.
3.2.4 TinyYOLO 3 y p ime a p ueba de uncionamien o
Finalmen e, una ez Da kne -NNPACK es á co ec amen e ins alado, an sólo queda p oba que unciona. Pa a
ello, a a emos de lle a a cabo una p ueba de in e encia sencilla con TinyYOLO 3. Reco demos que pa a
ejecu a cualquie ed neu onal en Da kne se á indispensable ene un a chi o de con igu ación que nos diga
cómo es la ed, un a chi o de pesos en enados, y un a chi o de da os con la in o mación del da ase u ilizado.
En nues o caso, el a chi o de con igu ación se á el que de ina la a qui ec u a de TinyYOLO 3 que
mos ábamos en secciones an e io es. Viene incluido en la dis ibución de Da kne , localizándose en
c g/yolo 3- iny.c g. Po su pa e, el a chi o de da os es a á ambién desca gado po de ec o, en
c g/coco.da a. Es e a chi o es á p epa ado pa a abaja sob e el da ase de COCO
(h ps://cocoda ase .o g/#home), que es bas an e popula y que dis ingue en e 80 clases de obje os dis in os.
Finalmen e, u iliza emos un a chi o de pesos p e-en enados en dicho da ase , pe o que hab á que desca ga lo
apa e, ya que es os a chi os suelen ocupa bas an e espacio en el disco y ene los odos en el eposi o io desde
un comienzo alen iza ía mucho su desca ga. Podemos pa a ello ejecu a el siguien e comando:
$> wge h ps://pj eddie.com/media/ iles/yolo 3- iny.weigh s
47
Finalmen e, sólo nos ha ía al a un candida o pa a p oba la in e encia. Todos los eposi o ios aen un pequeño
g upo de imágenes pa a p oba . En digi alb ain79 y shizukachan se encuen an en la ca pe a da a/, mien as
que en el eposi o io pe sonalizado es án en es ing/. Un ejemplo de ejecución pod ía se el siguien e:
$> ./da kne de ec c g/yolo 3- iny.c g yolo 3- iny.weigh s es ing/dog.jpg
El pa áme o de ec indica que que emos ealiza una de ección di ec amen e con el a chi o de da os de
COCO, po eso és e no se incluye en los pos e io es pa áme os, que indican el es o de a chi os necesa ios y la
imagen. En caso de que quisié amos u iliza un a chi o de da os dis in o, u iliza íamos el pa áme o de ec o ,
acompañado di ec amen e del a chi o de da os eque ido, y man eniendo el es o de pa áme os igual.
La ejecución de Da kne debe ía gene a una salida simila a la siguien e:
laye il e s size inpu ou pu
0 con 16 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 16 0.150 BFLOPs
1 max 2 x 2 / 2 416 x 416 x 16 -> 208 x 208 x 16
2 con 32 3 x 3 / 1 208 x 208 x 16 -> 208 x 208 x 32 0.399 BFLOPs
3 max 2 x 2 / 2 208 x 208 x 32 -> 104 x 104 x 32
4 con 64 3 x 3 / 1 104 x 104 x 32 -> 104 x 104 x 64 0.399 BFLOPs
5 max 2 x 2 / 2 104 x 104 x 64 -> 52 x 52 x 64
6 con 128 3 x 3 / 1 52 x 52 x 64 -> 52 x 52 x 128 0.399 BFLOPs
7 max 2 x 2 / 2 52 x 52 x 128 -> 26 x 26 x 128
8 con 256 3 x 3 / 1 26 x 26 x 128 -> 26 x 26 x 256 0.399 BFLOPs
9 max 2 x 2 / 2 26 x 26 x 256 -> 13 x 13 x 256
10 con 512 3 x 3 / 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BFLOPs
11 max 2 x 2 / 1 13 x 13 x 512 -> 13 x 13 x 512
12 con 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs
13 con 256 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 256 0.089 BFLOPs
14 con 512 3 x 3 / 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BFLOPs
15 con 255 1 x 1 / 1 13 x 13 x 512 -> 13 x 13 x 255 0.044 BFLOPs
16 de ec ion
17 ou e 13
18 con 128 1 x 1 / 1 13 x 13 x 256 -> 13 x 13 x 128 0.011 BFLOPs
19 upsample 2x 13 x 13 x 128 -> 26 x 26 x 128
20 ou e 19 8
21 con 256 3 x 3 / 1 26 x 26 x 384 -> 26 x 26 x 256 1.196 BFLOPs
22 con 255 1 x 1 / 1 26 x 26 x 256 -> 26 x 26 x 255 0.088 BFLOPs
23 de ec ion
Loading weigh s om yolo 3- iny.weigh s... (Ve sion 2) Done!
da a/dog.jpg: P edic ed in 4.257082 seconds.
5
Box 0 a (x,y)=(0.745051,0.209170) wi h (w,h)=(0.279108,0.171397)
Box 1 a (x,y)=(0.509042,0.521773) wi h (w,h)=(0.480992,0.519662)
Box 2 a (x,y)=(0.291488,0.621354) wi h (w,h)=(0.300040,0.581163)
Box 3 a (x,y)=(0.324342,0.611325) wi h (w,h)=(0.312303,0.574243)
Box 4 a (x,y)=(0.751867,0.218836) wi h (w,h)=(0.115131,0.108963)
dog: 57%
ca : 52%
uck: 56%
ca : 62%
bicycle: 59%
En es a salida podemos obse a algunas cosas in e esan es. Las p ime as líneas (las que es án nume adas)
ep esen an cada una de las capas que con o man la ed (si la compa amos con la Figu a 3-1 e emos que
coinciden), jun o con algunos de sus pa áme os ca ac e ís icos, como el amaño del il o o los olúmenes de
en ada y salida. La úl ima columna, además, mues a los FLOPS de cada capa, que es el núme o de ope aciones
en coma lo an e ealizadas po segundo (en es e caso se mues an los BFLOPS, que equi ale a cada billón
1
de
ope aciones po segundo) que se lle a án a cabo du an e la ejecución. A con inuación, se mues a cómo se
ca gan los pesos y en onces se lle a a cabo la de ección, que podemos obse a que en la p ueba a da poco más
de cua o segundos. Los esul ados de es a de ección se pueden e jus o después, donde se indica la can idad
1
Billón ame icano, equi ale a mil millones eu opeos
de de ecciones ealizadas y se desglosa en cajas delimi ado as (p ime o) y obje os con su po cen aje de segu idad
(después). Además, una ep esen ación g á ica del esul ado se almacena en el a chi o p edic ions.png al
inaliza la ejecución. En la siguien e igu a se ep esen an an o la imagen o iginal como el esul ado de la
de ección:
Figu a 3-2. Resul ado de la p ueba de de ección median e TinyYOLO 3
Como se puede obse a , los cuad os delimi ado es y los obje os de ec ados co esponden con lo indicado en la
salida ex ual po pan alla, pe o median e la imagen son más áciles de in e p e a . Respec o a la calidad de la
de ección, se ad ie en algunos e o es: los cuad os delimi ado es an o del pe o como de la bicicle a no son del
odo p ecisos, y la u gone a del ondo ha sido in e p e ada de es mane as di e en es (dos de ellas edundan es),
aunque las es son ela i amen e co ec as (el da ase de COCO no dis ingue especí icamen e a una u gone a,
an sólo un coche o un camión, como es el caso aquí). Aun así, dadas las condiciones y el hecho de es a
u ilizando una ed neu onal bas an e sencilla como es TinyYOLO 3, es un esul ado que pod íamos oma como
posi i o.
49
4 PRUEBAS Y VALIDACIÓN
n es e capí ulo se desa olla án y explica án las di e en es p uebas que se han ealizado sob e la ins alación
comen ada en el capí ulo an e io , jun o con el código y las modi icaciones lle adas a cabo pa a ealiza
dichas p uebas. És as se u iliza án pa a alida , a con inuación, los obje i os plan eados pa a es e p oyec o,
que, eco damos esumidamen e, es comp oba el uncionamien o y endimien o de TinyYOLO 3 sob e
Raspbe y Pi 3.
Como hemos ido adelan ando en an e io es capí ulos, las p uebas se di idi án en las dos unciones p incipales
de los sis emas de de ección de obje os: in e encia y en enamien o. Pa a cada una de es as secciones se p e ende
comple a los siguien es pun os:
Expe imen os a ealiza
Desa ollo de los expe imen os y p uebas
Validación de los expe imen os y análisis de los esul ados
En es e úl imo pun o, además, ex ae emos las conclusiones de dichos esul ados, que se án desa olladas más
en p o undidad en el siguien e capí ulo.
Códigos desa ollados y modi icaciones en Da kne
Como se ha mencionado p e iamen e, pa a lle a a cabo las p uebas del p oyec o se han desa ollado sc ip s y
pequeños p og amas auxilia es, y se ha eque ido ealiza cie as modi icaciones del código uen e de Da kne .
Se ecue da que pa e de la dis ibución de shizukachan, y que odo puede halla se di ec amen e en el eposi o io
pe sonalizado que se ha c eado pa a es e p oyec o.
Es a sección es a á dedicada a explica es as modi icaciones y la unción de dichos sc ip s, y en el p óximo
capí ulo, dedicado a p uebas y esul ados, se pond án en p ác ica y se indica á cuándo se han usado unos y o os.
También en es a sección se de allas las lib e ías auxilia es eque idas pa a ejecu a algunos sc ip s, y el p oceso
de ins alación de cada una de ellas. Los códigos uen e se án incluidos a su ez en los anexos.
4.1.1 Modi icaciones en código uen e pa a el en enamien o
Se lle a on a cabo en el código examples/de ec o .c, enca gado an o de la in e encia como del en enamien o.
En es e caso, se abajó sob e la unción ain_de ec o , que lle a a cabo odo el p oceso de en enamien o.
Las modi icaciones consis en en añadi las siguien es líneas al comienzo:
1. #i de NNPACK
2. nnp_ini ialize();
3. #endi
Y las siguien es al inal:
1. #i de NNPACK
2. nnp_deini ialize();
3. #endi
La azón es que, du an e las p uebas de en enamien o, se de ec ó un allo pe sis en e que pa ecía es a
elacionado con NNPACK. Compa ando las unciones de in e encia ( es _de ec o ) y la mencionada de
en enamien o, se dedujo que las líneas an es p esen adas se ían pa a inicializa NNPACK, y al no es a siendo
ejecu adas du an e el en enamien o, la lib e ía no podía unciona co ec amen e y eso conducía al e o .
E
El mo i o po el que algo an c í ico como es o no es á incluido en las dis ibuciones o iginales puede se que,
en gene al, no se ecomienda lle a a cabo un en enamien o en un disposi i o an poco po en e y p epa ado
como Raspbe y Pi, po lo que la mayo ía de es as dis ibuciones se cen an más en la pa e de in e encia y
descuidan la de en enamien o.
4.1.2 Sc ip pa a de ección ápida: as _de ec .sh
Es e sc ip no es más que un a ajo pa a la línea:
$> ./da kne de ec c g/yolo 3- iny.c g yolo 3- iny.weigh s <image>
Donde <image> puede se cualquie de las imágenes que se incluyen en la ca pe a es ing/. Un ejemplo de
ejecución pod ía se el siguien e:
$> ./ as _de ec .sh dog.jpg
Cuyos esul ados se ían exac amen e los mismos que eíamos p e iamen e en la sección de alidación de
ins alación.
El código de es e sc ip puede halla se en el Anexo C.
4.1.3 Código pa a p uebas de in e encia
Con el in de pode ob ene da os ele an es de la ejecución del p oceso de de ección, más allá de comp oba
que unciona con una sola imagen como se ha hecho en la sección an e io , se ha desa ollado es e pequeño
p og ama esc i o en Py hon que adap a el mecanismo de de ección an e io , y que pe mi e in e i sob e múl iples
imágenes y ob ene esul ados ú iles como los FPS y ep esen a los g á icamen e.
P incipalmen e, el código se compone de un w appe , que, de o ma gene al, es un ipo de lib e ía diseñada pa a
pe mi i ejecu a unciones de un código esc i o en cie o lenguaje X desde o o esc i o en un lenguaje Y. En
es e caso, u iliza emos Py hon pa a ejecu a las unciones de C que con o man Da kne y que pe mi en lle a a
cabo el p oceso de in e encia. De es a mane a, podemos ap o echa las en ajas que nos o ece Py hon a la ho a
de cap ación, manejo y ep esen ación de da os; sin al e a ni ene que eesc ibi el núcleo de Da kne .
Debido a que algunas de las pa es del código en C no podían se eplicadas di ec amen e en Py hon, se han
c eado unciones adap ado as en C, localizadas en los módulo s c/py_u ils.h y s c/py_u ils.c, que
ealizan es as a eas y pueden se llamadas luego a a és del w appe desde Py hon. Es os dos a chi os se han
incluido en el Anexo G.
Se puede p oba el uncionamien o del p og ama ejecu ando simplemen e:
$> py hon3 de ec .py
Cuya salida, igno ando la pa e de desc ipción de la ed (que debe ía se la misma que con la de ección es ánda
median e Da kne ) debe ía se :
In e encia de 1 imágenes
Du ación o al = 4.9484
Du ación media po imagen = 4.9484
FPS medios = 0.2021
Imagen: es ing/dog.jpg
- Tiempo: 4.9484
- FPS acumulado: 0.2021
- 'dog' con p ob 0.5707 a (x, y) = (0.3243, 0.6113) wi h (wid h, heigh ) =
(0.3123, 0.5742) and objec ness = 0.5721
- 'ca ' con p ob 0.5173 a (x, y) = (0.7519, 0.2188) wi h (wid h, heigh ) =
(0.1151, 0.1090) and objec ness = 0.8537
- ' uck' con p ob 0.5578 a (x, y) = (0.7519, 0.2188) wi h (wid h, heigh ) =
(0.1151, 0.1090) and objec ness = 0.8537
- 'ca ' con p ob 0.6153 a (x, y) = (0.7451, 0.2092) wi h (wid h, heigh ) =
(0.2791, 0.1714) and objec ness = 0.8626
- 'bicycle' con p ob 0.5850 a (x, y) = (0.5090, 0.5218) wi h (wid h, heigh ) =
(0.4810, 0.5197) and objec ness = 0.5878
Si no se indica lo con a io, se usa á la misma imagen que u ilizábamos en secciones p e ias pa a p oba el
51
de ec o ; y podemos comp oba que, en e ec o, los esul ados son los mismos. En el p óximo capí ulo
u iliza emos es e p og ama pa a ealiza las p uebas de in e encia.
El código uen e se puede consul a en el Anexo D. Se pueden e las dis in as opciones de uncionamien o del
p og ama ejecu ando:
$> py hon3 de ec .py -h
4.1.4 Código pa a análisis de las p uebas de en enamien o
Como se e á más adelan e en de alle, el comando de Da kne pa a lle a a cabo el en enamien o gene a una
salida po pan alla en la que se an mos ando, poco a poco, los esul ados de és e. El p og ama p opues o,
plo e .py, es capaz de analiza dichos esul ados y mos a los g á icamen e, gene ando di e en es g á icas con
las que es udia la e olución del en enamien o.
Pa a pode ejecu a dicho p og ama, es necesa io ins ala cie as lib e ías auxilia es de Linux y Py hon,
o ien adas al manejo de g á icos. Se pueden segui los siguien es pasos:
$> sudo ap -ge ins all py hon3-pip liba las-base-de libopenjp2-7 lib i 5
$> pip3 ins all numpy ma plo lib
Pa a comp oba que el código unciona, se puede ejecu a de la siguien e mane a y comp oba que el esul ado
coincide con el mos ado (sal a á un e o y se mos a á la ayuda):
$> py hon3 plo e .py
usage: plo e .py [-h] [-x X] [-y Y] [--cs CSV] [--plo _ ile PLOT_FILE]
log ile
plo e .py: e o : he ollowing a gumen s a e equi ed: log ile
El código uen e se puede consul a en el Anexo E. Se pueden e las dis in as con igu aciones de
uncionamien o ejecu ando:
$> py hon3 plo e .py -h
P uebas de in e encia
Con es as p uebas p incipalmen e se busca comp oba si TinyYOLO 3 puede se u ilizado pa a gene a
de ecciones en la gos conjun os de imágenes, expe imen o que puede se i de p eceden e pa a p oba su u ilidad
en ídeos, po ejemplo, cap ados po una cáma a web conec ada a la Raspbe y. Los pun os a a a pa a
de e mina su iabilidad son:
Du ación de la in e encia en un conjun o amplio y con olado de imágenes. Medi emos an o iempos
como FPS (imágenes po segundo), y el esul ado se á más adecuado cuan o más se eduzca el iempo
y más se inc emen en los FPS. Como e e encia, podemos oma que, según el eposi o io de la
dis ibución de digi alb ain79, el iempo medio de p edicción onda 1 segundo po imagen.
Calidad de las p edicciones: Hab á que comp oba que en las imágenes en las que se ejecu e la
in e encia se de ec an los obje os co ec os, en su posición y con sus ecuad os pe inen es. Exis en
a ias mé icas pa a e alua la p ecisión, como la mAP, que hemos mencionado en a ias ocasiones.
U ilidad de la in e encia: De e mina si es ecomendable o no u iliza TinyYOLO 3 en una Raspbe y
Pi pa a lle a a cabo in e encias en imágenes, aco de a los esul ados de las p uebas, y ambién decidi
si se pod ía llega a usa pa a de ec a obje os sob e ídeos.
Como eco da o io, el p oceso de in e encia consis e en la aplicación de una ed neu onal ya su icien emen e
en enada en la ealización de cie a a ea, po lo que alimen a emos la ed con da os especí icos y ob end emos
esul ados aco des a la a ea en cues ión. En es e caso, u iliza emos imágenes como en ada, y nues a ed,
TinyYOLO 3, iden i ica á y ubica á en és as los obje os en los que ha sido en enada pa a de ec a .
4.2.1 Expe imen o a ealiza
En p ime o luga , pues o que sólo amos a p oba la in e encia, eque imos de una ed ya en enada, y ambién
debemos sabe en qué ipo de imágenes y obje os se en enó, pa a escoge un conjun o de mues as cuyo
con enido la ed sea capaz de de ec a . Pa a es e expe imen o abaja emos conc e amen e con la ed p e-
en enada que usábamos pa a p oba la implemen ación en el capí ulo an e io . És a es á en enada en el da ase
de COCO 2017 (h ps://cocoda ase .o g/#download), que dis ingue en e 80 clases de concep os comunes y
co idianos, en e pe sonas, animales, ehículos, comidas, he amien as y un la go e cé e a. Su se de mues as
de en enamien o se compone de 200000 imágenes, y ambién o ece un conjun o de imágenes de p ueba, po
lo que podemos usa lo di ec amen e pa a la in e encia, ga an izando que se án imágenes álidas pa a la ed.
Como eíamos además en la p ueba de la implemen ación, en la dis ibución de Da kne ya disponemos de odos
los a chi os necesa ios pa a pode ealiza la in e encia (con igu ación y da os), y el sc ip de ec .py es á
p og amado pa a usa los po de ec o.
Como se explicaba en la in oducción, el obje i o se á analiza el compo amien o de la ed a la ho a de in e i
a ias imágenes seguidas, una as o a, midiendo an o la media de iempo po imagen y de FPS, como la
e olución de dichos alo es a lo la go de la in e encia. Pa a ello, se u iliza á un subconjun o de 1000 imágenes
ob enidas del conjun o de p ueba o ecido po el da ase de COCO, y se u iliza á de ec .py an o pa a calcula
los alo es de du ación y FPS, como pa a gene a las g á icas pe inen es.
Po o o lado, ambién que emos medi la p ecisión de las de ecciones, con el in de analiza el endimien o de
TinyYOLO 3. Pa a ello, p epa a emos o o subconjun o de imágenes, en es e caso de 10, que sean a iadas en
amaño y calidad; con engan di e en es elemen os ácilmen e iden i icables; y de las que dispongamos de los
obje os que sob e el papel debe ían se de ec ados po la ed. T as la in e encia, sob e los esul ados ob enidos
( eco demos que Da kne ep esen a á sob e las imágenes los ecuad os indicando los obje os de ec ados),
u iliza emos la mé ica conocida como pun uación (F1-sco e) [49], con la que de e mina emos la calidad de las
p edicciones. La azón de usa es a mé ica sob e o as, como la mAP que an o hemos mencionado, es que es
más sencilla de calcula , eniendo en cuen a que ealiza emos el p oceso a mano, en ez de au oma iza lo como
hacemos con, po ejemplo, los FPS. La pun uación F1 es un es sencillo gene almen e u ilizado en análisis
es adís ico que elaciona los concep os de p ecisión y exhaus i idad. Las ó mulas que lo gobie nan se
ep esen an a con inuación:
𝐹1=2· 𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛·𝑟𝑒𝑐𝑎𝑙𝑙
𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛+𝑟𝑒𝑐𝑎𝑙𝑙
(4-1)
𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛= 𝑇𝑃
𝑇𝑃+𝐹𝑃
(4-2)
𝑟𝑒𝑐𝑎𝑙𝑙 = 𝑇𝑃
𝑇𝑃+𝐹𝑁
(4-3)
Donde:
TP, o Ve dade o Posi i o (T ue Posi i e) son odos aquellos obje os co ec amen e de ec ados en un
conjun o de imágenes in e idas; es o es, se han clasi icado bien, y su cuad o delimi ado es lo
su icien emen e p eciso espec o al o iginal ( e Figu a 4-1).
FP, o Falso Posi i o (False Posi i e) son aquellos casos en los que la clasi icación del obje o ha sido
co ec a, pe o o bien el cuad o delimi ado no es del odo p eciso, o bien hay a ios cuad os
delimi ado es pa a un mismo obje o. También se conside a ían alsos posi i os los casos en los que se
de ec an obje os que no es án en la imagen.
FN, o Falso Nega i o (False Nega i e) es cuando el obje o no se ha de ec ado, o se ha de ec ado pe o
no se ha iden i icado co ec amen e.
P ecision, o p ecisión, indica cuán os obje os se han clasi icado co ec amen e, de odos aquéllos que
se han iden i icado.
Recall, o exhaus i idad, mide cuán os obje os han sido co ec amen e iden i icado, de odos los obje os
po encialmen e de ec ables en la imagen.
53
F1 es el alo inal del ac o , que elaciona, pa a el se o al, la p ecisión y la exhaus i idad en és a.
Gene almen e, pa a de e mina cuándo es amos an e un e dade o o also posi i o, u ilizamos la IoU con un
alo de umb al ce cano 0’5. Es o quie e deci , si eco demos que la IoU mide la di e encia en e el cuad o
delimi ado gene ado po la ed y el o iginal mos ado en el da ase , que an sólo acep a emos como e dade o
posi i o aquellas de ecciones cuyo ecuad o ma que, al menos, la mi ad del obje o en cues ión. Pa a es as
p uebas, en las que ca ecemos de un mecanismo pa a ealiza es a ope ación de una o ma más p ecisa,
conside a emos que la de ección es un e dade o posi i o si el cuad o delimi ado en uel e la mayo pa e del
obje o, a simple is a. También hay que des aca que, en líneas gene ales, es e ipo de ac o es, an o F1 como
mAP, suelen aplica se po cada clase del da ase independien emen e. En es e caso, como an sólo que emos
algo o ien a i o y el conjun o de imágenes sob e el que abaja emos es pequeño, lle a emos a cabo la ope ación
sob e odas las clases de ec adas a la ez.
Los pasos a segui pa a calcula es e ac o se án:
1. Lle a a cabo la in e encia del se de 10 imágenes, almacenando las p edicciones de Da kne .
2. Po cada imagen, con abiliza los e dade os y alsos posi i os y los alsos nega i os, compa ando
di ec amen e con las de ecciones eó icas que la página de COCO p opone y que se ep esen an en la
Figu a 4-1.
3. Calcula la p ecisión y exhaus i idad, y pos e io men e la F1.
Po úl imo, queda po menciona que se lle a án a cabo a ias p uebas pa a cada uno de los pun os a alida .
Todas consis i án en a ia el amaño de las imágenes de en ada de la ed (usando siemp e múl iplos de 32). Si
eco damos de la explicación eó ica, YOLO 3 ajus a el amaño de las imágenes en su en ada (man eniendo
siemp e las p opo ciones), po lo que es e pa áme o se puede al e a en el a chi o de con igu ación pa a dis in os
ines. En es e expe imen o, po ejemplo, educi el amaño de las imágenes de en ada debe ía supone una
mejo a en la elocidad de la in e encia, al ene un olumen de en ada meno , que supone menos neu onas en
las di e en es capas, que suponen menos ope aciones a lle a a cabo; pe o a su ez, la calidad y p ecisión de las
de ecciones puede e se disminuida. Es o úl imo es especialmen e sensible, ya que depende an o del amaño
con el que la ed se en enó en un p incipio, como del amaño de las imágenes que se ayan a usa du an e la
in e encia, ya que si los amaños o iginales dis an mucho del usado po la ed, se puede pe de in o mación y
calidad en la imagen du an e el cambio de amaño, sob e odo cuando és a se comp ime a dimensiones in e io es.
En el caso del da ase de COCO, los amaños máximos de imagen son de 640x640, y los mínimos de 280x280;
y la ed se en enó con un amaño de en ada de 416x416 (que si nos ijamos, es un pun o más o menos
in e medio). Con el in de a a de consegui la mejo elación en e calidad de p edicción y du ación de la
in e encia, se p oba án los siguien es amaños pa a cada uno de los obje i os a a a :
Pa a las p uebas de p ecisión, sob e el subconjun o de 10 imágenes, se ealiza án ece p uebas, desde
608x608 has a 224x224, disminuyendo en cada p ueba 32 pun os (ya que eco demos que el amaño de
en ada siemp e debe se múl iplo de 32); y se compa a án en e ellas los alo es de p ecisión,
exhaus i idad y F1.
Pa a las p uebas de du ación, sob e el subconjun o de 1000 imágenes, se ealiza án cua o p uebas, pa a
en adas de 448x448, 416x416, 352x352, y 288x288; y se compa a án en e ellas las mejo as en iempos
de ejecución y FPS.
4.2.2 Desa ollo
Se han p epa ado, pa a la ealización del expe imen o, dos ca pe as, de ec _ es y qual_ es , cada una,
espec i amen e, con las imágenes pa a las p uebas de du ación, y las de p ecisión. Es as úl imas se mues an
en la Figu a 4-1, jun o con los elemen os que hab ía que de ec a en cada una de ellas, ob enidos di ec amen e
de la página del da ase de COCO.
Pa a lle a a cabo los expe imen os u iliza emos el sc ip de ec .py con di e en es pa áme os en unción de la
p ueba que ayamos a ealiza . El sc ip au omá icamen e ca ga á los a chi os de con igu ación, da os y pesos
gene almen e llamadas ano aciones, suelen eni en a chi os apa e, ín imamen e ligados a cada una de las
imágenes cuyos obje os iden i ican. Idealmen e, al inaliza dicho en enamien o end íamos una ed que se ía
capaz de, pa a una imagen a bi a ia, de ec a odos aquellos obje os en los que ha sido en enada, como
hacíamos en las p uebas de in e encia.
4.3.1 Expe imen o a ealiza
Dado que el obje i o es únicamen e comp oba la iabilidad del en enamien o y medi su endimien o, el
expe imen o se á sencillo, consis iendo en un en enamien o sob e un da ase que sólo dis ingue en e dos obje os
(es deci , iene dos clases), pe os y ga os, y que se compond á de al ededo de 3700 imágenes. Compa ado con
el da ase en el que es aban p e-en enados los pesos usados pa a las p uebas de in e encia –200000 imágenes
de en enamien o, 80 clases-, la di e encia es bas an e ap eciable. El da ase seleccionado ha sido ob enido de
Kaggle (h ps://www.kaggle.com/), una pla a o ma web que, en e o os, o ece múl iples conjun os de imágenes
g a ui os pa a dis in os ines, en e ellos el en enamien o de edes neu onales; y nos hemos decan ado po el
mencionado de pe os y ga os en conc e o po que enía un núme o o al de clases e imágenes educido, y sus
es as úl imas además ya es aban ano adas (de lo con a io, hab ía que habe usado alguna he amien o que nos
pe mi iese ano a , uno po uno, los obje os de cada imagen).
El en enamien o se lle a á a cabo di ec amen e con Da kne , y u iliza emos los logs que se gene an du an e és e
en conjun o con el sc ip plo e .py pa a c ea g á icas y analiza y isualiza su e olución. Gene almen e
ep esen a emos las pé didas de en enamien o (a e age loss) en unción del núme o de épocas o i e aciones,
cuyas di e encias son:
En unción de las i e aciones end emos las pé didas cada ez que un g upo de imágenes (lo e o mini-
lo e) ac ualizan los pa áme os y pesos de la ed.
En unción de las épocas, end emos las pé didas cada ez que odas las imágenes han alimen ado la
ed, y sus pa áme os se han ac ualizado a ias eces en consecuencia.
Además, pa a iden i ica cuándo da el en enamien o po inalizado, busca emos un alo de pé didas es able,
que no pa ezca educi se más; y, g acias a que Da kne gene a au omá icamen e copias de los pesos en dis in os
momen os del en enamien o (cada 100 o 1000 i e aciones en unción de la dis ibución, como e emos más
adelan e), pod emos usa el modelo y ob ene los esul ados que pasa emos a e alua .
A con inuación se explica á cómo se lle a a cabo el p oceso de en enamien o en YOLO 3 y Da kne , y se
de alla án las con igu aciones y alo es de hipe pa áme os elegidos pa a es e expe imen o y su mo i ación.
4.3.2 Desa ollo
En p ime luga , enemos que echa un is azo al a chi o de da os de Da kne , que in oducíamos en el capí ulo
dedicado a la implemen ación, ya que en és e se o ganizan los componen es necesa ios pa a el en enamien o:
classes = 2
ain = aining/ox o d-pe /ca -dog- ain. x
alid = aining/ox o d-pe /ca -dog- es . x
names = aining/ox o d-pe /ca -dog.names
backup = backup
Es a es una copia del a chi o u ilizado pa a es e expe imen o. En él podemos e an o el núme o de clases
de ec ables como el nomb e y localización del a chi o de nomb es, que explicábamos an e io men e; pe o aho a
podemos cen a nos ambién en el es o de pa áme os.
Tan o ain como alid apun an a sendos a chi os de ex o, en los que debe apa ece un lis ado con la u a
de cada una de las imágenes que con o man el da ase de en enamien o y alidación, espec i amen e. Po
ejemplo, las p ime as líneas del a chi o de en enamien o u ilizado pa a es e da ase son los siguien es:
aining/ox o d-pe /images/ aining/ca _0.jpg
aining/ox o d-pe /images/ aining/ca _1.jpg
aining/ox o d-pe /images/ aining/ca _10.jpg
(…)
61
Todas las imágenes deben es a incluidas en la misma ca pe a (las de en enamien o po un lado y las de
alidación po o o) y cada una de ellas debe á i acompañada de un a chi o de ano aciones, que ya
in oducíamos p e iamen e, y su localización. Dicho a chi o se á un ex o plano (necesa iamen e . x ) con el
mismo nomb e que la imagen a la que “ ep esen a”, y las ano aciones end án el siguien e o ma o (cada una, en
caso de habe a ios obje os en la imagen, en una línea):
<objec -class> <x> <y> <wid h> <heigh >
Donde <objec -class> debe se el índice de la línea en la que dicha clase apa ece ep esen ada en el a chi o
de nomb es; <x> e <y> son las posiciones ela i as del cen o del cuad o delimi ado ; y <wid h> y <heigh >
su anchu a y al u a ela i a, espec i amen e.
Un ejemplo pod ía se el a chi o dog_2408. x , que necesa iamen e ep esen a a la imagen dog_2408.jpg,
y cuyo con enido es:
1 0.337000 0.377333 0.646000 0.749333
Lo que signi ica que hay un único obje o en dicha imagen, iden i icado po el índice 1 (que si mi ásemos el
a chi o de nomb es, ca -dog.names, e íamos que e e encia a un pe o), y con la localización ela i a indicada
po los cua o alo es co espondien es.
Ce ando la explicación de es os dos a chi os, cabe des aca que, mien as que el a chi o de en enamien o es
obliga o io, el de alidación es opcional, y, además, hay que indica le a Da kne especí icamen e que lo use,
pues la ejecución es ánda no lo iene en cuen a. Es o es así po que el p oceso de alidación alen iza odo el
en enamien o e inc emen a el cos e compu acional de és e. Debido a ello, pa a es e p oyec o no se ha enido en
cuen a en un p ime luga , y se ha incluido en el a chi o de da os sólo con ca ác e explica i o. Si los esul ados
de las p uebas en las condiciones an es especi icadas y sin alidación uesen a o ables, se pod ía plan ea una
p ueba con alidación, que pe mi i ía aco a con más p ecisión los allos que pudie an ocu i du an e el
en enamien o, como se explicaba en capí ulos an e io es.
El úl imo pa áme o del a chi o de da os es backup, que apun a a la ca pe a que almacena á lo que Da kne
denomina backups. És os son a chi os de pesos, iguales a los que explicábamos en el capí ulo an e io , que el
p og ama gene a de o ma au omá ica du an e el en enamien o, cada cie o núme o de i e aciones ( eco demos
que una i e ación es el p oceso po el cual un lo e comple o de imágenes alimen a y en ena la ed neu onal una
ez). G acias a ellos podemos ene un his ó ico de pesos en di e en es momen os del en enamien o, con los
que pod emos i p obando poco a poco el uncionamien o y/o endimien o de la ed, y así de e mina si és e es á
p og esando co ec amen e o no, o si puede da se po inalizado o debe con inua . En unción de la dis ibución
de Da kne u ilizada, es os a chi os se gene an cada 100 i e aciones (shizukachan, pe sonalizado) o 1000
(digi alb ain79).
Con inuando con la p epa ación del en enamien o, enemos ambién que modi ica algunos pa áme os del
a chi o de con igu ación de la ed. En el capí ulo an e io ya de allábamos los hipe pa áme os que componían
cada una de las secciones de dicho a chi o, po lo que aho a nos cen a emos simplemen e en aquéllos que nos
son ele an es pa a el en enamien o:
Tamaño de las imágenes, median e wid h y heigh , de e mina á el amaño de las imágenes con las
que amos a en ena la ed. Hay que eco da que Da kne modi ica á el amaño de las imágenes que
in oduzcamos en la ed pa a ajus a lo a aquél que indiquemos aquí. El es ánda de TinyYOLO 3 es de
416x416, pe o pa a no ene p oblemas con la memo ia, educi emos es e alo en las p uebas, sabiendo
que es necesa io que dicho amaño sea múl iplo de 32.
Lo es y mini-lo es, median e ba ches y subdi isions, con los que con ola emos con cuán as
imágenes se alimen a a la ed en cada i e ación y con cuán as ac ualiza emos los pa áme os de és a.
TinyYOLO 3 ecomienda 64 lo es y 16 subdi isiones (lo que supone mini-lo es de 4 imágenes).
Cuan as menos subdi isiones más ápido se á el en enamien o, pe o a su ez más se ca ga á la memo ia
po que hab á más imágenes p ocesándose, po lo que hay que ene lo con olado.
Máximo núme o de lo es y pasos de modi icación del a io de ap endizaje, a con ola median e
max_ba ches y s eps, que de e mina án espec i amen e as cuan as i e aciones da po inalizado
el en enamien o, y cada cuán as i e aciones modi ica el a io de ap endizaje. Es os dos pa áme os
es án ín eg amen e elacionados, ya que se ecomienda desde el eposi o io p incipal de YOLO que los
pasos sean dos: uno al 80% del núme o máximo de lo es, y o o al 90%. A su ez, no se ecomienda
que es e núme o máximo de lo es sea in e io a 6000. Como que emos op imiza la elocidad del
en enamien o, ya que és e a a se len o de cualquie mane a debido a las limi aciones de la Raspbe y,
man end emos dicho alo máximo de lo es, con dos pasos a las 4800 y 5400 i e aciones.
Modi icaciones en los hipe pa áme os de las capas YOLO y p e ias a YOLO. En conc e o, en la
capa [yolo] hay que modi ica el alo de classes al núme o de clases disponibles, en nues o caso
2; y en la capa p e ia a és a, que se á con olucional, hay que cambia el alo de il e s po (clases
+ 5)*3, que se á 21 en es e caso.
Pa a inaliza con los a chi os necesa ios pa a lle a a cabo el en enamien o, Da kne equie e un a chi o de
pesos de pa ida. Como explicábamos en los undamen os eó icos, cuando una ed neu onal se en ena en una
a ea nue a, pa e de unos pesos y pa áme os a bi a ios, a pa i de los cuáles modi ica y gene a los óp imos.
En Da kne podemos especi ica el alo base de dichos pa áme os, lo que, en e o as cosas, nos pe mi i ía
mejo a una ed ya en enada, o educi el iempo de en enamien o de edes di e en es pe o con da os simila es.
Más aun, Da kne pe mi e c ea , a pa i de un a chi o de pesos p e io y el a chi o de con igu ación que
ayamos a usa , un a chi o de pesos de pa ida ajus ado, en el que “congela” los pesos de algunas capas iniciales,
o zando a que la ed no se cen e en en ena y modi ica dichos pa áme os, que se especializan en asgos y
ca ac e ís icas más simples y comunes y pueden man ene se cons an es en e di e en es da ase s; sino que lo
haga en las capas inales, que esul a án más de e minan es y di e encia án asgos conc e os y especí icos de
nues o da ase .
Pa a es e expe imen o se ha pa ido del a chi o de pesos p e-en enados que u ilizábamos en las p uebas de
in e encia, yolo 3- iny.weigh s, como se ecomienda en el eposi o io o iginal de YOLO, y se ha gene ado
un a chi o de pesos de pa ida median e el siguien e comando:
./da kne pa ial aining/yolo 3- iny-obj.c g aining/yolo 3- iny.weigh s
yolo 3- iny.con .15 15
Donde los dos úl imos pa áme os son, espec i amen e, el nomb e que ayamos a da le al a chi o de pesos
base, y el núme o de capas a “congela ” en és e. Si nos ijamos en la a qui ec u a de TinyYOLO 3 (Figu a 3-1)
pod emos e que, de hecho, las 15 p ime as capas son las p e ias a ejecu a la capa de de ección de YOLO, y
son las que aquí amos a “congela ”.
Con es e úl imo paso, ya enemos los es a chi os necesa ios pa a pode ejecu a el en enamien o en Da kne .
Recapi ulando, hemos comen ado:
El a chi o de da os, con la lis a de imágenes y la ca pe a de backups.
El a chi o de con igu ación, modi icado pa a el en enamien o y, en conc e o, pa a uno lige o en
memo ia y que minimice el iempo de ejecución.
El a chi o de pesos de pa ida, basado en el p e-en enado de TinyYOLO 3, ob enido median e
pa ial.
Pa a ejecu a el en enamien o, end íamos que llama a Da kne con los siguien es pa áme os:
$> da kne de ec o ain <a chi o de da os> <a chi o de con igu ación>
<a chi o de pesos base>
Comple ando cada uno de los campos en e <…> con el a chi o co espondien e. Es o inicia ía di ec amen e el
en enamien o, y po pan alla comenza ía a e se el log gene ado, que in o ma poco a poco de cómo a
p og esando és e. Sin emba go, como noso os necesi amos u iliza dicho log pa a o as a eas, en nues a
ejecución pa icula edi igi emos la salida del p og ama a un a chi o de ex o, que se á el que usemos pa a
gene a g á icas median e el sc ip . Además, como p e emos un en enamien o la go, no es con enien e liga la
ejecución de Da ken a la sesión de Linux en uso, ya que si hubie a cualquie p oblema con és a (que se apaga a
la e minal o se pa ase la sesión SSH con la que nos conec amos a la Raspbe y, po ejemplo) se de end ía el
63
p og ama. Po ello, u iliza emos el comando Nohup de Linux, que pe mi e que un p oceso se ejecu e sin sesión
alguna y se man enga en uncionamien o siemp e y cuando la máquina es é encendida.
La ejecución inal se lle a ía a cabo de la siguien e mane a, con los pa áme os conc e os pa a es e expe imen o:
$> nohup da kne de ec o ain aining/ca -dog.da a aining/yolo 3- iny-
obj.c g aining/yolo 3- iny.con .15 > esul s. x &
4.3.3 Resul ados y alidación
En o al, se han lle ado a cabo 30 p uebas de en enamien o sob e el mismo da ase , modi icando en e ellas los
hipe pa áme os u ilizados, y llegándose a p oba en los dos eposi o ios que en apa ados an e io es
mencionábamos, digi alb ain79 y el pe sonalizado, basado en shizukachan. En el Anexo F se adjun a una abla-
his ó ico de p uebas ealizadas, con oda la in o mación espec o al eposi o io en el que se ejecu a on, los
hipe pa áme os u ilizados, y las ano aciones omadas como conclusión o de alles de la p ueba.
De es as 30 p uebas, 26 no p og esa on debido a allos de Da kne , como se ha ecogido en la abla. En conc e o,
dos e an los allos más ecu en es que ob eníamos:
Segmen a ion Faul : Es un e o gene al de C que indica p incipalmen e que un p og ama in en a
accede a localizaciones de memo ia en las que ca ece de pe miso. En el caso de Da kne , es e e o
puede es a elacionado con el concep o conocido como uga de memo ia (memo y leak), po el cual un
p og ama no es capaz de ges iona su uso de memo ia co ec amen e, gene almen e no libe ando la
memo ia que ya no necesi a.
Realloc E o : ealloc() es una unción de C que pe mi e edimensiona un espacio de memo ia
ese ado. Es e e o se da cuando el edimensionamien o no puede lle a se a cabo po di e sas azones,
po ejemplo, la al a de memo ia.
Con el in de localiza dónde es aban su giendo es os e o es, se modi icó lige amen e el código uen e pa a que
imp imie a po pan alla las di e en es unciones que se iban ejecu ando, de al mane a que pudié amos iden i ica
exac amen e en qué pun o el p og ama allaba. Un ejemplo de la salida de Da kne du an e es e p oceso pod ía
se el siguien e, donde además, podemos obse a cómo se p esen a la in o mación de una i e ación (índice,
e o ob enido, media o al del e o , a io de ap endizaje, iempo a dado, y núme o de imágenes o ales desde
el comienzo de la ejecución):
540: 0.603852, 1.090611 a g loss, 0.000085 a e, 1.665769 seconds, 540 images
[DEBUG] i i e a ion 540
[DEBUG] F eeing da a
[DEBUG] Joining h ead
[DEBUG] Loading a gumen s
[DEBUG] T aining ne wo k
[DEBUG] S a ing ain_ne wo k_wai key
[DEBUG] Running xcalloc o X and Y
[DEBUG] Ba ches i e a ion 0
[DEBUG] S a ing ge _nex _ba ch
[DEBUG] Exi ing ge _nex _ba ch
[DEBUG] Ba ch image wi h code: 0
[DEBUG] S a ing ain_ne wo k_da um
[DEBUG] S a ing o wa d_ne wo k
[DEBUG] Exi ing o wa d_ne wo k
[DEBUG] S a ing backwa d_ne wo k
[DEBUG] Exi ing backwa d_ne wo k
[DEBUG] S a ing upda e_ne wo k
[DEBUG] Exi ing upda e_ne wo k
[DEBUG] Exi ing ain_ne wo k_da um
[DEBUG] Exi ing ain_ne wo k_wai key
[DEBUG] Ge ing cu en ba ch
Sin emba go, los esul ados inales no ue on cla os, ya que en algunas ocasiones los e o es sal aban a la ho a
de ese a espacio pa a ca ga nue as imágenes mien as que en o as sucedían a la ho a de c ea las es uc u as
de da os pa a ges iona las capas de la ed. Finalmen e, como no es obje i o de es a memo ia abaja
di ec amen e con el código de Da kne , y a endiendo a que los e o es es aban di ec amen e elacionados con la
ges ión de la memo ia, un p oblema que ya sabíamos que podía ocu i dada las condiciones de la Raspbe y, se
decidió p ocede simpli icando poco a poco los hipe pa áme os de la ed, a ando de que ue an lo menos
pe judiciales en memo ia (po ejemplo, educiendo el núme o de lo es y el amaño de los olúmenes de en ada
a la ed), y analizando cómo iban e olucionando los esul ados.
La p ime a p ueba que se consiguió lle a a cabo sin un allo del p og ama se ealizó con los mínimos pa a cada
uno de los hipe pa áme os di ec amen e in oluc ados; en conc e o, lo es de una sola imagen, sin mini-lo es
(subdi isions = ba ches = 1), y con el amaño de imagen mínimo disponible, que es de 32x32 (pa a
pe mi i que sea di isible en e 32, como exige YOLO). És a es una ap oximación bas an e pob e, ya que las
imágenes del da ase usado, aunque a iadas en amaño, suelen ene uno de los lados igual a 500 píxeles, po
lo que al ene que con e i las se pie de calidad en és as ( e Figu a 4-6), como mencionábamos en las p uebas
de in e encia.
Figu a 4-6. Imagen o iginal con a imagen pe cibida po la ed al ealiza la edimensión
El esul ado del en enamien o as al ededo de 24 ho as puede obse a se en la g á ica a con inuación, donde
en en amos las i e aciones con el e o de en enamien o:
$> py hon3 plo e .py esul s/ esul s-1. x
Figu a 4-7. P ueba 1, e olución de las pé didas en unción de las i e aciones
65
El núme o de i e aciones o ales del expe imen o ue de 3998, lo que, dados los hipe pa áme os, supone apenas
una época ( eco demos que el núme o de imágenes del da ase es de 3700, y una época sucede cuando odas las
imágenes del da ase ienen la opo unidad de ac ualiza los pa áme os de la ed). Sin emba go, como podemos
obse a en la g á ica, a pa i de las 2700 i e aciones, el e o de en enamien o comienza a inc emen a se has a
llega a 1037, momen o en el cuál dejan de ep esen a se más alo es, dando la sensación de que el en enamien o
se pa a en onces. En la salida es ánda de Da kne pod íamos e has a donde a anzó ealmen e el
en enamien o:
3998: in , in a g loss, 0.000010 a e, 1.664737 seconds, 3998 images
Es e es un compo amien o ex año, ya que no hay una azón especí ica que pueda causa es e inc emen o adical
del e o . Si po o o lado obse amos el esul ado de es a p ueba eliminando la pa e inal, ob enemos algo
mucho más aco de al uncionamien o gene al de un en enamien o:
$> py hon3 plo e .py esul s/ esul s-1. x –xmax 900
Figu a 4-8. P ueba 1, e olución de las pé didas en e a las p ime as 900 i e aciones
Donde el e o a educiéndose a medida que las imágenes alimen an la ed, aco de a lo que explicábamos que
sucede ía en capí ulos an e io es. Es de no able obse ación, además, que, al habe con igu ado la ed con lo es
de una sola imagen, el modelo se ha uel o un g adien e descendien e es ocás ico, y podemos ad e i los picos
y luc uaciones an adicales del e o , cosa que señalábamos que sucede ía en la Figu a 2-9.
Po o o lado, las p uebas de in e encia ealizadas con los pesos a las 1000 i e aciones, que es el p ime backup
que el eposi o io de digi alb ain79 gene a y, aco de a la g á ica, el que menos e o de en enamien o debe ía
p esen a , no da ningún esul ado; es deci , no se de ec a nada en ninguna de las imágenes en las que se ha
p obado. Pese a que no es una no ma gene al, el hecho de que a esa al u a an solo 1000 imágenes del da ase
hayan en enado la ed sumado a la con igu ación de los hipe pa áme os (en conc e o, el habe educido dichas
imágenes a 32x32), pueden se la causa p incipal.
Vol iendo al excepcional compo amien o de la g á ica de la Figu a 4-7, se p oponen las siguien es azones que
pod ían jus i ica lo:
De o ma gene al, pod ía es a causado po lo conocido como g adien es explosi os (exploding
g adien s). Es e es un p oblema que sucede en edes neu onales basadas en g adien es y p opagación
hacia a ás, y se ca ac e iza po que los pesos son ac ualizados de o ma adical, con g andes inc emen os
o dec emen os, p o ocando que el e o de en enamien o se al e e has a esul a en alo es inde inidos,
que se ían lo que en la g á ica es amos in e p e ando como in ini o. Aunque la de inición es ic a es más
ex ensa, el e ec o p o ocado es simila al que es amos ob eniendo. En e las posibles soluciones, des aca
ediseña el modelo de la ed; u iliza egula ización de pesos, penalizando e impidiendo que és os se
ac ualicen de o ma d ás ica; o aplica g adien clipping ( eco e de g adien e), que es simila a la
egula ización de pesos pe o limi a las a iaciones g andes del g adien e.
De o ma especí ica, el p oblema puede es a di ec amen e elacionado con la implemen ación de
Da kne o con la ed de TinyYOLO 3. A su ez, el da ase , la con igu ación de hipe pa áme os o los
pesos de pa ida que u ilizamos pod ían es a causándolo.
Finalmen e, pod ía es a elacionado, de alguna o ma, con los p oblemas de memo ia que ambién
causaban los e o es comen ados al comienzo de es a sección.
En las sucesi as p uebas que ue on ealizadas sin e o es de memo ia y de las que se pudo ob ene g á icas se
obse a ambién es e compo amien o, como e emos a con inuación. De igual mane a, ninguno de los pesos
de backup gene ados en las mejo es si uaciones de pé didas de en enamien o die on esul ados posi i os en la
in e encia. Aun así, es as p uebas han se ido pa a analiza poco a poco el compo amien o de la ed a medida
que se iban mejo ando los hipe pa áme os, y con ello es udia la e olución del e o de en enamien o du an e
las p ime as i e aciones y épocas (an es de que las pé didas se hicie an in ini as) y medi la du ación de es os
en enamien os.
Con es os obje i os en men e, la segunda p ueba ealizada sob e la dis ibución de digi alb ain79 se lle ó a cabo
con un núme o de imágenes po lo e igual a 64, que es el alo ecomendado pa a el en enamien o de
TinyYOLO 3. Man eniendo el núme o de subdi isiones a 1, con e íamos el modelo en un g adien e
descenden e po lo es, y es o se e e lejado en la g á ica, que es más “sua e” que la que ep esen ábamos
an e io men e:
$> py hon3 plo e .py esul s/ esul s-2. x
$> py hon3 plo e .py esul s/ esul s-2. x -xmax
Figu a 4-9. P ueba 2, e olución de las pé didas en e a las i e aciones ( o al y p ime as 800)
Es a p ueba se lle ó a cabo du an e 1004 i e aciones, lo que suponen 17 épocas ( ep esen adas a con inuación)
y omó al ededo de 26 ho as. Podemos obse a que ob enemos unos alo es mínimos de pé didas in e io es a
1’25, simila es a los que ob eníamos en la p ueba an e io , en una can idad de iempo ambién simila , pe o en
es e caso habiendo u ilizado muchas más imágenes pa a en ena la ed (unas 51200).
67
$> py hon3 plo e .py esul s/ esul s-2. x –x epoch
$> py hon3 plo e .py esul s/ esul s-2. x –x epoch -xmax
Figu a 4-10. P ueba 2, e olución de las pé didas en e a las épocas ( o al y p ime as 14)
Pa a la e ce a p ueba se cambió de dis ibución, de digi alb ain79 a shizukachan ( e sión pe sonalizada),
p incipalmen e pa a comp oba si el en enamien o uncionaba de di e en e mane a y si daba mejo es esul ados.
Una de las p incipales en ajas es que la e sión de shizukachan c ea los pesos de backup cada 100 i e aciones,
lo que daba más opo unidades pa a p oba si en algún momen o la ed es aba lo su icien emen e en enada como
pa a p oba la en in e encia.
En is a de que los modelos es ocás ico y po lo es se habían podido lle a a cabo, y siendo es e úl imo
especialmen e impo an e po que suponía una buena ges ión de la memo ia, pa a las siguien es p uebas se
comenzó a u iliza el sis ema po mini-lo es, que como ya se explicó, es más ecomendable. En conc e o, se
c ea on mini-lo es de 4 imágenes ( amaño de lo e igual a 64, 16 subdi isiones), que es lo ecomendado pa a
TinyYOLO 3. De igual mane a que con las p uebas an e io es, podemos obse a que la g á ica co esponde a
lo p e is o pa a es e ipo de g adien e: un pun o media en e la de SGD y la de lo es.
$> py hon3 plo e .py esul s/ esul s-3. x
$> py hon3 plo e .py esul s/ esul s-3. x -xmax
Figu a 4-11. P ueba 3, e olución de las pé didas en e a las i e aciones ( o al y p ime as 400)
$> py hon3 plo e .py esul s/ esul s-3. x –x epoch
$> py hon3 plo e .py esul s/ esul s-3. x –x epoch -xmax
Figu a 4-12. P ueba 3, e olución de las pé didas en e a las épocas ( o al y p ime as 5)
En es e caso, la p ueba se lle o a cabo du an e 970 i e aciones (ce ca de 17 épocas), con un e o de
en enamien o mínimo de 4’5 y una du ación de 35 ho as.
La úl ima p ueba lle ada a cabo, ambién sob e la dis ibución de shizukachan pa a pode p oba los pesos de
backup con más ecuencia, se ealizó con la misma con igu ación de lo es y mini-lo es, pe o aumen ando el
amaño de las imágenes. Has a aho a, és e se había man enido en 32x32, lo cuál hacía que los esul ados
ob enibles no ue an especialmen e alen ado es debido a la edimensión de las imágenes de en ada, pe o a su
ez sob eca gaban lo mínimo la memo ia. Pa a es a p ueba, se aumen ó has a 128x128, el cuád uple, aunque
seguía suponiendo un 70% del amaño o iginal de las imágenes. Aun así, el obje i o seguía siendo no causa
allos en memo ia. Los esul ados ue on:
$> py hon3 plo e .py esul s/ esul s-4. x
$> py hon3 plo e .py esul s/ esul s-4. x -xmax
Figu a 4-13. P ueba 4, e olución de las pé didas en e a las i e aciones ( o al y p ime as 600)
69
$> py hon3 plo e .py esul s/ esul s-4. x –x epoch
$> py hon3 plo e .py esul s/ esul s-4. x –x epoch -xmax
Figu a 4-14. P ueba 4, e olución de las pé didas en e a las épocas ( o al y p ime as 9)
Podemos obse a que la cu a sigue un cu so muy simila al de la g á ica an e io , dec eciendo poco a poco
has a un mínimo ce cano a 4’5. Las luc uaciones del e o debido al modelo po mini-lo es son menos
ap eciables, p obablemen e debido a que en es e caso comenzamos con un e o mucho mayo . En gene al, an es
de las 6/7 épocas, pod íamos deci que es amos an e una e olución a o able del e o . Sin emba go, es a p ueba
se ex endió du an e 75 ho as, comenzando a p oduci se el inc emen o del e o has a in ini o a las 50. Es de
supone que, si seguimos aumen ando el amaño de las imágenes de en ada, es e iempo se segui ía iendo
inc emen ado, quizá ob eniendo mejo es esul ados, pe o no haciendo iable el en enamien o. Si bien los
en enamien os de edes neu onales pueden llega a ex ende se semanas incluso en condiciones a o ables
(sob e disposi i os espcializados, po ejemplo), las condiciones de es os en enamien os suelen se más ealis as
de las que lo han sido pa a es e expe imen o (da ase de pocas imágenes y clases, olúmenes de en ada
ajus ados…); po lo que en es e pun o se decidió cesa con las p uebas. Fu u os ace camien os pod ían habe
a ado de:
Segui aumen ando el amaño de las imágenes, lo que hab ía inc emen ado a su ez la du ación del
en enamien o.
Cambia el a chi o de pesos base, o “congela ” menos capas, po ejemplo, 11 en ez de 15,
pe mi iéndose así la especialización de algunas capas p e ias a la de de ección de YOLO.
Cambia de da ase , po ejemplo, po uno donde los obje os a de ec a es u ie an más cla os, o dichos
obje os ue an más simples, quizá incluso a ando de de ec a una sola clase.
P oba la ejecución con alidación, aunque hab ía que comp oba p e iamen e si es ac ible sin allos
de memo ia.
A modo de esumen de odo el expe imen o, se adjun a la siguien e abla, donde se han indicado cada uno de los
obje i os que se ma caban al comienzo de la sección, con sus esul ados y obse aciones:
FLAIRS con e ence, 2003, pp. 356-360.
[51]
M. J. Pa k y B. Chul Ko, «Two-S ep Real-Time Nigh -Time Fi e De ec ion in an U ban En i onmen
Using S a ic ELASTIC-YOLO 3 and Tempo al Fi e-Tube,» Senso s, ol. 20, p. 2202, 4 2020.
77
ANEXO A: PREPARACIÓN RASPBERRY PI
Se lis an y de allan a con inuación los pasos a segui pa a ins ala y p epa a una Raspbe y Pi 3 B al y como la
que se ha u ilizado en es e p oyec o.
En p ime luga , se eque i á ins ala el sis ema ope a i o necesa io, que se á un Raspbe y Pi OS Li e, en una
a je a SD (se ecomienda que sea de 32GB, pa a e i a p oblemas de memo ia). Pa a ello, se p opone desca ga
el ins alado o icial de Raspbe y, Raspbe y Pi Image desde la página web o icial
(h ps://www. aspbe ypi.o g/downloads/), y a con inuación segui las ins ucciones acili adas en
h ps://www. aspbe ypi.o g/blog/ aspbe y-pi-image -imaging-u ili y/. El SO necesa io es a á en el menú de
selección de sis ema ope a i o, den o del g upo Raspbe y Pi OS (o he ).
Una ez desca gado, la a je a SD se in oduci á en la Raspbe y y es á debe á se conec ada a una uen e de
alimen ación y encendida. Pa a la con igu ación inicial del sis ema ope a i o se á ecomienda dispone de un
moni o y un eclado, que debe án se conec ados a la Raspbe y. En líneas gene ales, maneja emos la Raspbe y
median e una conexión SSH, pe o pa a la pues a en ma cha no end emos acceso po esa ía, po lo que se á
necesa io accede a ella di ec amen e.
Una ez encendida, end emos que espe a a que nos pida el inicio de sesión, con la siguien e línea:
aspbe ypi login:
Po de ec o, el usua io es pi y la con aseña (que la pedi á a con inuación) aspbe y. Una ez in oducidos
ambos, pod íamos comenza a p epa a la. Como es amos usando una e sión lige a del sis ema ope a i o (pa a
op imiza al máximo el consumo de memo ia), end emos que con igu a la manualmen e. Pa a ello,
comenza emos usando el comando aspi-con ig, con el que ajus a emos el país y el eclado y nos
conec a emos a in e ne . Es posible que debido a la con igu ación del eclado po de ec o en inglés, el guion
simple (-) no es é en la ecla co espondien e, sino en la de cie e de in e ogación (?).
$> sudo aspi-con ig
Se nos ab i á un menú po el que pod emos na ega con las lechas de eclado y selecciona pulsando la ecla
En e .
Lo p ime o que con end ía hace es cambia las opciones de localización (Localisa ion Op ions, menú
4). En es e menú podemos an o cambia el idioma como la con igu ación del eclado; nos cen a emos en es a
úl ima. P esionamos En e pa a accede al menú de localización, y luego na egamos has a la opción Change
Keyboa d Layou . Nos aslada á a la con igu ación del eclado. En la p ime a en ana man enemos la opción
que apa ezca po de ec o (debe ía de ec a el eclado que es emos u ilizando), y pulsamos <OK>, que debe ía
apa ece en la en ana abajo a la de echa. En la siguien e en ana nos apa ece á el idioma del eclado, que po
de ec o debe ía se ‘English (UK)’. Na egamos has a O he , que nos ab i á o o menú en el que end emos
que selecciona Spanish. Vol e emos al menú an e io , aho a pa a selecciona la egión conc e a den o del
español. Escoge emos la p ime a de la lis a, que debe ía se ‘Spanish’. El es o de menús que nos apa ece án
los podemos deja con sus alo es po de ec o (‘The de aul o he keyboa d layou ‘ p ime o; ‘No
compose key‘ después). Una ez hecho es o, el eclado es a á co ec amen e con igu ado.
El siguien e paso es conec a nos a una ed. Aquí explica emos cómo conec a nos a una inalámb ica, como puede
se Wi-Fi. Busca emos el menú Ne wo k Op ions → Wi eless LAN, y selecciona emos el país
co espondien e, que debe ía se ‘ES Spain’. Nos pedi á a con inuación un SSID, que no es sino el nomb e de
la ed Wi-Fi a la que nos que emos conec a . Lo in oducimos y nos pedi á la cla e. No nos da á ningún mensaje
in o ma i o de si la conexión ha ido bien, así que end emos que con ia en que sí. Si no ue a así (lo
descub i íamos en pasos pos e io es), bas a ía con ca ga aspi-con ig o a ez y epe i es os pasos.
Una ez conec ado a una ed, con igu a emos la Raspbe y pa a que siemp e que se enciende ac i e una in e az
SSH po la que pode conec a nos a a és de cualquie e minal. Na egamos has a el menú In e acing
Op ions → P2 SSH y pulsamos <Yes> en el mensaje de ad e encia.
Finalmen e, salimos de aspi-con ig na egando has a la opción <Finish>. Nos pedi á einicia , a lo que le
di emos que sí. T as ello, ejecu amos el siguien e comando, des inado a ac ualiza paque es y lib e ías.
sudo ap -ge upg ade && sudo ap -ge upda e
Si odo unciona sin allos, end emos la Raspbe y lis a pa a p ocede a la ins alación de Da kne y YOLO.
Podemos desconec a aho a el moni o y el eclado, y conec a nos median e SSH desde algún p og ama
( end emos que conoce la IP de la máquina, pa a lo que podemos ejecu a el comando ip a y busca el alo
de ine en la en ada wlan0).
En es e p oyec o, odas las conexiones han sido ealizadas desde los p og amas WinSCP y PuTTY en Windows,
con los que podemos na ega en e a chi os (WinSCP), y ejecu a comandos y p og amas desde una e minal
(PuTTY). Ambos u ilizan SSH pa a lle a a cabo sus conexiones.
79
ANEXO B: ARCHIVO DE CONFIGURACIÓN DE
TINYYOLOV3
U ilizado po Da kne pa a conoce la a qui ec u a de TinyYOLO 3. Cons a de una sección de con igu ación
de la ed, y 23 secciones de capas.
[ne ]
# Tes ing
ba ch=1
subdi isions=1
# T aining
# ba ch=64
# subdi isions=16
wid h=128
heigh =128
channels=3
momen um=0.9
decay=0.0005
angle=0
sa u a ion = 1.5
exposu e = 1.5
hue=.1
lea ning_ a e=0.001
bu n_in=1000
max_ba ches = 500200
policy=s eps
s eps=400000,450000
scales=.1,.1
[con olu ional]
ba ch_no malize=1
il e s=16
size=3
s ide=1
pad=1
ac i a ion=leaky
[maxpool]
size=2
s ide=2
[con olu ional]
ba ch_no malize=1
il e s=32
size=3
s ide=1
pad=1
ac i a ion=leaky
[maxpool]
size=2
s ide=2
[con olu ional]
ba ch_no malize=1
il e s=64
size=3
s ide=1
pad=1
ac i a ion=leaky
[maxpool]
size=2
s ide=2
[con olu ional]
ba ch_no malize=1
il e s=128
size=3
s ide=1
pad=1
ac i a ion=leaky
[maxpool]
size=2
s ide=2
[con olu ional]
ba ch_no malize=1
il e s=256
size=3
s ide=1
pad=1
ac i a ion=leaky
[maxpool]
size=2
s ide=2
[con olu ional]
ba ch_no malize=1
il e s=512
size=3
s ide=1
pad=1
ac i a ion=leaky
[maxpool]
size=2
s ide=1
[con olu ional]
ba ch_no malize=1
il e s=1024
size=3
s ide=1
pad=1
ac i a ion=leaky
###########
[con olu ional]
ba ch_no malize=1
il e s=256
size=1
s ide=1
pad=1
ac i a ion=leaky
[con olu ional]
81
ba ch_no malize=1
il e s=512
size=3
s ide=1
pad=1
ac i a ion=leaky
[con olu ional]
size=1
s ide=1
pad=1
il e s=255
ac i a ion=linea
[yolo]
mask = 3,4,5
ancho s = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319
classes=80
num=6
ji e =.3
igno e_ h esh = .7
u h_ h esh = 1
andom=1
[ ou e]
laye s = -4
[con olu ional]
ba ch_no malize=1
il e s=128
size=1
s ide=1
pad=1
ac i a ion=leaky
[upsample]
s ide=2
[ ou e]
laye s = -1, 8
[con olu ional]
ba ch_no malize=1
il e s=256
size=3
s ide=1
pad=1
ac i a ion=leaky
[con olu ional]
size=1
s ide=1
pad=1
il e s=255
ac i a ion=linea
[yolo]
mask = 0,1,2
ancho s = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319
classes=80
num=6
ji e =.3
igno e_ h esh = .7
u h_ h esh = 1
andom=1
83
ANEXO C: SCRIPT DE DETECCIÓN RÁPIDA
Se de alla aquí el código de as _de ec .sh, esc i o en Bash, u ilizado pa a ejecu a una in e encia sob e una
imagen con la con igu ación es ánda de Da kne (con igu ación y da os de COCO Da ase ) y TinyYOLO 3;
como se menciona en la subsección 4.1.2.
h ps://gi hub.com/angmo p i/da kne - g/blob/mas e / as _de ec .sh
#!/bin/bash
# Fas da kne de ec using Tiny YOLO 3 con igu a ion and weigh s
# Recei es one pa ame e ha mus be an image om ./ es ing_images
# Checking co ec numbe o a gumen s
[[ $# -ne 1 ]] && { echo "Use: as _de ec .sh <image>"; exi 2; }
# Checking gi en image exis s and unning da kne
IMAGE="$1"
i [ - "$IMAGE" ]; hen
./da kne de ec c g/yolo 3- iny.c g yolo 3- iny.weigh s "$IMAGE"
else
IMAGE=" es ing/$IMAGE"
i [ - "$IMAGE" ]; hen
./da kne de ec c g/yolo 3- iny.c g yolo 3- iny.weigh s "$IMAGE"
else
echo "$IMAGE does no exis ."
i
i
85
ANEXO D: SCRIPT PARA PRUEBAS DE
INFERENCIA
Se p esen a el código de ec .py, esc i o en Py hon, pa a lle a a cabo las p uebas de in e encia sob e a ias
imágenes, como se explica en la subsección 4.1.3 y pos e io men e se u iliza en la sección 4.2.
h ps://gi hub.com/angmo p i/da kne - g/blob/mas e /de ec .py
1. #!py hon3
2. #-*- coding: u -8 -*-
3. """
4. Código pa a in e encia de a ias imágenes con Da kne .
5. U iliza el mismo mecanismo que el código uen e de Da kne median e un
6. w appe esc i o en Py hon, basado en ./py hon/da kne .py.
7. Se han enido que añadi algunas unciones ex a en C, pa a pe mi i algunas
8. acciones que no podían se en uel as. Todas es as se hallan en
9. 's c/py_u ils.c'.
10.
11. C eado: 09 May 2020
12. Úl ima modi icación: 08 No 2020
13.
14. @au ho : Ángel Mo eno P ie o
15.
16. """
17. impo a gpa se
18. impo s a is ics as s a s
19. impo andom
20. impo ime
21. om c ypes impo *
22. om os impo lis di , mkdi
23. om os.pa h impo isdi , is ile, join, basename
24. om pp in impo pp in
25.
26.
27. # De iniciones necesa ias pa a el w appe con c ypes
28. class BOX (S uc u e):
29. _ ields_ = [("x", c_ loa ),
30. ("y", c_ loa ),
31. ("w", c_ loa ),
32. ("h", c_ loa )]
33.
34. class DETECTION (S uc u e):
35. _ ields_ = [("bbox", BOX),
36. ("classes", c_in ),
37. ("p ob", POINTER(c_ loa )),
38. ("mask", POINTER(c_ loa )),
39. ("objec ness", c_ loa ),
40. ("so _class", c_in )]
41.
42. class IMAGE (S uc u e):
43. _ ields_ = [("w", c_in ),
44. ("h", c_in ),
45. ("c", c_in ),
46. ("da a", POINTER(c_ loa ))]
47.
48. class METADATA (S uc u e):
49. _ ields_ = [("classes", c_in ),
50. ("names", POINTER(c_cha _p))]
51.
52. lib = CDLL("libda kne .so", RTLD_GLOBAL)
93
ANEXO E: SCRIPT PARA ANÁLISIS DE
ENTRENAMIENTO
Se incluye el código plo e .py, esc i o en Py hon, que si e pa a in e p e a los logs gene ados du an e el
en enamien o de Da kne y ep esen a g á icamen e los esul ados, como se de alla en la subsección 4.1.4 y se
u iliza en la sección 4.3.
h ps://gi hub.com/angmo p i/da kne - g/blob/mas e /plo e .py
1. #!py hon3
2. # -*- coding: u -8 -*-
3. """
4. Código pa a gene a g á icas in o ma i as sob e los esul ados de un
5. en enamien o con Da kne .
6. Pa e de los logs que Da kne gene a.
7. C eado: 08 Jun 2020
8. Úl ima modi icación: 03 No 2020
9. @au ho : Ángel Mo eno P ie o
10. """
11. impo a gpa se
12. impo ma plo lib.pyplo as pl
13.
14.
15. _TRAINING_IMAGES_FILE = "./ aining/ox o d-pe /ca -dog- ain. x "
16. TOTAL_IMAGES = 3688
17. DESCRIPTION = "Análisis de logs de en enamien o. nLos posibles pa áme os "
18. "pa a los ejes son: ba ch, loss, a g_loss, a e, ime, images y epoch"
19.
20.
21. class Ba ch (objec ):
22. """Clase Ba ch.
23. Almacena oda la in o mación disponible po cada lo e, es deci :
24. * loss ( loa ): Pé dida en en enamien o, de la úl ima i e ación.
25. * a g_loss ( loa ): Media de pé didas en en enamien o.
26. * lea ning_ a e ( loa ): Ra io de ap endizaje en la úl ima i e ación.
27. * ime_ aken ( loa ): Tiempo a dado en ejecu a la i e ación.
28. * images ( loa ): Núme o de imágenes p ocesadas.
29. * epoch (in ): Núme o de épocas desde el inicio.
30. """
31. de __ini __ (sel , line):
32. """Ob iene los pa áme os a pa i de la línea de log del ba ch."""
33. pa ams = [p.s ip() o p in line.spli (',')]
34. sel .ba ch = in (pa ams[0].spli (':')[0])
35. sel .loss = loa (pa ams[0].spli (':')[1])
36. sel .a g_loss = loa (pa ams[1].spli (' ')[0])
37. sel .lea ning_ a e = loa (pa ams[2].spli (' ')[0])
38. sel . ime_ aken = loa (pa ams[3].spli (' ')[0])
39. sel .images = loa (pa ams[4].spli (' ')[0])
40. sel .epoch = in (sel .images // TOTAL_IMAGES) # Calculada a mano.
41.
42. de ge XY (sel , x="ba ch", y="a g_loss"):
43. """De uel e dos alo es indicados como X e Y po su nomb e."""
44. i x == " ime": x = " ime_ aken"
45. i y == " ime": y = " ime_ aken"
46. i x == " a e": x = "lea ning_ a e"
47. i y == " a e": y = "lea ning_ a e"
48.
49. e x, e y = None, None
50. y:
51. e x = e al( "sel .{x}")
52. e y = e al( "sel .{y}")
53. excep A ibu eE o :
54. i e x is None:
55. p in ( "E o : El pa áme o '{x}' pa a el eje X no exis e")
56. eli e y is None:
57. p in ( "E o : El pa áme o '{y}' pa a el eje Y no exis e")
58.
59. e u n ( e x, e y)
60.
61. de __s __ (sel ):
62. """P esen a los da os ob enidos de o ma cla a."""
63. e = "Ba ch {sel .ba ch}: {sel .a g_loss} a g loss, {sel .loss} loss,"
64. e += " {sel .lea ning_ a e} a e, {sel . ime_ aken} segundos,"
65. e += " {sel .images} imágenes acumuladas, {sel .epoch} épocas."
66. e u n e
67.
68.
69. # Main
70. i __name__ == "__main__":
71. # A gumen os en línea de comandos:
72. pa se = a gpa se.A gumen Pa se (desc ip ion=DESCRIPTION)
73. pa se .add_a gumen ("log ile", help="a chi o de log del en enamien o")
74. pa se .add_a gumen ("-x", ype=s , de aul ="ba ch",
75. help="pa áme o del eje X")
76. pa se .add_a gumen ("-y", ype=s , de aul ="a g_loss",
77. help="pa áme o del eje Y")
78. pa se .add_a gumen ("-xmax", ype=in , de aul =None,
79. help="máximo alo en el eje X")
80. pa se .add_a gumen ("-xmin", ype=in , de aul =None,
81. help="mínimo alo en el eje X")
82. pa se .add_a gumen ("-ymax", ype=in , de aul =None,
83. help="máximo alo en el eje Y")
84. pa se .add_a gumen ("-ymin", ype=in , de aul =None,
85. help="mínimo alo en el eje X")
86. pa se .add_a gumen ("--cs ", ype=s , de aul =" esul s.cs ",
87. help="nomb e del a chi o de salida CSV")
88. pa se .add_a gumen ("--plo _ ile", ype=s , de aul =None,
89. help="nomb e del a chi o de la g á ica")
90. a gs = pa se .pa se_a gs()
91.
92. # Se ecogen las líneas ú iles del a chi o de log:
93. p in ("Fil ando log...")
94. ba ches = lis ()
95. log = open(a gs.log ile, ' ')
96. o line in log:
97. line = line.s ip()
98. i "a g" in line:
99. # Línea de ba ch, c eamos un nue o obje o Ba ch
100. ba ches.append(Ba ch(line))
101.
102. # Una ez se iene la lis a de ba ches, se p epa an los alo es de las
103. # g á icas a imp imi .
104. x alues = lis ()
105. y alues = lis ()
106. o ba ch in ba ches:
107. xy = ba ch.ge XY(a gs.x, a gs.y)
108. x alues.append(xy[0])
109. y alues.append(xy[1])
110.
111. p in ("P epa ando CSV")
112. p in ( " Eje X: {a gs.x}, Eje Y: {a gs.y}")
113. cs = open(a gs.cs , 'w')
114. o x, y in zip(x alues, y alues):
115. cs .w i e( "{x}, {y} n")
116. cs .close()
117. p in ( " CSV gua dado en {a gs.cs }")
118.
119. p in ("P epa ando g á ica")
95
120. xmax = a gs.xmax o loa ("in ")
121. xmin = a gs.xmin o loa ("-in ")
122. ymax = a gs.ymax o loa ("in ")
123. ymin = a gs.ymin o loa ("-in ")
124. subx alues = lis ()
125. suby alues = lis ()
126. o x, y in zip(x alues, y alues):
127. i (xmin < x < xmax) and (ymin < y < ymax):
128. subx alues.append(x)
129. suby alues.append(y)
130. ig = pl . igu e()
131. pl .plo (subx alues, suby alues)
132. pl .g id(T ue, lines yle=':')
133. pl .xlabel( "{a gs.x. eplace('_', ' ').capi alize()}")
134. pl .ylabel( "{a gs.y. eplace('_', ' ').capi alize()}")
135. pl . igh _layou ()
136. i no a gs.plo _ ile:
137. a gs.plo _ ile = "plo -{a gs.x}-{a gs.y}.png"
138. ig.sa e ig(a gs.plo _ ile, dpi=1000)
139. p in ( " G á ica gua dada en {a gs.plo _ ile}")
140. p in ("Finalizado!")
97
ANEXO F: HISTÓRICO DE PRUEBAS DE
ENTRENAMIENTO
Las con igu aciones de hipe pa áme os se mues an sólo cuando modi ican las que hubie a an e io men e.
También se han simpli icado los hipe pa áme os wid h y heigh po size.
Los allos causados po Realloc E o es án elacionados di ec amen e con p oblemas con la memo ia,
gene almen e po al a de ecu sos. Los allos Segmen a ion Faul son causados po p oblemas de memo ia, del
mismo modo que Realloc E o, pe o ambién po e o es al a a de ca ga imágenes co up as o al in en a
ejecu a las unciones de la ed neu onal si los amaños de en ada de las imágenes no son múl iplos de 32.
Dis ibución digi alb ain79
Fecha
Hipe pa áme os
modi icados
Resul ado
Obse aciones
22-may-20
ba ch=32
subdi ision=2
size=320x320
max_ba ches=500200
s eps=400000,450000
Realloc E o
P ime a p ueba, con igu ación es ánda .
22-may-20
-
Realloc E o
Fallo inmedia o. Posible solución, o za el
pun e o que hace ealloc() a NULL an es.
22-may-20
-
Segmen a ion Faul
Fallo inmedia o.
22-may-20
size=192x192
Segmen a ion Faul
384 imágenes.
22-may-20
ba ch=64
subdi isions=16
Realloc in alid old
size
Abo ed
640 imágenes. P oblema elacionado con la
memo ia. Posible solución, o za el pun e o
que hace ealloc() a NULL an es.
22-may-20
size=128x128
andom=0
Segmen a ion Faul
Pues o el pa áme o de YOLO andom a 0,
pa a e i a consumo de memo ia.
Fallo inmedia o, menos de 300 imágenes
22-may-20
ba ch=1
subidi isions=1
Segmen a ion Faul
Fallo inmedia o, menos de 300 imágenes
23-may-20
ba ch=64
subdi isions=16
size=96x96
Segmen a ion Faul
Fallo inmedia o, menos de 300 imágenes
23-may-20
max_ba ches=1000
s eps=800,900
size=256x256
Segmen a ion Faul
Fallo as 384 imágenes.
23-may-20
max_ba ches=6000
s eps=4800,5400
size=32x32
Segmen a ion Faul
Fallo as 4288 imágenes.
23-may-20
max_ba ches=1000
s eps=800,900
Segmen a ion Faul
Fallo inmedia o, ni siquie a 128 imágenes
23-may-20
subdi isions=32
max_ba ches=6000
s eps=4800,5400
Segmen a ion Faul
Fallo as 704 imágenes.
23-may-20
ba ches=32
subdi isions=8
Segmen a ion Faul
Fallo as 928 imágenes.
23-may-20
-
Segmen a ion Faul
Fallo as 928 imágenes. Se epi e el e o
p e io po lo que no es ci cus ancial.
23-may-20
ba ches=64
subdi isions=16
max_ba ches=4000
s eps=3200,3600
Segmen a ion Faul
Ejecu ado pa ial con la nue a
con igu ación y código 15.
Añadido po p ime a ez el pa áme o -clea
pa a bo a con igu aciones p e ias.
Fallo as 896 imágenes; 14 i e aciones.
23-may-20
max_ba ches=500200
s eps=400000,450000
Segmen a ion Faul
Valo es de max_ba ches y s eps o iginales.
Ejecu ando pa ial una ez más.
Fallo as 1152 imágenes; 18 i e aciones.
23-may-20
subdi isions=8
max_ba ches=4000
s eps=3200,3600
Segmen a ion Faul
Añadido pa áme o ex a '1'.
Fallo as 256 imágenes, 4 i e aciones.
23-may-20
ba ches=24
subdi isions=1
Segmen a ion Faul
Fallo as 552 imágenes, 23 i e aciones.
23-may-20
ba ches=128
subdi isiones=1
Segmen a ion Faul
Fallo as 1536 imágenes, 12 i e aciones.
23-may-20
ba ches=1
Segmen a ion Faul
Fallo as 290 imágenes, 290 i e aciones.
01-jun-20
-
Segmen a ion Faul
Fallo as 2703 imágenes, 2703 i e aciones.
En "T aining ne wo k".
01-jun-20
-
Segmen a ion Faul
Fallo as 1105 imágenes, 1105 i e aciones.
En "S a ing ge _nex _ba ch" i e ación 0.
01-jun-20
ba ches=64
subdi isions=64
Segmen a ion Faul
T as 1024 imágenes, 16 i e aciones.
En "S a ing ge _nex _ba ch".
01-jun-20
-
Segmen a ion Faul
Ejecu ando dos eces seguidas pa a e si el
allo es á elacionado con una imagen en
conc e o.
P ime allo as 2880 imágenes, 45
i e aciones. Mismo luga , hipo é ica imagen
dog_1388.jpg.
Segunda p ueba inconclusa: analizando el
código, se e que el e o no es á ahí.
01-jun-20
ba ches=1
subdi isions=1
Segmen a ion Faul
Fallo as 1779 i e aciones, 1779 imágenes.
E o al ca ga la úl ima imagen con la que
iba a en ena , pa ece que ye a cuando se
encuen a con una imagen co up a.
99
01-jun-20
-
Pa ado, pe o
uncionaba
Eliminadas imágenes que causaban allo (se
gua daban en un iche o bad.lis ).
Finaliza, pe o los pesos gene ados no
uncionan en in e encia.
02-jun-20
ba ches=64
max_ba ches=6000
s eps=4800,5400
Pa ado, pe o
uncionaba
Ejecu ado pa ial.
Co ado a las 1000 i e aciones, as unas 26
ho as uncionando co ec amen e. Los
esul ados pa a los pesos a las 1000
i e aciones no gene an ningún esul ado al
usa los pa a in e encia.
Dis ibución shizukachan / pe sonalizado
Fecha
Hipe pa áme os
modi icados
Resul ado
Obse aciones
04-jun-20
subdi isions=16
Pa ado, pe o
uncionaba
P obando si shizukachan admi e el
en enamien o.
Pa ado as 270 i e aciones, unciona simila
a digi alb ain79.
05-jun-20
-
Pa ado po no
ap endizaje
Ejecu ando du an e 1000 i e aciones. Pa ado
a las 970, as 35 ho as.
A pa i de las 670 i e aciones deja de
ap ende (el e o empieza a se in ini o)
07-jun-20
size=128x128
Pa ado po no
ap endizaje
Ejecu ado pa ial.
Una ez más a pa i de las 670 i e aciones
(10 épocas), deja de ap ende y aumen a el
loss has a in ini o.
101
ANEXO G: CÓDIGO AUXILIAR EN C PARA SCRIPT
DE INFERENCIA
Se incluyen a con inuación los códigos auxilia es esc i os en C pa a la dis ibución Da kne u ilizada, que
pe mi en que el sc ip de ec .py (Anexo D) uncione co ec amen e, como se explica en la subsección 4.1.3.
Código de la cabece a py_u ils.h (h ps://gi hub.com/angmo p i/da kne - g/blob/mas e /s c/py_u ils.h):
1. /*
2. Funciones auxilia es en C pa a w appe (cabece a)
3.
4. C ea ed: 09 May 20
5. Las modi ied: 08 No 20
6. */
7. #i nde PYUTILS_H
8. #de ine PYUTILS_H
9.
10. #include "da kne .h"
11. #include "image.h"
12.
13. /* Decla a ions */
14. image py_load_image_ h ead (cha * ilename, ne wo k *ne );
15. image py_le e box_image_ h ead (image img, ne wo k *ne );
16.
17. oid py_se _ne _ h eadpool (ne wo k *ne );
18. oid py_ ee_ne _ h eadpool (ne wo k *ne );
19.
20. oid py_d aw_p edic ions (image im, de ec ion *de s, in nboxes, loa h esh,
21. cha **names, in classes, cons cha *ou ile);
22.
23. #endi
Código del cue po py_u ils.c (h ps://gi hub.com/angmo p i/da kne - g/blob/mas e /s c/py_u ils.c):
1. /*
2. Funciones auxilia es en C pa a w appe (cue po)
3.
4. C ea ed: 09 May 20
5. Las modi ied: 08 No 20
6. */
7. #include "py_u ils.h"
8.
9. /* De ini ions */
10. image py_load_image_ h ead (cha * ilename, ne wo k *ne ) {
11. // Loads an image in a di e en h ead.
12. e u n load_image_ h ead( ilename, 0, 0, ne ->c, ne -> h eadpool);
13. }
14.
15. image py_le e box_image_ h ead (image img, ne wo k *ne ) {
16. // Resizes an image in a di e en h ead and e u ns.
17. e u n le e box_image_ h ead (img, ne ->w, ne ->h, ne -> h eadpool);
18. }
19.
20. oid py_se _ne _ h eadpool (ne wo k *ne ) {
21. #i de QPU_GEMM
22. ne -> h eadpool = p h eadpool_c ea e(1);
23. #else
24. ne -> h eadpool = p h eadpool_c ea e(4);