scieee AI-readable full text Open interactive document viewer

Técnicas de aprendizaje para la identificación de rapaces por restos óseos

Sánchez de la Nieta Gómez, Paula

Abstract

Actualmente, en un mundo tan comprometido por la conservación del medio ambiente, aparecen muchas iniciativas e incluso modos de vida para salvar el planeta, cuidar la Tierra y acciones de cero emisiones contaminantes. En este proyecto queremos centrarnos en la conservación de los ecosistemas autóctonos. El proyecto surge de la necesidad de reconocer los restos óseos de aves muertas que se encuentran en nuestra geografía, de forma rápida y eficaz. La determinación de la especie a partir de los restos óseos es de gran ayuda a las autoridades pertinentes, ya que les permite mantener una estadística actualizada y correcta de la población de aves y determinar los impactos medioambientales que conlleva la humanización de los terrenos. La aplicación se focaliza en la identificación de aves rapaces emblemáticas a partir de sus restos óseos, permitiendo su uso a cualquier usuario con acceso a internet.

Full text

Técnicas de aprendizaje para la identificación de rapaces por restos óseos Maching Learning techniques for the identification of raptors by skeletal remains Por Paula Sánchez de la Nieta Gómez Grado en Ingeniería del Software Facultad de Informática Dirigido por Yolanda García Ruiz Madrid, 2020–2021 Agradecimientos A mi familia, a mis amigas y compañeros de la universidad, gracias por el apoyo y los ánimos durante todos estos años. A Pilar Gamarra, por motivarme, por enseñarme lo que valgo y por confiar en mí más que yo misma. A mi tutora Yolanda García Ruiz, por acompañarme y ayudarme en todo momento. Y a Luis Revuelta Rueda por pensar en mí para este proyecto innovador. II Certificado de permisos Que dispone del permiso de utilización de los datos incluidos en la base de datos (Número de registro 49/437736.9/21, Fecha: 06/07/2021 11:56). Que el registro del programa está en proceso de patente. III Índice general Página 1. Introducción 1 1.1. Motivación .................................. 1 1.2. Objetivo.................................... 2 1.3. Plandetrabajo................................ 2 2. Machine Learning 5 2.1. ¿Qué es el Machine Learning? . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Aprendizaje Máquina Supervisado . . . . . . . . . . . . . . . . . . . . . . 6 2.2.1. Algoritmos Aprendizaje Supervisado . . . . . . . . . . . . . . . . 7 2.3. Aprendizaje Máquina No supervisado . . . . . . . . . . . . . . . . . . . . 8 2.3.1. Algoritmos Aprendizaje No Supervisado . . . . . . . . . . . . . . 9 2.4. Aprendizaje Máquina por Refuerzo . . . . . . . . . . . . . . . . . . . . . 10 3. Predicción de tipo de ave 12 3.1. Materialesymétodos............................. 12 3.1.1. Materiales............................... 12 3.1.2. Métodos................................ 12 3.2. Comparativa de los algoritmos del DataSet . . . . . . . . . . . . . . . . . 14 4. Herramienta de desarrollo 16 4.1. Pruebas de arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.2. Arquitectura ................................. 19 4.3. Implementación................................ 20 4.3.1. Backed ................................ 20 4.3.2. Fronted ................................ 22 4.4. Despliegue................................... 22 4.5. Herramientas de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5. Descripción de la aplicación web 24 5.1. Análisis de la competencia . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.2. Escenariosdeuso............................... 24 5.3. Requisitos funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.4. Interfazdeusuario .............................. 26 5.4.1. Interfaz Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.4.2. Interfaz Identificación . . . . . . . . . . . . . . . . . . . . . . . . 26 5.4.3. InterfazContacto........................... 27 5.4.4. InterfazRecursos........................... 29 5.5. Navegación entre interfaces . . . . . . . . . . . . . . . . . . . . . . . . . 29 IV Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM 6. Conclusiones 32 6.1. Trabajofuturo ................................ 32 7. Bibliografía y enlaces de referencia 36 V Resumen Actualmente, en un mundo tan comprometido por la conservación del medio ambiente, aparecen muchas iniciativas e incluso modos de vida para salvar el planeta, cuidar la Tierra y acciones de cero emisiones contaminantes. En este proyecto queremos centrarnos en la conservación de los ecosistemas autóctonos. El proyecto surge de la necesidad de reconocer los restos óseos de aves muertas que se encuentran en nuestra geografía, de forma rápida y eficaz. La determinación de la especie a partir de los restos óseos es de gran ayuda a las autoridades pertinentes, ya que les permite mantener una estadística actualizada y correcta de la población de aves y determinar los impactos medioambientales que conlleva la humanización de los terrenos. La aplicación se focaliza en la identificación de aves rapaces emblemáticas a partir de sus restos óseos, permitiendo su uso a cualquier usuario con acceso a internet. Palabras clave Aves Rapaces Aprendizaje Máquina Aplicación web Python Framework Django VI Abstract Nowadays, in a world so committed to environmental conservation, there are many initiatives and even ways of life to save the planet, take care of the Earth and zero polluting emissions actions. In this project we want to focus on the conservation of native ecosystems. The project arises from the need to recognise the skeletal remains of dead birds found in our geography, quickly and efficiently. Determining the species from the skeletal remains is of great help to the relevant authorities, as it allows them to keep up-to-date and correct statistics on the bird population and to determine the environmental impact of the humanisation of the land. The application focuses on the identification of emblematic birds of prey from their skeletal remains, allowing its use by any user with internet access. Key words Birds Raptors Machine Learning Web aplication Framework Python Django VII Capítulo 1 Introducción 1.1. Motivación En España existen 622 especies de aves, convirtiéndose en el segundo país con más biodiversidad de aves en Europa [1], solamente superado por Rusia. Este trabajo se centra en las aves rapaces emblemáticas, caracterizadas por su pico curvado, sus garras, sus potentes músculos en las patas y porque suelen ser de gran tamaño, que se encuentran en nuestro país. Además, en España desde el 23 de julio de 1966 en el Boletín Oficial del Estado de ley se estableció la protección legal de todas las aves rapaces, diurnas y nocturnas. Aunque estas cifras sean positivas, no debemos relajarnos con la conservación de éstas y el resto de especies aviares, ya que la humanización de los terrenos provoca la muerte de muchas de estas aves. Se ha demostrado que la principal causa de mortalidad no natural de muchas aves rapaces es por electrocución, a causa de las líneas eléctricas que no cumplen las características técnicas exigidas por el Real Decreto 1432/2008 por el cual se establecen medidas para la protección de la avifauna contra la colisión y la electrocución [2]. Además, hay que tener en cuenta también la caza ilegal de aves, en el que el grupo más afectado son las aves rapaces. En España estos datos son críticos e impide en muchos casos la recuperación de estas aves. Es necesario revertir esta situación, para garantizar la recuperación de estas especies y el mantenimiento del ecosistema, ya que, la conservación de las aves rapaces es clave. En resumen, en muchos casos no es fácil determinar la causa de la muerte de las aves, resulta muy útil conocer el número de aves que aparecen muertas en nuestros campos, así como su especie. Sin embargo, determinar la especie de un ave no es tarea fácil, incluso para aquellos que se consideran expertos en el tema. Esto es debido a que en muchos casos solo se dispone de esqueletos (uno o varios huesos) encontrados en el campo por caminantes, pastores y/o turistas. Entre las variables que permiten determinar el tipo de ave, se encuentran las relacionadas con la fisionomía de los huesos, y en particular su tamaño. Disponer de una aplicación que permita registrar los tipos de huesos encontrados así como sus medidas, permitirá predecir de forma automática el tipo de ave para su registro. En este sentido, las tecnologías actuales y el hecho de que prácticamente todo el mundo disponga de un dispositivo móvil con acceso a internet en cualquier punto geográfico, proporcionan una solución viable. 1 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM 1.2. Objetivo Desarrollar una aplicación web que pueda utilizar cualquier usuario que tenga acceso a internet, desde sus móviles, tabletas u ordenadores y que ayude en la labor de identificar las diferentes especies de aves rapaces emblemáticas a través de sus restos óseos. Objetivo 1. Definir un modelo predictivo para determinar el tipo de ave rapaz a partir de un algoritmo de Aprendizaje Máquina (Machine Learning en inglés). Objetivo 2. Desarrollar una aplicación web donde se incluya el modelo predictivo con una interfaz intuitiva para el usuario, en la cual se mostrarán los resultados de la predicción. 1.3. Plan de trabajo La organización de este proyecto consta de una serie de etapas. 1. Estudio de distintos algoritmos de Machine Learning, supervisado y no supervisado, con la posterior comparación entre ellos para determinar el más apropiado para el proyecto. 2. Implementación de distintos modelos de Machine Learning en el lenguaje Python para estudiar y comparar su eficiencia. 3. Investigación de las distintas tecnologías web, eligiendo aquella que se adaptó mejor al Modelo Vista Controlador (MVC) y a la unificación entre el algoritmo implementado y el controlador de la página web. 4. Implementación de la página web. 5. Desarrollo del diseño de las interfaces de la aplicación web. 6. Despliegue de la aplicación web en un servidor. 2 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Figura 2.5: Ejemplo Random Forest generalizado. (Fuente: https://www.datacamp.com/ community/tutorials/random-forests-classifier-python) delimitar lo máximo posible el resultado final. El aprendizaje no supervisado se divide en dos grandes grupos dependiendo de la forma en la que se traten los datos de entrada: Problemas de agrupación o clustering: Basados en el agrupamiento de características según unas similitudes, que pueden tener o no un sentido. Son muy utilizados en los sistemas de recomendación. Problemas de reducción de la densidad: Técnicas matemáticas y estadísticas para transformar el conjunto de datos original en un nuevo conjunto de datos con una dimensión más pequeña a cambio de cierta pérdida de información. Se utilizan para representar de una forma más visual y sencilla los datos. 2.3.1. Algoritmos Aprendizaje No Supervisado K-Medias (K-Means). El algoritmo KMedias es muy fácil de implementar y muy eficiente computacionalmente. Éstas son las principales razones de su popularidad. Sin embargo, para los grupos no esféricos, la identificación de clases no es muy buena. El algoritmo KMeans tiene como objetivo encontrar y clasificar puntos de datos que son muy similares entre sí. Cuanto más cerca estén los puntos de datos entre sí, es más probable que pertenezcan al mismo grupo. Agrupación jerárquica. Alternativa al algoritmo K-Means, visto en el apartado 2.3.1. Este algoritmo, se caracteriza por no ser necesaria la especificación del número 9 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Figura 2.6: Diagrama de flujo del aprendizaje no supervisado. (Fuente:https://medium. com/soldai/tipos-de-aprendizaje-automático-6413e3c615e2) de grupos, que surgen por la unión de las distintas características similares. Además, este algoritmo permite dibujarlo con un dendograma, véase la Figura 2.7, diagrama que muestra las distancias de las características entre cada par de clases unidas de manera secuencial. Esta forma de representación, nos permite observar que el algoritmo se construye de abajo hacia arriba (bottom-up), en donde al principio, cada característica es un grupo, las cuales se unen según su cercanía hasta que todas las características forman parte de un único grupo [7]. 2.4. Aprendizaje Máquina por Refuerzo El aprendizaje máquina por refuerzo es un método de aprendizaje que implica recompensar los comportamientos deseables y castigar los no deseados. Al aplicar este enfoque, los agentes pueden reconocer e interpretar el entorno, actuar y aprender mediante prueba y error. Está aprendiendo a establecer metas a largo plazo para obtener las máximas recompensas generales y las soluciones óptimas. (Véase la Figura 2.8). Una de las áreas más populares para probar el aprendizaje por refuerzo es el juego. AlphaGo o Pacman son juegos que aplican esta técnica. En estos casos, el algoritmo recibe información sobre las reglas del juego y aprende a jugar por su cuenta. Funciona de forma aleatoria al principio, pero con el tiempo comienza a aprender movimientos más complejos. Este tipo de aprendizaje también se aplica a otros campos como la robótica, la relación calidad-precio y los sistemas de control. 10 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Figura 2.7: Ejemplo dendograma. (Fuente: https://www.jacobsoft.com.mx/es_mx/ clustering-jerarquico-con-python/) Figura 2.8: Diagrama de flujo del aprendizaje por refuerzo. (Fuente: https://medium. com/soldai/tipos-de-aprendizaje-automático-6413e3c615e2) 11 Capítulo 3 Predicción de tipo de ave En este capítulo se va a hacer una descripción detallada del algoritmo de predicción del tipo de aves rapaces emblemáticas comparándolo con distintos modelos de aprendizaje máquina supervisado. 3.1. Materiales y métodos A continuación, se van a presentar los materiales utilizados para la realización de la predicción y los distintos métodos que hemos tenido en cuenta al comparar los diferentes modelos supervisados. 3.1.1. Materiales Base de datos La base de datos, número de registro 49/437736.9/21, utilizada para la comparación de los algoritmos supervisados, ha sido proporcionada por Víctor García Matarranz agente forestal del Ministerio para la Transición Ecológica y el Reto Demográfico (MITECO) y Luis Revuelta Rueda. La elaboración de esta base de datos, fue realizada por ellos mismos gracias a la obtención de distintos esqueletos privados y de diferentes museos de España, permitiendo que Víctor García Matarranz los verificase como especialista que es. La base de datos, es un archivo excel, en el que se recogen veintiséis especies diferentes de aves, el Búho Real, el Gavilán, entre otras como se puede observar en la Figura 3.3. Las especies forman las filas, mientras que las columnas son los ocho huesos más representativos en el esqueleto de un ave rapaz, ( cráneo, húmero, radio, cúbito, coxal, fémur, tibiotarso, tarsometatarso), en la base de datos se presentan once columnas, ya que el hueso del cráneo y del coxal se deben medir en longitud y anchura. En la Figura 3.1 se muestra un extracto de la base de datos utilizada. 3.1.2. Métodos Estos métodos serán utilizados en la comparación de los diferentes algoritmos, sección 3.2. 12 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Figura 3.1: Base de datos. (Fuente: Elaboración propia) Overfitting y Underfitting El problema del Overfitting, sobre-entrenamiento en español, en el ámbito del machine learning consiste en el aprendizaje erróneo de nuestro algoritmo con los datos suministrados, ya que éste solo predecirá correctamente aquellos datos idénticos al entrenamiento. Esto provoca que el algoritmo no sea capaz de distinguir datos factibles [8]. En cambio, el Underfitting, falta de entrenamiento en español, es lo opuesto al overfitting, ya que este problema surge cuando los datos de entrenamiento del algoritmo son muy escasos o no hay diversidad entre ellos, provocando sesgos en el resultado, excluyendo datos válidos. En la Figura 3.2 se puede observar una gráfica aclarativa del resultado esperado de nuestro modelo y lo que provoca los problemas de overfitting y underfitting. Figura 3.2: Gráfica comparativa del Overfitting y Underfitting. (Fuente: https://www. aprendemachinelearning.com/que-es-overfitting-y-underfitting-y-como-solucionarlo/) Para evitar estos problemas, o que afecten los menos posible, se realizará: [9] Obtención de una cantidad suficiente de datos para entrenar el modelo y validarlo. Clases variadas y balanceadas, la cantidad y variedad de clases debe ser equitativa. Dividir el conjunto de datos en entrenamiento y test. 13 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Técnica de sobre muestreo de minorías sintéticas Este método conocido también por Synthetic Minority Oversampling Technique, a partir de ahora SMOTE para abreviar, se utiliza para resolver el problema de overfitting y underfitting que puedan presentar los modelos. Nitesh Chawla, describió esta técnica como “la elección de los datos más cercanos en el espacio de características entre dos datos de la clase minoritaria” [10]. Es decir, se elige un dato “A” al azar y de los datos más cercanos a “A” se elige un “B”, se traza un segmento en el espacio de características entre los datos “A” y “B”, generando un nuevo dato “C” que pertenecerá al conjunto de datos [11]. Este método se puede utilizar para crear tantos datos como sean necesarios. En la Figura 3.3, se observa una gran diferencia entre la primera especie, la Perdicera, frente a la última, el Circus Cyaneus, por tanto se realizará un balanceamiento de las clases para que todas ellas tengan un conteo equitativo, facilitando el funcionamiento de los algoritmos. En nuestro modelo solo se aplica SMOTE a los datos de entrenamiento, con el objetivo de tener mejores resultados. Figura 3.3: Contador del número de especies que aparecen en la base de datos. (Fuente: Elaboración propia) 3.2. Comparativa de los algoritmos del DataSet Se han implementado los algoritmos árbol de decisión, SVM y random forest, vistos en la sección 2.2.1, para nuestro modelo y estudiar su grado de eficacia. 14 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Para ello se ha realizado una tabla 3.1 comparativa entre los distintos algoritmos estudiados y su precisión sin aplicar SMOTE y aplicándolo. Algoritmo score con SMOTE score sin SMOTE Árbol de decisión 0.98 (+/- 0.03) 0.94 (+/- 0.05) SVM 1.00 (+/- 0.00) 1.00 (+/- 0.00) Random Forest 1.00 (+/- 0.01) 0.98 (+/- 0.02) Cuadro 3.1: Comparativa de algortimos La diferencia entre el score, precisión del algoritmo al predecir, aplicando SMOTE y sin aplicarlo es mínima. Para nuestra elección nos basaremos en la columna de aplicación con SMOTE, parqa evitar problemas de overfitting, sección 3.1.2, en nuestro modelo. En la tabla 3.1 se muestra una ligera diferencia entre el algoritmo de árbol de precisión y los de SVM y Random Forest. El árbol de decisión queda descartado por tener un score inferior al de los otros dos algoritmos, aunque la precidicción haya sido válida, la del resto fue superior. A continuación, se debe decidir entre utilizar el SVM y el Random Forest. Como ambos algoritmos tienen una precisión del 1.00, se decide utilizar en nuestro modelo el random forest, porque es un método preciso, no sufre de overfitting y para este modelo parece el algoritmo más adecuado, ya que el SVM no es tan eficaz cuando hay muchas características y no se puede asegurar un amplio margen entre los dos vectores más cercanos. 15 Capítulo 4 Herramienta de desarrollo Este capitulo trata la implementación de la aplicación web, desde la arquitectura seguida, las tecnologías utilizadas para el desarrollo backend (Django, framework de Python) y las del fronted (HTML5, lenguaje de marcas de hipertexto para la creación de las plantillas web y CSS3, hojas de estilo en cascada para darle formato, diseño y estilo al documento escrito en lenguaje de marcado), hasta las herramientas de trabajo que se han utilizado para este proyecto. La aplicación “Identificación de restos óseos de las aves rapaces emblematicas” se puede visitar en el siguiente enlace [ http://sdelanieta.pythonanywhere.com ] y si lo que desea es ver como se ha programado dicha aplicación, en este enlace encontrará el código fuente [https://github.com/Enolah/djangoTFG]. 4.1. Pruebas de arquitectura Estas pruebas sirven para conocer si las tecnologías conocidas para aplicarse a la programación web son viables para mi proyecto. Se han desarrollado dos prototipos con las mismas funcionalidades básicas (pagina de inicio con enlace a otra página donde se implementa el algoritmo), para su posterior evaluación, donde analizaremos las partes positivas y negativas de la utilización de dichas tecnologías. Esto permite decidir cual de las dos opciones es más viable para la construcción del software. NODE.JS + JAVASCRIPT JavaScript es un lenguaje de programación y scripting, encargado de dar dinamismo e interactividad a las paginas web, complementándose con HTML y CSS para añadir funciones avanzadas del lado cliente y así no construir una pagina plana [12]. Siendo el numero tres en el índice de Popularidad PYPL de Febrero 2021 [13], se le considera uno de los tres lenguajes nativos de la web (HTML, CSS, JavaScript). Node.js es un entorno en tiempo de ejecución multiplataforma para la capa del servidor basado en JavaScript. Pero no se debe confundir con un lenguaje de programación o framework (plataforma para desarrollar aplicaciones software), ya que es un entorno de ejecución que se utiliza para ejecutar JavaScript fuera del navegador [14]. 16 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Aunque Node.js puede utilizarse tanto para fronted como para backend, en este prototipo se utilizó para construir el servidor de la app web, consta de una estructura “Single Threaded Event Loops” pudiendo así manejar múltiples clientes al mismo tiempo.En la Figura 4.1 se puede ver la arquitectura de Node.js. Figura 4.1: Procesamiento de Node.js las peticiones entrantes utilizando el bucle de eventos. (Fuente: Elaboración propia) En la Figura 4.1 se puede observar que es un modelo de solicitud-respuesta multihilo,varios clientes envían una solicitud y el servidor procesa cada una de ellas antes de devolver la respuesta. Sin embargo, se utilizan múltiples hilos para procesar las llamadas concurrentes. Estos hilos se definen en un pool de hilos, y cada vez que llega una petición, se asigna un hilo individual para manejarla [14]. Por ultimo, a Node.js le añadimos una serie de paquetes, que se explicarán después. Los paquetes utilizados fueron: 1. Express: Framework basado en el módulo de HTTP que proporciona la posibilidad de dividir la función callback que gestiona peticiones HTTP en varias fases y mecanismos de alto nivel para acceder a algunas componentes de la petición. 2. Express session: Gestiona el almacenamiento de sesiones. Este middleware añade el atributo sesión al objeto request que contiene los datos de sesión correspondientes al cliente que se está atendiendo. 3. Body-parser: Obtiene el cuerpo de la petición HTTP, interpreta su contenido y modifica el objeto request añadiéndole un nuevo atributo (body). 4. Moment: Permite manejar fechas, es mas potente que la clase Date. 5. Nodemon: Monitoriza los cambios, en el momento que detecta un cambio reinicia el servidor. 17 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM 6. Ejs: son documentos HTML con marcadores especiales de varios tipos. Utilizados en nuestra aplicación como plantillas o subplantillas. Para la implementación de la web se utilizó EJS, el cual también es un lenguaje de plantillas simples que permite generar lenguaje de marcado como HTML con JavaScript simple. También nos permite crear subplantilla para no repetir código. Es la opción mas utilizada a la hora de crear una aplicación con Node.js, ya que es muy útil para generar HTML y contenido dinámico. Una vez que se tiene una idea general de las tecnologías que vamos a utilizar para este prototipo decidimos ponerlo a prueba y evaluar sus ventajas y desventajas. •Ventajas. Durante el transcurso de la carrera he tenido asignaturas que trataban estas mismas tecnologías, sabiendo así ya utilizarlas. Hay mucha documentación e información para crear una pagina web con esta tecnología. La aplicación puede ser dinámica e interactuar con el usuario a tiempo real. La ejecución de un modelo vista controlador (MVC) es viable y sencilla de implementar. •Desventajas. Poca información encontrada para la compatibilidad entre JavaScript y Python. Para conseguir que el algoritmo funcionase era bastante complicado, no se conseguía una buena conexión. DJANGO Python es un lenguaje de programación orientado a objetos de alto nivel con semántica dinámica incorporada, principalmente para desarrollar aplicaciones web y de escritorio. Esta es una opción multiplataforma con bibliotecas e intérpretes gratuitos disponibles [15]. La empresa The World Company of Lawrence en Kansas, Estados Unidos, contaba con un grupo de desarrolladores que decidieron hacer una serie de aplicaciones en PHP para optimizar los procesos de la empresa, en 2003 cambiaron de lenguaje de programación a Python. Después de un proceso de múltiples mejoras consiguieron desarrollar un framework muy potente, llamado Django. EN 2005, lanzaron Django como código abierto, facilitando que la comunidad de desarrolladores aportase mejoras, soporte y usabilidad. Así es como Django empezó a darse a conocer. No fue hasta 2008 cuando Django obtuvo las características base por las que actualmente es conocido: • Es muy rápido programar una aplicación web funcional. • Contiene funcionalidades ya creadas para facilitar el desarrollo, por ejemplo, la autenticación de un usuario. • Solución de problemas de seguridad. 18 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Los escenarios descritos a continuación son distintas situaciones del mundo real en las que los futuros usuarios de nuestra aplicación se podrían encontrar y necesitar la aplicación para darle solución a su problema. Escenario 1. Reconocimiento al aire libre. Un senderista o grupo de senderistas realizan una ruta cuando se percatan de un ave en estado de descomposición. Antes de llamar al Servicio de Protección de la Naturaleza (SEPRONA), el caminante desea saber de qué ave se trata. Por tanto,el usuario puede lanzar la aplicación desde su móvil, poner los datos de los huesos que haya podido medir para saber de qué ave se trata y así proporcionar más información al SEPRONA cuando llamen. Escenario 2. Reconocimiento cultural y/o científico. En el caso de casas museo, colegios que tiene aves disecadas o disponen de restos óseos sin identificar. Entonces, el usuario con un dispositivo con acceso a internet podrá acceder a la aplicación y meter los datos e incluso se puede consultar las guías de identificación de restos óseos [21], [22]. Y así, se podrán poner los restos de exposición o enseñárselos a visitantes, alumnos o cualquier persona que quiera aprender más sobre las aves. Escenario 3. Reconocimiento policial. El SEPRONA tiene que lidiar diariamente contra la caza furtiva, y esta aplicación puede serles muy útil para la identificación del ave al momento de encontrarlo y así acelerar el proceso de detención de los cazadores o encontrar a los culpables. 5.3. Requisitos funcionales En esta sección se describe los requisitos funcionales de la aplicación. Con estos requisitos se pretende mostrar los servicios que proporciona la aplicación. Se han dividido en tres servicios: Servicio de contacto: Zona de la aplicación donde aparecen los datos de contacto de la Universidad Complutense, guía de aves cedida para este proyecto, el Ministerio para la Transición Ecológica y el Reto Demográfico (MITECO) y los autores de las fotografías que aparecen en la aplicación. Servicio de información: Zona de la aplicación donde los usuarios pueden descargar las dos guías creadas por Víctor García Matarraz para aprender más sobre la medición e identificación de restos óseos. Así, como un archivo con una serie de números telefónicos para llamar en caso de encontrarse algún ave muerto. Servicio de predicción de aves rapaces emblemáticas según sus restos óseos: Zona de la aplicación donde reside el algoritmo de predicción de aves rapaces a partir de sus restos óseos descrito en el Capítulo 3, que a partir de una interfaz intuitiva para los usuarios se facilita su uso. 25 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM 5.4. Interfaz de usuario La descripción de las distintas interfaces que forman la aplicación web se hará en base al diseño web para un monitor, para dispositivos como móviles y tabletas, se mostrará una imagen, su funcionamiento es igual pero la vista cambia dependiendo del dispositivo desde el que se accede. 5.4.1. Interfaz Principal Es la interfaz “base” de nuestra aplicación, se puede ver en la Figura 5.1, ya que en ella se presentan las distintas características que se repetirán también en el resto de vistas. En la parte superior se presenta el nombre de la aplicación web. Debajo del nombre se puede observar la barra de navegación, desde la cual podremos acceder a cualquiera de las otras interfaces restantes. En la parte inferior de la vista se encuentra el pie de página con el logotipo de la Universidad Complutense de Madrid y el correspondiente con MITECO. La diferencia con el resto de vistas es la presentación de bienvenida al usuario, un pequeño muestrario de aves (con sus respectivos nombres) y un botón que nos dirige directamente a la interfaz de identificación, Figura ??. Figura 5.1: Página inicio de la aplicación. Formato monitor. (Fuente: Elaboración propia) 5.4.2. Interfaz Identificación En esta interfaz se puede observar las mismas características presentadas en la interfaz principal 5.4.1. Esta vista se presenta en formato “pantalla dividida”, en la que cada división cambiara dependiendo de la interacción del usuario: 26 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM 1. Todavía no se ha introducido ningún dato 5.2: La parte de la izquierda observamos el formulario que podrán rellenar (entero o no) con los datos de los restos óseos. La parte de la derecha, se muestra con una imagen de un esqueleto de ave rapaz en el cual se han asignado los nombres de los huesos correspondientes, para permitir al usuario localizarlos mas fácilmente. Figura 5.2: Página de identificación de la aplicación antes de introducir valores. Formato monitor.(Fuente: Elaboración propia) 2. Se ha calculado la predicción 5.3: La parte de la izquierda se mantiene igual, borrándose los datos de entrada. La parte de la derecha, donde antes veíamos la imagen del esqueleto, ahora se mostrara los resultados obtenidos de la predicción. 5.4.3. Interfaz Contacto En esta interfaz se puede observar las mismas características presentadas en la interfaz principal 5.4.1. En esta vista se pueden leer los datos de contacto de las personas encargadas de la investigación y de la idea en el tema de la identificación de restos óseos. También se cuenta brevemente el motivo que impulso esta aplicación web y el reconocimiento a los autores de las fotografías y documentos utilizados en la aplicación. Véase la Figura 5.4. 27 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Figura 5.3: Página de identificación de la aplicación mostrando los resultados obtenidos. Formato monitor.(Fuente: Elaboración propia) Figura 5.4: Página de contacto. Formato monitor.(Fuente: Elaboración propia) 28 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM 5.4.4. Interfaz Recursos En esta interfaz se puede observar las mismas características presentadas en la interfaz principal 5.4.1. En esta vista se muestran varios enlaces de descarga, para poder visualizar desde nuestro dispositivo o descargar los documentos presentes. Véase la Figura 5.5. Figura 5.5: Página de recursos para descargar. Formato monitor.(Fuente: Elaboración propia) 5.5. Navegación entre interfaces A continuación, se explicará el diagrama mostrado en la [figura]. Este diagrama muestra la manera en que se puede navegar entre las distintas interfaces de la aplicación. 1. El usuario accede a la aplicación y se encuentra la página de inicio con tres opciones a elegir, podrá ir a “recursos”, “contacto” o pulsar el botón comenzar si quiere ir a la pantalla de “identificación”. Desde cualquier pantalla se podrá volver a la anterior u otra cualquiera. 2. Si elige ir a “recursos”, solo tendrá que seleccionar en el menú de arriba de la aplicación la opción “recursos” que le llevará a esa pantalla. Una vez ahí, podrá descargar los archivos que desee. Si después desea ir a “contacto” mira el paso 3, por el contrario si quiere navegar al “inicio” mire el paso 1. 3. Si elige ir a “contacto”, solo tendrá que seleccionar en el menú de arriba de la aplicación la opción ir a “contacto” que le llevará a esa pantalla. Una vez ahí, podrá leer la información de contacto de los autores que han colaborado en la aplicación. Si después desea ir a “recursos” mira el paso 2, por el contrario si quiere navegar al “inicio” mire el paso 1. 4. Si elige pulsar el botón “comenzar”, irá directamente a la pantalla de “identificación” allí podrá ingresar en el formulario los datos correspondientes a los restos óseos que haya medido. Una vez introducidos, podrá realizar tres opciones: “restaurar”,“limpiar” o “calcular”. 29 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM 5. La opción “restaurar”, resetea el formulario para dejarlo vació de los datos que haya introducido. 6. La opción “limpiar”, elimina los datos del formulario para dejarlo vacío y además eliminará cualquier resultado que haya en la pantalla de las probabilidades que haya calculado. 7. La opción “calcular”, muestra la probabilidad que hay de que sea un tipo de ave u otra en función de los datos que hayas introducido en el formulario. Además siempre podrás introducir más datos y comprobar su probabilidad. 30 Técnicas de aprendizaje para la identificación de rapaces por restos óseos UCM Figura 5.6: Diagrama del flujo de navegación entre las distintas interfaces. (Fuente: Elaboración propia) 31 Capítulo 6 Conclusiones El objetivo del proyecto ha sido desarrollar una aplicación web que permita la introducción de las medidas de unos determinados huesos avícolas para la posterior predicción del ave al que correspondan. La mayor motivación que ha guiado este trabajo ha sido lo innovadora que resultaba ser la idea y el hecho de poder participar en algo que fuese a ser de utilidad para muchas personas, así como la implementación desde cero de un algoritmo. El primer paso fue el desarrollo de un algoritmo en Python. Para poder elegir el que mejor se ajustase a este proyecto se llevó a cabo una investigación sobre los distintos tipos de inteligencia artificial. Una vez elegido y tras la realización de este, esta muestra la probabilidad de X dependiendo del número de huesos introducidos. Tras la realización del algoritmo se llevó a cabo la página web. Para ello se probaron varias tecnologías distintas que permitían realizar una modelo vista controlador y finalmente se acabó usando un framework de Python que resultaba ser mucho más cómodo a la hora de ser implementado junto al algoritmo ya creado. La interfaz no tiene mayor complicación ya que está hecha en HTML y CSS. Para finalizar, se buscó un servidor gratuito en el que poder instalar Python y todas las librerías que ofrece para poder llevar a cabo el correcto funcionamiento del proyecto. 6.1. Trabajo futuro Se podría enviar los datos introducidos en la aplicación para que una persona cualificada los revisase y los incluyese en la base de datos y así poder ir mejorando los datos y la estadística. Se podría hacer la aplicación a móvil. La introducción de datos sea a través de fotos. Poder añadir más tipos de aves al estudio. 32 Conclusions The aim of my project has been to develop a web application that allows the introduction of the measurements of the bones of birds for the subsequent prediction of the bird to which they correspond. When I started talking about this project, what motivated me was how innovative the idea was and the fact that I could participate in something that would help many people, as well as the implementation of an algorithm from scratch. The first thing I did was the algorithm in Python. I had to research about the different types of Artificial Intelligence and choose the one that best fits my project. Once chosen, we made the algorithm that shows us the probability of X depending on the number of bones. Then I made the web page, I tried several technologies to make a model view controller and I ended up using a python framework, it was much more comfortable to join together with the algorithm already created. The interface is in HTML and CSS without much complication. Finally, I looked for a free server where I could install python and all its libraries, so that everything would work correctly. Future work The data entered in the application could be sent to a qualified person to be reviewed and included in the database in order to improve the data and statistics. The application could be made mobile The introduction of data using photos. To be able to add more types of birds to the study. 33 Índice de figuras 2.1. Esquema clasificación Aprendizaje Máquina. (Fuente: Elaboración propia) 6 2.2. Diagrama de flujo del aprendizaje supervisado. (Fuente: https://medium. com/soldai/tipos-de-aprendizaje-automático-6413e3c615e2) . . . . . . . . 7 2.3. Ejemplo árbol de decisión generalizado. (Fuente: https://www.datacamp. com/community/tutorials/decision-tree-classification-python) . . . . . . 8 2.4. Ejemplo SVM generalizado. (Fuente: https://www.datacamp.com/community/ tutorials/svm-classification-scikit-learn-python) . . . . . . . . . . . . . . 8 2.5. Ejemplo Random Forest generalizado. (Fuente: https://www.datacamp. com/community/tutorials/random-forests-classifier-python) . . . . . . . 9 2.6. Diagrama de flujo del aprendizaje no supervisado. (Fuente:https://medium. com/soldai/tipos-de-aprendizaje-automático-6413e3c615e2) . . . . . . . . 10 2.7. Ejemplo dendograma. (Fuente: https://www.jacobsoft.com.mx/es_mx/clustering-jerarquico-con-python/) 11 2.8. Diagrama de flujo del aprendizaje por refuerzo. (Fuente: https://medium. com/soldai/tipos-de-aprendizaje-automático-6413e3c615e2) . . . . . . . . 11 3.1. Base de datos. (Fuente: Elaboración propia) ................ 13 3.2. Gráfica comparativa del Overfitting y Underfitting. (Fuente: https://www. aprendemachinelearning.com/que-es-overfitting-y-underfitting-y-como-solucionarlo/) 13 3.3. Contador del número de especies que aparecen en la base de datos. (Fuente: Elaboración propia).............................. 14 4.1. Procesamiento de Node.js las peticiones entrantes utilizando el bucle de eventos. (Fuente: Elaboración propia).................... 17 4.2. Ejemplo de un servidor en Django. (Fuente: Elaboración propia) . . . . . 19 4.3. Esquema de Django. (Fuente: Elaboración propia)............. 20 4.4. Esquema de Django versión 2. (Fuente: Elaboración propia) ....... 21 5.1. Página inicio de la aplicación. Formato monitor. (Fuente: Elaboración propia) ...................................... 26 5.2. Página de identificación de la aplicación antes de introducir valores. Formato monitor.(Fuente: Elaboración propia)................. 27 5.3. Página de identificación de la aplicación mostrando los resultados obtenidos. Formato monitor.(Fuente: Elaboración propia) ............ 28 5.4. Página de contacto. Formato monitor.(Fuente: Elaboración propia) . . . 28 5.5. Página de recursos para descargar. Formato monitor.(Fuente: Elaboración propia)..................................... 29 5.6. Diagrama del flujo de navegación entre las distintas interfaces. (Fuente: Elaboración propia).............................. 31 34