Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. PROTOTIPO DE APLICATIVO WEB PARA ENCONTRAR MASCOTAS PERDIDAS MEDIANTE LA IDENTIFICACIÓN DE RASGOS Y CARACTERÍSTICAS VISUALES USANDO REDES NEURONALES PROFUNDA YOULVIS JOSE JIMENEZ PEÑATE Trabajo de grado para optar al título de Ingeniero de Sistemas y Computación Juan Sebastián Valencia Villa Ingeniero de Control, Ingeniero Industrial y Magister en Ingeniería - Ingeniería de Sistemas UNIVERSIDAD EIA INGENIERÍA DE SISTEMAS Y COMPUTACIÓN ENVIGADO 2023 ENVIGADO La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Dedico este trabajo de grado a mi amada familia, por ser mi mayor impulso y motivación en mi camino hacia el éxito académico. A mi querida madre, padre y hermanos, gracias por su apoyo incondicional y por creer en mí. Este logro es nuestro y celebro con gratitud el amor y la dedicación que me han brindado. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. AGRADECIMIENTOS Quiero expresar mi profundo agradecimiento a mi amada familia, cuyo amor, apoyo y constante estímulo han sido el motor que me impulsa a alcanzar mis metas. Agradezco a la Universidad EIA por brindarme una educación de calidad y las herramientas necesarias para mi crecimiento académico. En especial, quiero reconocer y agradecer a mi tutor Juan Sebastián Valencia Villa por su valiosa guía, paciencia y dedicación en cada etapa de este proyecto. Por último, quiero agradecer a mis amigos, quienes han estado a mi lado brindándome su apoyo incondicional y compartiendo este emocionante viaje académico conmigo. A todos ustedes, mi familia, mi tutor y mis amigos, les dedico este logro y les agradezco por ser parte de mi camino hacia el éxito. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. CONTENIDO pág. INTRODUCCIÓN ............................................................................................................. 12 1. PRELIMINARES ....................................................................................................... 13 1.1 Planteamiento del problema .............................................................................. 13 1.2 Objetivos del proyecto ....................................................................................... 14 1.2.1 Objetivo General ......................................................................................... 14 1.2.2 Objetivos Específicos ................................................................................. 14 1.3 Marco de referencia ........................................................................................... 14 1.3.1 Antecedentes ............................................................................................. 14 1.3.2 Marco teórico .............................................................................................. 15 2. METODOLOGÍA ....................................................................................................... 20 2.1 Levantamiento de requisitos .............................................................................. 21 2.1.1 Identificación de variables .......................................................................... 21 2.1.2 Definición de usuario mediante diagrama de empatía ................................ 22 2.1.3 Requisitos funcionales ................................................................................ 23 2.1.4 Requisitos no funcionales ........................................................................... 24 2.1.5 Recolección de imágenes ........................................................................... 25 2.2 Diseño de la arquitectura ................................................................................... 26 2.2.1 Componentes principales ........................................................................... 26 2.2.2 Casos de uso ............................................................................................. 29 2.2.3 Mockup del prototipo web ........................................................................... 30 2.3 Aumento de datos ............................................................................................. 33 La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. 2.4 Entrenamiento del modelo ................................................................................. 35 2.5 Desarrollo e integración del prototipo web ......................................................... 39 2.5.1 Configuración del entorno de desarrollo ..................................................... 39 2.5.2 Estructura de proyecto en el front-end ........................................................ 40 2.5.3 Estructura de proyecto en el back-end ....................................................... 41 2.5.4 Configuración de acceso y uso de servicios AWS ...................................... 42 2.5.5 Desarrollo e integración de los módulos y componentes del sistema ......... 43 2.5.6 Módulo de identificación de mascotas ........................................................ 45 2.5.7 Módulo de autenticación ............................................................................. 48 3. PRESENTACIÓN Y DISCUSIÓN DE RESULTADOS ............................................... 50 3.1 Modelo de identificación de perros .................................................................... 50 3.2 Prototipo de aplicación resultante ...................................................................... 53 3.2.1 Home .......................................................................................................... 54 3.2.2 Inicio de sesión ........................................................................................... 54 3.2.3 Registro ...................................................................................................... 55 3.2.4 Buscar (funcionalidad principal) .................................................................. 56 4. CONCLUSIONES Y CONSIDERACIONES FINALES .............................................. 57 REFERENCIAS ............................................................................................................... 59 ANEXO 1 ......................................................................................................................... 61 La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. LISTA DE TABLAS Tabla 1 Rendimiento por etiquetas .................................................................................. 52 La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. LISTA DE FIGURAS Ilustración 1 Imagen que representa el proceso de la metodología scrum. Fuente: Digité. ........................................................................................................................................ 20 Ilustración 2 Diagrama de Empatía. ................................................................................. 23 Ilustración 3 Ejemplo de fotos recolectadas en la encuesta. ............................................ 26 Ilustración 4 Diagrama de la arquitectura (desarrollo propio). .......................................... 27 Ilustración 5 Diagrama de caso de uso. ........................................................................... 30 Ilustración 6 Mockup del Inicio de Sesión. ....................................................................... 31 Ilustración 7 Mockup del Registro. ...................................................................................31 Ilustración 8 Mockup de la Opción “Encontré”. ................................................................. 32 Ilustración 9 Mockup de la Opción “Buscar en el mapa”. ................................................. 32 Ilustración 10 Mockup del Perfil. ...................................................................................... 33 Ilustración 11 Ejemplo de aumentado de datos. .............................................................. 34 Ilustración 12 Paso a paso para crear un modelo personalizado. Fuente: AWS .............. 35 Ilustración 13 Estructura de carpetas del dataset. Fuente: AWS ...................................... 36 Ilustración 14 Opción etiquetado automático. Fuente: AWS ............................................ 37 Ilustración 15 Estructura de proyecto en el front-end. ...................................................... 41 Ilustración 16 Estructura de proyecto en el back-end. ...................................................... 42 Ilustración 17 Ejemplo uso de credenciales AWS con el SDK en NodeJs. ....................... 44 Ilustración 18 Ejemplo de uso del servicio Amazon Rekognition label detection. Fuente: AWS ................................................................................................................................ 47 Ilustración 19 Diagrama de flujo de la solución modulo identificación de mascotas. ........ 48 Ilustración 20 Resultado de la evaluación. Fuente: AWS ................................................. 50 La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Ilustración 21 Imágenes de prueba “Kuki”. ....................................................................... 53 Ilustración 22 Imágenes de prueba “Arza, Loki y Berlin”. ................................................. 53 Ilustración 23 Home. ........................................................................................................ 54 Ilustración 24 Inicio de sesión. ......................................................................................... 55 Ilustración 25 Registro. .................................................................................................... 55 Ilustración 26 Funcionalidad buscar. ................................................................................ 56 Ilustración 27 Funcionalidad buscar con resultados. ........................................................ 56 La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. LISTA DE ANEXOS Anexo 1 Resultado encuesta a tenientes de perros ......................................................... 61 Anexo 2 Código para el aumentado de imágenes. ........................................................... 62 La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. RESUMEN En la actualidad, encontrar a una mascota perdida puede ser difícil y frustrante. Los métodos tradicionales para localizarlas suelen ser costosos o invasivos, como los implantes de microchip. Ante este problema, este proyecto propone una solución efectiva y accesible. Para lograrlo, se utiliza una herramienta llamada Amazon Rekognition Custom Labels de AWS. Esta herramienta nos permite entrenar un modelo personalizado utilizando una gran cantidad de fotos de perros tomadas desde diferentes ángulos. De esta manera, el modelo aprende a reconocer a las mascotas en diversas posiciones y situaciones. En comparación con otros métodos de búsqueda, esta técnica ha demostrado tener una alta precisión. Proporciona una alternativa más eficaz y precisa para encontrar a las mascotas perdidas, evitando gastos excesivos y procedimientos invasivos como los microchips. El resultado obtenido es un prototipo de aplicación web que permite a los dueños de mascotas buscar de manera efectiva a sus compañeros perdidos. Lo mejor de todo es que este enfoque de reconocimiento facial mediante redes neuronales profundas no requiere la colocación de ningún dispositivo adicional en la mascota, lo que reduce los inconvenientes y costos asociados. Además, la aplicación web es fácilmente accesible desde cualquier dispositivo con conexión a internet, brindando disponibilidad a los usuarios en cualquier momento y lugar. La implementación de este proyecto ofrece varios beneficios significativos. En primer lugar, proporciona una solución más efectiva y precisa para encontrar mascotas perdidas, lo que brinda tranquilidad y alivio a los dueños preocupados. Además, al evitar métodos invasivos y costosos, se protege la salud y el bienestar de las mascotas. Asimismo, al ser una aplicación web, ofrece una forma rápida y sencilla de acceder a la herramienta de búsqueda desde cualquier dispositivo con conexión a internet. Si bien este proyecto representa un avance significativo en la identificación de perros perdidos, es importante mencionar que existen oportunidades de mejora. Se sugiere ampliar el conjunto de datos de entrenamiento para mejorar la capacidad del modelo de reconocimiento de perros y considerar la inclusión de un modelo dedicado al reconocimiento de gatos. Estas mejoras ofrecerían a los usuarios una solución más completa para encontrar a sus mascotas perdidas, ya sean perros o gatos. Palabras clave: mascotas perdidas, reconocimiento de imagen, redes neuronales profundas, aplicación web, localización. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. ABSTRACT Finding a lost pet can be challenging and frustrating. Traditional methods for locating them are often expensive or invasive, such as microchip implants. Addressing this issue, this project proposes an effective and accessible solution. To achieve this, a tool called Amazon Rekognition Custom Labels from AWS is utilized. This tool enables training a custom model using a large number of dog photos taken from different angles. As a result, the model learns to recognize pets in various positions and situations. Compared to other search methods, this technique has demonstrated high precision. It provides a more effective and accurate alternative for finding lost pets, avoiding excessive costs and invasive procedures like microchips. The outcome is a prototype web application that allows pet owners to effectively search for their lost companions. The best part is that this deep neural network-based facial recognition approach does not require any additional device placement on the pet, reducing inconveniences and costs associated. Additionally, the web application is easily accessible from any internet-connected device, providing availability to users anytime and anywhere. The implementation of this project offers several significant benefits. Firstly, it provides a more effective and precise solution for finding lost pets, bringing peace of mind and relief to concerned owners. Moreover, by avoiding invasive and costly methods, the health and well-being of the pets are protected. Furthermore, being a web application, it offers a quick and convenient way to access the search tool from any internet-connected device. While this project represents a significant advancement in identifying lost dogs, it is important to mention that there are opportunities for improvement. It is suggested to expand the training dataset to enhance the dog recognition model's capability and consider including a dedicated model for cat recognition. These improvements would provide users with a more comprehensive solution for finding their lost pets, whether they are dogs or cats. Keywords: lost pets, image recognition, deep neural networks, web application, localization. La información presentada en este documento es de exclusiva responsabilidad de losautores y no compromete a la EIA. INTRODUCCIÓN En la actualidad, muchas personas tienen mascotas en sus hogares, especialmente perros y gatos, según estudios realizados en diferentes países (GfK-Nürnberg Gesellschaft für Konsumforschung e.V., 2016, pág. 8). En Colombia, por ejemplo, se ha observado un aumento en la preferencia de tener mascotas en lugar de hijos en las familias jóvenes (Observatorio de Desarrollo Económico, 2019). Sin embargo, esta tendencia también ha traído consigo desafíos, como la pérdida de mascotas, lo cual genera preocupación y altera la rutina diaria de las familias. La pérdida de una mascota puede ocasionar angustia y afectar tanto a la familia como al propio animal (Soy Vida, 2020). La búsqueda de la mascota extraviada puede ser un proceso difícil y costoso, ya que los métodos tradicionales de geolocalización suelen ser invasivos o costosos, como los implantes de microchip. Aunque existen opciones más económicas, como las etiquetas para collares, estas también presentan desventajas, ya que pueden perderse fácilmente o no ser bien toleradas por los animales. En este contexto, surge la necesidad de encontrar una solución efectiva y accesible para ayudar a los dueños de mascotas a localizar a sus compañeros perdidos. Para abordar esta problemática, este trabajo de grado propone el desarrollo de un prototipo de aplicación web que utilice tecnología de inteligencia artificial para la identificación y localización de mascotas extraviadas. El objetivo general de este proyecto es crear un prototipo de aplicación web que permita a los dueños de mascotas extraviadas localizarlas mediante el reconocimiento de rasgos y características visuales únicas de cada animal. Para lograrlo, se empleará la herramienta de AWS, Amazon Rekognition Custom Labels, la cual facilita el entrenamiento de un modelo personalizado utilizando una amplia variedad de fotos de perros tomadas desde diferentes ángulos. La metodología utilizada comprenderá varias etapas, como el levantamiento de requisitos, la recolección de imágenes para el entrenamiento del modelo, el diseño de la arquitectura de la aplicación web, el aumento de datos para mejorar la precisión del reconocimiento, el entrenamiento del modelo y el desarrollo e integración del prototipo web. En los resultados obtenidos se presentan y analizan los resultados del proyecto, incluyendo métricas e indicadores de evaluación del funcionamiento y la eficacia del prototipo, así como los logros alcanzados en relación con los objetivos planteados. Las conclusiones resumen los principales hallazgos del trabajo de grado, destacando los aportes realizados, las limitaciones identificadas y las recomendaciones para investigaciones futuras. Se enfatiza la importancia y relevancia de la aplicación web como una solución efectiva para la localización de mascotas extraviadas. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. 1. PRELIMINARES 1.1 PLANTEAMIENTO DEL PROBLEMA En el mundo varios hogares tienen al menos una mascota, como lo es un perro o un gato, que son los dos compañeros animales más frecuentes que tienen las personas, según una encuesta realizada por la compañía GfK (GfK-Nürnberg Gesellschaft für Konsumforschung e.V., 2016, pág. 8) a más de 27 mil usuarios en línea de 22 países diferentes, dando como resultado que, la mascota más popular con un 33% de los hogares encuestados tienen al menos un perro seguido de un 23% poseen como mínimo un gato en su casa. El país colombiano no es la excepción, de acuerdo con BrandStrat bajo una alianza con Offerwise, seis de cada 10 hogares del país tienen mascotas (GABRIEL FORERO OLIVEROS, como se citó en La República, 2019) siendo, nuevamente, en mayor cantidad los perros seguido de los gatos, un porcentaje que cada vez va siendo mayor dado a la preferencia, principalmente, en familias jóvenes de tener mascotas en lugar de hijos. Esta inclinación trae consigo problemas y necesidades que requieren una atención especial, como lo son la pérdida de las mascotas que puede causar desconsuelo en la familia de la que hacían parte, alterando la rutina diaria de esta familia como lo es el tiempo que tiene invertir para encontrar a su mascota porque no cuentan con algún metodo de geolocalización ya sea por lo costoso que puede ser o por no exponer a sus mascotas a implantes que pueden causar molestias en los animales, aunque existen otros métodos baratos y no invasivos, como lo es la etiqueta para el collar pero este es muy fácil de perder y no todo los perros o gatos se acostumbran a tener un collar. Cuando una mascota se extravía, se enfrenta a un mundo desconocido y peligroso en las calles. Sin el cuidado y la protección de su dueño, la mascota se convierte en un animal callejero vulnerable, que puede experimentar dificultades para encontrar comida, refugio y agua. Además, sin la vacunación y el cuidado adecuado, la mascota puede desarrollar enfermedades y convertirse en una fuente de infecciones para otros animales y humanos. Los animales callejeros también pueden ser una preocupación para la comunidad. Estos animales pueden causar problemas sociales y de salud, como la creación de residuos y la propagación de enfermedades. Además, si se les permite deambular libremente, pueden causar accidentes automovilísticos y poner en peligro a conductores y peatones. Es importante encontrar una solución para ayudar a las mascotas extraviadas a encontrar a sus dueños y evitar que se conviertan en animales callejeros. Una posible solución es una aplicación web que use inteligencia artificial para localizar a las mascotas perdidas. Esta aplicación podría utilizar los rasgos visuales únicos de la mascota para ayudar a identificarla y rastrearla. De esta manera, los dueños de mascotas pueden encontrar a sus La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. compañeros peludos extraviados de manera rápida y eficiente, evitando que se conviertan en animales callejeros. Teniendo en cuenta la problemática planteada anteriormente, surge la siguiente incógnita: ¿Cómo realizar una aplicación web, en la que pueda ingresar cualquier dispositivo con acceso a internet, que ayude a localizar mascotas extraviadas usando los mismos rasgos faciales de estos con ayuda de la IA? 1.2 OBJETIVOS DEL PROYECTO 1.2.1 Objetivo General Crear un prototipo de aplicación web con tecnología de inteligencia artificial que permita a los dueños de mascotas extraviadas localizarlas mediante el reconocimiento de rasgos y características visuales únicas de cada animal, con el fin de mejorar la eficacia y rapidez en la recuperación de las mascotas perdidas. 1.2.2 Objetivos Específicos • Identificar los rasgos y características únicas visuales relevantes para la identificación de perros, mediante revisión exhaustiva de la literatura especializada. • Diseñar el prototipo de aplicativo web responsive que cumpla con los requisitos y funcionalidades necesarias para la identificación de perros por ejemplar, basado en los rasgos y características únicas visuales identificadas. • Implementar modelos de inteligencia artificial que permitan extraer y analizar rasgos y características únicas visuales de imágenes para la identificación de perros. • Desarrollar el prototipo web que integre los modelos de inteligencia artificial para la identificación de perros, asegurando su correcto funcionamiento y usabilidad. • Evaluar el correcto funcionamiento del prototipo web y de los modelos de identificación de perros mediante métricas e indicadores definidos para este fin. 1.3 MARCO DE REFERENCIA 1.3.1 Antecedentes En los últimos años, la inteligencia artificial ha avanzado significativamente en sus aplicaciones para el reconocimiento individual, desde el reconocimiento en tiempo real de una persona a través deuna imagen o un video, utilizando puntos únicos de la cara de la persona y comparándolos con una base de datos para encontrar el objetivo. Este método ha sido muy útil en empresas como medida de seguridad, ya que tiene un bajo nivel de La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. vulnerabilidad y ayuda a prevenir el robo de información por parte de personas no autorizadas. Además, ha tenido otras aplicaciones como lo explica Amazon Web Services, como la autenticación secundaria en dispositivos móviles, la indexación automática de archivos de imágenes y vídeos para empresas de medios y entretenimiento, e incluso el apoyo a organismos de ayuda humanitaria en la identificación y rescate de víctimas de la trata de personas (Amazon Web Services, 2023). En este proyecto, sin embargo, se buscará a perros extraviados en lugar de personas. El reconocimiento de animales mediante inteligencia artificial es un tema novedoso, especialmente cuando se trata de identificar individualmente al animal en lugar de reconocerlo como parte de un grupo al que pertenece. Es decir, si se trata de un perro llamado "Lucy", la idea es reconocerlo como ese perro individual, Lucy, en lugar de reconocerlo por su raza. Esto puede ser un gran reto, ya que los perros son objetos modificables y encontrar puntos únicos en ellos parece ser imposible. Sin embargo, gracias a características como la nariz del perro, el patrón del pelaje, la forma de las orejas y los ojos, se puede obtener un mejor modelo para identificar al perro de manera individual, al igual que con los gatos. Uno de los primeros trabajos sobre este tema se titula "Where is my puppy? Retrieving lost dogs by facial features" (Moreira, T.P., Perez, M.L., Werneck, R. et al. Where is my puppy? Retrieving lost dogs by facial features, 2017), donde se probaron varios tipos de reconocimiento facial humano en perros y se experimentó con redes convolucionales tanto profundas como superficiales. Se llegó a la conclusión de que la segunda opción obtuvo mejores resultados que la primera, con una precisión de hasta el 81% en condiciones óptimas. Otro trabajo más cercano a lo que se busca en este proyecto, enfocado exclusivamente en el reconocimiento facial en perros, es "Dog Nose-Print Identification Using Deep Neural Networks" (H.B. Bae, D. Pak and S. Lee, "Dog Nose-Print Identification Using Deep Neural Networks", IEEE, 2021). En este trabajo se utilizaron únicamente redes neuronales profundas, tomando como característica única de identificación las huellas de la nariz de los perros, ya que es una propiedad única en ellos. Para este trabajo, se utilizó un método propio (DNNet) con una precisión del 98,987%, un rendimiento bastante alto en comparación con otros métodos experimentados en esta investigación. Junto con un dispositivo móvil, este método es suficiente para adquirir los datos necesarios. 1.3.2 Marco teórico La relación entre las personas y sus mascotas es única y especial, estas brindan compañía, amor y son consideradas miembros de la familia en muchos hogares (ANFAAC, 2023). Sin embargo, una situación que puede llegar a ser muy angustiante para cualquier dueño es cuando su mascota se extravía, esto se puede deducir por los miles de carteles y publicaciones en redes sociales donde los dueños escriben con desespero y recompensas por encontrar a su mascota. El extravío de una mascota no La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. solo afecta emocionalmente al dueño, sino que también puede poner en peligro la seguridad y el bienestar de la mascota misma, la cual puede sufrir lesiones o enfrentar situaciones peligrosas si no se la encuentra a tiempo (Tiendanimal, 2023). Ante este problema, se presenta la necesidad de encontrar una solución efectiva que permita la identificación y localización de las mascotas perdidas de manera rápida y precisa. En este sentido, el presente proyecto tiene como objetivo principal desarrollar un prototipo de aplicativo web que permita identificar y encontrar mascotas perdidas mediante la identificación de rasgos y características visuales, utilizando para ello herramientas de inteligencia artificial y redes neuronales profundas. • Inteligencia Artificial Este término nace en los años 50, dicho por primera vez por el matemático John McCarthy y en resumen es la capacidad que tiene una máquina, por medio de un algoritmo, de imitar la mente humana para resolver problemas, cosa que no era posible y actualmente es una práctica bastante avanzado, capaz de resolver problemas en mucho menos tiempo que una mente humana (McCarthy, WHAT IS ARTIFICIAL INTELLIGENCE?, 2004). • Machine Learning Machine learning o aprendizaje automático es un tipo de técnica de inteligencia artificial donde una máquina genera conocimiento artificial a partir de experiencias, creando patrones para identificar el objetivo que se le propuso, basándose en datos existentes (IBM, 2020). • Deep Learning El deep learning es un enfoque de aprendizaje automático que utiliza múltiples capas de procesamiento neuronal para lograr un mayor grado de precisión en la resolución de problemas y la toma de decisiones. Esta técnica se caracteriza por su capacidad para extraer representaciones de alto nivel y complejidad a partir de grandes conjuntos de datos, lo que permite abordar tareas de reconocimiento de patrones, clasificación, reconocimiento de imágenes y procesamiento del lenguaje natural, entre otros. El uso de múltiples capas de procesamiento en el deep learning permite capturar y modelar de manera más efectiva las relaciones no lineales y las interdependencias presentes en los datos, lo que conduce a mejores resultados en comparación con otros enfoques de aprendizaje automático. La utilización del deep learning en este trabajo se basa en la capacidad de esta técnica para mejorar la precisión en la consecución de los objetivos buscados (IBM, 2020). La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. • Amazon Rekognition Amazon Rekognition es un servicio de aprendizaje automático basado en la nube que proporciona una plataforma de reconocimiento de imágenes y videos altamente escalable y precisa. Esta tecnología utiliza modelos de aprendizaje profundo para analizar y etiquetar automáticamente imágenes y videos. Además, también permite la detección de objetos, escenas, rostros y texto en imágenes, así como el reconocimiento de celebridades y la identificación de contenido explícito. Amazon Rekognition funciona mediante el procesamiento de imágenes o videos enviados al servicio a través de una API. El servicio analiza los datos y devuelve información detallada sobre los elementos detectados en la imagen o video, como la presencia de objetos, escenas y rostros, así como cualquier contenido explícito. La tecnología también es capaz de realizar búsquedas de imágenes similares y proporcionar resultados precisos. (Amazon, 2021). • Amazon S3 (Simple Storage Service) Amazon S3 (Simple Storage Service) es un servicio de almacenamiento en la nube altamente escalable, duradero y seguro, proporcionado por Amazon Web Services (AWS). S3 se utiliza para almacenar y recuperar cualquier tipo de datos, incluidos objetos, archivos, imágenes y videos, desde cualquier lugar y en cualquier momento. S3 ofrece una capacidad de almacenamiento escalable y duradero con alta disponibilidad y seguridad. Los datos almacenados en S3 están protegidos mediante políticas de acceso granulares y redundancia de datos. Además, S3 también proporciona herramientas de gestión de datos, como versionado, replicación y control de acceso, que permiten a los usuarios gestionar de manera eficiente y segura sus datos almacenados en la nube. (Amazon, 2023). • Amazon DynamoDBAmazon DynamoDB es un servicio de base de datos NoSQL totalmente administrado que se ejecuta en la nube de Amazon Web Services (AWS). DynamoDB está diseñado para manejar cargas de trabajo de baja latencia y alta escala, y proporciona una solución escalable y flexible para el almacenamiento y la recuperación de datos estructurados y semiestructurados. Según la documentación oficial de AWS, DynamoDB "es una base de datos NoSQL que admite el almacenamiento y la recuperación de datos en cualquier escala, con una latencia constante de un solo dígito y un rendimiento de decenas de millones de solicitudes por segundo". DynamoDB es adecuado para aplicaciones que requieren un acceso rápido y predecible a grandes cantidades de datos, y es altamente escalable y distribuido para soportar cargas de trabajo en crecimiento. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Además, DynamoDB ofrece una serie de características útiles para la gestión de datos, como la capacidad de crear tablas y definir índices para una rápida búsqueda y recuperación de datos, y la capacidad de ajustar automáticamente la capacidad de lectura y escritura en función de la demanda de la aplicación. También proporciona un conjunto de APIs para facilitar la integración de la base de datos con las aplicaciones. (Amazon, 2021) • Amazon Cognito Amazon Cognito es un servicio de AWS que proporciona autenticación, autorización y gestión de usuarios para aplicaciones web y móviles. Según la documentación oficial de AWS, "Amazon Cognito es una forma sencilla de añadir funciones de inicio de sesión, registro y control de acceso a las aplicaciones web y móviles". Cognito permite a los desarrolladores integrar fácilmente funciones de autenticación y autorización en sus aplicaciones web y móviles sin tener que desarrollarlas desde cero. El servicio admite la autenticación mediante proveedores de identidad social, como Facebook y Google, así como la autenticación mediante credenciales propias del usuario, como un nombre de usuario y una contraseña. Además, Cognito proporciona funciones de gestión de usuarios, como la capacidad de crear perfiles de usuario, ver el historial de inicio de sesión y la gestión de contraseñas olvidadas. También se integra con otros servicios de AWS, como Amazon S3 y Amazon DynamoDB, para proporcionar un acceso seguro y granular a los datos. (Amazon, 2021) • IAM IAM (Identity and Access Management) es un servicio web de AWS que permite a los usuarios controlar el acceso seguro a los recursos de AWS (Amazon, 2021). Con IAM, se pueden gestionar permisos de manera centralizada y controlar qué usuarios pueden acceder a los recursos de AWS y qué acciones pueden realizar. IAM permite controlar quién está autenticado y autorizado para usar los recursos de AWS. • SDK de AWS El SDK (Software Development Kit) de AWS (Amazon Web Services) es un conjunto de herramientas y bibliotecas proporcionadas por AWS para facilitar el La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. desarrollo de aplicaciones y la interacción con los servicios de AWS. El SDK de AWS ofrece una serie de APIs (Interfaces de Programación de Aplicaciones) que permiten a los desarrolladores acceder y utilizar los servicios de AWS de manera programática. (Amazon, 2023) • Angular Angular es un framework de desarrollo web front-end de código abierto, mantenido por Google. Según su sitio web oficial, Angular es "una plataforma para la construcción de aplicaciones web escalables y de alta calidad". Angular se basa en el lenguaje de programación TypeScript, que proporciona características adicionales a JavaScript, como tipado estático y mejoras en la legibilidad del código. Además, Angular cuenta con una gran cantidad de características, como el enrutamiento, la gestión de formularios, la validación, la animación y la comunicación con el backend. El objetivo principal de Angular es permitir a los desarrolladores crear aplicaciones web complejas de manera eficiente y estructurada. Con su enfoque en la modularidad y la reutilización de código, Angular facilita la creación de aplicaciones escalables y de alta calidad. (Angular, 2023) • Node.js Node.js es un entorno de ejecución de JavaScript construido sobre el motor JavaScript V8 de Chrome. Permite a los desarrolladores ejecutar código JavaScript tanto en el lado del servidor como en el cliente. A diferencia de los entornos tradicionales basados en el modelo de hilos, Node.js utiliza un enfoque sin bloqueo y orientado a eventos, lo que lo hace especialmente adecuado para aplicaciones en tiempo real y de alta concurrencia. Al aprovechar su arquitectura de entrada/salida sin bloqueo, Node.js es capaz de manejar múltiples conexiones simultáneamente con eficiencia y escalabilidad. (Node.js, 2023) La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. 2. METODOLOGÍA En este capítulo se llevará a cabo el desarrollo del procedimiento realizado para la solución del problema planteado, el cual tuvo como base metodologías ágiles, específicamente Scrum, esta se fundamenta en entregas regulares y parciales del trabajo final como mayor prioridad ante las otras actividades que la conforman, aunque es una metodología ambientada para un equipo donde se hallan diferentes roles con responsabilidades dentro del mismo grupo, no deja de ser una metodología eficaz para proyectos complejos e innovadores donde la flexibilidad y el cambio de requisito priman. Este trabajo de grado es desarrollado por una sola persona, por lo que se hace una adaptación a la metodología para llevarla a cabo por un solo individuo, tomando como referencias otros proyectos y blog donde se toma la metodología Scrum original y se adapta para una persona, denominada “Personal Scrum”. Scrum se caracteriza por entregar valor a corto tiempo a medida en que avanza en el producto final, esto con el fin de hacer una mejor solución para el cliente, para esto se divide en pequeñas iteraciones denominadas “sprints” que duran entre 2 a 4 semanas. En este proyecto se trabajará con sprints de duración de dos semanas con el fin de llegar al final de sprint hacer una observación de lo trabajado de ese sprint y si es necesario hacer correcciones o agregar algo más según los avances que se obtengan. En Scrum se inicia de una visión o idea de la cual se desglosan objetivos o requisitos principales que conforman el plan del proyecto, denominado “Product Backlog”, seguidamente se hace una reunión donde se planea el cómo se le va dar solución a cuya iteración o sprint, sacando del Product Backlog las listas de funcionalidades a realizar en ese sprint, tal como se muestra en el siguiente gráfico. Ilustración 1 Imagen que representa el proceso de la metodología scrum. Fuente: Digité. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. El objetivo principal de Scrum es satisfacer la necesidad del cliente, en esta ocasión no se tiene una comunicación directa con el cliente por lo que se hará un análisis del cliente objetivo de esta solución, usando para ello diagramas de empatía y encuestas para tener un mejor perfil de los tenientes de perro o gatos y con ello moldear una mejor solución. 2.1 LEVANTAMIENTO DE REQUISITOS En esta fase, se llevará a cabo una revisión exhaustiva de la literatura para identificar los parámetros y variables necesarios para la identificación de mascotas. También se identificarán los rasgos de mayor influencia en la identificación de mascotas, incluyendo posturas, colores de pelaje, patrones y otros rasgos distintivos. Además, se trabajará en la creación de un perfil para el cliente al que estará destinada la aplicación web. Este perfilincluirá información sobre las necesidades específicas del cliente y las funcionalidades que se requieren para satisfacer dichas necesidades. Con esta información, se definirán los requisitos funcionales y no funcionales del prototipo web y se recolectará un conjunto de imágenes de mascotas para entrenar el modelo. 2.1.1 Identificación de variables Para lograr una identificación precisa y confiable de las mascotas, se han desarrollado diversas técnicas, aunque la mayoría de ellas tienen limitaciones debido a la variabilidad en las características físicas de los animales. Por esta razón, es importante llevar a cabo una búsqueda exhaustiva en la literatura para identificar los rasgos distintivos que hacen únicos incluso a animales de la misma raza. En la búsqueda de rasgos distintivos para la identificación de mascotas, se han identificado ciertos rasgos clave que pueden utilizarse para identificar de manera única a un perro o gato. Estos rasgos incluyen el pelaje, la forma de las orejas, el iris y la nariz. En particular, un estudio investigativo reciente ha encontrado que el patrón de la nariz canina permanece invariable a través del paso del tiempo (Choi et al., 2021), lo cual es una característica relevante para la identificación de mascotas. A diferencia del pelaje, que puede cambiar debido a la edad o a ciertas enfermedades, o de la forma de las orejas, que puede alterarse por una lesión, el patrón de la nariz canina es constante y único para cada animal. Por lo tanto, es importante utilizar múltiples rasgos distintivos para aumentar la precisión en la identificación de mascotas. En este proyecto, se recolectaron únicamente imágenes de perros como prototipo para la identificación de mascotas, y se tomaron imágenes de diferentes ángulos para tener en cuenta los diferentes rasgos distintivos de la mascota. Se utilizaron técnicas de procesamiento de imágenes y machine learning para entrenar un modelo utilizando la plataforma Amazon Rekognition con etiquetas personalizadas para La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. identificar características específicas de cada animal, lo que permitió una identificación más precisa y eficiente de las mascotas. 2.1.2 Definición de usuario mediante diagrama de empatía Nombre: Eder Arias Muñoz Edad: 21 años Profesión: Ingeniero mecatrónico y desarrollador de software Historia: Eder es un joven ingeniero mecatrónico que trabaja como desarrollador de software en una importante empresa en Colombia. Junto con su novia, comparte la pasión por los perros, y en su hogar conviven con tres caninos: un schnauzer adulto y dos cockers, uno cachorro y otro adulto. A ambos les encanta sacar a sus perros a pasear y jugar en el conjunto abierto donde viven, el cual es muy amplio y lleno de vegetación. Sin embargo, en una ocasión, uno de los perros de un vecino se extravió y nunca lograron encontrarlo, lo que generó una gran preocupación en la pareja. Por esta razón, han estado buscando alternativas para evitar que esto suceda con sus propios perros. Han considerado comprar collares de identificación para cada uno, pero han escuchado que estos pueden caerse con facilidad. También han evaluado la posibilidad de implantar chips de identificación, pero les preocupa que esto pueda causar molestias a sus mascotas. Otra de las preocupaciones de Eder es la pérdida de los carnets de vacunación de sus perros, ya que en ocasiones se les ha extraviado alguno y han tenido que hacer largas filas en la veterinaria para obtener una copia. A pesar de estos inconvenientes, Eder es un joven muy tecnológico y siempre está buscando nuevas aplicaciones que le permitan mejorar su calidad de vida. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Ilustración 2 Diagrama de Empatía. 2.1.3 Requisitos funcionales Los requisitos funcionales son especificaciones detalladas de las funciones y tareas que debe realizar un software o aplicación para satisfacer las necesidades del usuario. Estos requisitos se refieren a lo que el software debe hacer, sus características y comportamiento en términos de entrada, procesamiento y salida de información. En resumen, los requisitos funcionales describen las acciones que un sistema debe realizar para cumplir con sus objetivos. • Registro y perfil de usuario: El usuario debe tener la capacidad de crear una cuenta en la aplicación, donde pueda proporcionar información personal como su nombre, correo electrónico y una contraseña segura. • Registro de mascotas: El usuario debe tener la capacidad de agregar a su cuenta las mascotas que tenga, incluyendo su nombre, raza, estatura, color, entre otros datos importantes. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. • Carga de imágenes: El usuario debe poder cargar imágenes de sus mascotas para que la aplicación pueda entrenar el modelo y reconocerlas de manera individual. • Reportar mascota perdida: El usuario debe tener la posibilidad de reportar que su mascota se ha perdido, incluyendo información relevante como el nombre, raza, estatura, color, entre otros detalles, con el fin de agregarla a la base de datos de mascotas perdidas. De esta forma, cuando alguien encuentre la mascota, podrá hacer match con la información de la base de datos y notificar al dueño a través de la aplicación. • Reportar mascota encontrada: La aplicación debe permitir a los usuarios que encuentren una mascota perdida subir una foto del animal para que el modelo de reconocimiento la procese y notificar al dueño si se encuentra una coincidencia. • Notificaciones: La aplicación debe tener la capacidad de enviar notificaciones al dueño de la mascota en caso de que se encuentre perdida, con el fin de que pueda ser contactado por quien la haya encontrado. • Contacto entre dueño y persona que encontró la mascota: La aplicación debe permitir que el dueño de la mascota y la persona que la encontró puedan ponerse en contacto para acordar la entrega del animal perdido. • Gestión de la información de la mascota: El usuario debe poder actualizar la información de su mascota en la aplicación, en caso de que haya algún cambio en su información personal, la información de la mascota, entre otros aspectos relevantes. • Soporte en línea: La aplicación debe contar con un servicio de soporte en línea que pueda brindar asistencia al usuario en caso de que tenga alguna duda o problema técnico. 2.1.4 Requisitos no funcionales Los requisitos no funcionales son aquellos que no están relacionados con las funcionalidades directas de la aplicación, sino que se enfocan en características más generales que deben tener para satisfacer las necesidades del usuario. Los siguientes son los más principales en los cuales enfoqué el prototipo web. • Usabilidad: La aplicación debe ser fácil de usar e intuitiva para que los usuarios puedan crear perfiles de mascotas y reportar mascotas perdidas de manera efectiva y eficiente. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. • Seguridad: La aplicación debe garantizar la seguridad y privacidad de la información personal y de las mascotas registradas en la plataforma. • Escalabilidad: La aplicación debe ser escalable para manejar una gran cantidad de usuarios y mascotas, asegurando que la aplicación pueda funcionar sin problemas durante los períodos de alta demanda. • Mantenibilidad: La aplicación debe ser fácil de mantener y actualizar para asegurar que la plataforma pueda seguir funcionando sin problemas a medida que se agreguen nuevas funciones y se realicen mejoras en la aplicación. • Compatibilidad: La aplicación debe ser compatible con una amplia gama de dispositivos y sistemasoperativos para asegurar que la aplicación pueda ser utilizada por la mayoría de los usuarios sin problemas de compatibilidad. 2.1.5 Recolección de imágenes Para recolectar las imágenes necesarias para entrenar el modelo de detección de mascotas, se utilizó una encuesta de Google Forms en la que se pidió a los usuarios que subieran fotos de sus mascotas y respondieran algunas preguntas como el nombre de la mascota, su raza y el método que utilizan para ubicarla en caso de que se pierda. La encuesta fue compartida en varios grupos de redes sociales y también en la comunidad universitaria. Para asegurarse de que las imágenes fueran útiles para el entrenamiento del modelo, se establecieron algunos requisitos, como que las fotos solo incluyeran al animal en cuestión sin la presencia de una persona o de otro perro. Además, se pidió un mínimo de cinco fotos por mascota para tener una mayor variedad de ángulos y posiciones, así como una buena iluminación para evitar sesgos en el modelo. Una vez recolectadas las imágenes, se realizó un filtro manual, eliminando aquellas que no cumplían con los requisitos establecidos previamente. Todo esto se realizó con el fin de tener una mejor muestra para el modelo. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Ilustración 3 Ejemplo de fotos recolectadas en la encuesta. 2.2 DISEÑO DE LA ARQUITECTURA En esta fase se definirá la arquitectura del sistema para el prototipo web, teniendo en cuenta los requisitos funcionales y no funcionales definidos previamente. Se seleccionarán las herramientas y servicios necesarios para la implementación y se definirán los componentes principales del sistema y cómo se comunicarán entre sí. Se definirán también los patrones de diseño y las buenas prácticas a seguir durante el desarrollo del prototipo. El objetivo de esta fase es establecer una base sólida para la implementación del sistema, garantizando que este sea escalable, mantenible y fácilmente modificable en el futuro. 2.2.1 Componentes principales Para efectos prácticos y como prototipo, se creó un diagrama sencillo de como se está conectados entre sí los diferentes componentes principales que interactúan en la solución. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Ilustración 4 Diagrama de la arquitectura (desarrollo propio). Cliente: El cliente es la persona que usará la aplicación. En este caso, se trata de tenientes de perro o personas que reportan una mascota encontrada. También puede ser un dueño de mascota que quiera registrar a su animal en la aplicación. S3: Es el servicio de almacenamiento de datos de aws, para este proyecto se usa para exponer el sitio web, gracias a su alto rendimiento, escalabilidad, disponibilidad y rendimiento es idea para exponer sitios webs en la nube, también puede ser integrado a otros servicios de aws que puede ayudar a sacarle más provecho, como CloudFront, que en este proyecto no se tuvo en cuenta por efectos prácticos. Otra función que cumple esta herramienta dentro del aplicativo web es la de almacenar las imágenes que se recolectan de las mascotas y servir como dataset para entrenar el modelo personalizado de Amazon Rekogntion. Cognito: Es el servicio de AWS utilizado para la autenticación y autorización de usuarios en la aplicación. Gracias a sus funcionalidades, no se necesita crear un sistema de autenticación desde cero, sino simplemente implementar el servicio. Cognito se integra fácilmente, presenta buena seguridad y ofrece diferentes formas para autenticarse, desde usuario y contraseña hasta el inicio de sesión a través de redes sociales. Además, cuenta con la activación de autenticación multifactorial, lo que la convierte en una herramienta ideal para garantizar la seguridad de los usuarios. EC2: Es el servicio utilizado para alojar el servicio backend del sitio web. Este servicio permite crear y configurar servidores virtuales en la nube, lo que resulta en una alta La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. escalabilidad, tanto horizontal como vertical. EC2 es esencial para garantizar que el backend de la aplicación funcione correctamente. Amazon Rekogntion: Es el servicio de AWS utilizado para el reconocimiento y análisis de imágenes. En este proyecto, se creó un modelo personalizado que analiza las imágenes de las mascotas y arroja las coincidencias más cercanas. También se utiliza para reconocer que la imagen que se pasa es efectivamente una mascota, específicamente un perro en este caso. Esta funcionalidad evita reprocesos en el modelo personalizado, lo que puede ser costoso. Amazon Rekognition es una herramienta clave para garantizar que las imágenes enviadas a la aplicación sean relevantes y útiles para los usuarios. DynamoDB: Es el servicio de base de datos no relacional de Amazon utilizado en este proyecto. Este servicio permite procesar millones de solicitudes por segundo, lo que lo hace ideal para la aplicación. DynamoDB puede traer datos de las mascotas y usuarios en muy poco tiempo, lo que permite que la aplicación responda rápidamente a las solicitudes de los usuarios. En resumen, estos son los componentes principales de la solución desarrollada en este proyecto. Cada uno de ellos juega un papel crucial en la funcionalidad y éxito de la aplicación. Al elegir y utilizar estas herramientas de AWS, se garantiza que la aplicación sea escalable, eficiente, mantenible y segura para los usuarios. Lenguajes y Frameworks En cuanto a los lenguajes de programación y frameworks web a utilizará son: En el lado del cliente, se utilizará Angular como framework de JavaScript para el desarrollo del frontend. Angular es una herramienta muy popular y ampliamente utilizada en el desarrollo de aplicaciones web, gracias a su arquitectura basada en componentes y su capacidad para crear aplicaciones SPA (Single Page Application) con una navegación fluida. Para el backend, se utilizará Node.js como lenguaje de programación y Express.js como framework para la creación de API RESTful. Node.js es una plataforma de programación basada en JavaScript que permite el desarrollo de aplicaciones escalables y de alta velocidad en el lado del servidor. Por otro lado, Express.js es un framework minimalista y flexible que permite el desarrollo rápido y eficiente de aplicaciones web y servicios API RESTful. Optar por utilizar frameworks web tiene una gran ventaja para los desarrolladores, ya que estos proporcionan una estructura predefinida y organizada para el desarrollo de aplicaciones. Esto significa que los desarrolladores pueden centrarse en la implementación de la lógica de negocio de la aplicación sin tener que preocuparse tanto por el diseño de la arquitectura subyacente. Además, los frameworks pueden ayudar a mejorar la seguridad y la estabilidad de las aplicaciones, ya que suelen someterse a La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. pruebas rigurosas y actualizaciones frecuentes para abordar cualquier problema de seguridad o vulnerabilidad. 2.2.2 Casos de uso El siguiente diagrama representa las funcionalidades clave de una aplicación y los diferentes actores que interactúan con ella. Hay tres tipos de actores en la aplicación: "Teniente de mascota", "Encontrador" y "Administrador". El "Teniente de mascota" puede registrarse en la aplicación para utilizar todas las funcionalidades disponibles, lo que incluye la posibilidad de reportar una mascota perdida o encontrar una mascota perdida y comunicarse con su dueño. Esto significa que el "Teniente de mascota" puede desempeñar el rol de "Teniente de mascota" y "Encontrador". Por otro lado, el actor "Encontrador" también debeestar registrado en la aplicación para reportar una mascota encontrada y utilizar la funcionalidad de comunicación con el dueño de la mascota perdida. Esto significa que el "Encontrador" puede desempeñar el papel de ayudar a reunir a los dueños con sus mascotas perdidas y puede ser una parte vital de la cadena de ayuda en la comunidad de dueños de mascotas. El actor "Administrador" tiene acceso a funciones de administración completas en la aplicación y puede gestionar usuarios y sus permisos. Esto es importante para garantizar que la aplicación esté en funcionamiento de manera adecuada y que se implementen medidas de seguridad adecuadas para la privacidad y protección de los datos de los usuarios. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Ilustración 5 Diagrama de caso de uso. 2.2.3 Mockup del prototipo web En esta sección se presenta algunos mockups que se elaboraron como parte del proceso de diseño de la aplicación. Estos mockups fueron creados para mostrar cómo se visualizarían las funcionalidades identificadas durante el levantamiento de requisitos previo. Cabe destacar que, durante el desarrollo del diseño, las ideas y conceptos evolucionaron y se adaptaron a las necesidades del proyecto, por lo que los mockups presentados aquí no representan exactamente cómo quedó finalmente la aplicación, sino una aproximación de cómo se iba a ver. Sin embargo, los conceptos principales se mantienen en todos los mockups presentados. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Inicio de Sesión Ilustración 6 Mockup del Inicio de Sesión. Registro Ilustración 7 Mockup del Registro. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Opción reportar encontrado Ilustración 8 Mockup de la Opción “Encontré”. Opción Buscar en el mapa Ilustración 9 Mockup de la Opción “Buscar en el mapa”. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Perfil Ilustración 10 Mockup del Perfil. 2.3 AUMENTO DE DATOS El aumento de datos es una técnica muy importante en el desarrollo de modelos de aprendizaje automático, que busca incrementar la cantidad de datos de entrenamiento para lograr una mayor precisión en el reconocimiento de imágenes. En el caso del modelo de reconocimiento de perritos, se hizo necesario aplicar esta técnica para obtener una muestra más grande y diversa de imágenes de perros, que permitiera al modelo aprender de manera más efectiva. Las técnicas de aumento de datos consisten en aplicar diferentes transformaciones a las imágenes existentes para crear nuevas muestras que sean ligeramente diferentes a las originales. Estas transformaciones se realizan para simular diferentes condiciones de iluminación, perspectivas y ángulos de visión, lo que ayuda al modelo a generalizar mejor y reconocer perros en diferentes situaciones. En el caso del modelo de reconocimiento de perritos, se utilizaron diversas técnicas de aumento de datos para incrementar la cantidad y diversidad de las imágenes de entrenamiento. Entre estas técnicas se encuentran: • El cambio de tamaño, se aplica para que el modelo pueda reconocer perros de diferentes tamaños. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. • La rotación, se utiliza para que el modelo pueda reconocer perros en diferentes ángulos de visión. • El cambio de iluminación, se realiza para que el modelo pueda reconocer perros en diferentes condiciones de luz. • El recorte, se utiliza para que el modelo pueda reconocer perros en diferentes posiciones y entornos. • El efecto espejo, se utiliza para simular diferentes perspectivas y aumentar la cantidad de datos. Al aplicar estas técnicas de aumento de datos al modelo de reconocimiento de perritos, se logró mejorar significativamente su capacidad para reconocer perros de manera precisa y eficiente en diferentes situaciones y entornos. Gracias al aumento de datos, el modelo puede aprender a reconocer perros en una amplia variedad de condiciones, lo que permite que tenga un mejor desempeño en el reconocimiento de imágenes de perros. Para llevar a cabo el aumento de datos en Python, se utilizó librerías como OpenCV y PIL, que proporcionan herramientas para aplicar las diferentes transformaciones a las imágenes de entrenamiento y generar nuevas muestras de datos para el modelo. Estas herramientas permiten automatizar el proceso de aumento de datos y generar una gran cantidad de muestras de entrenamiento de manera eficiente y en poco tiempo. Ilustración 11 Ejemplo de aumentado de datos. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. 2.4 ENTRENAMIENTO DEL MODELO En esta sección se profundizará en detalle sobre el proceso de entrenamiento del modelo de identificación de mascotas utilizado en el proyecto. Como se explicó en la sección de diseño de la solución, se hizo uso de las herramientas de Amazon Web Services, en concreto Amazon Rekognition Custom Labels, para llevar a cabo el entrenamiento del modelo. Durante este proceso se realizaron tareas como la configuración de conjuntos de datos de imágenes de mascotas, la definición de las etiquetas y la configuración de los parámetros de entrenamiento. Además, se abordará el proceso de validación del modelo y la creación de una versión del mismo para poder ser consumido desde el prototipo. Todo esto se llevó a cabo con el objetivo de obtener un modelo de aprendizaje profundo preciso y confiable que pudiera identificar correctamente a las mascotas a través de imágenes. Para entrenar el modelo, es necesario crear un proyecto de Amazon Rekognition con Custom Labels, y para esto hay dos formas, una es usando la interfaz gráfica y otra es usando el AWS CLI, en este proyecto de se usa la interfaz gráfica, siguiendo el paso a paso que la misma herramienta de AWS facilita. Ilustración 12 Paso a paso para crear un modelo personalizado. Fuente: AWS La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Paso 1: Para iniciar con la creación es necesario ir al servicio de Amazon Rekogntion, en la opción de Custom Labels, seguidamente darle un nombre al proyecto y continuar con el paso siguiente. Paso 2: La creación del conjunto de datos es un paso crucial en el entrenamiento de un modelo de aprendizaje automático. Hay diferentes formas de cargar los datos, ya sea desde tu computador local o desde un bucket de S3. En este proyecto en particular, se optó por cargar primero la colección de imágenes en un bucket de S3 y luego asociarlo al proyecto de Rekognition. Para organizar las imágenes, se crearon carpetas según la mascota, asignando un nombre específico a cada carpeta para evitar confusiones y duplicaciones. Además, se agregó un identificador único a cada carpeta de imágenes para lograr una mejor organización y facilitar la clasificación y creación de etiquetas en la herramienta de Amazon Rekognition. La utilización de un bucket de S3 permite una gestión más eficiente de las imágenes y garantiza que estén disponibles en todo momento para el proceso de entrenamiento del modelo. Esto es importante, ya que asegura la calidad de los datos y permite trabajar de manera más eficiente en el desarrollo del modelo. Ilustración 13 Estructura de carpetas del dataset. Fuente: AWS La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Una vez que el bucket se haya asociado con la colección de imágenes,es importante asegurarse de que el etiquetado de las imágenes sea lo más eficiente posible. En este proyecto, se optó por la opción de etiquetado automático, que se puede seleccionar al momento de asociar el bucket. La opción de etiquetado automático toma los nombres de las carpetas y los usa como etiquetas para cada una de las imágenes contenidas en ellas. Esto permite una clasificación más rápida y eficiente de las imágenes, ya que las etiquetas se aplican automáticamente y no es necesario hacerlo manualmente. Es importante destacar que, aunque el etiquetado automático es una opción útil, no siempre es la mejor solución para todos los proyectos. En algunos casos, puede ser necesario etiquetar las imágenes de manera manual para garantizar la precisión y la calidad del etiquetado. Ilustración 14 Opción etiquetado automático. Fuente: AWS Después de asociar el bucket S3 con la colección de imágenes y seleccionar la opción de etiquetado automático, es necesario agregar una política al bucket para que el proyecto de Rekognition tenga acceso a él. Para hacer esto, se puede seguir la documentación correspondiente en AWS, que brinda información detallada sobre cómo agregar políticas a los buckets de S3. Es importante asegurarse de seguir las instrucciones cuidadosamente para garantizar que la política se agregue correctamente y el acceso al bucket sea otorgado de manera adecuada. Paso 3: En este proyecto, se decidió realizar el etiquetado de manera automática, como se mencionó en el paso 2. Esta opción fue elegida debido a la facilidad y eficiencia que proporciona, ya que el nombre de las carpetas se utiliza como etiquetas para cada una de La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. las imágenes. Sin embargo, es importante destacar que realizar un etiquetado manual podría ser útil para incluir más información sobre las mascotas y, con esto, aumentar la capacidad del modelo para identificarlas. Por ejemplo, se podrían agregar etiquetas como la raza, el color del pelaje, el tamaño del perro y otros rasgos que pueden ser de gran ayuda para que el modelo identifique a la mascota con mayor precisión. Realizar un etiquetado manual podría ser especialmente útil para proyectos que requieren una alta precisión en la identificación de las mascotas. Sin embargo, es importante tener en cuenta que realizar un etiquetado manual puede ser más laborioso y llevar más tiempo que la opción de etiquetado automático. Paso 4: Una vez que se ha llevado a cabo el etiquetado adecuado, es momento de iniciar el entrenamiento del modelo. Para ello, se debe seleccionar la opción correspondiente y seguir las instrucciones proporcionadas por la herramienta de Amazon Rekognition. Es importante tener en cuenta que el tiempo necesario para completar el entrenamiento puede variar en función de la cantidad de imágenes incluidas en la colección y la complejidad del modelo. En el caso de este proyecto, el entrenamiento del modelo duró aproximadamente una hora. Durante este proceso, el modelo utiliza los datos de las imágenes etiquetadas para aprender a reconocer y clasificar las características de las mascotas seleccionadas, lo que permitirá obtener resultados precisos en futuras detecciones. Paso 5: Después de entrenar el modelo, se utiliza un conjunto de datos de evaluación para medir la precisión del modelo. El conjunto de datos de evaluación por defecto es del 20% de los datos que se cargaron en el dataset en el paso 2. Durante la evaluación, se comparan las predicciones realizadas por el modelo con las etiquetas reales de las imágenes de prueba. Este proceso permite determinar la calidad del modelo, qué tan bien está realizando la clasificación de las imágenes y qué tan preciso es en sus predicciones. La evaluación es una parte crucial del proceso de creación del modelo, ya que permite medir su calidad y precisión. Además, la evaluación proporciona información valiosa para hacer ajustes y mejoras en el modelo, con el fin de ofrecer resultados más precisos en el futuro. Paso 6: Cuando se haya completado el proceso de entrenamiento y evaluación del modelo de Amazon Rekognition, estará listo para ser utilizado e integrado en el prototipo. Es importante tener en cuenta que el modelo se puede activar o pausar según sea necesario. Si se encuentra pausado, no se podrá utilizar y generará un error al intentar consumirlo desde el prototipo. Además, hay que tener en cuenta que mientras el modelo esté activo, se aplicarán cargos a la cuenta de AWS. Como este servicio puede resultar costoso, es recomendable apagar el modelo cuando no se esté utilizando para evitar cargos innecesarios en la cuenta. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. 2.5 DESARROLLO E INTEGRACIÓN DEL PROTOTIPO WEB En esta sección, se describe el proceso de desarrollo e integración del prototipo web, incluyendo la configuración del entorno de desarrollo para el equipo de trabajo y otros aspectos relevantes. 2.5.1 Configuración del entorno de desarrollo Para el desarrollo del prototipo web se utilizó una serie de herramientas y tecnologías definidas en el apartado del diseño de la solución, estas permiten hacer un desarrollo más eficiente y escalable. A continuación, se describen las herramientas que se utilizaron para la configuración del entorno de desarrollo: Control de versiones: El control de versiones es una práctica esencial para cualquier desarrollador, ya que permite gestionar y controlar los cambios realizados en el código fuente de una aplicación. En este proyecto se optó por utilizar Git, una herramienta de control de versiones ampliamente utilizada en la industria. La principal ventaja de utilizar Git es que proporciona un historial detallado de todos los cambios realizados en el código. Esto significa que puedo realizar cambios en mi código sin preocuparme de perder información importante o de no poder volver a una versión anterior en caso de ser necesario. Además, esto me permite revisar la evolución del proyecto en el tiempo, lo que es especialmente útil en proyectos a largo plazo. Otra ventaja de Git es que permite trabajar de forma segura y colaborativa con otros desarrolladores en un mismo proyecto. Si bien en este caso solo soy yo el desarrollador, es una buena práctica utilizar Git para mantener una copia de seguridad de mi trabajo. Al subir mi código a un repositorio remoto en línea, en este caso GitHub, puedo estar seguro de que mi trabajo está respaldado en caso de que algo suceda con mi equipo local. Editor de código: Se utilizó Visual Studio Code como editor de código para el desarrollo del prototipo web. Esta herramienta ofrece una amplia gama de funcionalidades, como la autocompletación de código, la depuración y la integración con otras herramientas, lo que la hace muy útil para el desarrollo web. Lenguajes y frameworks web: Como se dio a conocer en el apartado del diseño del prototipo, se eligió para el front el framework de angular, específicamente su versión 14, dado que es una de las más recientes y además la más reciente que tiene soporte en el momento que desarrolló del prototipo. En cuanto al bakend se usa NodeJs en su versión 18. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. 2.5.2 Estructura de proyecto en el front-end La estructura del proyecto en el front-end es importante para mantener un código limpio y desacoplado. En Angular, se recomienda seguir una estructura de carpetas específica para organizar el código de la aplicación. A continuación, vamos a detallar cada una de las rutas y su contenido: "src/app/core": En esta ruta se encuentran los servicios globales, que se comunican con la API, así como los guards y modelos. Los guards son servicios especiales que ayudana otorgar o revocar el acceso a las rutas, mientras que los modelos son clases que definen la estructura de datos utilizada en la aplicación. "src/app/modules": En esta ruta se almacenan las diferentes funcionalidades de la aplicación, seccionándolas por carpetas según su parecido. Aquí se encuentran los diferentes módulos que componen el proyecto, como el módulo de autenticación, el módulo de inicio y otros módulos similares. "src/app/shared": Esta ruta contiene todos aquellos elementos compartidos dentro del proyecto, como la barra de navegación, el footer y entre todos aquellos elementos reutilizables de la aplicación. En esta carpeta se deben almacenar todos aquellos elementos que se van a utilizar en varios componentes de la aplicación. "src/assets": Esta ruta se utiliza para almacenar todos aquellos archivos estáticos que son necesarios en la aplicación, como imágenes, fuentes, gráficos, entre otros. Dentro de esta carpeta se pueden crear subdirectorios para organizar los diferentes tipos de archivos. "src/environments": Esta ruta se utiliza para almacenar archivos de configuración específicos para diferentes entornos de la aplicación, como "development" (desarrollo), "production" (producción), entre otros. Estos archivos de configuración se utilizan en la aplicación para proporcionar información específica a cada entorno. Por ejemplo, se pueden definir variables de entorno como la URL de la API, claves de acceso a servicios de terceros, entre otros. De esta manera, se pueden definir diferentes valores para estas variables según el entorno en el que se ejecute la aplicación. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. Ilustración 15 Estructura de proyecto en el front-end. 2.5.3 Estructura de proyecto en el back-end Al igual que el front-end en el proyecto del back-end se crea diferentes carpetas con el fin de garantizar un código más limpio, organizado y desacoplado. "src/controllers": En esta carpeta se almacenan los controladores, que son los encargados de recibir las peticiones HTTP del cliente, procesar los datos y enviar las respuestas correspondientes. Cada controlador se encarga de una funcionalidad específica de la aplicación. "src/middleware": Esta carpeta almacena todos los middlewares de la aplicación. Los middlewares son funciones que se ejecutan antes de que lleguen a los controladores y se encargan de validar los datos, verificar la autenticación de los usuarios, entre otras tareas. "src/models": Aquí se almacenan los modelos de la base de datos. Los modelos son clases que definen la estructura de las tablas de la base de datos y se encargan de interactuar con ella. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. "src/routes": En esta carpeta se almacenan las rutas de la aplicación. Las rutas son los puntos de entrada de la aplicación y se encargan de dirigir las peticiones a los controladores correspondientes. "src/services": Esta carpeta contiene los servicios de la aplicación. Los servicios son clases que se encargan de encapsular la lógica de negocio de la aplicación, interactuando con los modelos y los controladores correspondientes. "src/utils": Esta carpeta almacena todas las utilidades de la aplicación. Aquí se pueden almacenar funciones o clases que se utilizan en diferentes partes de la aplicación y no corresponden a ninguna de las otras carpetas. Ilustración 16 Estructura de proyecto en el back-end. 2.5.4 Configuración de acceso y uso de servicios AWS Para lograr la integración exitosa de los servicios de AWS en el prototipo y poder consumirlos desde la aplicación, es necesario realizar una serie de configuraciones en la cuenta de AWS. A continuación, se detallan los pasos necesarios que se tuvieron que hacer en el proyecto para poder consumir los servicios de AWS: 1. Creación de una cuenta AWS: Como primer paso, se debe crear una cuenta en AWS para tener acceso a todos los servicios ofrecidos por la plataforma. Esto se puede hacer mediante el registro en la página oficial de AWS y seguir los pasos indicados. La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. 2. Creación de un usuario IAM: Una vez creada la cuenta, es necesario crear un usuario en el servicio Identity and Access Management (IAM) de AWS. Este usuario se utilizará para otorgar los permisos necesarios de acceso a los recursos utilizados en el proyecto. A través de IAM, se pueden definir políticas de acceso para limitar los privilegios del usuario y garantizar la seguridad. 3. Asignación de permisos: En esta etapa, se deben asignar los permisos necesarios al usuario creado anteriormente. Esto se logra mediante la creación y asociación de políticas en IAM. Las políticas son documentos que definen los permisos y restricciones de acceso a los recursos de AWS. Algunas políticas predeterminadas están disponibles en IAM y se pueden asociar directamente al usuario, mientras que también se pueden crear políticas personalizadas según las necesidades específicas del proyecto. 4. Generación de credenciales de acceso: A continuación, es necesario generar las credenciales de acceso, las cuales permitirán el acceso a los recursos de AWS desde el backend de la aplicación. Estas credenciales consisten en un ID de acceso y una clave secreta, los cuales se configuran en el backend para realizar peticiones a los servidores de AWS. Es importante salvaguardar estas credenciales y asegurarse de no compartirlas públicamente. 5. Uso de las credenciales de acceso: Por último, se deben utilizar las credenciales de acceso para integrar los servicios de AWS en el proyecto. Es importante tener en cuenta que las credenciales de acceso pueden variar según el entorno de uso, como consumir los servicios de AWS desde un entorno local o desde un proyecto en la nube. AWS ofrece diferentes opciones para generar y gestionar las credenciales de acceso, garantizando la seguridad de los servicios. 2.5.5 Desarrollo e integración de los módulos y componentes del sistema Durante la fase de desarrollo del proyecto, se enfocó en la programación de los distintos módulos y componentes que integran el sistema. Aunque no fue posible implementar La información presentada en este documento es de exclusiva responsabilidad de los autores y no compromete a la EIA. todas las funcionalidades propuestas en la fase de diseño, se logró completar con éxito la programación del componente principal, que es fundamental para la identificación de mascotas a través de imágenes. Este componente es la base para la habilitación de las demás características y ha sido un paso importante para cumplir los objetivos propuestos en el proyecto. Además, se logró implementar las funcionalidades de registro y login, las cuales permiten a los usuarios crear una cuenta personalizada para acceder al aplicativo y habilitar las diferentes funcionalidades. La funcionalidad de registro y login resulta vital para garantizar una experiencia de usuario segura y personalizada en el sistema. A través de un formulario de registro y de inicio de sesión, los usuarios pueden acceder a las diferentes funcionalidades de la plataforma una vez que hayan completado exitosamente el proceso de autenticación. En este apartado, se detallará de manera exhaustiva el proceso de desarrollo e integración de cada uno de los módulos y componentes que conforman el sistema, incluyendo su función y objetivo principal, así como el proceso de programación seguido para su diseño, desarrollo e integración. Se explicará de manera clara y detallada cada uno de los pasos y procesos implicados en la programación de estos componentes. Primero que todo, para hacer uso de los servicios de AWS, es imprescindible contar con las
Compartir