scieee Science in your language
[es] (orig)

Percepción de la acción en una imagen mediante algoritmos de aprendizaje automático

Abstract

El tratamiento digital de imágenes y vídeos es una rama que ha sido explotada y de la que se ha realizado múltiples investigaciones y desarrollos, llegando a un punto en el que se centra más en optimizar y mejorar el rendimiento de estos procesos. Estamos entrando en unos años donde se cree que la próxima gran revolución tecnológica viene de la mano junto con la inteligencia artificial. Cada vez son más los divulgadores de estas tecnologías y son más los usos que se le están dando. En concreto, el ámbito de Deep Learning está siendo impulsado junto con los avances en procesamientos de datos y en potencia computacional que cada vez están a disposición de más personas. Uno de los tantos campos de aplicación de redes neuronales es en el procesamiento de vídeo donde se están rompiendo nuevas barreras gracias a estas redes, consiguiendo obtener resultados de problemas que requieren de cierta abstracción. El objetivo de este documento consiste en valernos de estas herramientas para que una inteligencia artificial sea capaz de reconocer una acción específica a través de una simple imagen.

Read accessible full text

Percepción de la acción en una imagen mediante algoritmos de aprendizaje automático

Author: Navarro De La Cruz, Alejandro
Year: 2022
Source: https://idus.us.es/bitstreams/752271dc-f1a1-4d2c-817c-408cb58b22c3/download
Equa ion Chap e 1 Sec ion 1
P oyec o Fin de Ca e a
Ingenie ía de las Tecnologías de
Telecomunicación
Pe cepción de la acción en una imagen median e
algo i mos de ap endizaje au omá ico
Au o : Alejand o Na a o De La C uz
Tu o : Rubén Ma ín Clemen e
Dp o. Teo ía de la Señal y Comunicaciones
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, 2022
iii
P oyec o Fin de Ca e a
Ingenie ía de Telecomunicación
Pe cepción de la acción en una imagen median e
algo i mos de ap endizaje au omá ico
Au o :
Alejand o Na a o De La C uz
Tu o :
Rubén Ma ín Clemen e
P o eso i ula
Dp o. de Teo ía de la Señal y Comunicaciones
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, 2022
P oyec o Fin de Ca e a: Pe cepción de la acción en una imagen median e algo i mos de ap endizaje
au omá ico
Au o :
Alejand o Na a o De La C uz
Tu o :
Rubén Ma ín Clemen e
El ibunal nomb ado pa a juzga el P oyec o a iba indicado, compues o po los siguien es miemb os:
P esiden e:
Vocales:
Sec e a io:
Acue dan o o ga le la cali icación de:
Se illa, 2022

El Sec e a io del T ibunal
ii
A mi amilia
A mis maes os
ix
Ag adecimien os
Me gus a ía ag adece a muchas pe sonas, an o po es os años de ca e a como po es os meses de desa ollo
del p oyec o.
A esos p o eso es de ca e a que dis u an ansmi iendo sus conocimien os con paciencia y exigiendo a los
alumnos, sois los que me habéis hecho ap ende ealmen e y los que me habéis mo i ado a es a aquí.
A mi u o po p opone es e ema y ayuda me a amplia mi isión y mis opo unidades en un campo que an es
ni me plan eaba in es iga y del que aho a quie o en oca mi ca e a.
A Ja ie y F ancisco po apoya me y ayuda me a deduci soluciones du an e es e abajo. A mis compañe os y
amigos de ca e a que, sin mayo mo i o que el de ayuda a o os, gene an un ambien e p oac i o en el que
enseña y ap ende en e noso os. A mis amigos que du an e es os años me han hecho c ece como pe sona.
Y inalmen e a mi pad es, Ped o y Dolo es, y a mi he mana, Naza e , po c ee en mí incluso más que yo mismo
y b inda me odas las opo unidades, el apoyo y el ca iño que me han sabido da sin espe a nada a cambio.
Alejand o Na a o De La C uz
Se illa, 2022
ÍNDICE DE FIGURAS
Figu a 2-1. MATLAB [2] 4
Figu a 2-3. C [4]. 5
Figu a 2-4. Py hon [6]. 5
Figu a 2-5. Visual S udio Code [8]. 6
Figu a 2-6. OpenCV [9]. 6
Figu a 2-7. Da inci Resol e [12]. 7
Figu a 2-8. G á ica de lenguajes de p og amación más demandados [13]. 7
Figu a 2-9. Imagen de pa ido de enis [14]. 8
Figu a 2-10. Imagen de hal e o ilia [14]. 9
Figu a 2-11. Imagen de i o con a co [14]. 9
Figu a 2-12. Di e encias de mo imien o seguido [15]. 10
Figu a 2-13. Rep esen ación 3D y 2D del lujo óp ico [16]. 10
Figu a 2-14. Ejemplo lujo de óp ico ob enido con OpenCV [17]. 11
Figu a 2-15. Rep esen ación de soluciones según los alo es de lambda po el mé odo de Lucas-Kanade [18].
15
Figu a 2-16. Rep esen ación de soluciones según los alo es de lambda po el mé odo de Shi-Tomasi [20].
16
Figu a 2-17. Imagen de pa ido de enis emi ido po RTVE [14] 17
Figu a 2-18. Imagen di e encia ob enida as p ocesa la. 17
Figu a 2-19. Vis a gene al de la in e az desa ollada con Tkin e . 19
Figu a 2-20. Vis a del Slide en la in e az desa ollada con Tkin e . 21
Figu a 2-21. Vis a de los Spinboxs en la in e az desa ollada con Tkin e . 21
Figu a 2-22. Vis a de isualiza de imágenes en la in e az desa ollada con Tkin e . 23
Figu a 2-23. Vis a de bo ón de ab i a chi os en la in e az desa ollada con Tkin e . 23
Figu a 2-24. Vis a de la sección dedicada a los pa áme os del cálculo de esquinas en la in e az desa ollada con

x ii
Tkin e . 25
Figu a 2-25. Vis a del que calcula la di e encia de imágenes en la in e az desa ollada con Tkin e . 27
Figu a 2-26. Vis a de la sección dedicada a los pa áme os del lujo óp ico en la in e az desa ollada con Tkin e .
31
Figu a 2-27. Resul ado de lujo óp ico. 31
Figu a 3-1. Jupy e [27]. 34
Figu a 3-3. Visual S udio Code [8]. 34
Figu a 3-4. Tenso Flow [29]. 35
Figu a 3-5. Ke as [30]. 35
Figu a 3-6. In eligencia a i icial, ap endizaje au omá ico y ap endizaje p o undo [31]. 36
Figu a 3-7. Es uc u a de ed básica [25]. 37
Figu a 3-8. Ejemplo de lujo óp ico de i o con a co. 40
Figu a 3-9. Tipos de esul ados [25]. 45
Figu a 3-10. Ma iz de con usión y esul ados del modelo p opio. 46
Figu a 3-11. Ma iz de con usión y esul ados del modelo con MobileNe V2. 46
Figu a 3-12. Ma iz de con usión y esul ados del modelo con VGG16. 46
Figu a 3-13. Ma iz de con usión y esul ados del modelo con modelo basado en MNIST. 46
Figu a 3-14. Resul ados de sco ings en el es de p ueba con modelo p opio. 47
Figu a 3-15. Resul ados de sco ings en el es de p ueba con MobileNe V2. 47
Figu a 3-16. Resul ados de sco ings en el es de p ueba con VGG16 48
Figu a 3-17. Resul ados de sco ings en el es de p ueba con modelo basado en MNIST. 48
xix
1
1 INSTRUCCIONES PARA CUBIERTA Y PORTADA
l obje i o de es e abajo es c ea algún mé odo con el que plasma en una imagen un mo imien o o una
acción. Con es as imágenes e ique adas según lo que ep esen a an se ía con lo que luego en ena íamos
a la IA (In eligencia A i icial) pa a que clasi ique es os mo imien os según la acción que ep esen e.
No malmen e se suelen sepa a es as pa es Po un lado, exis en emp esas, depa amen os o en idades que se
dedican a la ecogida de da os y po o o encon amos a aquellos que usan es os da os pa a c ea edes neu onales.
En el caso de es e abajo, se p e ende ealiza el p oceso comple o y ob ene una isión gene al de ambas pa es.
Po lo an o, se plan ea a ias cosas:
• ¿Qué acciones o mo imien os quie o plasma ?
• ¿Cómo e leja ese mo imien o en una sola imagen?
• ¿Qué he amien as usa ?
• ¿Cuál es el esul ado que quie o ob ene ?
• ¿Qué es el Deep Lea ning?
• ¿Cómo consigo que una in eligencia a i icial ap enda a di e encia las acciones?
Es as son p egun as que i é espondiendo poco a poco.
E

Ins ucciones pa a Cubie a y Po ada
2
3
2 CREACIÓN DE DATASETS DE IMÁGENES
n es de in oduci nos en el campo de Machine Lea ning debemos plan ea nos: qué a a p edeci la
máquina, pone en oco cuál a a se el es udio po ealiza ; qué da os nos ha án al a, los cuáles se án la
uen e con la que en ena a un modelo; y cómo ob ene es os da os, c ea un da ase pa a pasa a la
segunda pa e. Sabemos que el obje i o inal es de e mina qué acción se es á lle ando a cabo, pe o de alguna
o ma end emos que ca ac e iza es as acciones.
Los da os con los que en ena a una in eligencia a i icial son de i al impo ancia, sin ellos no hay nada que
ap ende y debemos selecciona bien cuál se á la in o mación que oma á de en ada. Pa a los p oblemas de
clasi icación, en gene al, suelen exis i da ase s, bien c eados po emp esas o bien c eados po la comunidad que
gi a en o no a desa ollos de in es igación de es os ámbi os. No odos los bancos son de lib e uso y g a ui os, al
in y al cabo, es amos hablando de in o mación, un come cio muy explo ado en nues os días. Muchos de los
ecu sos que podemos encon a son de pago o di íciles de canaliza pa a una a ea an conc e a como la de es e
abajo.
De alguna o ma, que emos cap u a una acción, la que sea, y de e mina la con asgos que la hagan única o
dis in as a o as.
2.1. Análisis
Empeza é ealizando un análisis gene al. Lo p ime o se á plani ica las a eas e hi os desde una isión muy
emp ana del p oyec o y sin p o undiza en cada pun o. Seguido a es o, comienzo a ejecu a el plan p opues o
pa a alcanza es e p ime obje i o: ca ac e iza acciones y c ea da os con los que en ena una in eligencia
a i icial.
2.1.1 Plani icación
Es buena p ác ica es ablece las ases gene ales y el ciclo que lle a é pa a ealiza es a pa e. Segui un hilo en
el que i a anzando.
Lo p ime o es e el es ado al inicio, qué he amien as engo y de qué conocimien os pa o, conoce cuál se á el
pun o de pa ida desde el que comenza . Luego, en unción de lo que haya is o en la ase an e io , plan ea las
necesidades su icien es como base pa a comenza a desa olla el p oyec o: qué conocimien os adqui i pa a
ealiza un análisis en p o undidad del p oblema y qué he amien as son necesa ias en p ime a ins ancia.
An es de empeza con la ase de ap endizaje, se deben ob ene las he amien as. Po ello, se hace un análisis y
p esen ación de los ins umen os con los que i é abajando. En cuan o al conocimien o necesa io, pasa é a
A
C eación de da ase s de imágenes
4
ecopila uen es iables y a adqui i las habilidades mínimas necesa ias.
T as es o, me encon a é en disposición de a a el p oblema desde un pun o de is a eó ico y ma ca los
siguien es pasos a segui en el desa ollo que se á el paso pos e io . Du an e la esolución del p oblema se
en iende que i án su giendo casuís icas inespe adas o nue os casos a a a que no se u ie on en cuen a, igual
pa a la pa e de análisis. Así, que ealmen e, es imo que du an e odo el p oyec o es a é en ase de ap endizaje
asimilando y descub iendo unciones, mé odos, he amien as, écnicas…
Los desa ollos, de códigos, sob e odo, equie en de con inuo eedback. Ve cuáles son los esul ados, es ima
si son los espe ados o su icien emen e álidos, y ol e a implemen a en caso de que e mejo a los. Es una
e oalimen ación con inua al igual que la pa e de ap endizaje, se an descub iendo mejo as con o me se a
a anzando.
Po úl imo, con una aplicación que uncione co ec amen e, solo queda usa lo pa a c ea un da ase comple o,
e i ica que hemos log ado el obje i o de es a p ime a pa e y con inua con la segunda.
2.1.2 Conocimien os base
Pa ía de conocimien os con lenguaje de p og amación en Py hon. Du an e la ca e a, en a ias asigna u as, nos
exigían sabe de es e lenguaje de p og amación po su impo ancia, su cu a de ap endizaje y el uso ex endido.
Po an o, manejaba es e lenguaje de o ma luida y sabía ecaba in o mación sob e es e bas an e bien, sabía
cómo ins ala lo y con igu a lo, aunque ya lo enía en mi equipo pe sonal.
En mi caso, mi ca e a me ha se ido de una buena base en cuan o a imágenes se e ie e, sob e odo en mi
especialidad ya que es u e cu sando asigna u as de la ama de Imagen y Sonido y engo el conocimien o
ap endido bas an e ecien e. Había is o a amien os de imágenes en gene al en asigna u as como Visión
A i icial, T a amien o Digi al de Señales Mul imedia, Fundamen os de P ocesamien o de Imágenes o
Tele isión. Desde a ios ipos de unciones ma emá icas, algo i mos y unciones que se suelen aplica a las
imágenes, has a de ección de esquinas o clasi icación de imágenes. También he a ado con ideos en o as como
P oducción Audio isual o Equipos y Sis emas de Audio, Video y Tele isión, aunque en es as no llegué a
implemen a código, no e an obje i os de las asigna u as.
A pesa de ello, apenas había abajado o is o lib e ías dedicas al p ocesamien o de imágenes. Algunas
unciones especí icas de MATLAB u o as muy básicas de Py hon. Lo que sí enía e a una buena base eó ica
de las écnicas que exis ían en es os ámbi os, ya sea pa a usa las o pa a descub i y p o undiza en o as nue as.
2.1.3 Análisis de he amien as
2.1.3.1 MATLAB
Ma lab es una pla a o ma de p og amación y de cálculo numé ico u ilizada po millones de cien í icos e
ingenie os pa a analiza da os, desa ollo de algo i mos y ealiza modelos. Cuen a con un en o no de desa ollo
de abajo muy obus o y una amplia gama de lib e ías, simulado es y he amien as pa a maneja , en e o as
muchas, el a amien o de imágenes, de ma ices y la p esen ación de es os da os en g á icas. Tiene su p opio
lenguaje de p og amación y en algunos ámbi os, en e ellos los de ingenie ía, iene un g an p es igio po su
e sa ilidad y po es a en ocado y op imizado pa a cálculos ma emá icos[1].
Figu a 2-1. MATLAB [2]
5
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
2.1.3.2 Ja a
Ja a es una pla a o ma in o má ica de lenguaje de p og amación basada en p og amación o ien ada a obje os.
Es, y sigue siendo, uno de los lenguajes más usados pa a múl iples aplicaciones, incluso pa a imágenes ya que
incluye ambién la lib e ía de OpenCV.
Ja a es un lenguaje de p og amación que u iliza clases y que, como Py hon, es á o ien ado a obje os. A pesa de
se un lenguaje mul ipla a o ma y de ca ác e gene al, ha quedado pa a uso de desa ollo web. Es o se e
e lejado sob e odo en el en oque que suelen ene los o os en los que se esuel en p oblemas de
p og amación[3].
2.1.3.3 C
C es el lenguaje de p og amación a más bajo ni el que amos a encon a en es e análisis, ni el medio. Po lo
que, pe mi e ene mayo con ol so wa e y op imiza mejo el endimien o del p og ama a desa olla . También
pe mi e usa lib e ías pa a acili a el uso en cie as aplicaciones como pa a a amien o de imágenes, con
OpenCV. Se usa an o pa a el desa ollo de sis emas ope a i os y aplicaciones como base pa a o os lenguajes.
También, debido a ene menos ni el de abs acción, esul a menos amigable y más cos oso pa a el usua io
abaja con es e lenguaje.[4]
Figu a 2-2. C [4].
2.1.3.4 Py hon
Py hon es un lenguaje de p og amación de al o ni el muy ex endido siendo uno de los más usado. Se a a de un
lenguaje in e p e ado y o ien ado a obje os. Cabe esal a su ácil legibilidad y manejabilidad, eniendo una cu a
de ap endizaje al a. Ha día de hoy es al amen e usado en di e en es ámbi os, en e ellos el p ocesamien o de
imágenes y ma ices, y cuen a con un g an apoyo de los usua ios y de las emp esas. Además, cuen a con una
amplia gama de lib e ías de di e sos ámbi os, an o de emp esas de enomb e o pequeñas, como de usua ios.
Una de las más usados en a amien o de imágenes es la lib e ía Numpy que si e pa a abaja con cadenas de
a ays de o ma óp ima y con mayo endimien o, si e como base pa a la cons ucción de o as muchas lib e ías.
[5]
Figu a 2-3. Py hon [6].
2.1.3.5 Visual S udio Code
Visual S udio Code es un edi o de código lige o pe o po en e que iene de la mano de Mic oso . Es una
aplicación de esc i o io disponible en odas las pla a o mas y con el que edi a en cualquie lenguaje de
p og amación g acias a su ico ecosis ema de ex ensiones. Viene p epa ado pa a abaja con Gi . No solo es
edi o de código, sino que ambién cuen a con e minales y he amien as pa a ejecu a a chi os o pa a
debuggea lo de o ma in e ac i a. Menciona su amosa unción In elliSense que esal a, au ocomple a o sugie e
pa es del código. [7]
C eación de da ase s de imágenes
12
𝐼1(𝑥,𝑦)=𝐼2(𝑥+𝑉𝑥∗∆𝑡,𝑦+𝑉𝑦)
( 2-5 )
Aunque, debido al uido y/o a la disc e ización del espacio, no se cumple es a elación de o ma es ic a, po ello
necesi amos de mé odos más e inados.
Tenemos que pa a pequeños cambios según Taylo :
𝐼(𝑥+∆𝑥,𝑦+∆𝑦,𝑡+∆𝑡)=𝐼(𝑥,𝑦,𝑡)+𝜕𝐼
𝜕𝑥∆𝑥+𝜕𝐼
𝜕𝑦∆𝑦+𝜕𝐼
𝜕𝑡∆𝑡+𝑇𝑂𝑆
( 2-6 )
Donde TOS es la con inuación de la ecuación y podemos desp ecia la (𝑇𝑂𝑆=0), quedándonos inalmen e con:
𝐼(𝑥,𝑦,𝑧)=𝐼(𝑥+∆𝑥,𝑦+∆𝑦,𝑡+∆𝑡)
( 2-7 )
Del cual se deduce que 𝜕𝐼
𝜕𝑥∆𝑥+𝜕𝐼
𝜕𝑦∆𝑦+𝜕𝐼
𝜕𝑡∆𝑡=0
( 2-8 )
Y, po lo an o: 𝜕𝐼
𝜕𝑥𝑉𝑥+𝜕𝐼
𝜕𝑦𝑉𝑦+𝜕𝐼
𝜕𝑡𝑉𝑡=0
( 2-9 )
Es a úl ima es llamada unción undamen al y es esc i a ambién como:
𝐼𝑥∗𝑉𝑥+𝐼𝑦∗𝑉𝑦=−𝐼𝑡
Aquí nos encon amos con un sis ema subde e minado ya que cons a de una ecuación y dos incógni as (𝑉𝑥,𝑉𝑦),
es deci que enemos in ini as soluciones [15]. De es a o ma solo nos queda hace hipó esis, y así nacen los dos
mé odos: de Lucas-Kanade y de Ho n-Schunk
El lujo óp ico puede se calculado median e dos mé odos di e enciales:
• Lucas-Kanade (L-K): Pa e de la suposición de que los pun os ce canos pe enecien es a la ecinidad
de un píxel ienen igual elocidad. De es a o ma, pa a un conjun o de pun os pe enecien es a la
misma ecinidad, enemos: 𝐼𝑥(𝑝)∗𝑉𝑥+𝐼𝑦(𝑝)∗𝑉𝑦=−𝐼𝑡(𝑝)
𝐼𝑥(𝑞)∗𝑉𝑥+𝐼𝑦(𝑞)∗𝑉𝑦=−𝐼𝑡(𝑞)
𝐼𝑥(𝑟)∗𝑉𝑥+𝐼𝑦(𝑟)∗𝑉𝑦=−𝐼𝑡(𝑟)
.
.
.
( 2-10 )
Ob eniendo así un sis ema sob ede e minado. El sis ema de ecuaciones puede esumi se en 𝐴∗𝑣=𝑏
con

13
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
𝐴=
(
𝐼𝑥(𝑝)
𝐼𝑥(𝑞)
𝐼𝑥(𝑟)
... 𝐼𝑦(𝑝)
𝐼𝑦(𝑞)
𝐼𝑥(𝑟)
...
)
, 𝑏=
(
𝐼𝑡(𝑝)
𝐼𝑡(𝑞)
𝐼𝑡(𝑟)
...
)
( 2-11 )
Pa a ob ene una solución en es e sis ema aplicamos el mé odo de mínimos cuad ados
𝐴∗𝑣=𝑏
( 2-12 )
(𝑣𝑥
𝑣𝑦

)=𝑣= (𝐴𝑡𝐴)−1𝐴𝑡𝑏
( 2-13 )
Y equie e que 𝐴 sea de ango comple o pa a que 𝐴𝑡𝐴 enga in e sa.
De es a o ma las zonas que se man ienen homogéneas (𝐼𝑥=𝐼𝑦=𝐼𝑡) no se de ec a mo imien o, y en
los bo des y esquinas, que es donde encon amos un g an sal o (∇𝐼≠0), se de ec a co ec amen e
cualquie mo imien o. Po lo an o, nos in e esa ija los pun os de es udio en bo des o esquinas [15].
• Ho n Shunck. Es e mé odo pa e de la hipó esis de que el mo imien o, al pasa el iempo, es sua e en
oda la escena. Así, de las in ini as soluciones que exis en, nos limi amos a aquellas que minimizan el
uncional de la ene gía:
𝐸=∬((𝐼𝑥𝑉𝑥+𝐼𝑦𝑉𝑦+𝐼𝑡)2+∝2(‖∇𝑉𝑥‖2+‖∇𝑉𝑦‖2))𝑑𝑥 𝑑𝑦
( 2-14 )
Que in en a penaliza los cambios b uscos. Si nos ijamos en los alo es que puede oma ∝, si se hace
0 es como si es u ié amos a ando con la misma unción is a de Lucas-Kanade. Sin emba go, cuando
Alpha ienda a in ini o los g adien es de 𝑉𝑥 e 𝑉𝑦 ienden a disminui , eco demos la hipó esis de la que
pa e, en la que in en amos minimiza la 𝐸. Po an o, a mayo sea Alpha más se penaliza án las
soluciones menos sua es.
En compa ación con el mé odo de L-K, es más sensible al uido, pe o p opo ciona el lujo óp ico en
egiones donde L-K no unciona [15].
2.1.4.3 De ección de esquinas
El mo imien o es más ácil de maneja si se siguen pun os ca ac e ís icos, las esquinas con ienen dos bo des (lo
que acili a su de ección) y son buenos candida os. Los de ec o es de esquinas p opo cionan asgos de la imagen
pa a su seguimien o. Los pun os candida os pa a se esquinas son aquellos iene mayo singula idad, es deci ,
que iene una baja o meno au osimili ud. La au osimili ud se puede medi como la suma de di e encias al
cuad ado (SDC) en una ecinidad [15].
𝑆𝐷𝐶(∆𝑖,∆𝑗)=∑∑(𝑓(𝑖+∆𝑖,𝑗+∆𝑗)−𝑓(𝑖,𝑗))2
𝑗𝑖
( 2-15 )
A mayo SDC meno au osimili ud lo que es equi alen e a mayo singula idad, po lo an o, buscamos los pun os
con mayo au osimili ud. Si in oducimos la de inición de enso :
𝑇=∑∑(𝐼𝑥2𝐼𝑥𝐼𝑦
𝐼𝑥𝐼𝑦𝐼𝑦
2)
𝑗𝑖
( 2-16 )
C eación de da ase s de imágenes
14
Ob enemos 𝑆𝐷𝐶(∆𝑖,∆𝑗)=(∆𝑖,∆𝑗)𝑇(∆𝑖,∆𝑗)𝑡
( 2-17 )
Un pun o singula iene una al a SDC pa a cualquie di ección (∆𝑖,∆𝑗), es o implica que 𝑇 ha de se signi ica i o,
es deci , los au o alo es de 𝑇 (𝜆1 y 𝜆2) han de se signi ica i os. Se plan ean en onces es escena ios espec o
a sus au o alo es:
1. 𝜆1 y 𝜆2 no signi ica i os. Lo que signi ica que el pun o (𝑖,𝑗) no es singula .
2. 𝜆1 es signi ica i o, pe o 𝜆2 no (o ice e sa). Se ía indicio de que el pun o (𝑖,𝑗) pe enece a
un con o no.
3. 𝜆1 y 𝜆2 son signi ica i os. En es e caso el o pun o (𝑖,𝑗) sí pe enece a una esquina.
Encon amos dos mé odos usados pa a la de ección de esquinas que se basan en es as ideas,
• Ha is. Fue un p ime ace camien o ealizado po Ch is Ha is y Mike S ephens en el documen o “A
Combined Co ne and Edge De ec e ” en 1988. Toma la idea de busca a iaciones de in ensidades en
odas las di ecciones y la plasma de o ma ma emá ica [18].
𝐸(𝑢,𝑣)=∑𝑤(𝑥,𝑦)[𝐼(𝑥+𝑢,𝑦+𝑣)−𝐼(𝑥,𝑦)]2
𝑥,𝑦
( 2-18 )
• 𝑤(𝑥,𝑦)→𝑊𝑖𝑛𝑑𝑜𝑤𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛
• 𝐼(𝑥+𝑢,𝑦+𝑢)→𝑆ℎ𝑖𝑓𝑡𝑒𝑑 𝑖𝑛𝑡𝑒𝑛𝑠𝑖𝑡𝑦
• 𝐼(𝑥,𝑦)→𝐼𝑛𝑡𝑒𝑠𝑖𝑡𝑦
La en ana (𝑤) es una simple en ana ec angula o una en ana gaussiana con mayo es pesos en los
píxeles in e io es. De es a o ma el obje i o se cen a en maximiza 𝐸(𝑢,𝑣), es deci , maximiza el
segundo e mino. Aplicando las se ies de Taylo y ealizando algunos pasos in e medios llegamos a la
siguien e ecuación. 𝐸(𝑢,𝑣)≈[𝑢 𝑣] 𝑀[𝑢
𝑣]
( 2-19 )
Donde 𝑀=∑𝑤(𝑥,𝑦)[𝐼𝑥𝐼𝑥𝐼𝑥𝐼𝑦
𝐼𝑥𝐼𝑦𝐼𝑦𝐼𝑦]
𝑥,𝑦
( 2-20 )
Aquí 𝐼𝑥 e 𝐼𝑦 son las in ensidades de i adas en 𝑥 o en 𝑦.
Luego iene la pa e impo an e en la que decidimos si se a a de una esquina o no.
𝑅=de (𝑀)−𝑘(𝑡𝑟𝑎𝑐𝑒(𝑀))2
( 2-21 )
Donde
o de (𝑀)= 𝜆1𝜆2
o 𝑡𝑟𝑎𝑐𝑒(𝑀)=𝜆1+𝜆2
o 𝜆1 y 𝜆2 son los au o alo es de 𝑀.
15
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
Basándonos en lo dicho an e io men e, aplicamos el siguien e c i e io:
o Cuando |𝑅| es un alo pequeño, que ocu e cuando 𝜆1 y 𝜆2 son pequeños, la egión es
plana, no hay esquinas.
o Cuando 𝑅<0, cuando 𝜆1≫𝜆2 o ice e sa, la egión es un bo de.
o Cuando 𝑅 es un alo g ande, 𝜆1 y 𝜆2 son g andes y del mismo g ado (𝜆1~𝜆2) se a a de
una esquina.
Figu a 2-14. Rep esen ación de soluciones según los alo es de lambda po el mé odo de
Lucas-Kanade [18].
Al ija se en las a iaciones de in ensidades y no ealiza cálculos de au o alo es se hace más ápido.
• MinimunEigen alue (Shi-Tomasi). J.Shi y C.Tomasi e oma on los cálculos del mé odo de de ección
de esquinas de Ha is en el documen o “Good Fea u e o T ack” [19] haciendo pequeñas
modi icaciones que mos a on mejo es esul ados [20].
Ellos p oponían cambia el cálculo de 𝑅: 𝑅=min {𝜆1,𝜆2}
( 2-22 )
Si el alo de R e a mayo que un de e minado umb al, es a egión e a conside ada como esquina.
C eación de da ase s de imágenes
16
Figu a 2-15. Rep esen ación de soluciones según los alo es de lambda po el mé odo de Shi-Tomasi
[20].
De es a o ma, a pa i de un de e minada 𝜆 se conside a esquina que queda ep esen ada en la zona
g is. Es obus o pues usa 𝑚𝑖𝑛{𝜆1,𝜆2}.
2.1.4.4 Imágenes di e encia
Du an e el desa ollo me di cuen a de que g an pa e del ma e ial que enía e a de e en os ansmi idos los cuales
enían ma cado es, logos, ma cas de agua u o os elemen os añadidos o elemen os del p opio escena io como
ca eles de publicidad o simila es. Es os elemen os suelen eni en onos de colo es que esal an sob e el ídeo
o con líneas muy de inidas. Al aplica los algo i mos me daba cuen a de que odas las esquinas las de ec aba en
es os obje os u o os p opios del escena io en el que se g ababa el e en o. Me suponía un p oblema po que sin
las esquinas bien colocadas no se ía capaz de calcula el lujo óp ico y no conseguía co egi es o a a és de los
pa áme os de los que disponía con la unción enca gada de calcula las esquinas.
Se me hacía necesa io añadi pues una nue a ase en el p ep ocesado de la imagen an es de pasa a llama a la
unción. Ap o eché que la mayo ía del ma e ial del que disponía e an ideos cuyas cáma as se man enían
es á icas. Qui ando algunos pequeños momen os, la mayo pa e del iempo el mo imien o que se daba en la
imagen e an de los depo is as u obje os que es os usaban, qui ando eso apenas había mo imien o en la escena.
17
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
Figu a 2-16. Imagen de pa ido de enis emi ido po RTVE [14]
Po ejemplo, en un pa ido de enis si nos ijamos, podemos e que los únicos que se mue en son los jugado es
con sus aque as y la pelo a la se golpeada po ellos. En alguna ocasión los ecogepelo as se mue en o pe sonas
en e el público, pe o e an pocas eces y solo me hacía al a de ec a las esquinas en algún momen o en el que
me bene icia a.
La solución que le di a es o ue aplica la di e encia de imágenes. Es e mé odo consis e básicamen e en es a
dos imágenes en e sí. Dada una imagen 𝐼1 y o a 𝐼2 [15]:
𝐼2−𝐼1
( 2-23 )
T as es o hab ía que eescala los alo es adecuadamen e
Es a p opo ciona in o mación sob e el mo imien o eal. Es a écnica es bas an e limi ada ya que es muy
suscep ible al uido y los cambios de iluminación pueden se pequeños.
Figu a 2-17. Imagen di e encia ob enida as p ocesa la.
Las zonas blancas o en colo co esponden al mo imien o que ha habido en la escena. Sin emba go, emos
como pa a es os casos enemos unos esul ados decen es sob e odo pa a ob ene esquinas.

C eación de da ase s de imágenes
18
OpenCV implemen a un mé odo que ya escala los alo es adecuadamen e. Se a a del mé odo subs ac y
calcula la di e encia po cada elemen o en e cadenas [21].
𝑑𝑠𝑡(𝐼)=𝑠𝑎𝑡𝑢𝑟𝑎𝑡𝑒(𝑠𝑟𝑐1(𝐼)−𝑠𝑟𝑐2(𝐼))→𝑠𝑖 𝑚𝑎𝑠𝑘(𝐼)≠0
( 2-24 )
2.1.5 Conclusiones
Ap o echando que se an a implemen a las imágenes di e encia, se es ima que lo óp imo es c ea ídeos a pa i
de es os y usa los pa a el cálculo del lujo óp ico, no solo de esquinas, ya que se en iende que al algo i mo le
conlle a a menos e o es segui la esquina sob e un ondo neg o.
Po o o lado, el mé odo que se usa á pa a el cálculo de de ección de esquinas se á el de MinimunEigen alue.
Dado que se es ima que el algo i mo Shi Tomasi o ece mejo es esul ados as hace compa aciones con
esul ados eales.
Y, po úl imo, en el caso del lujo óp ico, eniendo en cuen a que amos a a a con acciones de depo es pa a
es e abajo, eo con enien e usa el mé odo de Lucas-Kanade po los cambios b uscos que pueden ocu i .
2.2 Desa ollo
Teniendo una base eó ica sob e la que pa i , pasamos a la ase de esolución de los p oblemas plan eados. Tal
y como se ha o ganizado. P ime o el uso de Tkin e pa a que se en iendan algunas líneas y unciones que an
dedicadas a la in e az, luego hab ía que p epa a los a chi os con los que amos a abaja , que son a chi os de
ídeo. Después, un ac o cuya impo ancia se i á explicando con o me se ea el desa ollo, la es uc u a que ha
de ene el di ec o io de abajo. Dejando pa a el inal, la explicación de la líneas y unciones de código más
ele an es.
2.2.1 Tkin e
Ejecu a odo el a chi o Py hon e i cambiando las a iables de los pa áme os manualmen e en código me
esul aba una a ea epe i i a y poco e icien e sob e odo eniendo en cuen a las eces que end ía que epe i lo
y que el cálculo del lujo óp ico no e a inmedia o ya que dependía de la du ación del ídeo. Po an o, la solución
que se me ocu ió ue implemen a una in e az que me pe mi ie a selecciona los pa áme os, hace el cálculo
de esquinas y e los esul ados de es e, y luego, al se el p oceso con mayo ca ga compu acional, aplica el
lujo óp ico. A es o ambién se le añadió el bo ón pa a calcula la di e encia de imágenes.
Con es o, el p oceso de c ea las imágenes pa a el da ase se agilizaba en g an medida.
19
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
Figu a 2-18. Vis a gene al de la in e az desa ollada con Tkin e .
Tkin e unciona a a és de widge s. Con iene un nodo aíz que se á la en ana, a pa i de es e se le an
añadiendo los di e en es widge s con las p opiedades u Obje os que se deseen.
oo = Tople el()
oo . i le("Se ings")
labelVideo=Label( oo )
labelVideo.g id( ow=8, columnspan=8, pady=10)
P ime o se c ean los widge s a a és de Obje os de Tkin e en los que se les indica la en ana en la que se an
a pone .
Luego con la unción g id() indicamos la posición que end á den o de la en ana y cuán o ocupa á.
ini F ame=In Va ()
ini F ame.se (min_ ame)
label_ini _ ame=Label( oo , ex ="F ame inicial: ")
label_ini _ ame.g id( ow=0, column=0)
spin_ ame_ini =Spinbox( oo , om_=min_ ame, o=max_ ame,inc emen =1,
ex a iable=ini F ame, command= ame_ini _Spinbox)
spin_ ame_ini .g id( ow=0, column=1)
Es e es un ejemplo de cómo he ido c eando los dis in os widge s en la in e az. P ime o decla o la a iable y
es ablezco un alo po de ec o pa a e i a e o es o que no se le pase en p ime a ins ancia alo es nulos. Luego,
c eo un widge , en es e caso es un obje o Label que es una e ique a que uso solamen e pa a esc ibi ex o y así
en ende a que a di igida la en ada que a al lado desde la in e az.
2.2.2 P epa ación de a chi os de ídeos
Los ídeos ienen de di e en es uen es (compe iciones, ideo u o iales, …). La acción de ídeo a es udia
suele se una pequeña pa e pa a la longi ud o al de ídeo. T a a con secuencias an la gas en la in e az
implemen ada con Tkin e puede llega a se muy edioso.
Veía necesa io hace un p ime eco e o selección de iempo que ue a menos ex enso, pa a que pueda se
manejable en la in e az es imo que el ídeo no exceda los 1000 ames, eniendo en cuen a que el es ánda de
ansmisión es ap oximadamen e de 30 ames po segundo, es o equi ale a no excede los 33 segundo
ap oximadamen e. Es a es imación la he es ablecido conside ando que la pan alla con la que se abaja es de
15’6” y una esolución de 1920x1080 píxeles, que es el ipo de pan alla con el que he es ado abajando.
Es e eco e lo ealizo con la aplicación de DaVinci Resol e. En odos los casos, he es ado expo ando los
a chi os a mp4.
2.2.3 Es uc u a de a chi os
Pa a hace un buen seguimien o y análisis de los esul ados ob enidos me decidí po ob ene a ias imágenes en
unción de los esul ados, que me ayuda an a conoce los pun os a mejo a . Es po ello que, pa a usa es e código
es necesa io ene den o del di ec o io del a chi o .py las siguien es ca pe as:
o /in: Imagen del p ime ame.
o /ou : Resul ado inal del lujo óp ico.
o /ou _image: Resul ado inal del lujo óp ico sob e la imagen del ame inal.
o / ideo_ou : Video seleccionado con el lujo óp ico añadido.
o / ideo_ou _di : Video di e encia.
2.2.4 Funciones
En es a subsección oy a i en ando en de alle en las pa es del código necesa ias pa a que se en ienda la solución
C eación de da ase s de imágenes
20
en desa ollo.
global labelVideo
global co ne s
Po lo gene al las unciones que he c eado no de uel en nada a a és de e u n, los esul ados an pasándose a
a és de a iables globales po que se usan o os muchos mé odos y e a necesa io si que ía implemen a la
in e az.
open_ ile()
cap = c .VideoCap u e( ideopa h)
Una de las p ime as líneas que encon amos as las unciones es la que ab e el ideo. P ime o se ab e una
en ana en la que seleccionamos el a chi o en e las ca pe as de nues a compu ado a y luego lo ab imos a a és
de la unción VideoCap u e de OpenCV.
Pa a alcanza el obje i o inal, que son imágenes que ep esen e el mo imien o median e líneas, enía dos hi os
a consegui :
• Reconoce bien las esquinas
• Ob ene un lujo óp ico que ep esen e el mo imien o.
P ime o empiezo con unciones secunda ias y pa a el inal es án las unciones que aplican los mé odos con los
que cub i los hi os.
2.2.4.1 alida eF ame
Asegu a que el alo de ame in oducido no sea nega i o ni mayo que el máximo del ídeo.
Pa áme os:
▪ ini F ame: Núme o del ame de inicio.
de alida eF ame(ini F ame):
i ini F ame >= max_ ame-1:
ini F ame = max_ ame-1
eli ini F ame < min_ ame:
ini F ame = min_ ame
e u n ini F ame
2.2.4.2 ame_ini _Slide
El Slide es una o ma manual de escoge el ame inicial, si se p oducen cambios en es e, se isualiza á la
imagen del ame que es á seleccionando.
21
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
Figu a 2-19. Vis a del Slide en la in e az desa ollada con Tkin e .
Es a unción alida el alo in oducido en el Slide y cambia el alo de es e. El Slide se si úa en la pa e
supe io , debajo de los Spinbox de ame inicial y inal, como una ba a.
Pa áme os:
▪ ini F ame: Valo del ame inicial.
de ame_ini _Slide (ini F ame):
ame= alida eF ame(in (ini F ame))
ge _image( ame)
ini F ame = ame
2.2.4.3 ame_ini _Spinbox
Los Spinbox son en adas de núme os. Cons an de dos bo ones pa a subi o disminui el núme o que se mues a
den o del ex o. También puede selecciona se el ex o y modi ica lo a a és del eclado.
Figu a 2-20. Vis a de los Spinboxs en la in e az desa ollada con Tkin e .
La unción alida el alo inicial del ame in oducido en el Spinbox y cambia el alo de es e. Tan o el Spinbox
de selección del ame inicial como el del ame inal se si úan al p incipio de la in e az, en la pa e supe io .
C eación de da ase s de imágenes
28
▪ p e P s: Vec o 2D de los pun os a los que aplica el lujo óp ico.
▪ nex P s: Salida en ec o 2D con los pun os calculados.
▪ s a us: Vec o que ma ca el es ado de los pun os, si han sido calculados co ec amen e o
no.
▪ e : Vec o que ma ca e o es de los pun os si se da el caso.
▪ winSize: Tamaño de la en ana pa a la búsqueda de cada ni el de la pi ámide del algo i mo
Lucas-Kanade.
▪ maxLe el: Núme o máximo de ni eles de pi ámides del algo i mo Lucas-Kanade.
▪ c i e ia: Especi ica los pa áme os de c i e ios pa a el algo i mo i e a i o.
▪ lag: P esen a a ias opciones:
o OPTFLOW_USE_INITIAL_FLOW: Especi ica si el mé odo usa las es imaciones
iniciales gua dadas en nex P s o las oma del an e io gua dadas en p e P s.
o OPTFLOW_LK_GET_MIN_EIGENVALS: Especi ica si usa una media del
mínimo de los au o alo es como e o o no.
▪ minEigTh eshold: Especi ica el alo mínimo de los au o alo es.
La unción c eada p epa a los da os pa a llama al mé odo enca gado de calcula el lujo óp ico, luego aplica el
mé odo a lo la go del ídeo.
Pa áme os:
▪ ini F ame: Valo del ame inicial a oma .
▪ endF ame: Valo del ame inal a oma .
▪ m_winSize: Núme o de ilas de la en ana a usa pa a la búsqueda de cada ni el de la pi ámide del
algo i mo Lucas-Kanade.
▪ n_winSize: Núme o de columnas de la en ana a usa pa a la búsqueda de cada ni el de la pi ámide
del algo i mo Lucas-Kanade.
▪ maxLe el: Núme o máximo de ni eles de pi ámides del algo i mo Lucas-Kanade.
▪ c i e ia_ ype: Especi ica el c i e io a aplica en el algo i mo de búsqueda i e a i o:
o COUNT ( alo =0): El núme o máximo de i e aciones o elemen os a compu a .
o MAX_ITER ( alo =1): di o (igual que COUNT).
o EPS ( alo =2): El núme o medio deseado o cambios en pa áme os al cual el algo i mo
i e a i o pa a .
▪ c i e ia_maxCoun : Núme o máximo de i e aciones pa a el algo i mo de búsqueda.
▪ c i e ia_epsilon: Especi ica la búsqueda mínima a la que puede p ocede . El p ocedimien o pa a á si
alcanza es e alo . El alo medio deseado.
▪ co ne s: Esquinas de ec adas.
de op ical_ low(ini F ame, endF ame, m_winSize, n_winSize, maxLe el, c i e ia_ ype,
c i e ia_maxCoun , c i e ia_epsilon, co ne s):
Valida el ame inicial y lo almacena en una a iable auxilia , igual pa a el ame inal. Las en adas son ipos
de obje os po lo que es necesa io ex ae los alo es.
ini F ame_aux = alida eF ame(ini F ame.ge ())
endF ame_aux = endF ame.ge ()
Se hace la con e sión y se ex aen los da os en a iables auxilia es. En caso de no in oduci pa áme os o de

29
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
que es én mal po el ipo de o ma o que se necesi a, se pone alo es po de ec o y se a isa en consola.
i maxLe el.ge ()=='' o 0 >= in (maxLe el.ge ()):
p in ("ERROR: Debe habe un núme o posi i o de esquinas")
maxLe el_aux = 2
else:
maxLe el_aux = in (maxLe el.ge ())
i c i e ia_ ype.ge ()=='' o 0 >= in (c i e ia_ ype.ge ()):
p in ("ERROR: Debe habe un núme o posi i o de esquinas")
c i e ia_ ype_aux = 1
else:
c i e ia_ ype_aux = in (c i e ia_ ype.ge ())
i c i e ia_maxCoun .ge ()=='' o 0 >= in (c i e ia_maxCoun .ge ()):
p in ("ERROR: Debe habe un núme o posi i o de esquinas")
c i e ia_maxCoun _aux = 10
else:
c i e ia_maxCoun _aux = in (c i e ia_maxCoun .ge ())
i c i e ia_epsilon.ge ()=='' o ( loa (c i e ia_epsilon.ge ()) > 1 o
loa (c i e ia_epsilon.ge ()) < 0):
p in ("ERROR: quali yLe el debe es a en e 0 y 1")
c i e ia_epsilon_aux=0.03
else:
c i e ia_epsilon_aux = loa (c i e ia_epsilon.ge ())
i n_winSize.ge () != '' and m_winSize.ge () != '':
winSize = (in (n_winSize.ge ()) ,in (m_winSize.ge ()))
else:
winSize=(15,15)
Aunamos los pa áme os del algo i mo en una a iable.
lk_pa ams = dic (winSize = winSize, maxLe el = maxLe el_aux, c i e ia = (
c i e ia_ ype_aux , c i e ia_maxCoun _aux, c i e ia_epsilon_aux))
C eamos colo es alea o ios pa a luego di e encia las líneas en el esul ado. Luego omamos el p ime ame y
lo gua damos en una ca pe a apa e (/in).
colo = np. andom. andin (0, 255, (100, 3))
e , old_ ame = cap. ead()
old_g ay = c .c Colo (old_ ame, c .COLOR_BGR2GRAY)
c .imw i e("in/" + ilename + ".jpg", old_ ame)
C eamos una másca a pa a dibuja las líneas y ajus amos un con ado con las i e aciones que amos a hace , es
deci , las eces que aplica emos el algo i mo del lujo óp ico que es una ez po cada compa ación en e dos
ames del ídeo según la sección de ideo que hayamos ma cado.
mask = np.ze os_like(old_ ame)
coun = endF ame_aux-ini F ame_aux
Tomamos al ancho y el al o de la imagen pa a c ea un ideo con el esul ado.
ame_wid h = in (cap.ge (3))
ame_heigh = in (cap.ge (4))
size = ( ame_wid h, ame_heigh )
ideo = c .VideoW i e (" ideo_ou /" + ilename + ".a i",
c .VideoW i e _ ou cc(*'MJPG'),
FPS, size)
Vol emos a apun a al ame inicial y comenzamos el bucle.
cap.se (CAP_PROP_POS_FRAMES, ini F ame_aux)
C eación de da ase s de imágenes
30
while(coun >0):
coun -=1
e , ame = cap. ead()
i no e :
p in ('No hay más ames')
b eak
ame_g ay = c .c Colo ( ame, c .COLOR_BGR2GRAY)
Aplicamos la unción del lujo óp ico po Lucas-Kanade y gua damos las esquinas nue as y las iejas pa a luego
uni las e i ep esen ando las líneas que de inen al lujo óp ico.
op ical_ low, s , e = c .calcOp icalFlowPy LK(old_g ay, ame_g ay, co ne s,
None, **lk_pa ams)
i op ical_ low is no None:
good_new = op ical_ low[s ==1]
good_old = co ne s[s ==1]
o i, (new, old) in enume a e(zip(good_new, good_old)):
a, b = new. a el()
c, d = old. a el()
mask = c .line(mask,(in (a),in (b)),(in (c),in (d)),colo [i]. olis (),2)
ame = c .ci cle( ame, (in (a), in (b)), 5, colo [i]. olis (), -1)
C eamos dis in as imágenes y las amos gua dando en ca pe as di e en es.
img = c .add( ame, mask)
c .imw i e("ou _image/" + ilename + ".jpg", img)
c .imw i e("ou /" + ilename + ".jpg", mask)
ideo.w i e(img)
Ac ualizamos la imagen pa a la siguien e i e ación.
old_g ay = ame_g ay.copy()
co ne s = good_new. eshape(-1, 1, 2)
p in ("Te minado")
ideo. elease()
Como esul ado al usa es a unción se ob iene:
- Una imagen del p ime ame. Den o de la ca pe a /in.
- Una imagen del esul ado del lujo óp ico con la imagen del ame inal. Den o de la ca pe a /ou _image.
- Una imagen del esul ado del lujo óp ico con el ondo en neg o. Den o de la ca pe a /ou .
- Un ídeo del esul ado del lujo óp ico con el ideo o iginal. Den o de la ca pe a ideo_ou .
31
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
Figu a 2-25. Vis a de la sección dedicada a los pa áme os del lujo óp ico en la in e az desa ollada
con Tkin e .
En la in e az, los pa áme os de es a unción se modi ican en la zona ma cada y pa a se llamada end ía que
pulsa se el bo ón “Aplica lujo óp ico”.
2.3 Resul ados
La mejo o ma de e los esul ados es iendo como ha quedado la aplicación en imágenes mos adas
an e io men e y con mues as de imágenes ob enidas pa a el da ase .
La aplicación iene una es é ica sencilla, pe o cumple su unción de agiliza el p oceso de c eación de da os pa a
la segunda pa e de es e abajo.
En cuan o a los esul ados inales, lo mejo es e lo con un ejemplo:
Figu a 2-26. Resul ado de lujo óp ico.
Es a imagen no es la que inalmen e se le pasa á a la máquina de ap endizaje au omá ico, es a se ha sacado de
la ca pe a / ideo_ou y es un buen ejemplo del esul ado ob enido. Se ía el lujo óp ico con la imagen del ídeo
del que se ha ob enido de ondo. Tomando como esquinas las pesas y pa e del cue po, el algo i mo hace un
buen seguimien o del mo imien o ealizado.
2.4 Posibilidad de mejo a
Tan o en la ase de desa ollo de código como en la ase de uso, han ido su giendo p oblemas o posibilidades de
mejo as. Algunos los he ido solucionando, pe o o os me suponían una dedicación de iempo que no enía.
• Al cambia de ideo no se modi ican los alo es omados po los widge s ya que es o se ealiza solo la
p ime a ez que se ab e la en ana y es o puede conlle a a dos cosas:
a) Que no ome el ideo comple o po que el ideo que se ab ió inicialmen e e a de meno du ación
que es e.
b) Que el ideo que se ab ió inicialmen e ue a de mayo du ación que el nue o que se ab a, lo
que da ía e o es mien as se ejecu a el mé odo del cálculo de lujo óp ico ya que no encuen a
ninguna esquina ni mues as de imágenes. Aun así, el esul ado inal sigue siendo álido.
• Pod ía habe pues o mensajes en la in e az a isando de dis in as cosas. Po ejemplo, que se ha
e minado el p oceso de imágenes di e encias o del cálculo de lujo óp ico, o que se a a sob esc ibi
un a chi o ya exis en e. Incluso pod ía habe mos ado e o es u o os a isos.
• Habe añadido cap u as de excepciones en el código. También mos a más in o mación en el e minal.
• T as aplica el mé odo de di , se pod ía ab i el a chi o de ídeo que se ha gene ado y abaja con es e
sin necesidad de cambia lo manualmen e.
C eación de da ase s de imágenes
32
• Comp oba que se ienen las ca pe eas y la es uc u a de di ec o ios bien c eada, y en caso de no se así
que las c ee el p opio p og ama.
• Da la opción de escoge en e la de ección de esquinas de Ha is o de Shi-Tomasi.
• OpenCV pe mi e el uso de GPU. En es e caso, la aplicación no es exigen e en cuan o a ecu so de
ha dwa e, pe o se pod ía habe op imizado en es e aspec o.
• Du an e el desa ollo he ido descub iendo o as lib e ías pa a gene a in e aces que pod ían habe
supues o una mejo solución que Tkin e , pe o cambia es o a mi ad del desa ollo supone un cambio
bas an e adical. Algunas de es as lib e ías son PySimpleGUI o Fle .
• Exis e o o mé odo pa a el cálculo del lujo óp ico que no he enido en cuen a, desa ollado po Gunna
Fa neBack en su publicación “Two-F ane Mo ion Es ima ion Base don Polynomial Expansion” [24].
Lo descub í na egando a a és de OpenCV con una unción denominada calcOp icalFlowFa neback
[23] y ya enía implemen ado el mé odo de Lucas-Kanade. Hubie a sido buena p ác ica econside a y
es udia es e nue o mé odo.
2.5 Conclusiones
Todo el código es á pensado pa a usa los mé odos de calcOp icalFlowPy LK y de goodFea u eToT ack de la
o ma más cómoda posible.
La c eación de la in e az no en aba den o de los planes al p incipio. Sin emba go, una ez c eada, se agiliza
mucho la a ea epe i i a de c ea imágenes pa a el da ase . La di icul ad del desa ollo aumen ó cuando añadí
el componen e de Tkin e , sob e odo pa a ajus a los widge s y moldea las a iables. Pe o as e la aplicación
y usa la pa a c ea el da ase , puedo deci que he aho ado iempo. C ea la aplicación uncional ha sido una
in e sión de iempo que ha sido amo izada.
El código es á p epa ado pa a pode le ealiza casi odo ipo de modi icaciones a las unciones p incipales de
OpenCV que más in e esan pa a es e abajo. El pode e los esul ados del cálculo de las esquinas al ins an e
sin necesidad de busca en ca pe as es un pun o a a o , se pueden alo a las esquinas y modi ica los pa áme os
pa a ol e a es ima las, odo ello ejecu ando el a chi o de Py hon una sola ez.
Conside o que, as e los esul ados inales es o son bas an e álidos pa a la a ea que amos a lle a a cabo y
po lo an o el obje i o de es a pa e queda cumplido.
33
3 MÁQUINA DE APRENDIZAJE AUTOMÁTICO
l ámbi o de Machine Lea ning es un campo que aho a mismo es á en alza. Cada ez más en idades se
suman a la in es igación de es e campo y son muchos los que a i man que nos encon amos an e el inicio
de una g an e olución y que es o cambia á nues a o ma de i i y abaja .
Seguido a es o se pueden encon a o as en idades educa i as que en las nue as necesidades que se an a
gene a y cada ez se omen a más el ap endizaje de es as ecnologías.
En es e segundo capí ulo me cen o en odo lo e e en e al Deep Lea ning. Una ez que ya engo c eado un
banco con la in o mación necesa ia, queda ap ende los concep os necesa ios y aplica los pa a en ena un
modelo que cumpla con el obje i o plan eado, clasi ica imágenes como acciones.
3.1 Análisis
Siguiendo la misma es uc u a que puse en el capí ulo an e io , aquí empeza é con una plani icación de a eas y
de o ganización a segui . Luego p ocedo a segui el plan pa a consegui el segundo obje i o de es e abajo:
en ena a una máquina pa a que clasi ique las acciones is as en el capí ulo an e io .
3.1.1 Plani icación
Teniendo en cuen a la base de la que comienzo, lo p ime o es empeza po ap ende . En es e aspec o mi u o ,
me p opo cionó un lib o muy ú il de Jo di To es [25] en el que se an in oduciendo concep os a la pa que se
ealizan eje cicios p ác icos.
La idea es i asimilando y ap endiendo a medida que oy ealizando las p ác icas. El lib o se di ide en dos pa es
que comple an es e ap endizaje, ya que así lo ha es ablecido el au o .
La p ime a pa e es más eó ica, aunque con algunos ejemplos p ác icos, odo cen ado en el ap endizaje
au omá ico, po lo que en p ime a ins ancia me cen o en lee y asimila .
T as eso, es imo que end é capacidad pa a comenza a desa olla pa e del código mien as a la pa sigo con el
ap endizaje del lib o.
Una ez e minado de lee el lib o y habe ealizado a ias p uebas queda ía e mina de implemen a el código
e i haciendo modi icaciones has a ob ene esul ados óp imos. Pa alelamen e a es o i é desa ollando la
memo ia que se á la úl ima a ea pa a lle a a cabo.
No he ma cado iempos po que me esul a di ícil p edeci los debido a mi desconocimien o en la ma e ia.
E

Máquina de ap endizaje au omá ico
34
34
3.1.2 Conocimien os base
En es e campo mi conocimien o e a muy escaso. Había oído habla sob e in eligencias a i iciales, ap endizaje
au omá ico o ap endizaje p o undo, pe o no sabía siquie a dis ingui en e es os concep os. Du an e la ca e a
hicimos algunas p ác icas sob e es o en la asigna u a de Fundamen os de P ocesamien o de Imagen pa a
clasi ica imágenes, pe o e a una p ác ica guiada y en an poco iempo no pudimos ahonda en es os campos.
3.1.3 Análisis de he amien as
3.1.3.1 Lenguajes de p og amación
Los leguajes que se han conside ados como opción han sido los mismos que en la p ime a pa e: Py hon, C, Ja a
y Ma lab. La desc ipción de es os queda en el p ime capí ulo.
3.1.3.2 Jupy e No ebook/Jupy e Lab
P ojec Jupy e es un p oyec o sin ánimo de luc o, de código abie o, c eado en 2014 pa a el desa ollo in e ac i o
de ciencia de da os y compu ación cien í ica pa a odos los lenguajes de p og amación. Su p oduc o insignia es
Jupy e No ebook que consis e en un en o no de desa ollo pa a no ebooks, código y da os usando na egado es
webs. Con un diseño modula pa a expandi y en iquece lo de uncionalidades [26].
Figu a 3-1. Jupy e [27].
Jupy e pe mi e combina no as de ex o, gene almen e en o ma o Ma kdown, con código que se puede i
descomponiendo y ejecu ando en bloques. Pa ece simple pe o es a idea acili a an o el desa ollo del código
como la documen ación.
3.1.3.3 Google Colab
También conocido como Colabo a o y. Se a a de un p oyec o de in es igación de Google c eado pa a ayuda
y omen a el ap endizaje y la in es igación en el ámbi o de Machine Lea ning. Es un en o no Jupy e No ebook
que no equie e de con igu ación ni ampoco muchos ecu sos de ha dwa e ya que se ejecu a en Cloud, solo se
necesi a de una cuen a de Google y es de uso g a ui o. Pe mi e usa Ke as, Tenso Flow o Py o ch, jun o con una
GPU pa a agiliza las ejecuciones y en enamien os [28].
3.1.3.4 Visual S udio Code
Es e es el en o no que se ha usado pa a el desa ollo del p ime capí ulo, la desc ipción se encuen a en la sección
2.1.3.5 Visual S udio Code.
Figu a 3-2. Visual S udio Code [8].
35
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
Como añadido, Visual S udio Code en e su amplio epe o io de ex ensiones iene una dedicada a Jupy e pa a
pode ejecu a no ebooks y código al igual que en la in e az de Jupy e No ebook.
3.1.3.5 Tenso Flow
Tenso Flow es una lib e ía de código abie o c eado po Google pa a el desa ollo de Machine Lea ning. Es
una pla a o ma de ex emo a ex emo que acili a an o la c eación como la implemen ación de edes neu onales.
Puede con igu a se pa a desa olla y ejecu a modelos en múl iples pla a o mas y en o nos. Además, es á
implemen ado pa a el uso de CPU y GPU po lo que o ece un endimien o mayo . Es muy e sá il pa a la
c eación e implemen ación de modelos. [2]
Figu a 3-3. Tenso Flow [29].
A Tenso Flow lo acompaña una g an comunidad y can idad de ecu sos que hacen de es e una de las lib e ías
más usadas y apoyadas.
3.1.3.6 Ke as
Es una biblio eca de código abie o desa ollada po F ançois Cholle , ingenie o de Google. Esc i a en Py hon
que usa como backend Tenso Flow, de hecho, se encuen a incluido en es e mismo. Fue desa ollada con la
in ención de hace más accesible y ápido el desa ollo de edes p o undas, bien pa a acili a el ap endizaje pa a
los nue os como pa a la in es igación. Su cu a de ap endizaje es sua e en compa ación con o as lib e ías. [1]
Figu a 3-4. Ke as [30].
Es una lib e ía que omen a la simplicidad, se a a de un ni el de abs acción mayo que el que o ece
Tenso Flow. Po es a misma azón, Tenso Flow o ece mayo lexibilidad, po que abaja a ni eles in e io es,
y ambién mayo endimien o.
3.1.3.7 Conclusiones
Si bien es cie o que Ja a o ece mejo endimien o y apidez, debido a que se a a de un ipado es á ico y
compilado mien as que Py hon es dinámico e in e p e ado, la endencia gene al y más ex endida es usa Py hon
pa a ciencia de da os e in eligencia a i icial. Es o se debe a que Py hon es un lenguaje de al o ni el lo que lo
hace más a ac i o y amigable pa a los p og amado es. Además, Py hon o ece muchas acilidades al desa olla
y una g an can idad de lib e ías ú iles an o pa a cons ui edes como pa a in e p e a los esul ados como las
ya mencionadas Numpy y Pandas. En la p ime a pa e ya usamos Py hon po lo que es o o pun o a a o segui
desa ollando en el mismo lenguaje.
Todas las he amien as de edición de código p opues as son muy álidas pa a el p opósi o a segui . Sin emba go,
dado el en o no con el que se ha abajado en la p ime a pa e del abajo, se escoge Visual S udio Code como
edi o ap o echando la ex ensión que o ece de Jupy e No ebook. Los ecu sos del sis ema no suponen un
p oblema ya que se es ima que el equipo con el que he abajado cumple las exigencias que se puedan plan ea
en es e abajo, con ando con GPU p opia.
Po o o lado, eniendo en cuen a que me encuen o en ase de ap endizaje y que pa o de no ene conocimien os
Máquina de ap endizaje au omá ico
36
36
espec o a edes neu onales o in eligencia a i icial, conside o que la mejo opción es usa Ke as. Además, Ke as
iene incluido con la lib e ía de Tenso Flow y es o lo simpli ica odo. A pesa de que abaja con Tenso Flow
puede llega a se mejo decisión po lexibilidad y endimien o, no oy a abaja con edes neu onales de
excesi a complejidad. O o pun o a a o pa a usa Ke as, es que es la lib e ía que se usa en el lib o de Jo di
To es.
3.1.4 Análisis eó ico
Dado que oy a abaja con Deep Lea ning, con iene conoce qué es y el con ex o del que p ocede. Qué elación
exis e en e Deep Lea ning, Machine Lea ning (ML) y A i icial In elligence (AI). Así como algunas écnicas
muy usadas y cie as ca ac e ís icas que ayudan a comp ende odos es os concep os mejo .
3.1.4.1 In eligencia A i icial
“La in eligencia a i icial nació en el año 1950 cuando un puñado de pione os del nacien e campo de la ciencia
compu acional empeza on a p egun a se si los compu ado es pod ían se c eados pa a ‘pensa ’, una p egun a
cuyas ami icaciones nos seguimos p egun ando hoy en día” [31].
“Po in eligencia a i icial nos e e imos a aquella in eligencia que mues an las máquinas, en con as e con la
in eligencia na u al de los humanos. En es e sen ido, una posible de inición concisa y gene al de in eligencia
a i icial pod ía se el es ue zo pa a au oma iza a eas in elec uales no malmen e ealizadas po humanos.
Como al, el á ea de in eligencia a i icial es un campo muy amplio que aba ca muchas á eas del conocimien o
elacionadas con el ap endizaje au omá ico; incluso se incluyen muchos más en oques no siemp e ca alogados
como ap endizaje au omá ico… Además, a lo la go del iempo, a medida que los compu ado es han sido cada
ez más capaces de ‘hace cosas’, se han ido cambiando las a eas o ecnologías conside adas como
‘in eligen es’” [25].
Figu a 3-5. In eligencia a i icial, ap endizaje au omá ico y ap endizaje p o undo [31].
“La in eligencia a i icial es un campo que aba ca el ap endizaje au omá ico y el ap endizaje p o undo, pe o que
ambién incluye algunos o os campos no elacionados con el ‘ap endizaje’”. Es os suelen se máquinas que
siguen una se ie de eglas que pod íamos conside a con ‘in eligencia’” [31].
3.1.4.2 Ap endizaje au omá ico
“Machine Lea ning se pod ía de ini como el subcampo de la in eligencia a i icial que p opo ciona a los
o denado es la capacidad de ap ende sin se explíci amen e p og amados, es deci , sin que necesi en que el
p og amado indique las eglas que debe segui pa a log a su a ea, sino que las hace au omá icamen e…. Es os
algo i mos ap enden de los da os con el in de encon a pa ones o endencias pa a comp ende ‘qué nos dicen’
los da os y de es a mane a cons ui un modelo pa a p edeci y clasi ica los elemen os” [25].
“En Machine Lea ning nos e e imos a label (‘e ique a’) a lo que es amos in en ando p edeci con un modelo”,
el esul ado que se desea ob ene . En cambio, a una a iable de en ada la llama emos ea u e (‘ca ac e ís ica’)”
[25].
37
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
Un modelo (model) es un bloque que a a de elaciona las ca ac e ís icas con las e ique as (en adas con
salidas).
“Machine Lea ning es un amplio campo con una compleja axonomía de algo i mos que se ag upan, en gene al,
en es g andes ca ego ías:” [25]
• Ap endizaje supe isado: Los da os que usamos pa a en ena ienen e ique ados con la solución que
debe ía da .
• Ap endizaje no supe isado: En es e caso los da os pasados pa a el ap endizaje no ienen e ique as,
se á el p opio algo i mo el que los clasi ique.
• Rein o cemen Lea ning (“ap endizaje po e ue zo”): Ap endizaje basado en p emios o cas igos. El
modelo en es e caso oma una decisión y lle a a cabo la acción, y en unción del es ado que gene a,
del esul ado que su ge, se da á una “ ecompensa” o una “penalización”. El obje i o del modelo es
ob ene ecompensas. Es, quizás, el modelo más ce cano al mundo eal y a los escena ios que se
p esen an en él. Es el más no edoso de las es ca ego ías.
3.1.4.3 Deep Lea ning
Se a a de una subpa e, de una de las á eas, de la in eligencia a i icial, de Machine Lea ning. Pa a explica en
qué consis e el Deep Lea ning (ap endizaje p o undo) se suele asemeja con neu onas humanas las cuales
con o man una ed neu onal, pe o en es e caso hablamos de neu onas a i iciales [25]. Es as neu onas es án
colocadas una de ás de o as conec adas en e sí de al o ma que pueden sepa a se en capas como puede e se
en la imagen:
Figu a 3-6. Es uc u a de ed básica [25].
Hablamos pues de Deep Lea ning cuando se supe ponen múl iples capas. De es a o ma se consigue que,
con o me a anzamos desde las capas de en adas (capas que eciben los pa áme os de en ada), ayan
adqui iendo mayo abs acción. La idea en base sigue siendo la misma, la ed iene que ajus a los pa áme os
de las dis in as neu onas pa a que a pa i de unas en adas de e minadas (ca ac e ís icas) ob engamos una salida
conc e a (e ique as). Es as edes pueden es a compues as de muchas capas y cada una con dis in as can idades
de neu onas, de aquí el concep o de “deep” (p o undidad de la ed).
3.1.4.4 Redes neu onales con olucionales
“Una ed neu onal con olucional (o CNN, ‘Con olu ional Neu al Ne wo k) es un caso conc e o de edes
neu onales de Deep Lea ning” [25] en el que pa imos sabiendo que a amos con imágenes, es deci , de
es uc u as espaciales. Es as edes se ca ac e izan po aplica un ipo de capa que ealizan con oluciones. De
es a o ma se ex aen ca ac e ís icas en base a los pa ones que pueda habe en una imagen. La ed po an o se
ocupa á de ap ende los alo es que end án los il os que se aplican en la con olución que se les denomina
Máquina de ap endizaje au omá ico
44
44
model_mnis .add(Con 2D(64, (5, 5), ac i a ion=' elu'))
model_mnis .add(MaxPooling2D((2, 2)))
model_mnis .add(Fla en())
model_mnis .add(Dense(10, ac i a ion='so max'))
model_mnis .compile(loss='ca ego ical_c ossen opy',
op imize ='sgd',
me ics=['accu acy'])
model_mnis . i ( ain_images, ain_labels,
ba ch_size=100,
epochs=5,
e bose=1)
Y as p oba que los esul ados e a los mismos que salían en el ejemplo del lib o, pasé a c ea la nue a máquina
pa a el p oblema.
model_mnis .pop()
model_mnis .pop()
model_mnis . ainable=False
Las dos úl imas capas an dedicadas a la clasi icación inal lo cual no nos in e esa y podemos qui a median e
la unción pop(). Luego el p ocedimien o es igual a lo ya explicado.
model = .ke as.Sequen ial([
Inpu Laye (inpu _shape=(250,250,1)),
model_mnis ,
Con 2D(15, (3, 3), ac i a ion=' elu'),
MaxPooling2D((2, 2)),
Fla en(),
Dense(3, ac i a ion='so max')
])
model.summa y()
model.compile(loss='ca ego ical_c ossen opy',
op imize ='adam',
me ics=['accu acy'])
his o yFE = model. i ( ain_gene a o ,
alida ion_da a = alida ion_gene a o ,
epochs=10,
e bose=1)
La única di e encia es que, en es e caso, al se un modelo p opio, enemos que ajus a los pa áme os de en ada.
Es o con los modelos an e io es no hacía al a po que la unción de desca ga de Ke as ya lo hacía po noso os
al desca ga lo.
3.3 Resul ados
En cada uno de los en enamien os, al inaliza , se imp ime en la salida del e minal el alo de accu acy ob enido
ya que lo usa pa a en ena al modelo. Si nos ijamos en la salida ob enemos:
• Modelo P opio → Tes Accu acy: 0.8333333134651184
• Modelo basado en MobileNe V2 → Tes Accu acy: 0.8333333134651184
• Modelo basado en VGG16 → Tes Accu acy: 0.8333333134651184
• Modelo basado en MNIST→ Tes Accu acy: 0.8333333134651184

45
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
Podemos e el alo accu acy es deci , en la p opo ción de da os que ha clasi icado el modelo co ec amen e,
la p ecisión. Pa ecen ene odos una buena p ecisión, sin emba go es o no es muy escla ecedo y equie e de
o as p uebas pa a e i ica que el en enamien o ha sido e ec i o. Como la p ecisión de odas es la misma,
posiblemen e las edes es án clasi icando bien exac amen e las mismas imágenes de lo cual se desp ende que
son imágenes ela i amen e sencillas.
La mejo o ma que enemos de e alua el modelo es, como ya mencioné, usando el da ase de p uebas que
había p epa ado que cons a de 6 mues as.
es _los , es _acc = modelFE.e alua e( es _gene a o )
Exis en o as he amien as pa a e alua los esul ados como la ma iz de con usión. Se a a de una ma iz que
con abiliza las p edicciones compa ándolas con los alo es eales. Los esul ados ob enidos en la ma iz se
pueden di idi en cua o g andes g upos [25]:
Figu a 3-8. Tipos de esul ados [25].
Donde:
o VP: Son los posi i os que el modelo ha p edicho co ec amen e.
o VN: Son los casos nega i os que el modelo ha p edicho co ec amen e.
o FP Son los casos nega i os que ue on clasi icados inco ec amen e como posi i os.
o FN: Son los casos posi i os que ue on clasi icados inco ec amen e como nega i os.
A pa i de es a ma iz de con usión podemos ob ene cie as ca ac e ís icas ep esen a i as:
o Accu acy: 𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦= (𝑉𝑃+𝑉𝑁)
(𝑉𝑃+𝑉𝑁+𝐹𝑃+𝐹𝑁)
( 3-1)
o Sensi i i y: Indica como de bien e i a lo alsos posi i os.
𝑆𝑒𝑛𝑠𝑖𝑡𝑖𝑣𝑖𝑡𝑦= 𝑉𝑃
(𝑉𝑃+𝐹𝑁)
( 3-2 )
La lib e ía Sciki -lea n, muy conocida ambién pa a la ciencia de da os, p o ee de unciones que calculan es os
alo es y gene an la ma iz jun o con el accu acy ob enido [38].
• Modelo P opio
Máquina de ap endizaje au omá ico
46
46
Figu a 3-9. Ma iz de con usión y esul ados del modelo p opio.
• Modelo basado en MobileNe V2
Figu a 3-10. Ma iz de con usión y esul ados del modelo con MobileNe V2.
• Modelo basado en VGG16
Figu a 3-11. Ma iz de con usión y esul ados del modelo con VGG16.
• Modelo basado en MNIST
Figu a 3-12. Ma iz de con usión y esul ados del modelo con modelo basado en MNIST.
Los esul ados aquí no se co esponden el accu acy ob enido po el modelo. De hecho, al ol e lo a ejecu a
salen alo es dis in os. Cabe en onces plan ea se qué sco ing es amos ob eniendo a la salida po cada ez que lo
47
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
ejecu amos, p obamos a ejecu a lo dos eces seguidas a e cuál es el esul ado.
• Modelo P opio
Figu a 3-13. Resul ados de sco ings en el es de p ueba con modelo p opio.
El modelo p opio pa ece se cohe en e en cada una de sus salidas, en o as no an o como en el e ce y
cua o a ay.
• Modelo basado en MobileNe V2
Figu a 3-14. Resul ados de sco ings en el es de p ueba con MobileNe V2.
En es e modelo, los esul ados son o almen e dispa es, no sabe cómo clasi ica y los alo es que
de uel e a la salida son casi alea o ios.
• Modelo basado en VGG16
Máquina de ap endizaje au omá ico
48
48
Figu a 3-15. Resul ados de sco ings en el es de p ueba con VGG16
Igual que en caso an e io , uel e a a oja alo es que di ie en mucho en e sí.
• Modelo basado en MNIST
Figu a 3-16. Resul ados de sco ings en el es de p ueba con modelo basado en MNIST.
Aquí los alo es son muy pequeños, clasi ica de o ma alea o ia p ác icamen e, an e cualquie mínima a iación
de los alo es se e modi icado.
T as e los esul ados podemos conclui que ninguno de los modelos ha ob enido buenos esul ados. El hecho
de que die an buenos accu acy du an e los en enamien os se es ima que puede se debido a que se han ajus ado
única y exclusi amen e a los pa áme os con los que se ha en enado sin llega a ap ende ninguna ca ac e ís ica
singula o ele an e pa a es a clasi icación. Se puede debe a que hay cie as imágenes que son muy áciles de
clasi ica , es o se e i a ampliando el da ase aumen ando ambién la a iedad.
3.4 Posibilidad de mejo a
Respec o a los esul ados a ojados y como conclusión de la sección an e io , hay a ios pun os de mejo a que
se me ocu en:
• La mejo a más signi ica i a a ealiza se ía aumen a el amaño del da ase . Tomando ejemplos de
cu sos, del p opio lib o de Jo di To es, o de casos en o os, es imo que con unos 100 o 200 alo es
se ía su icien e pa a ob ene una mejo ía. Es o eniendo en cuen a que es posible aplica la écnica de
T ans e Lea ning.
• O a posible opción se ía sepa a las líneas del lujo óp ico en imágenes independien es. Es deci , po
cada línea ob enida que nace de una esquina ob ene una imagen. Se p edeci ía una imagen con una
línea que ep esen a ía un mo imien o de un único bo de. De es a o ma es a íamos consiguiendo
mul iplica el núme o de da os po las esquinas que pudié amos saca de un ídeo.
• Du an e el desa ollo descub í o as lib e ías dedicadas a Machine Lea ning, algunas de ellas muy
in e esan es y con sus en ajas en e a Tenso Flow y (aunque ambién enían sus des en ajas). Po
ejemplo: PyTo ch, Sciki -lea n o MXNe . Se ía un buen eje cicio analiza las y plan ea se cuáles son
las bondades de cada una.
49
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
3.5 Conclusiones inales
El da ase usado es bas an e pequeño y no da luga a ajus a los alo es de las neu onas pa a que “ap endan”
cosas cohe en es. En la búsqueda de soluciones encon é que, po lo gene al, se solía conside a un da ase
pequeño cuando el núme o de sus mues as es aba en o no a unos cen ena es; sin emba go, en nues o caso
apenas llegamos a una cen ena de es os. Po es a azón las edes neu onales no han sido capaces de ap ende
co ec amen e y da un mejo esul ado.
Sin duda, el ámbi o del Deep Lea ning es muy a iado y puede se i pa a c ea soluciones a múl iples
p oblemas. Pe o pa a ello se equie e ene una buena base de conocimien o y mucha expe iencia si se p e ende
in es iga . Es ácil en ena in eligencias a i iciales con g andes da ase y de p opósi os ípicos como los que se
suelen oma de ejemplos en lib os y cu sos, pe o cuando se p e enden indaga en nue as posibles soluciones
que no se han llegado a plan ea es más complicado de implemen a .
Al p incipio pensaba que el lujo óp ico e a un buen mé odo pa a ca ac e iza acciones, sin emba go, as e el
po encial que ienen las edes con olucionales y los esul ados ob enidos, me plan eo si ealmen e ue una buena
decisión. Po ejemplo, a inales del desa ollo descub í el cálculo de densidad de lujo óp ico de Gunna
Fa neback [24] u o os mé odos de en los que se usan o as edes neu onales [39]. O quizás no ue a necesa io
aplica el lujo óp ico sino selecciona un á ea conc e a de los ídeos e in en a mejo a la esolución.
En cualquie caso, és e ha sido mi p ime ace camien o a la in eligencia a i icial y, a pesa de no habe enido
los esul ados espe ados, he ap endido mucho y aumen ado las uen es de in o mación de las que segui
ap endiendo. És e e a el obje i o p ima io de es e abajo in de g ado y puede conside a se plenamen e
sa is echo. Además, g acias a la acilidad de Ke as, he encon ado mo i ación pa a segui haciendo p uebas e
in es igaciones.

Máquina de ap endizaje au omá ico
50
50
51
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
ANEXOS: CÓDIGOS REALIZADOS
3.6 ge Da a.py
om ileinpu impo ilename
om kin e . k impo Combobox
om c 2 impo CAP_PROP_POS_FRAMES, co ne SubPix
impo numpy as np
impo c 2 as c
impo imu ils
om kin e impo *
om kin e . iledialog impo askopen ilename
om u le impo wid h
om PIL impo Image
om PIL impo ImageTk
impo andom as ng
"""
De inición de a iables globales
"""
#Es a a iable de ine el amaño de la imagen de salida en el eje ho izon al
#El eje e ical queda p opo cional según el amaño de la imagen
RESOLUTION_IMAGE_H = 720
#Ma ca la can idad de los ames po segundo de un ideo
FPS = 30
#Se usa como e iqui a p incipal pa a cons ui la in e az
global labelVideo
#Ma ca las esquinas calculadas, se pone como global pa a que la usen a ios mé odos
en e sí e in e cambia in o mación
global co ne s
############################# Decla ación de unciones #############################
""""
Función:
De inición:
Pa áme os:
*
e u n:
"""
de alida eF ame(ini F ame):
'''
Función: alida eF ame
De inición: Asegu a que el alo de ame in oducido no sea nega i o ni mayo que
el máximo del ídeo.
Pa áme os:
* ini F ame: Núme o de ame de inicio.
e u n: ini F ame
'''
i ini F ame >= max_ ame-1:
ini F ame = max_ ame-1
eli ini F ame < min_ ame:
ini F ame = min_ ame
e u n ini F ame
'''
Anexos: Códigos ealizados
52
52
Función: change_ ame
De inición: Función que se encga ga de llama a o as unciones pa a cambia los
alo es.
Pa áme os:
* al: alo del ame a cambia .
e u n: null
'''
#PROBAR A QUITAR Y VER QUE NO AFECTA
#de change_ ame( al):
# ame_ini _Spinbox
# ame_ini _Slide
de ame_ini _Slide (ini F ame):
'''
Función: ame_ini _Slide
De inición: Valida el alo in oducido en el Slide y cambia el alo de
es e.
Pa áme os:
* ini F ame: alo de ame inicial
e u n: null
'''
ame= alida eF ame(in (ini F ame))
ge _image( ame)
ini F ame = ame
de ame_ini _Spinbox():
'''
Función: ame_ini _Spinbox
De inición: Valida el alo inicial de ame in oducido en el Spinbox y
cambia el alo de es e.
Pa áme os:
e u n: null
'''
ame= alida eF ame(ini F ame.ge ())
ge _image( ame)
ini F ame.se ( ame)
de ame_end_Spinbox():
'''
Función: ame_end_Spinbox
De inición: Valida el alo inal de ame in oducido en el Spinbox y cambia
el alo de es e.
Pa áme os:
e u n: null
'''
ame= alida eF ame(endF ame.ge ())
ge _image( ame)
endF ame.se ( ame)
de ge _image(ini F ame):
'''
Función: ge _image
De inición: Modi ica el alo del ame inicial al que se apun a y luego lo
mues a en pan alla a a és de la in e az.
Pa áme os:
* ini F ame: Valo del ame a oma .
53
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
e u n: null
'''
cap.se (CAP_PROP_POS_FRAMES, ini F ame)
e , ame = cap. ead()
show_image( ame)
de show_image( ame):
'''
Función: show_image
De inición: Mues a la imagen del ame omado como alo inicial en la
in e az.
Pa áme os:
* ame: Ma iz de la imagen.
e u n: null
'''
ame = imu ils. esize( ame, wid h=RESOLUTION_IMAGE_H)
ame = c .c Colo ( ame, c .COLOR_BGR2RGB)
im = Image. oma ay( ame)
img = ImageTk.Pho oImage(image=im)
labelVideo.con igu e(image=img)
labelVideo.image = img
de change_co ne s_ ea u es(maxCo ne s, quali yLe el, minDis ance, blockSize):
'''
Función: change_co ne s_ ea u es
De inición: Valida los pa áme os pasados po la in e az y ealiza el cálculo
de las esquinas.
Pa áme os:
* maxCo ne s: Máxima núme o de esquinas a de ec a .
* quali yLe el: Calidad mínima a la que de ec a las esquinas en la imagen.
El alo oscila en e 0 y 1.
* minDis ance: Dis ancia euclídea mínima en e las esquinas a de ec a .
* blockSize: Tamaño de un bloque usado pa a calcula la ma iz de
co a ianza de i a i a sob e cada ecinidad de píxeles.
e u n: null
'''
#Validaciones de odos los pa áme os necesa ios pa a calcula las esquinas.
#Si no se especi ican alo es o es án ue a de los angos admi idos se oman o os
po de ec o
#En cada uno se c ea una a iable auxilia que pasa los alo es omados a a iables
que almacenen el ipo que co esponda.
i maxCo ne s.ge ()=='' o 0 >= in (maxCo ne s.ge ()):
p in ("ERROR: Debe habe un núme o posi i o de esquinas")
maxCo ne s_aux = 10
else:
maxCo ne s_aux = in (maxCo ne s.ge ())
i quali yLe el.ge ()=='' o ( loa (quali yLe el.ge ()) > 1 o
loa (quali yLe el.ge ()) < 0):
p in ("ERROR: quali yLe el debe es a en e 0 y 1")
quali yLe el_aux=0.5
p in ( ype(quali yLe el_aux))
else:
quali yLe el_aux = loa (quali yLe el.ge ())
i minDis ance.ge ()=='' o in (minDis ance.ge ()) < 0:
p in ("ERROR: La dis ancia mínimo debe se un núme o posi i o")
minDis ance_aux = 5
else:
minDis ance_aux = in (minDis ance.ge ())
i blockSize.ge ()=='' o in (blockSize.ge ()) < 0:
p in ("ERROR: El amaño del bloque debe se posi i o y en e o")
blockSize_aux = 10
Anexos: Códigos ealizados
60
60
3.1 c eacion_modelo_mnis _250_250.ipynb
asd impo ke as
impo os
impo enso low as
impo numpy as np
om ke as.da ase s impo mnis
impo c 2 as c
om enso low.ke as.p ep ocessing.image impo ImageDa aGene a o
impo ma plo lib.pyplo as pl
om enso low.ke as.u ils impo o_ca ego ical
om ke as.models impo Sequen ial
om ke as.laye s impo Dense, Ac i a ion, Con 2D, MaxPooling2D, Fla en, Inpu Laye
impo c 2
(x_ ain, ain_labels), (x_ es , es _labels) = mnis .load_da a()
ain_images= np.emp y((len(x_ ain),250,250), d ype=' loa 32')
o i in ange(len(x_ ain)):
img=x_ ain[i]
img=c 2. esize(img, (250,250))
ain_images[i]=img
es _images= np.emp y((len(x_ es ),250,250), d ype=' loa 32')
o i in ange(len(x_ es )):
img=x_ es [i]
img=c 2. esize(img, (250,250))
es _images[i]=img
ain_images = ain_images / 255
es _images = es _images / 255
ain_labels = o_ca ego ical( ain_labels)
es _labels = o_ca ego ical( es _labels)
model = Sequen ial()
model.add(Inpu Laye (shape=(1,))),
model.add(Con 2D(32,(5,5),ac i a ion=' elu'))
model.add(MaxPooling2D((2, 2)))
model.add(Con 2D(64, (5, 5), ac i a ion=' elu'))
model.add(MaxPooling2D((2, 2)))
model.add(Fla en())
model.add(Dense(10, ac i a ion='so max'))
model.compile(loss='ca ego ical_c ossen opy',
op imize ='sgd',
me ics=['accu acy'])
model. i ( ain_images, ain_labels,
ba ch_size=100,
epochs=5,
e bose=1)
model.sa e('mnis _250_250_2.h5')
3.2 modelo_p opio.py
impo ke as
impo os
impo enso low as
impo numpy as np
om ke as.da ase s impo mnis
impo c 2 as c
om enso low.ke as.p ep ocessing.image impo ImageDa aGene a o

61
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
impo ma plo lib.pyplo as pl
om enso low.ke as.u ils impo o_ca ego ical
om ke as.models impo Sequen ial
om ke as.laye s impo Dense, Ac i a ion, Con 2D, MaxPooling2D, Fla en, Inpu Laye
impo c 2
ain_da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
alida ion_da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
es _da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
ain_gene a o = ain_da agen. low_ om_di ec o y('da ase / ain',
class_mode='ca ego ical',
a ge _size=(250, 250),
shu le=T ue,
colo _mode='g ayscale')
alida ion_gene a o = alida ion_da agen. low_ om_di ec o y('da ase / alida ion',
class_mode='ca ego ical',
a ge _size = (250, 250),
shu le=T ue,
colo _mode='g ayscale')
es _gene a o = es _da agen. low_ om_di ec o y('da ase / es ',
class_mode='ca ego ical',
a ge _size = (250, 250),
shu le=T ue,
colo _mode='g ayscale')
model = .ke as.Sequen ial([
Inpu Laye (inpu _shape=(250,250,1)),
Con 2D(32,(3,3),ac i a ion=' elu'),
MaxPooling2D((2, 2)),
Con 2D(64, (5, 5), ac i a ion=' elu'),
MaxPooling2D((2, 2)),
Fla en(),
Dense(3, ac i a ion='so max')
])
model.summa y()
model.compile(loss='ca ego ical_c ossen opy',
op imize ='adam',
me ics=['accu acy'])
his o y = model. i ( ain_gene a o ,
alida ion_da a = alida ion_gene a o ,
epochs=10,
e bose=1)
es _los , es _acc = model.e alua e( es _gene a o )
p in ("Tes Accu acy:", es _acc)
model.sa e('modelo_p opio.h5')
3.3 modelo_mnis .py
impo ke as
impo os
impo enso low as
impo numpy as np
om ke as.da ase s impo mnis
Anexos: Códigos ealizados
62
62
impo c 2 as c
om enso low.ke as.p ep ocessing.image impo ImageDa aGene a o
impo ma plo lib.pyplo as pl
om enso low.ke as.u ils impo o_ca ego ical
om ke as.models impo Sequen ial
om ke as.laye s impo Dense, Ac i a ion, Con 2D, MaxPooling2D, Fla en, Inpu Laye
impo c 2
om sklea n.me ics impo con usion_ma ix
ain_da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
alida ion_da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
es _da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
ain_gene a o = ain_da agen. low_ om_di ec o y('da ase / ain',
class_mode='ca ego ical',
a ge _size=(250, 250),
shu le=T ue,
colo _mode='g ayscale')
alida ion_gene a o = alida ion_da agen. low_ om_di ec o y('da ase / alida ion',
class_mode='ca ego ical',
a ge _size = (250, 250),
shu le=T ue,
colo _mode='g ayscale')
es _gene a o = es _da agen. low_ om_di ec o y('da ase / es ',
class_mode='ca ego ical',
a ge _size = (250, 250),
shu le=T ue,
colo _mode='g ayscale')
model_mnis =ke as.models.load_model('mnis _250_250_2.h5')
model_mnis .summa y()
model_mnis .pop()
model_mnis .pop()
model_mnis .summa y()
model_mnis . ainable=False
model = .ke as.Sequen ial([
Inpu Laye (inpu _shape=(250,250,1)),
model_mnis ,
Con 2D(15, (3, 3), ac i a ion=' elu'),
MaxPooling2D((2, 2)),
Fla en(),
Dense(3, ac i a ion='so max')
])
model.summa y()
model.compile(loss='ca ego ical_c ossen opy',
op imize ='adam',
me ics=['accu acy'])
his o yFE = model. i ( ain_gene a o ,
alida ion_da a = alida ion_gene a o ,
epochs=10,
e bose=1)
es _los , es _acc = model.e alua e( es _gene a o )
p in ("Tes Accu acy:", es _acc)
63
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
model.sa e('modelo_mnis .h5')
3.4 modelo_ gg16.py
impo ke as
impo os
impo enso low as
impo numpy as np
om ke as.da ase s impo mnis
impo c 2 as c
om enso low.ke as.p ep ocessing.image impo ImageDa aGene a o
impo ma plo lib.pyplo as pl
om enso low.ke as.u ils impo o_ca ego ical
om ke as.models impo Sequen ial
om ke as.laye s impo Dense, Ac i a ion, Con 2D, MaxPooling2D, Fla en, Inpu Laye
impo c 2
om enso low.ke as.applica ions impo VGG16
ain_da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
alida ion_da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
es _da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
ain_gene a o = ain_da agen. low_ om_di ec o y('da ase / ain',
class_mode='ca ego ical',
a ge _size=(224, 224),
shu le=T ue,
colo _mode=' gb')
alida ion_gene a o = alida ion_da agen. low_ om_di ec o y('da ase / alida ion',
class_mode='ca ego ical',
a ge _size = (224, 224),
shu le=T ue,
colo _mode=' gb')
es _gene a o = es _da agen. low_ om_di ec o y('da ase / es ',
class_mode='ca ego ical',
a ge _size = (224, 224),
shu le=T ue,
colo _mode=' gb')
model_ gg16 = VGG16(inpu _shape = (224, 224, 3),
include_ op = False,
weigh s = 'imagene ')
model_ gg16.summa y()
model_ gg16. ainable = False
model = .ke as.Sequen ial([
model_ gg16,
Con 2D(15, (3, 3), ac i a ion=' elu'),
MaxPooling2D((2, 2)),
Fla en(),
.ke as.laye s.Dense(3, ac i a ion='so max')
])
model.summa y()
model.compile(loss='ca ego ical_c ossen opy',
Anexos: Códigos ealizados
64
64
op imize ='adam',
me ics=['accu acy'])
his o y = model. i ( ain_gene a o ,
alida ion_da a = alida ion_gene a o ,
epochs=10,
e bose=1)
es _loss, es _acc = model.e alua e( es _gene a o )
es _los , es _acc = model.e alua e( es _gene a o )
p in ("Tes Accu acy:", es _acc)
model.sa e('modelo_ gg16.h5')
3.5 modelo_MobileNe V2.py
impo ke as
impo os
impo enso low as
impo numpy as np
om ke as.da ase s impo mnis
impo c 2 as c
om enso low.ke as.p ep ocessing.image impo ImageDa aGene a o
impo ma plo lib.pyplo as pl
om enso low.ke as.u ils impo o_ca ego ical
om ke as.models impo Sequen ial
om ke as.laye s impo Dense, Ac i a ion, Con 2D, MaxPooling2D, Fla en, Inpu Laye
impo c 2
om enso low.ke as.applica ions impo MobileNe V2
om sklea n.me ics impo con usion_ma ix
impo enso low as
impo enso low_hub as hub
om sklea n.me ics impo con usion_ma ix, Con usionMa ixDisplay,
classi ica ion_ epo
#u l = "h ps:// hub.de /google/ 2-p e iew/mobilene _ 2/ ea u e_ ec o /4"
#modelo_mobilene 2 = hub.Ke asLaye (u l, inpu _shape=(224,224,3))
ain_da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
alida ion_da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
es _da agen = ImageDa aGene a o ( escale = 1. /255,
wid h_shi _ ange=0.2,
heigh _shi _ ange=0.2 )
ain_gene a o = ain_da agen. low_ om_di ec o y('da ase / ain',
class_mode='ca ego ical',
a ge _size=(224, 224),
shu le=T ue,
colo _mode=' gb')
alida ion_gene a o = alida ion_da agen. low_ om_di ec o y('da ase / alida ion',
class_mode='ca ego ical',
a ge _size = (224, 224),
shu le=T ue,
colo _mode=' gb')
es _gene a o = es _da agen. low_ om_di ec o y('da ase / es ',
class_mode='ca ego ical',
a ge _size = (224, 224),
65
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
shu le=T ue,
colo _mode=' gb')
modelo_mobilene 2 = MobileNe V2(inpu _shape = (224, 224, 3),
include_ op = False,
weigh s = 'imagene ')
modelo_mobilene 2.summa y()
modelo_mobilene 2. ainable = False
model = .ke as.Sequen ial([
modelo_mobilene 2,
Con 2D(15, (3, 3), ac i a ion=' elu'),
MaxPooling2D((2, 2)),
Fla en(),
Dense(3, ac i a ion='so max')
])
model.summa y()
model.compile(loss='ca ego ical_c ossen opy',
op imize ='adam',
me ics=['accu acy'])
his o y = model. i ( ain_gene a o ,
alida ion_da a = alida ion_gene a o ,
epochs=10,
e bose=1)
es _los , es _acc = model.e alua e( es _gene a o )
p in ("Tes Accu acy:", es _acc)
#model.sa e('modelo_MobileNe V2.h5')
p ediccion = model.p edic ( es _gene a o )
lables_p edic =np.ze os(len(p ediccion))
o i in ange(len(p ediccion)):
lables_p edic [i]=np.a gmax(p ediccion[i])
cm = con usion_ma ix( es _gene a o .labels, lables_p edic )
disp = Con usionMa ixDisplay(con usion_ma ix=cm)
disp.plo ()
p in (classi ica ion_ epo ( es _gene a o .labels, lables_p edic ))
3.6 ma iz_con usion.ipynb
impo ke as
impo os
impo enso low as
impo numpy as np
om ke as.da ase s impo mnis
impo c 2 as c
om enso low.ke as.p ep ocessing.image impo ImageDa aGene a o
impo ma plo lib.pyplo as pl
om enso low.ke as.u ils impo o_ca ego ical
om ke as.models impo Sequen ial
om ke as.laye s impo Dense, Ac i a ion, Con 2D, MaxPooling2D, Fla en, Inpu Laye
impo c 2
om sklea n.me ics impo con usion_ma ix, Con usionMa ixDisplay,
classi ica ion_ epo
es _da agen = ImageDa aGene a o ( escale = 1. /255)

Anexos: Códigos ealizados
66
66
es _gene a o = es _da agen. low_ om_di ec o y('da ase / es ',
class_mode='ca ego ical',
a ge _size = (250, 250),
shu le=T ue,
colo _mode=' gb')
# Modelo MNIST
model_mnis =ke as.models.load_model('modelo_mnis .h5')
# Modelo VGG16
model_ gg16=ke as.models.load_model('modelo_ gg16.h5')
# Model MobileNe V2
model_mobile=ke as.models.load_model('modelo_MobileNe V2.h5')
# Modelo p opio
model_p opio=ke as.models.load_model('modelo_p opio.h5')
# Resul ados
p ediccion = model_ gg16.p edic ( es _gene a o )
p ediccion
lables_p edic =np.ze os(len(p ediccion))
o i in ange(len(p ediccion)):
lables_p edic [i]=np.a gmax(p ediccion[i])
lables_p edic
cm = con usion_ma ix( es _gene a o .labels, lables_p edic )
disp = Con usionMa ixDisplay(con usion_ma ix=cm)
disp.plo ()
p in (classi ica ion_ epo ( es _gene a o .labels, lables_p edic ))
67
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico
REFERENCIAS
[1] “MATLAB - El lenguaje del cálculo écnico - MATLAB & Simulink.”
h ps://es.ma hwo ks.com/p oduc s/ma lab.h ml (Accedido: Sep. 11, 2022).
[2] “MATLAB - Wikipedia, la enciclopedia lib e.” h ps://es.wikipedia.o g/wiki/MATLAB (Accedido:
Sep. 12, 2022).
[3] “¿Qué es Ja a y po qué lo necesi o?” h ps://www.ja a.com/es/download/help/wha is_ja a.h ml
(Accedido: Sep. 11, 2022).
[4] “C (lenguaje de p og amación) - Wikipedia, la enciclopedia lib e.”
h ps://es.wikipedia.o g/wiki/C_(lenguaje_de_p og amaci%C3%B3n) (Accedido: Sep. 11, 2022).
[5] “Download Py hon | Py hon.o g.” h ps://www.py hon.o g/downloads/ (Accedido: Sep. 11, 2022).
[6] “Py hon - Wikipedia, la enciclopedia lib e.” h ps://es.wikipedia.o g/wiki/Py hon (Accedido: Sep. 12,
2022).
[7] “Documen a ion o Visual S udio Code.” h ps://code. isuals udio.com/docs (Accedido: Sep. 11, 2022).
[8] “Visual S udio Code - Wikipedia, la enciclopedia lib e.”
h ps://es.wikipedia.o g/wiki/Visual_S udio_Code (Accedido: Sep. 12, 2022).
[9] “OpenCV: OpenCV Tu o ials.” h ps://docs.openc .o g/4.x/d9/d 8/ u o ial_ oo .h ml (Accedido: Sep.
11, 2022).
[10] “ kin e — In e ace de Py hon pa a Tcl/Tk — documen ación de Py hon - 3.10.7.”
h ps://docs.py hon.o g/es/3/lib a y/ kin e .h ml (Accedido: Sep. 11, 2022).
[11] “DaVinci Resol e 18 | Blackmagic Design.”
h ps://www.blackmagicdesign.com/es/p oduc s/da inci esol e (Accedido: Sep. 11, 2022).
[12] “DaVinci Resol e - Wikipedia, la enciclopedia lib e.” h ps://es.wikipedia.o g/wiki/DaVinci_Resol e
(Accedido: Sep. 11, 2022).
[13] “Top 8 Mos Demanded P og amming Languages in 2022.” h ps://www.de jobsscanne .com/blog/ op-
8-mos -demanded-languages-in-2022/ (Accedido: Sep. 11, 2022).
[14] “No icias de úl ima ho a, p og amas y se ies de ele isión - RTVE.es.” h ps://www. e.es/ (Accedido:
Sep. 12, 2022).
[15] M. Ruiz A ahal, “Visión A i icial,” Uni e sidad de Se illa.
[16] “Flujo óp ico - Wikipedia, la enciclopedia lib e.” h ps://es.wikipedia.o g/wiki/Flujo_%C3%B3p ico
(Accedido: Sep. 11, 2022).
[17] “OpenCV: Op ical Flow.” h ps://docs.openc .o g/3.4/d4/dee/ u o ial_op ical_ low.h ml (Accedido:
Sep. 11, 2022).
[18] “OpenCV: Ha is Co ne De ec ion.”
h ps://docs.openc .o g/3.4/dc/d0d/ u o ial_py_ ea u es_ha is.h ml (Accedido: Sep. 12, 2022).
[19] Jianbo Shi and Tomasi, “Good ea u es o ack,” in P oceedings o IEEE Con e ence on Compu e
Vision and Pa e n Recogni ion CVPR-94, 1994, pp. 593–600. doi: 10.1109/CVPR.1994.323794.
[20] “OpenCV: Shi-Tomasi Co ne De ec o & Good Fea u es o T ack.”
h ps://docs.openc .o g/3.4/d4/d8c/ u o ial_py_shi_ omasi.h ml (Accedido: Sep. 12, 2022).
Re e encias
68
68
[21] “OpenCV: Ope a ions on a ays.”
h ps://docs.openc .o g/3.4/d2/de8/g oup__co e__a ay.h ml#gaa0 00d98b4b5edeaeb7b8333b2de353b
(Accedido: Sep. 12, 2022).
[22] “OpenCV: Fea u e De ec ion.” h ps://docs.openc .o g/3.4/dd/d1a/g oup__imgp oc__ ea u e.h ml
(Accedido: Sep. 12, 2022).
[23] “OpenCV: Objec T acking.” h ps://docs.openc .o g/3.4/dc/d6b/g oup__ ideo__ ack.h ml (Accedido:
Sep. 12, 2022).
[24] G. Fa nebäck, “Two-F ame Mo ion Es ima ion Based on Polynomial Expansion,” 2003, pp. 363–370.
doi: 10.1007/3-540-45103-X_50.
[25] “Deep Lea ning – In oducción p ác ica con Ke as - Jo di TORRES.AI.” h ps:// o es.ai/deep-lea ning-
in eligencia-a i icial-ke as (Accedido: Sep. 11, 2022).
[26] “P ojec Jupy e | Abou Us.” h ps://jupy e .o g/abou (Accedido: Sep. 11, 2022).
[27] “P oyec o Jupy e - Wikipedia, la enciclopedia lib e.” h ps://es.wikipedia.o g/wiki/P oyec o_Jupy e
(Accedido: Sep. 12, 2022).
[28] “Te damos la bien enida a Colabo a o y - Colabo a o y.” h ps://colab. esea ch.google.com/?hl=es
(Accedido: Sep. 11, 2022).
[29] “Tenso Flow - Wikipedia, la enciclopedia lib e.” h ps://es.wikipedia.o g/wiki/Tenso Flow (Accedido:
Sep. 12, 2022).
[30] “Ke as - Wikipedia, la enciclopedia lib e.” h ps://es.wikipedia.o g/wiki/Ke as (Accedido: Sep. 12,
2022).
[31] F. Cholle , “Deep Lea ning wi h Py hon, Second Edi ion,” Deep Lea ning wi h Py hon, 2021.
[32] “Deep Lea ning, In oducción p ác ica con Ke as (SEGUNDA PARTE) - Jo di TORRES.AI.”
h ps:// o es.ai/deep-lea ning-in eligencia-a i icial-ke as-2a-pa e/#AccesoLib o2aPa e (Accedido:
Sep. 11, 2022).
[33] “ .ke as.p ep ocessing.image.ImageDa aGene a o | Tenso Flow 2.10.0.”
h ps://www. enso low.o g/api_docs/py hon/ /ke as/p ep ocessing/image/ImageDa aGene a o
(Accedido: Sep. 12, 2022).
[34] “The Sequen ial class.” h ps://ke as.io/api/models/sequen ial/ (Accedido: Sep. 12, 2022).
[35] “VGG16 and VGG19.” h ps://ke as.io/api/applica ions/ gg/ (Accedido: Sep. 12, 2022).
[36] “VGG: ¿Qué es es e modelo? ¡Daniel e lo cuen a odo!” h ps://da ascien es .com/es/ gg-que-es-es e-
modelo-daniel- e-lo-cuen a- odo (Accedido: Sep. 12, 2022).
[37] “MobileNe , MobileNe V2, and MobileNe V3.” h ps://ke as.io/api/applica ions/mobilene / (Accedido:
Sep. 12, 2022).
[38] “Con usion ma ix — sciki -lea n 1.1.2 documen a ion.” h ps://sciki -
lea n.o g/s able/au o_examples/model_selec ion/plo _con usion_ma ix.h ml (Accedido: Sep. 12,
2022).
[39] W. Bao, W.-S. Lai, C. Ma, X. Zhang, Z. Gao, and M.-H. Yang, “Dep h-Awa e Video F ame
In e pola ion.” [Online]. Disponible: h ps://gi hub.com/baowenbo/DAIN
69
Pe cepción de la acción en una imagen median e algo i mos de ap endizaje au omá ico