3DBrightener

Aplicación para el enriquecimiento automático de los datos contenidos en el formato estándar utilizado para la impresión 3D

Tecnologías:

Icono de PhytonPytorchIcono de C++


Keywords: 3D printers, AI, 3MF, 3D printing formats
Complejidad: 9

Las impresoras 3D están destinadas a revolucionar el proceso de fabricación de una amplia variedad de objetos que previamente se producían por otras técnicas, así como a abrir la posibilidad de fabricar piezas que actualmente son inviables debido a sus altos costos. Por ejemplo, en sectores industriales como la automoción y las prótesis médicas ya se ha demostrado la mejora que las impresoras 3D pueden brindar. Además, en un futuro cercano, es probable que surjan aplicaciones en áreas que aún no podemos concebir.

Para que las impresoras 3D continúen evolucionando y expandiendo sus posibilidades, los departamentos de investigación y desarrollo de las empresas fabricantes de estos dispositivos juegan un papel fundamental. En estos entornos, la recopilación exhaustiva de datos provenientes de pruebas de impresión es tan crucial como el proceso mismo de creación de objetos físicos. Estos datos permiten el análisis de prototipos y la obtención de conclusiones que puedan impulsar mejoras en las tecnologías de impresión 3D.

En este contexto, los archivos 3MF desempeñan un papel crucial, ya que representan el estándar para la creación de modelos 3D (similar al papel de los archivos PDF en la impresión convencional), y un aspecto clave son sus metadatos. Lamentablemente, en la actualidad, no existe una herramienta que verifique automáticamente si los metadatos de un archivo 3MF coinciden con los modelos 3D que el archivo almacena. Esto supone una tarea tediosa que los creadores de los archivos deben realizar manualmente, lo que aumenta la probabilidad de errores u omisiones.

Por lo tanto, este proyecto propone el desarrollo de una aplicación que automatice o facilite el proceso de rellenado de metadatos en archivos 3MF. El proyecto constaría de varias fases, que podrían ser abordadas de manera independiente según la complejidad que el estudiante encuentre, y pudiéndose dar por finalizado con la consecución de solo una de ellas. Estas fases son las siguientes:

  1. Reconocimiento de caracteres en las distintas piezas contenidas en los modelos 3D de un archivo 3MF.
  2. Clasificación de las piezas contenidas en un fichero 3MF en las categorías previamente predefinidas en una biblioteca de piezas.
  3. Segmentación de los modelos 3D en un archivo 3MF para que cada entidad corresponda exclusivamente a un objeto físico.

Además, si el estudiante está interesado en estas tecnologías, podría desarrollar una aplicación web que permita a los usuarios interactuar con la herramienta. No obstante, la prioridad sería dotar a la aplicación de una interfaz de línea de comandos.

3DScenePrint

Impresión en 2D de vistas sobre escenas 3D ultrarealistas mediante una plataforma web

Tecnologías:

Icono de PhytonIcono de Node JS


Keywords: 3D, 2D, print, web, cloud, rendering
Complejidad: 8

En este proyecto se desea desarrollar una plataforma web para la impresión de vistas arbitrarias en 2D (impresión en papel) sobre imágenes 3D complejas. Así, los creadores de contenido subirán modelos (escenas) en 3D y los usuarios podrán solicitar determinadas vistas sobre ellas, teniendo control de la cámara, posición, y otros parámetros adicionales (filtros, calidad, etc).

Debido a que el renderizado de estas escenas 3D puede ser muy costoso en recursos de computación, y se pueden querer aplicar técnicas avanzadas y de gran exigencia como raytracing, el usuario en su navegador no verá la escena original sino una versión simplificada de la misma, que será generada de forma automática. Una vez el usuario seleccione la vista que quiere en esa previsualización simplificada, será el propio servidor (o contenedores de aplicaciones delegados) el que se encargue de renderizar la escena en alta calidad.

Posteriormente, el usuario podrá visualizar su imagen para imprimir, y descargársela o enviarla a imprimir a un proveedor externo de servicios de impresión. Dado que el renderizado de la escena puede ser un proceso largo, el usuario podrá consultar su estado en cualquier momento, sin necesidad de permanecer en la página mientras se lleva a cabo. También sería deseable que se pueda recibir algún tipo de notificación (notificaciones de navegador, email, etc) cuando la vista haya finalizado.

Respecto a la parte monetaria de la plataforma, los creadores podrán poner un precio a cada una de las vistas sobre su escena 3D, así como un número limitado de vistas en total que se podrán imprimir. También podrán añadir, si lo desean, un conjunto de vistas predeterminadas que se podrán adquirir a un precio más reducido (pero, en cualquier caso, configurable por el creador). Para la realización de este proyecto sería deseable la conexión de la plataforma con un procesador de pagos, aunque esta parte se considera opcional, pero al menos la plataforma debería de estar preparada para ello.

AbuseGame

Videojuego en línea para hacer scoring de riesgo de abuso infantil y bullying

Tecnologías:

Icono de JavascriptIcono de C++Icono de C#Icono de JavatypescriptIcono de React


Keywords: Child abuse, bullying, videogame, 2D, web development, AI
Complejidad: 7

Detectar las situaciones de abuso infantil y acoso escolar (bullying) siempre es complicado, pues en muchas ocasiones las víctimas de este tipo de conductas esconden su situación, bien por vergüenza o bien por miedo a las potenciales represalias por parte de los abusadores que puedan suceder después de denunciar la situación.

En este proyecto proponemos desarrollar un videojuego 2D, idealmente que sea accesible y jugable desde un navegador web, que pueda ser utilizado para detectar este tipo de situaciones. Los jugadores de este videojuego pasarán por diversas fases y, en función de sus respuestas, las decisiones que tomen, etc, se determinará el score de riesgo de abuso infantil y/o bullying.

La información por parte de los jugadores se obtendrá mediante diversas formas de interacción: diálogos con personajes no jugables (NPC) y respuestas a las mismas, bifurcaciones en el juego basadas en decisiones, áreas con las que el jugador decida interactuar o no, etc. El diseño del juego será muy posiblemente de tipo RPG, aunque el proyecto está abierto a otro tipo de videojuegos.

Para la realización de este proyecto contaremos con el asesoramiento de personal de la empresa A Un Click Seguridad, formada por policías expertos en seguridad para menores, tanto para evitar que éstos sean víctimas de un delito como también para detectar cuándo son ellos los que pueden estar en riesgo de cometerlo (otra conducta que también detectará idealmente el videojuego). El público objetivo del videojuego serán menores de entre 13 y 18 años, por lo que se tendrá libertad para incorporar sistemas de juego complejos.

Respecto al motor de videojuegos a utilizar, el alumno o alumna tendrá libertad para escoger entre diversas posibilidades, como pueden ser libGDX (Java), Unity (C#), Cocos (C++), Phaser (JS/TS) o Godot (GDScript, C#, C++), siempre y cuando una de las plataformas de ejecución pueda ser una página web. Se podrán utilizar recursos gratuitos (sprites, sonidos, fondos, etc) para el desarrollo del videojuego, no obstante, los conocimientos de diseño gráfico y arte digital que pueda tener el alumno o alumna le podrán servir para crear una experiencia de una mayor calidad final.

Finalmente, se valorará la inclusión de algoritmos de IA para mejorar la detección de las situaciones de abuso.

AIAIAIWhatAPain

Aplicación de la inteligencia artificial para analizar grandes cantidades de datos de redes sociales, predecir brotes de enfermedades, riesgos para la salud pública y evaluar la efectividad de las campañas de salud pública

Tecnologías:

Icono de PhytontypescriptPytorchIcono de AngularIcono de React


Keywords: AI, web scraping, NLP, API, backend, frontend, web development
Complejidad: 9

Este proyecto se centra en la aplicación de la inteligencia artificial para analizar grandes cantidades de datos de redes sociales y predecir brotes de enfermedades, riesgos para la salud pública y evaluar la eficacia de las campañas de salud pública. Rastreando y analizando la conversación pública, el sistema puede proporcionar una visión instantánea del estado de salud de una población.

Componentes básicos:

  • Modelo IA de análisis de sentimiento: el modelo categoriza los comentarios y publicaciones en redes sociales para entender el estado de ánimo y la percepción del público hacia ciertos temas de salud. El dataset se obtendrá a través de herramientas de web scraping para la recopilación de los datos en diversas redes sociales y foros.
  • Modelo para la predicción de brotes: utiliza patrones de datos históricos y actuales para prever la probabilidad de un brote de enfermedad en una región geográfica determinada.
  • Evaluador de campañas de salud: esta parte se usará para evaluar la efectividad de campañas de salud pública al medir el cambio en las conversaciones antes y después de la campaña.

AItrittion

Aplicación de técnicas de IA a datos sobre empleados de una compañía con el objetivo de minimizar los abandonos

Tecnologías:

PytorchIcono de Phyton

Keywords: AI, HR, attrition, employees, company
Complejidad: 7

Los abandonos (conocido como “attrition” en inglés) en las empresas modernas son uno de los mayores problemas a los que se enfrenta una compañía. Cuando un empleado se va, especialmente si es de una forma súbita, en muchas ocasiones deja un hueco difícil de cubrir y una pérdida neta de talento para la empresa. Aunque hay algunos factores evidentes en los que las empresas pueden trabajar para evitar este fenómeno (salario, nivel de estrés, etc), otros parámetros como la edad, la distancia al centro de trabajo o la frecuencia con la que un empleado realiza viajes de trabajo, influyen de una forma más desconocida.

En este proyecto se propone aplicar técnicas de inteligencia artificial para intentar obtener más información sobre este problema y poder actuar de forma temprana para atajarlo. Para ello, el alumno incorporará información de “datasets” abiertos y disponibles en la red [1][2][3], y sus tutores de HP SCDS le guiarán en la utilización de los datos de cara a garantizar, en el futuro, una cierta compatibilidad con los datos internos de nuestra compañía. Será necesaria por tanto una tarea de investigación sobre los datos, y puede ser también necesaria la elaboración de un “dataset” específico en base a otras fuentes de datos (servicios de empleo, webs de contratación, etc).

Inicialmente el estudio se realizará de forma individual, pero los resultados deberían de poder extrapolarse a equipos completos (utilizando medias de los valores individuales). Se realizará un análisis mediante técnicas de machine learning (random forest, k-means clustering, etc) y deep learning, para relacionar los parámetros de entrada (sueldo, antigüedad, etc) con un parámetro de salida, que será si el empleado abandona la empresa o no.

En este proyecto se entregará al menos un modelo entrenado con los datos utilizados, así como un conjunto de scripts para poder evaluar dicho modelo con unos parámetros específicos de entrada y también para poder entrenar y re-entrenar el modelo con nuevos datos o construir un nuevo “dataset” si se han incorporado fuentes de terceros . Opcionalmente también se pueden proporcionar visualizaciones adicionales como una UI (web, móvil, de escritorio, etc) para ejercitar el modelo y analizar los resultados, o un dashboard donde se pueda consultar cada equipo y su riesgo de “attrition”.

  1. Employee attrition
  2. Predicting employee attrtion
  3. IBM HR Analytics attrition dataset

 

AIWantTheJob

Simulador de entrevistas de trabajo general impulsado por inteligencia artificial diseñado para preparar candidatos/as para puestos específicos y tiene como objetivo mejorar las habilidades de los entrevistados, proporcionar análisis detallados y realizar un seguimiento del progreso

Tecnologías:

Icono de Phyton PytorchIcono de Angulartypescript

Keywords: Generative AI, NLP, API, backend, frontend, web development
Complejidad: 6

Este proyecto tiene como objetivo desarrollar un simulador de entrevistas de trabajo general impulsado por inteligencia artificial para preparar candidatos para un puesto específico. Utilizando técnicas de Deep Learning y NLP, el sistema genera escenarios de entrevista realistas y personalizados que brindan retroalimentación instantánea para mejorar las habilidades de los entrevistados.

Componentes básicos:

  • Modelo generativo de preguntas de entrevista: este algoritmo genera preguntas de entrevista reales y relevantes para el puesto en concreto, basadas en información del trabajo y de la industria. Se buscarán modelos existentes o se podrá entrenar uno específico con un dataset determinado para un conjunto de 1-2 roles que pueda luego ampliarse.
  • Analizador de respuesta: utiliza un modelo de IA para evaluar la calidad de las respuestas de los candidatos, tanto en términos de contenido como de presentación.
  • Sistema de retroalimentación instantánea: proporciona comentarios en tiempo real y consejos sobre cómo mejorar los comentarios y la motivación de las entrevistas.
  • Monitorización del progreso y del desempeño: monitorea la mejora del usuario a lo largo del tiempo.

AutoSSL

Sistema para reemplazo y renovación de certificados SSL basado en un demonio local y una aplicación web con soporte para los servidores web más populares (Nginx, Apache)

Tecnologías:

Icono de C#Icono de JavaLogo de GoIcono de React Icono de Linux

Keywords: SSL, HTTP, security, web server, service, web application, queues
Complejidad: 6

Una de las tareas repetitivas que realizan los administradores de sistemas es la renovación de certificados SSL asociados a los servidores web que administran. Existe un “bot” automático para la renovación de certificados llamado certbot, pero sólo está preparado para utilizar certificados de Let’s Encrypt, lo que puede no ser adecuado en entornos corporativos.

En este proyecto queremos desarrollar un bot o demonio que se ejecute en los servidores donde están los servidores web, analice la configuración de estos (soportando al menos Nginx y Apache) y esté preparado para aplicar nuevos certificados cuando sea requerido. En lugar de encargarse de la renovación automática, lo que el bot hará será comunicarse con un backend web (hacia él con llamadas HTTP directas, y desde él recibirá mensajes encolados utilizando RabbitMQ, ZeroMQ, Kafka o similar) tanto para indicar qué certificados están instalados, su estado y a qué dominio están asociados, como para recibir nuevos certificados e instalarlos en el servidor web, reiniciando éste si es necesario.

Los usuarios podrán acceder a una aplicación web para ver el estado de sus servidores (qué servidor web tiene cada uno, en qué máquina está, qué dominios se gestionan en él, el estado de los certificados, etc) y enviarles un archivo de renovación de certificados (normalmente es un ZIP que contiene la clave privada, el certificado, la cadena de certificación, etc) para que sea validado y aplicado, guardando una copia de los certificados previos por si es necesario hacer un “rollback”. El bot sabrá donde colocar cada archivo en base a la configuración actual y, si es necesario, combinar algunos de los archivos (por ejemplo, certificado y cadena de certificación en el caso de Nginx).

También sería deseable poder generar un CSR (Certificate Signing Request) en el servidor porque en ocasiones, si no lo genera el sistema, es necesario para la renovación.

Los demonios o bots deberán de registrarse automáticamente contra el backend, informando de la configuración y estado de la máquina.

Se soportarán las últimas versiones principales de Nginx y Apache, detectando versiones no compatibles para evitar causar daño a servidores más anticuados.

Azure4All

Implementación de una solución de integración para Microsoft Azure DevOps con otras plataformas de desarrollo como GitHub y Jira

Tecnologías:

Icono de Node JSIcono de HTML5Icono de CSSIcono de PhytonIcono de C#

Keywords: Azure, DevOps, Project Management, Jira
Complejidad: 7

Azure DevOps es una de las principales herramientas de gestión y control de proyectos software, incluyendo funcionalidades como el tracking de las tareas a implementar o el manejo de repositorios de software.

Sin embargo, su integración con otras herramientas externas a Microsoft es precaria e insuficiente, y no permite aprovechar todo el potencial de gestión de proyectos si las utilizamos como complemento a Azure DevOps.

Desde este proyecto te proponemos el reto de implementar una extensión de Azure DevOps que permita configurar y ejecutar la sincronización completa y visual de información, eventos y repositorios de código con otras plataformas de gestión de proyectos como JIRA y GitHub.

BasketballTracker

Seguimiento de balón y jugadores de baloncesto dentro de una cancha, durante un partido, para la creación de un dataset de movimientos

Tecnologías:

Icono de PhytonPytorch Icono de OpenCV

Keywords: AI, video analysis, tracking, ML, DL, basketball
Complejidad: 9

De cara a mejorar el rendimiento de un equipo de baloncesto, es importante poder saber los movimientos de cada uno de los jugadores dentro de la pista y, en base a estos, determinar los tipos de jugada que ha realizado (tiros, pases, bloqueos, etc). Por eso, es de interés la construcción de un conjunto de datos de posiciones X e Y dentro de una cancha de baloncesto tanto de los jugadores como del balón.

Durante los años 2015 y 2016 la NBA instaló cámaras en los estadios de baloncesto para la recopilación y compartición de este tipo de datos. Llegado cierto momento dejó de difundirlos y el proyecto tomó un rumbo más comercial, sin embargo, los datos de aquella época siguen siendo estando disponibles [1][2].

En este proyecto nos gustaría replicar un proceso de toma de datos análogo y de bajo coste. Para ello, se pueden evaluar alternativas con dispositivos IoT para localización mediante radiofrecuencia (BT) [3][4], teniendo en cuenta el coste de estos sistemas y la potencial negativa del equipo visitante a su utilización. No obstante, preferiblemente se utilizarán tecnologías de análisis de imagen y de vídeo [5][6] para el seguimiento de los jugadores y del balón.

Por lo tanto, se pide:

  • Creación de un sistema de recogida de datos basado en IoT de bajo coste o análisis de imágenes de video (preferido) que genere datos análogos al sistema SportsVU.
  • Los datos estarán anotados con las posiciones X e Y de cada jugador dentro del campo en un momento determinado, con la resolución en segundos que se determine adecuada.
  • En caso de que la cámara no sea cenital sino lateral, será necesario realizar la transformación adecuada para tener posiciones en un campo de baloncesto ortogonal [5].
  • Asimismo, se incluirá la posición X e Y (e idealmente, Z) del balón.
  • Se identificará a los jugadores en base al color de su equipación e, idealmente, en base a su dorsal para saber quién es quién.

[1] https://github.com/sealneaward/nba-movement-data
[2] https://github.com/neilmj/BasketballData
[3] https://www.mdpi.com/1424-8220/18/6/1940
[4] https://www.computer.org/csdl/proceedings-article/icdmw/2017/3800a894/12OmNzV70CJ
[5] https://dev.to/stephan007/open-source-sports-video-analysis-using-maching-learning-2ag4
[6] https://www.kaggle.com/datasets/trainingdatapro/basketball-tracking-dataset

ChronoStreetTurist3

Evolución de ChronoStreetTourist con vinculación a puntos en Google Maps y lectura de códigos QR desde pegatinas físicas en la calle

Tecnologías:

Icono de AndroidIcono de Unity

Keywords:Computer vision, augmented reality
Complejidad: 8

ChronoStreetTourist es una app móvil que permite, mediante realidad aumentada, mostrar imágenes antiguas en la cámara del móvil al apuntar hacia un edificio o localización de la que se disponen imágenes antiguas.

Fue realizada por alumnos de TFG en el curso académico 2021-22. Se desea evolucionar el proyecto ChronoStreetTourist en tres fases diferentes.

El alumno recibirá el código de los dos proyectos ChronoStreetTourist desarrollados por los alumnos el año 2021-2022. El codirector, Ander Bermudez, fue el alumno desarrollador de uno de estos proyectos en 2022.

El proyecto tiene dos partes: una app móvil donde se muestra la realidad aumentada al ver un monumento antiguo y una interfaz web para la gestión de imágenes, usuarios, etc.

El alumno deberá inicialmente ponerlo en funcionamiento. Y esta será su primera tarea:

  1. Dado que se utilizaron hostings web que actualmente están caídos y usando un CMS propio del hosting, se desea reescribir la interfaz web en un nuevo hosting.

Una vez en funcionamiento, se desea evolucionar el proyecto ChronoStreetTourist en tres aspectos diferentes:

  1. Integrar en la app móvil un mapa de puntos de Google Maps, de manera que se pueda ver de dónde se disponen fotos antiguas. Al clicar sobre los puntos de ese mapa se mostraría la foto antigua. Lo ideal es que este mapa sea una capa de Google Maps con puntos que se podrán leer de un fichero KML que se generen a partir de la BD de fotos disponibles en el hosting.
  2. Añadir una funcionalidad por la que si un usuario se acerca a menos de 10m (aprox) de uno los puntos del mapa, vibre e informe mediante una notificación de que hay una foto antigua disponible cerca.

Como mejora adicional, si hubiera tiempo, se propone que:

La app sea capaz de recibir URLs tipo “chronotourist://XXXX” (probablemente de códigos QR) y que al recibirlas se abra la imagen antigua asociada a dicha URL

ContractMe

ContractMe es una aplicación basada en blockchain que simplifica la contratación y la verificación a través de contratos inteligentes, seguimiento GPS e identificación segura de smartphones

Tecnologías:

Icono de PhytontypescriptIcono de Android

Keywords: Blockchain, Smart Contracts, GPS Location/Fencing, Smartphone Biometric Authentication, Data Encryption, Mobile Application Development, Payment Processing
Complejidad: 8

Este proyecto pretende desarrollar una solución práctica de contratación y verificación utilizando tecnología blockchain, contratos inteligentes, localización GPS/vallado e identificación segura mediante smartphone. El objetivo es agilizar el proceso de contratación, con especial énfasis en servir a trabajadores y empleadores de sectores como la agricultura, los servicios domésticos y el trabajo freelance por cuenta propia.

La idea central es utilizar contratos inteligentes en una red de cadena de bloques para automatizar la gestión de los contratos desde su creación hasta su ejecución, incluidos el seguimiento del tiempo y el pago. La aplicación integrará la autenticación biométrica basada en teléfonos inteligentes y el escaneado de códigos QR para la identificación segura de los usuarios, manteniendo la privacidad de los datos mediante soluciones de identidad descentralizadas.

Una posible característica adicional del proyecto es la integración de la tecnología GPS, que permitirá a los empleadores rastrear la ubicación de los trabajadores e imponer zonas de trabajo específicas. Esta función garantizará un seguimiento preciso del tiempo y ayudará a evitar el trabajo no autorizado fuera de las zonas designadas.

La interfaz de usuario se diseñará para una fácil interacción en los teléfonos inteligentes, facilitando la creación de contratos, el seguimiento y el pago. La perfecta integración con los servicios de blockchain y GPS proporcionará una experiencia segura y fácil de usar, haciendo hincapié en la practicidad, las mejoras continuas y la seguridad de los datos.

En última instancia, el proyecto pretende crear una solución sencilla que simplifique los procesos de contratación y verificación, fomentando prácticas de empleo legales y transparentes.

CropSense

Recogida de datos de cultivos mediante un IoT (Arduino) para su almacenamiento en un servidor y aplicación de inteligencia artificial para decisiones de regadío

Tecnologías:

Icono de Node JSIcono de Javascript Icono de Angular

Keywords: IoT, crops, watering, sensors, humidity, Temperature
Complejidad: 8

En este proyecto se propone implementar un sistema completo para gestión del campo y ahorro de agua en cultivos de regadío. Para ello, se implementarán los siguientes componentes:

  • Un componente IoT basado en Arduino, que se ocupará de recoger información se sensores conectados al mismo (temperatura, humedad del aire, humedad de la tierra). Dicho componente enviará esos datos al servidor para su almacenamiento. Mostrará mediante LEDs su estado (conexión a la red, conexión al servidor) y podrá recibir órdenes desde el servidor, en este caso, la orden de iniciar un regadío, Para ello se implementarán las siguientes partes:
    • Descubrimiento automático de servidor por MAC (opcional).
    • Recoja información de los sensores de:
      • Humedad del aire.
      • Humedad de la tierra.
    • Trasmita los datos al servidor.
    • Informe visualmente mediante led del estado de la conexión.
    • Sincronizar hora con servidor.
    • Recibir comandos desde el servidor (cuando hay que regar y cuando no, comenzar regado, finalizar regado…)
    • Enviar información del estado.
    • Enviar información del caudal de agua cuando está regando (opcional).
  • Nota: la configuración de red idealmente podrá ser incorporada mediante un servidor web embebido en una wifi ad-hoc creada por el dispositivo.
  • Un servidor web (backend) que recogerá y almacenará los datos recibidos por el Arduino. Contara con las siguientes partes:
    • Recibir datos del Arduino y gestionarlos (Redis).
    • Guardar dichos datos en una BBDD.
    • Decidir cuando el sistema debe regar.
    • API para el frontend.
  • Un frontend web para mostrar información en directo de los sensores y de cuándo se está regando. También mostrará datos históricos tanto de valores de temperatura y humedad como de los intervalos de regadío.
    • Control de acceso.
    • Muestre datos en directo de los sensores (Dashboard)
    • Muestre cuando se está regando y cuando no (Dashboard)
    • Previsión meteorológica.
    • Gestión de Arduino (Configurados, no configurados).
    • Configurar placas
    • Muestre datos históricos de los sensores.

Para el desarrollo de este proyecto el estudiante recibirá por parte de HP SCDS todo el material necesario: placa Arduino con wifi incorporada, sensores de temperatura, sensores de humedad de aire y humedad de la tierra, cableado, protoboards, LEDs, etc. Dicho material será devuelto a la empresa a la finalización del proyecto.

DeWhatsAppifAIMe

Bot de mensajes para resumir chats grupales

Tecnologías:

Icono de Phyton PytorchIcono de Android

Keywords: Text bot, group chats, AI, summarization
Complejidad: 8

En la era de la comunicación digital, los chats grupales han evolucionado en canales vitales para la colaboración e intercambio de información. Sin embargo, el volumen abrumador de mensajes puede sobrepasar a las personas, dificultando mantenerse actualizado y comprometido. Para abordar este desafío, el objetivo de este proyecto es desarrollar un bot de mensajes de texto impulsado por modelos de lenguaje amplio (LLM por sus siglas en inglés). El objetivo principal es crear una solución que pueda resumir eficientemente las conversaciones de los chats grupales, extrayendo ideas relevantes y ayudando a los usuarios a mantenerse bien informados.

En primer lugar, el objetivo es crear un bot de mensajes de texto que pueda procesar y analizar sin problemas las discusiones de los chats grupales. Aprovechando las capacidades de los LLM, el bot generará resúmenes concisos pero informativos, destilando la esencia de las conversaciones. Esta característica permitirá a los usuarios recibir actualizaciones personalizadas de los chats grupales, reduciendo significativamente la necesidad de revisar extensos historiales de mensajes. Al simplificar la comprensión de las discusiones en los chats grupales, los usuarios pueden ahorrar tiempo y esfuerzo al mantenerse activamente involucrados en las conversaciones.

La arquitectura del sistema está diseñada para facilitar esta funcionalidad. El proceso comienza con la ingesta de datos de diversas plataformas de mensajería a través de sus interfaces de programación de aplicaciones (API). Posteriormente, los mensajes entrantes pasan por un proceso de preprocesamiento para eliminar el ruido y estandarizar el texto para su análisis. La integración con un LLM preentrenado permite al bot comprender y sintetizar resúmenes similares a los humanos. Los resúmenes automáticos se envían a los usuarios según sus preferencias, lo que les permite mantenerse informados sin la carga de una sobrecarga de información. La personalización es un tema clave, con opciones de personalización para niveles de resumen, notificaciones y horas de silencio.

El éxito del proyecto depende de abordar varios desafíos, que incluyen la integración confiable y sólida de LLM, garantizar la privacidad y seguridad de los datos, y diseñar una interfaz fácil de usar.

Posibles mejoras incluyen análisis de sentimientos, soporte multilingüe, consultas interactivas y una interacción mejorada con la inteligencia artificial.

Diaberse: the return of the hypoglycemia

Extensión de “Diaberse” para incluir un divertido juego, orientado a niños que acaban de debutar en diabetes, para aprender a la vez que se divierten a controlar su glucemia en sangre

Tecnologías:

Icono de UnityIcono de C#

Keywords: Metaverse, virtual reality, 3D models
Complejidad: 8

En el Observatorio del año pasado se desarrolló el proyecto “Diaberse” (nombre original, “Educaverse”), una experiencia inmersiva de realidad virtual para educación diabética.

En esta extensión de Diaberse, donde un avatar a través de comandos de voz nos enseña cómo cuidar y controlar nuestra diabetes, proponemos un videojuego, enfocado a niños que acaban de debutar en diabetes, para que aprendan a controlarla.

Un perfecto control de la diabetes implica varios cuidados a lo largo del día, entre los que se encuentra las raciones de hidratos de carbono que se ingieren, las unidades y tipos de insulina que se inyectan, la actividad física, el estrés, e incluso la meteorología. Por lo tanto, para que el niño pueda aprender y entender de una forma fácil y divertida cómo todos estos factores le afectan, desarrollaremos un videojuego, en realidad virtual, donde el niño aprenda cómo le afecta a su “barra de energía”, que deberá estar en un rango entre 70 y 120 unidades, la ingesta de los diferentes tipos de hidratos, la aplicación de los diferentes tipos de insulina, y la actividad física diaria.

FreshStock

Aplicación de control de stock de comestibles en frigorífico y despensa

Tecnologías:

Icono de AndroidIcono de Javakotlin

Keywords: Products, stock, shopping list, expiration dates
Complejidad: 7

Aplicación de Android que permite al usuario tener listas de los productos almacenados en su despensa / frigorífico y que avise al usuario cuando están cerca de caducarse. A su vez según se van retirando productos, da la posibilidad de volver a añadirlos a una lista de la compra, manteniendo de esa manera un stock mínimo en casa.

También se cuenta con una lista de la compra, desde la cual cuando se van comprando productos se añaden a las listas de stock con su cantidad y fecha de caducidad.

Casos de uso.

  1. Gestor de productos: Alta / edición de productos que se compran indicando un stock mínimo deseable.
  2. Entrada de stock: Asignar el stock que se tiene por producto actualmente
  3. Lista de la compra automática: En función del stock de cada producto y el stock mínimo deseable generar una lista de la compra para tener de cada producto el stock deseado.
  4. Salida de stock: Al utilizar algún producto reducir el stock de este. También se usara esta opción para retirar productos que hayan caducado.
  5. Control de caducidades: Listado en el que se indican los productos cercanos a caducar.

Requisitos de la App:

  1. Apta para teléfonos y tabletas. En vertical y horizontal.
  2. EL producto debe de tener una propiedad que indica donde lo compra habitualmente, de esta manera el usuario puede filtrar donde comprar cada producto.
  3. Lista de almacenaje: Cuando el usuario haya comprado los productos, con un simple gesto debe tener la posibilidad de añadir el producto a la lista de almacenaje, añadiendo la cantidad de producto comprado y la fecha de caducidad (opcional).
    Para añadir la fecha de caducidad habrá dos opciones disponibles:
    • Entrada manual con un campo fecha
    • Aplicar OCR con la cámara de terminal
  4. Guardado de datos en la nube: Hoy en día se cambia de teléfono prácticamente una vez al año, por lo que es obligatorio que los datos se puedan exportar fácilmente de un terminal a otro. Para ello:
    • Exportar los datos a Google Drive, esto requiere una implementación extra, el inicio de sesión mediante la API de Google, pero tiene la ventaja de que los datos se guardaran en el espacio de almacenamiento del usuario que inicio sesión, estando oculto y no ocupando espacio.
  5. Notificaciones: Es una de las partes principales de la App, hay que notificar al usuario cuando la fecha de caducidad de su producto este cercana. Se enviarán tres notificaciones; cuando al producto le quede una semana para caducar, otra cuando el producto caduque al día siguiente y otra cuando ya haya caducado.

Requisitos tecnológicos:

  1. Respetar el patrón recomendado por Google, MVVM: Esto obliga al alumno al uso de Live Data, RX java, View Model, etc.
  2. Logs claros y precisos, esto ayudará cuando surja algún error a identificarlo rápidamente, para ello recomiendo el uso de la librería Timber.
  3. Para el almacenamiento de datos en local es recomendable usar SQL lite, incorporado ya en Android.
  4. La interfaz no es lo más importante, pero si se pide que la experiencia de usuario tenga cierta lógica, es decir, no se busca que la App sea bonita, pero fácil de usar.
  5. Un posible problema sobre esta App, no todo el mundo va a querer, según se agote un producto el usuario no va a querer ir al teléfono, por eso como alternativa, se puede colocar una Tablet en la cocina, que será el mejor sitio para su uso más cómodo. Esto quiere decir, que la interfaz no solo debe ser responsive entre diferentes pantallas de móviles, sino también para tabletas.

HPPrintingSegmentation: extract and printing from your imagination

Segmentación automática de imágenes para impresión, con selección de categorías y reemplazo opcional de capas con técnicas de “in-painting”

Tecnologías:

Icono de PhytonPytorchIcono de C++Icono de C#

Keywords: AI, semantic segmentation, in-painting, printing
Complejidad: 8

La segmentación semántica es una tarea de visión por computador que permite separar diferentes áreas de una imagen en categorías, dependiendo de qué sea cada una de las partes de la imagen. Una aplicación común de esta técnica es la conducción autónoma, identificando lo que es carretera, lo que es acera, lo que son otros vehículos, lo que son señales, etc. Normalmente los modelos de segmentación están muy acoplados a una tarea concreta y unas categorías muy limitadas, como en el ejemplo anterior. No obstante, recientemente han aparecido modelos como OneFormer [1][2] que permiten realizar una segmentación a un número muy elevado de categorías (o clases) diferentes: personas, cielo, árboles, césped, coches, etc.

En este proyecto se propone aplicar un modelo como OneFormer a imágenes que después se van a imprimir. El usuario, tras realizarse la segmentación, podrá seleccionar qué clases desea imprimir, eliminando aquellas categorías que no sean de su interés. Para las áreas descartadas, se aplicará una máscara transparente que hará que en tomen el color del papel (normalmente, blanco), opcionalmente pudiendo escoger también un color uniforme de relleno.

La idea es poder integrar ese módulo dentro de las aplicaciones de impresión de HP. Para ello, se deberá desarrollar código reusable y que se pueda utilizar de forma genérica, aunque para el desarrollo en sí mismo se pueda generar una aplicación independiente.

Por otro lado, existen modelos generativos de imagen como Stable Difussion [3] que, además de permitir generar imágenes a partir de un texto libre del usuario, también pueden realizar lo que se denominan tareas de “in-painting” [4], esto es, eliminar un área de una imagen y poder generar en ella lo que se desee, también a partir de texto. Sería deseable también en este proyecto incorporar un modelo de este tipo, de tal forma que si el usuario elimina una categoría específica (por ejemplo, un cielo nublado), pueda sustituir el área vacía por otra cosa (por ejemplo, un cielo sin nubes).

Finalmente, cabe destacar que la idea es ejecutar los modelos localmente, pero si por restricciones de computación no es posible, se puede optar por un modelo cliente/servidor donde los modelos de IA se ejecuten en máquinas más potentes (con GPU).

[1] https://praeclarumjj3.github.io/oneformer/
[2] https://huggingface.co/spaces/shi-labs/OneFormer
[3] https://stability.ai/blog/stable-diffusion-public-release
[4] https://huggingface.co/runwayml/stable-diffusion-inpainting

MiraclePlus

Reimaginación de las pinturas “Los Milagros de San Isidoro” de la cámara de Doña Sancha de la Real Colegiata de San Isidoro en León mediante inteligencia artificial y con visualización en realidad aumentada (o impresión personalizada)

Tecnologías:

Icono de PhytonPytorchArcoreIcono de Android

Keywords: Art, paintings, AI, AR, mobile
Complejidad: 9

La cámara de Doña Sancha es un espacio construido en el siglo XI, dentro de la Real Colegiata de San Isidoro en León. Inicialmente funcionaba como espacio de comunicación entre el Palacio Real y la Iglesia, pasando en el siglo XII a ser el scriptorium del monasterio y convirtiéndose en el siglo XVI en Sala Capitular, lugar de reunión para el Cabildo.

En el siglo XVI se realizaron las pinturas murales de la cámara, que fueron arrancadas con la técnica del strappo, en los años 60, guardándose en una capilla de la Colegiata y repuestas recientemente en la cámara gracias a un complejo proyecto de restauración. Dichas pinturas reproducen un calvario, la conversión de San Agustín y capítulos de la historia de “Los Milagros de San Isidoro”. Por desgracia, algunas partes de las pinturas han sido perdidas para siempre y aparecen en la cámara como espacios vacíos.

En este proyecto se pretenden aplicar modelos de IA generativa de imagen para rellenar los espacios vacíos de las pinturas. Para ello, se utilizarán modelos disponibles públicamente como Stable Difussion o análogos, y se realizará un entrenamiento particularizado de los mismos utilizando imágenes del mismo periodo y estilo que proporcionará el Museo de San Isidoro. Si bien no se conocen los autores exactos de las pinturas, que se supone son dos personas diferentes, sí que se podrá realizar un “fine tunning” particular con imágenes similares.

Respecto de los resultados obtenidos, estos se presentarán mediante una aplicación móvil de realidad aumentada, que permitirá ver los huecos rellenos sobre las pinturas originales de la cámara. Idealmente se plantearán varias alternativas para cada uno de los huecos, y los conservadores del Museo ayudarán también a guiar el modelo generativo mediante los “prompts” adecuados, generando así las imágenes más ajustadas a lo que se cree que puede ser la obra artística original. Alternativamente a la aplicación de realidad aumentada, también se puede plantear la opción de que HP imprima unos paneles “de quita y pon” para exhibiciones concretas.

Finalmente, para este proyecto el Museo de San Isidoro proporcionará imágenes de alta resolución de la Cámara que estarán sujetas a un acuerdo de no redistribución y sólo serán usadas por el alumno o alumna y sus tutores para la realización del proyecto.

MyParallelOrg

Deducción de una jerarquía alternativa en una compañía en base a interacciones de usuarios en sistemas de control de código como GitHub y sistemas de gestión de proyectos como Jira

Tecnologías:

PytorchIcono de PhytonIcono de ReactIcono de Angular

Keywords: Hierarchy, version control, project management, APIs, web applications, ML, AI
Complejidad: 8

En todas las empresas existen una jerarquía y una división en equipos/áreas/organizaciones fijadas por los objetivos de la compañía y los equipos de dirección. Sin embargo, en entornos colaborativos y proyectos compuestos por múltiples componentes, los trabajadores interactúan a través de diversas herramientas, creando una suerte de “organización paralela” en la que puede que trabajen más con gente de diferentes equipos al suyo o que reciban peticiones por parte de personas que no están directamente en su vertical jerárquica.

En este proyecto se desea integrarse con herramientas de control de código y gestión de proyectos a través de sus APIs públicas (por ejemplo, las que tiene GitHub y Jira) y analizar las colaboraciones de los usuarios al margen de la jerarquía oficial. Así, se estudiarán los issues y user stories para ver qué usuarios se encargan de abrirlos, cuáles de actualizar su estado y cuáles de cerrarlos. Además, se analizará el propio código (commits en cada proyecto, usuarios que modifican ciertos archivos, etc) para descubrir qué personas colaboran en la misma base de desarrollo.

Una vez se haya desarrollado el componente de ingestión de datos, será necesario crear una visualización sobre estos datos para poder ver la “organización paralela”. En esta visualización, que podrá ser una aplicación web separada o un dashboard en herramientas como PowerBI, los usuarios podrán ver diferentes organizaciones de los datos: se podrá ver para un usuario específico con qué otros usuarios interactúa más, creando una especie de nube de colaboración, y también se podrá ver dentro de un proyecto u organización específica cuáles son los usuarios que están involucrados en el trabajo dentro de ella.

Aunque no sea estrictamente necesario, el alumno podrá valorar la aplicación de técnicas de inteligencia artificial al procesado de los datos para encontrar relaciones ocultas entre los miembros de una compañía.

Finalmente, para el desarrollo no se utilizarán datos reales de HP por razones de confidencialidad, sino que el alumno trabajará con datos públicos disponibles sobre proyectos de la comunidad y/o de código abierto.

NoteThisTag

Aplicación móvil donde el usuario puede tomar notas y la propia aplicación la etiqueta por categorías previamente definidas por el usuario

Tecnologías:

Icono de ReactIcono de PhytonLogo de GokotlinIcono de Android

Keywords: App, mobile, AI, notes, tagging
Complejidad: 7

Aplicación móvil para tomar notas con función de auto etiquetado.

El usuario escribe una nota y la aplicación la etiqueta de forma automática. Estas etiquetas son definidas por el usuario de forma previa. La aplicación permite buscar notas filtradas por etiqueta.

Debido a que los modelos de IA son pesados, es posible que se requiera de un modelo cliente/servidor

Requisitos:

  • Etiquetado automático basado en el contenido.
  • Fácil accesibilidad. Las ideas son algo fugaz que queremos anotar lo antes posible. No se debe requerir de muchos ‘clicks’ para poder escribir.
  • Definición de etiquetas por parte del usuario.
  • Opción de búsqueda por etiquetas.

Deseable:

  • Borrar/modificar etiquetas.
  • Función asíncrona para permitir el uso sin conexión a internet. Una vez se vuelva a tener conexión la app se sincronizará para etiquetar aquellas notas que no lo están aún.
  • Reevaluación de etiquetas si algunas se borran/modifican.

NoTimePrinting

Localizador de impresoras disponibles y en buenas condiciones en un entorno corporativo con una flota de múltiples impresoras

Tecnologías:

Icono de AndroidkotlinIcono de JavaIcono de C#Icono de ReactIcono de Angular

Keywords: Print, fleet, mobile, web, web services
Complejidad: 7

En entornos corporativos o académicos es frecuente disponer de decenas o cientos de impresoras en una misma localización para ser utilizadas por los empleados o los clientes de la compañía. En ocasiones los usuarios pueden enviar trabajos a éstas de forma centralizada, enviándolas a una impresora virtual (modelo “print on the go”) o, por el contrario, deben escoger a qué impresora concreta desean imprimir.

En cualquier caso, puede ser que cuando el usuario acude a una impresora concreta, se encuentre que dicha impresora no cumple las condiciones adecuadas para imprimir su trabajo: que no tenga tinta o papel, que tenga una cola de impresión demasiado grande, que no presente las capacidades adecuadas (tamaño de papel, impresión en color, etc). Por lo tanto, se quiere desarrollar una aplicación (web o, idealmente, móvil) que, en forma de mapa y dependiendo de la localización del usuario, le indique la impresora más cercana que cumpla con sus requisitos y cuyo tiempo de impresión sea aceptable, balanceando si es necesario hacia otra impresora un poco más lejana.

El proyecto deberá de tener las siguientes partes:

  • Un backend web que se conectará a las impresoras y almacenará su estado y localización.
  • Un frontend, bien web o bien móvil en el que se podrán ver las impresoras, su estado y su localización.
    • La presentación deberá hacerse en forma de mapa con la localización actual del usuario y la localización de las impresoras.
    • Será posible obtener una recomendación de impresora en función de las necesidades del usuario, la distancia a éstas y el estado de cada una (tinta, papel, tamaño de la cola, capacidades, etc).
  • Una flota de impresoras simulada. Dado que el desarrollador no dispondrá de múltiples impresoras o pueden ser de modelos muy heterogéneos, será necesario crear un mini-simulador de impresora con los datos necesarios para llevar a cabo el proyecto. Este simulador será un servicio web (backend) muy sencillo que simplemente sirva un JSON con los datos de la impresora: nombre, localización, estado, capacidades, cola, etc.

Opcionalmente podrá haber un frontend de administración para dar de alta y de baja impresoras, cambiar su localización, etc.

OhMyLog: What have I done?

Generación de una timeline de eventos en base a logs mediante una herramienta configurable para trazas personalizadas con integración con Jira

Tecnologías:

Icono de PhytonIcono de C++Icono de JavaIcono de C#Icono de AngularIcono de React

Keywords: Logs, printers, timeline, Jira, web, tool
Complejidad: 7

Cuando los ingenieros de desarrollo necesitan diagnosticar un problema, en muchas ocasiones tienen acceso a un registro o log de eventos que han sucedido en un determinado sistema software o un dispositivo de hardware. En este log aparecen una serie de trazas que registran lo que ha ido sucediendo en el sistema. Estas trazas están (o deberían de estar) anotadas con un timestamp, esto es, una indicación de tiempo asociada a cada evento. Parte de su trabajo consiste en inspeccionar estos logs y poder saber qué ha pasado en el sistema o la máquina, así como las acciones realizadas por los usuarios de estos.

En este proyecto se quiere desarrollar un sistema que, dado un log estructurado (en el que las trazas siguen un formato específico, con información fija e información variable), genere una línea de tiempo para poder visualizar fácilmente lo que ha ido sucediendo en el sistema. Esto ayudará a los ingenieros a verificar la información del problema respecto a los eventos informados por quien lo reporta y además a conocer la historia del sistema hasta el final de las trazas.

El usuario podrá configurar qué significa cada una de las trazas, por ejemplo, si hay una traza que diga “[07/08/2023] Starting printing job plano1.pdf”, eso significa que se ha empezado a imprimir un trabajo llamado “plano1.pdf”. Para configurar esto se definirán plantillas de las trazas, opcionalmente utilizando expresiones regulares, indicando cuál es la parte común, qué partes son descartables, las variables que deben capturarse (en el ejemplo de arriba, el nombre “plano1.pdf”) y a qué evento está asociada cada traza (en el ejemplo, el inicio de una impresión).

Para el desarrollo el alumno o alumna podrá utilizar los logs que considere oportunos, o los tutores del proyecto proporcionarán un conjunto de logs de prueba similares a los logs finales para los que se quiere aplicar la herramienta, que son de carácter confidencial.

Respecto de la aplicación en sí misma, podrá ser una aplicación de línea de comandos (conjunto de scripts), una aplicación de escritorio o una aplicación web. Lo importante es que se pueda generar una imagen con la línea de tiempo (timeline) de los eventos que han ido sucediendo y estos se puedan consultar de forma cómoda.

Finalmente, se desea integrar también esta herramienta con Jira, un sistema de gestión de proyectos. Así, el usuario podrá indicar un número de “issue” y, utilizando la API de Jira (existen librerías para acceder en diferentes lenguajes), se descargarán los logs asociados, potencialmente en un formato comprimido (ZIP, tar.gz, etc), se analizarán, se generará la timeline y se añadirá ésta, como imagen, al “issue” original.

PackAPTtack

Análisis de packers en malware para ataques dirigidos (APT) desde 2019 a la actualidad

Tecnologías:


Keywords: Cybersecurity, packers, APT, malware
Complejidad: 6

Se requiere realizar un estudio de la evolución de los packers aplicados al malware que se utiliza en los ataques dirigidos denominados APT.

Para ello el alumno deberá inicialmente formarse en el área de ciberseguridad, entendiendo lo que son los APTs y lo que son los empaquetadores (packers) usados por el malware. Tambien conocer los diferentes tipos de análisis que se pueden hacer a las muestras de malware. Deberá, a continuación, obtener un repositorio de malware APT (ejecutables PE32) de los ataques APT ocurridos entre 2019 y la actualidad.

Utilizando las herramientas PEframe deberá realizar un análisis estático de los ejecutables PE32 recolectados y extraer las funciones importadas (IMPORTS) y los packers utilizados en dichas muestras. Y compararlas con las extraídas en otros dos experimentos similares (que ya disponemos) con muestras de malware de 2010-2015 y 2015-2019. Para ello, los contenidos del análisis estático se almacenarán en una Base de Datos MariaDB.

Finalmente deberá escribir un estudio de la evolución de los packers y las funciones importadas en este tipo de ataques a lo largo de los últimos 12 años. Intentando entender los motivos de esta evolución.

PhotoContest

Creación de una plataforma para concurso online de fotos

Tecnologías:

Icono de AngularIcono de Node JS

Keywords: Web services, REST, API, Frontend, Backend, DB
Complejidad: 6

Se propone la creación de una plataforma para la creación y gestión de concursos de fotos online. Se dispondrá de un sistema de roles que limiten la funcionalidad según dicho rol.

Necesidades:

  • Creación de concursos (admin): fechas de creación, de fin, número de votos por usuario, tipo de concurso
  • Subida de fotos (admin):
    • Subida directa relacionada con un concurso
    • Subida automática desde Instagram (u otras plataformas) a partir de un hashtag y un rango de fechas
  • Login contra un LDAP/ActiveDirectory/similar de usuarios
  • Votación tradicional de fotos (todos los roles):
    • Visualización de fotos del concurso (galería y detalle de cada foto)
    • Número de fotos a votar según el máximo definido en el concurso
    • Solo una votación por concurso y usuario (según usuario logado)
  • Votación por batalla de fotos (todos los roles):
    • Sistema que enfrenta aleatoriamente 2 fotos, haciendo que las ganadoras vayan pasando rondas hasta la final
    • Ponderación de resultados entre todas las votaciones para dar la ganadora
  • Visualización de resultados (todos los roles):
    • Último concurso
    • Concursos anteriores

Notas:

  • Todas las visualizaciones del frontend deberán ser responsive para posibilitar su utilización tanto en ordenador como en móvil/tablet
  • La visualización de fotos en frontend realizará una reducción de la imagen para no tener tasas de transferencia demasiado elevadas.

PhotoCopy

Escaneado de álbumes de fotografía en la plataforma HP Workpath (Android para impresoras de oficina) con integración con sistemas de gestión de imágenes

Tecnologías:

Icono de AndroidIcono de JavakotlinIcono de OpenCV

Keywords: Printers, photo albums, scan, cloud, image analysis
Complejidad: 8

En muchas ocasiones la gente tiene álbumes fotográficos “analógicos” que aún no ha digitalizado. El proceso normal de digitalización de estos álbumes incluye sacar las fotografías de las páginas (puede haber varias fotografías por página), escanearlas una a una y volver a meterlas en el álbum. Si las fotografías están pegadas, es necesario despegarlas o escanear la página entera y recortarlas utilizando programas de edición de fotografías.

Existen algunas aplicaciones ya disponibles para escanear este tipo de álbumes con el móvil, separando las fotografías, el problema son los brillos, ángulo de escaneado y calidad que se puede obtener en cada foto. En este proyecto proponemos desarrollar una aplicación de HP Workpath para realizar este proceso de una forma rápida y amigable. Workpath es una plataforma de desarrollo de aplicaciones para impresoras HP basada en Android, por lo que las tecnologías a manejar serán las mismas que para el desarrollo en dicho sistema operativo. Además, el alumno contará con un simulador que podrá ejecutar en su PC para realizar las pruebas, teniendo acceso cuando lo desee a máquinas reales en nuestras oficinas.

La aplicación escaneará cada una de las páginas que el usuario irá poniendo en el escáner de la impresora. Identificará las fotografías e, idealmente, las separará en fotografías individuales. Para realizar esta tarea se pueden incorporar librerías de tratamiento de imagen como OpenCV e identificar los bordes, o aplicar algún algoritmo simple para ello. El alumno dispondrá de acceso a una impresora de la serie GS2, con más potencia, para poder probar esta parte de la aplicación.

Finalmente, se desearía que las imágenes escaneadas pasen directamente a formar parte de la biblioteca online de fotografías que utilice el usuario. Para ello se ofrecerá conexión con alguna plataforma de gestión de imágenes (idealmente, con varias), como Google Photos, Amazon Photos o Apple iCloud. El usuario introducirá sus credenciales de la plataforma en la impresora y las imágenes serán subidas automáticamente tras el escaneado a la misma. Si la integración resulta ser demasiado complicado, la subida a un servidor FTP o el envío por email es una alternativa válida.

PipelineAI

IA para el filtrado y categorización de imágenes provenientes de un motor de búsqueda de imágenes

Tecnologías:

Icono de Phyton Pytorch

Keywords: Image classification, image search engines, OpenAI, CLIP, computer vision, zero-shot image classification, image to text, semantic similarity
Complejidad: 7

En la actualidad, los motores de búsqueda de imágenes (Google, Bing, etc) nos permiten encontrar imágenes relativas a una entrada introducida por el usuario. Esta acción desencadena un resultado en el cual, el usuario podrá observar que muchas de las imágenes que aparecen tras la búsqueda guardan relación en base a la entrada introducida por el usuario. Otras guardan similitud, y otras, en la mayoría de los casos, no guardan relación o no tienen nada que ver.

Esto es un problema despreciable a pequeña escala, dado que el propio usuario podrá detectar las imágenes que no guardan relación con la búsqueda solicitada y por lo tanto podrá descartarlas. En el caso de una búsqueda de un par de imágenes, por ejemplo. El problema, se hace insalvable en tiempo, cuando el número de imágenes a descartar es de cientos o miles. No es un proceso eficiente. Aquí es dónde los modelos basados en visión por computación tradicionales han obtenido una mejora, en pos de los modelos de tipo “Zero-shot Image Classification” e “Image to text”.

El proyecto que se propone a continuación pretende salvar la barrera de mejorar el proceso de selección de imágenes en base a un conjunto de entradas introducidas por el usuario iterativamente. Con el resultado de obtener así una calidad en el conjunto de imágenes que no se podría obtener con los motores de búsqueda de imágenes actuales.

El objetivo del proyecto es investigar y desarrollar un sistema que, tras obtener un conjunto de imágenes provenientes de un motor de búsqueda de imágenes o de una técnica de web-scraping, permita iterar sobre cada una de estas imágenes. Llevando a cabo un descarte de aquellas imágenes que no detecte el modelo de inteligencia artificial en base al filtro introducido por el usuario. El usuario podrá añadir tantos filtros como desee. En el resultado final, se obtendrá un conjunto de imágenes que hayan pasado todos los filtros. Los filtros introducidos por el usuario consistirán en frases sobre la imagen que se le pasarán al modelo. El modelo, mostrará la puntuación de cada una de las frases en función de la veracidad sobre la misma relativas a la imagen.

Aquellas imágenes que se consideren que poseen mayor puntuación, podrán pasar al siguiente filtro. Repitiendo el proceso anterior. En el punto final del ciclo, el usuario obtendrá un conjunto de imágenes catalogadas respecto a un conjunto de frases (también se pueden incorporar modelos de “Semantic similarity”).

Durante la ejecución del proyecto, el alumno deberá desarrollar una interfaz gráfica que permita interactuar con ella para el diseño de los filtros. Con el objetivo también de ser la interfaz gráfica que actúe como lanzador del proceso de iterar sobre los filtros. Deberá investigar la mejor tecnología que se adapte a soportar el proceso de inferencia de los modelos inteligencia artificial.

SearchPayAndGym

Aplicación para gimnasios donde publiquen sus precios por uso diario/semanal del gimnasio y que sirva de pasarela para la contratación de los usuarios del servicio

Tecnologías:

kotlin

Keywords: Gym, app, offers, subscriptions, sharing, web, mobile
Complejidad: 7

Como consecuencia de la creciente cantidad de personas que trabaja como nómadas digitales y la idea de poder disfrutar de ir al gimnasio cuando vas de vacaciones a cualquier sitio recóndito del mundo, surge la idea de crear una aplicación que facilite tanto a los gimnasios como a los usuarios la interacción para la oferta y demanda de bonos temporales para el servicio.

Esta aplicación consistirá en un feed filtrado por localización donde los usuarios puedan escoger las ofertas de bonos temporales (de un día, tres días, semanales…) que los gimnasios publiquen en ella. En ella deben ser capaz de registrarse tanto los gimnasios como los usuarios. Los usuarios serán capaces de buscar gimnasios en un mapa y contratar sus servicios, y los gimnasios de publicar su catálogo de servicios, dónde están y, opcionalmente, fotografías de sus instalaciones.

Por otro lado, la aplicación como extensión deberá tener la capacidad de poder dar acceso a los usuarios a los gimnasios con el bono comprado mediante un QR, código de barras, o algún servicio de autenticación y, a poder ser, permitir a los usuarios realizar el pago con tarjeta de débito o crédito o alguna tecnología wallet (ApplePay, GooglePay, PayPal, etc) y ese dinero ser reemitido al gimnasio correspondiente.

Sugar Race: save the diabetics

Solución colaborativa para que un diabético pueda lanzar una señal SOS y un colaborador le localice y pueda asistirle con el azúcar que necesita

Tecnologías:

Icono de AndroidLogo de GoIcono de Node JSIcono de React

Keywords: Web app, mobile app
Complejidad: 7

Tener diabetes y tener un nivel bajo de azúcar en sangre y no tener nada que pueda subir ese nivel es uno de los mayores miedos de todo diabético. Llevar a niveles inferiores de 70 de azúcar en sangre es peligroso para un diabético, ya que a partir de ese nivel entran en hipoglucemia, y han de corregir ese nivel ingiriendo hidratos de absorción rápida para volver a niveles más estables y seguros.

Muchas veces sucede que por descuido u otras circunstancias, no se tiene acceso a esa ración de rescate, y es probable que la hipoglucemia pueda causar pérdida de conocimiento en la persona. Para evitar llegar a ese extremo, proponemos la creación de un sistema de ayuda colaborativo, en el tendremos dos tipos de usuarios, colaboradores y diabéticos.

Un colaborador se dará de alta con el propósito de asistir rápidamente a un diabético que esté en un rango de distancia óptimo como para garantizar que no pierda el conocimiento. El diabético, será el que lance una señal de SOS que recibirán los colaboradores más cercanos. Uno de ellos atenderá la petición, y asistirá al diabético. Tendremos una aplicación móvil con dos roles diferentes, y una aplicación web desde la que gestionar todo el sistema.

WhatIsMyPlay

Identificación de jugadas (pases, tiros, robos, etc) de baloncesto en base a una serie temporal de posiciones de jugadores y balón

Tecnologías:

Icono de Phyton Pytorch

Keywords: AI, trajectories, tracking, ML, DL, geometry, basketball
Complejidad: 9,5

Durante las temporadas de 2015 y 2016, la NBA instaló en sus estadios un sistema de cámaras y procesamiento de vídeo, llamado SportsVU, que permitía recopilar las posiciones X e Y de cada jugador en un momento dado, como una serie temporal de eventos, indicando además el tipo de jugada específica que se había producido (un tiro, un fallo, un rebote, etc). Inicialmente la NBA compartió y difundió estos datos, pero después el proyecto tomó una deriva más comercial y dejó de hacerlo. No obstante, los datos originales siguen estando aún disponibles para cualquiera que quiera utilizarlos [1] [2].

En este proyecto se pide desarrollar un sistema de Machine Learning (incluyendo Deep Learning) que sea capaz de, partiendo de un dataset como el presentado en el párrafo anterior, identificar en base a los movimientos de cada jugador y del balón el tipo de jugada que se ha producido. Para ello será necesario identificar las trayectorias de cada jugador, tratándola de una forma geométrica (de forma clásica o mediante IA), y además, partir la secuencia temporal de movimientos en eventos que enmarquen cada una de estas jugadas (por ejemplo: todos estos movimientos desde el timestamp X al timestamp Y y que involucran a los jugadores A, B y C, son un rebote ofensivo).

Idealmente el sistema será capaz de detectar los siguientes eventos:

  • Tiro (el balón sale de un jugador hacia la canasta).
  • Pase (el balón se mueve entre jugadores del mismo equipo).
  • Robo (el balón se mueve de un jugador de un equipo a un jugador del otro equipo).
  • Desplazamientos de jugadores tanto con balón como sin balón.
  • Penetración (desplazamiento con balón hacia la canasta).
  • Rebote (ofensivo o defensivo, dependiendo de la localización y el jugador).
  • Bloqueo (normal o ciego).

No obstante se empezará por los casos más sencillos como los tiros y los pases y posteriormente se evolucionará el sistema para poder detectar jugadas más complejas.

[1] https://github.com/sealneaward/nba-movement-data
[2] https://github.com/neilmj/BasketballData

WhatTheNoise

Sistema para escuchar eventos dentro de un sistema físico (máquina, dispositivo, etc) usando dos micrófonos, localizando el origen y tipo del sonido y registrándolo

Tecnologías:

Icono de C++Icono de PhytonIcono de LinuxIcono de Node JS

Keywords: Raspberry, web, audio, signals
Complejidad: 9,5

Una de las cosas que hemos aprendido de los técnicos mecánicos es que muchos de los ruidos de las piezas móviles o aparatos eléctricos nos dan una pista de lo que está ocurriendo. Queremos realizar esto de forma automática. Para ello este proyecto se divide en fases:

Fase 1: Localización y registro de sonidos

En esta fase del proyecto, implementaremos un sistema que sea capaz de detectar sonidos cercanos mediante dos micrófonos y localizar el origen (de forma aproximada) mediante técnicas TDOA (Time Difference Of Arrival). Dispondremos de una Raspberry Pi con dos micrófonos USB.

El sistema deberá permitir configuración de umbral de sonido y calibración. Con lo que tendrá un pequeño front-end web para configurarlo.

La precisión debe ser prioridad en este proyecto, pues la distancia de los micrófonos al sonido podrá estar entre 0,5 y 4 metros (aprox).

Al menos, debe detectar y registrar tres tipos de sonidos:

  • continuos fijos (tipo motores, ventiladores, etc) donde se registra solo una muestra de X seg y su posición relativa
  • continuos en movimiento (cuando el mismo sonido va moviéndose entre los dos puntos) donde solo registra una muestra y posición “En movimiento”.
  • puntuales (tipo golpe, chasquido, etc) donde se registra todo el sonido y su posición relativa.

Fase 2: creación de un dataset para la clasificación de los sonidos

Se creará una pequeña aplicación (web, cloud o de escritorio) que cruce los datos de los sonidos antes registrados, con los eventos y estados registrados de la máquina/sistema en un fichero de log aparte dado, donde también hay un registro de tiempo. Se buscará una relación entre los sonidos y esos eventos y estados y se clasificarán en base a esta.

El proyecto debe utilizar el estado del arte actual (investigación) e incorporarlo en la medida de lo posible.

YourTurn!

Aplicación web donde dos usuarios pueden jugar una partida de cartas en formato físico. Dos cámaras graban cada tablero y la aplicación permite ampliar las cartas del contrincante y a su vez traducirla

Tecnologías:

Icono de ReactLogo de GoIcono de OpenCV

Keywords: Web, computer vision, image recognition, video recognition
Complejidad: 8

Aplicación web para jugar partidas de cartas online con cartas en formato físico.

Los usuarios se conectan a la plataforma para jugar una partida. Tras seleccionar el tipo de juego, las cámaras comienzan a grabar el tablero de cada jugador. Los jugadores pueden ampliar cualquier carta del contrincante para ver los detalles. La aplicación traduce las cartas si los jugadores hablan un idioma diferente.

Las cámaras utilizaran un programa de recogimiento de imágenes de forma que tras contrastar con su base de datos correspondiente sea capaz de identificarlas y mostrarlas en el idioma que les corresponde.

Requisitos:

  • Conexión entre dos jugadores.
  • Acceso a la cámara.
  • Tablero interactivo para ampliar las cartas.

Traducción de cartas si el idioma entre jugadores es distinto

Orgullosos colaboradores

Colaboramos con las más prestigiosas universidades españolas.

PROPUESTA DE PROYECTO

Escribe aquí tu consulta e intentaremos atenderla lo antes posible. Ten en cuenta que, dependiendo de la cantidad de consultas recibidas nuestra respuesta, se podrá demorar unos días.


SUBIR