Logo Studenta

content(10)

¡Este material tiene más páginas!

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

Continuar navegando

Materiales relacionados