scieee Open visual document viewer

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

Navarro De La Cruz, Alejandro

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.

Full text

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