Pablo Díaz Viñambres
MSc Informatics @ TUM
Primimix: Semantic Planar Splatting para Reconstrucción 3D Estructurada
Primimix es un pipeline híbrido de descomposición y renderizado de escenas desarrollado junto a Binyu Fang, Katy Grossmann, Billy Herrmann, Danit Niwattananan para nuestro proyecto del TUM Data Innovation Lab , originalmente titulado Semantic Planar Splatting for 3D Structured Reconstruction y supervisado por el Prof. Dr. Olaf Wysocki de la CV4DT Chair de la Universidad de Cambridge. El problema que abordamos es que el 3D Gaussian Splatting renderiza escenas de interiores con gran precisión, pero solo obtiene una nube desestructurada de millones de kernels. Aunque ya existen varios trabajos en la literatura que intentan regularizar este proceso, o que representan la escena con primitivas alternativas (e.g. 2DGS, MeshSplatting, GaMeS…), todavía no hay una representación que sea fotorrealista, geométricamente precisa y estructurada a la vez. Nuestro enfoque combina una representación de doble primitiva, usando planos y superquadrics, optimizados conjuntamente con 2D Gaussians colocadas sobre ellas. De esta forma, las primitivas proporcionan la estructura básica tanto para los objetos en primer plano (superquadrics) como para las regiones planas de fondo (planos), y las Gaussians, equipadas con coeficientes de Spherical Harmonics, añaden textura y detalle geométrico a la representación.
Partiendo únicamente de imágenes y poses, densificamos una nube de puntos, la segmentamos en instancias, y las dividimos en dos conjuntos de primitivas: planos acotados para las superficies estructurales, y superquadrics para muebles y objetos, que juntos forman . Los superquadrics son una familia paramétrica de once parámetros que cubre cuboides, cilindros y elipsoides, definida por los radios y los exponentes de forma .
Después adherimos 2D Gaussians a cada primitiva de , optimizando primero la geometría contra profundidad y normales, y congelándola después para refinar la apariencia. En una escena representativa de ScanNet++, esto permite que Primimix explique la habitación con unos 620 bloques explícitos y 1.6M de Gaussians de superficie, frente a los 1.4-2.2M de Gaussians completamente desestructuradas que otros métodos de splatting necesitan para renderizar la misma habitación sin ninguna estructura explícita:
En el aspecto geométrico, Primimix supera a ambos métodos de referencia en distancia de Chamfer, completitud y F-score en el dataset de ScanNet++:
| Método | Chamfer↓ | Precisión↓ | Completitud↓ | F@5↑ |
|---|---|---|---|---|
| PlanarSplatting | 10.99 | 9.58 | 12.41 | 44.70 |
| 3D Gaussian Flats | 18.60 | 4.60 | 32.59 | 50.24 |
| Primimix (Ours) | 6.63 | 7.00 | 6.26 | 62.80 |
El proyecto fue calificado con un 1.0 en el TUM DI-Lab (máxima nota), y ahora estamos refinando el método y trabajando hacia una publicación.
GeMS: Geometry-aware Mesh Splatting
GeMS (Geometry-aware Mesh Splatting) fue mi proyecto final para la asignatura de Machine Learning for 3D Geometry (ML3D), impartida por la Prof. Angela Dai en la TUM, junto con Shaojie Hu-Chen. Partimos de un paper de CVPR 2026, MeshSplatting, que sustituye las primitivas Gaussianas del 3D Gaussian Splatting estándar por una representación explícita y opaca de triángulos (“triangle soup”), que después se triangula para formar una malla. Aunque el enfoque es interesante y produce una calidad fotométrica decente, suele generar geometría ruidosa y rota en regiones planas simples como paredes y suelos. GeMS intenta reducir estos efectos, causados por el objetivo fotométrico sub-restringido, añadiendo tres términos de regularización sobre la pérdida fotométrica durante el entrenamiento: un término de suavidad Laplaciana + consistencia de normales que amortigua el ruido y el plegado entre vértices, una pérdida de alineación con planos (alineación coseno con la normal + L1 con el centro) que usa una representación optimizada proporcionada por PlanarSplatting, y una pérdida de fronteras semánticas que penaliza los triángulos compartidos entre dos objetos distintos.
En Mip-NeRF360 y ScanNet++, GeMS mejora claramente la calidad geométrica, con Chamfer-L1, F-score y consistencia de normales mejorando en conjunto, manteniendo una calidad fotométrica igual o mejor que la del método base. Además, reduce el porcentaje de triángulos ambiguos compartidos entre instancias de objetos (del 12.33% al 10.33% en nuestro subconjunto de ScanNet++). El componente de alineación con planos () resultó ser el más determinante de nuestro método:
| Método | PSNR↑ | Chamfer-L1↓ | F-score↑ | Tri. compartidos↓ |
|---|---|---|---|---|
| MeshSplatting | 19.63 | 0.110 | 0.540 | 12.33% |
| + | 19.72 | 0.068 | 0.588 | 11.29% |
| + | 20.59 | 0.056 | 0.629 | 12.85% |
| + | 20.54 | 0.068 | 0.571 | 12.98% |
| GeMS (Ours) | 19.995 | 0.062 | 0.630 | 10.33% |

Matching Disconnected Shapes: correspondencia 3D bajo parcialidad con desconexión
El shape matching es un problema clásico de la geometría computacional que busca encontrar correspondencias punto a punto entre dos superficies 3D. El partial shape matching lo hace cuando una de ellas está incompleta. La mayoría de métodos, incluido el que usamos como base (ULRSSM), se apoyan en functional maps: una base compartida construida a partir de las autofunciones del operador de Laplace-Beltrami (LBO) de cada forma, lo que asume implícitamente una superficie conexa. Si se corta una forma en varios fragmentos espacialmente desconectados, el functional map deja de funcionar. Los benchmarks existentes (p. ej. SHREC16, BeCoS) solo manejan el caso de un único componente conexo. Junto con Mehdi Chehaider, exploré qué ocurre con la desconexión real, donde los métodos de correspondencia existentes fallan casi de inmediato.
Primero construimos un dataset para esto, adaptando el codebase de BeCoS, que usa raycasting para fragmentar formas, sobre distintos benchmarks base (p. ej. SCAPE, FAUST, DeformingThings4D, TOSCA). Además de una baseline con viewpoints aleatorios, diseñamos una estrategia de selección de viewpoint guiada por no-convexidad: renderiza mapas de profundidad desde direcciones candidatas, detecta las discontinuidades de profundidad que separan una silueta, y muestrea las vistas que producen componentes desconectados más equilibrados. De esta forma podemos generar ejemplos difíciles rápidamente — arrastra las formas de abajo para ver una malla de test por dataset, con sus componentes desconectados más grandes en su propio color y los fragmentos residuales en gris:
Reconstrucción como prior de matching
Nuestra idea central para resolver el problema del matching es usar un modelo generativo 3D como prior de forma para reconstruir el objeto completo a partir de sus fragmentos, hacer matching contra esa reconstrucción, y proyectar la correspondencia de vuelta sobre la malla desconectada:
Comparamos cuatro enfoques de reconstrucción: primero un método base de zippering geométrico (bridging), después completado de nubes de puntos vía PoinTr y Poisson Surface Reconstruction, y finalmente dos modelos generativos de imagen-a-3D, Hunyuan3D y Pixal3D. Entrenamos ULRSSM sobre cada uno y medimos el error geodésico y la calidad de reconstrucción. Hunyuan3D dio los mejores resultados, con reconstrucciones suaves y bien alineadas que preservan casi toda la calidad de correspondencia, mientras que bridging resultó ser una baseline no aprendida sorprendentemente sólida en mallas humanas. Nuestra principal conclusión es que hacer matching de formas desconectadas ya es un problema abordable gracias a los modelos generativos 3D recientes, y nuestro objetivo es seguir trabajando en esta línea de investigación y publicar pronto un paper que describa el enfoque en detalle.
Resultados
Cada malla de abajo se colorea transfiriendo el color propio (basado en coordenadas) de la Plantilla a través de su correspondencia punto a punto predicha, así que un color suave y coherente indica una correspondencia precisa, y uno desordenado indica que falló. Puedes elegir mostrar el mapeo (vía vecino más cercano) hacia la malla desconectada, que es lo que se evalúa, o la reconstrucción completa, que es lo que se matchea.
Las siguientes dos tablas confirman los resultados visuales. Mientras que Hunyuan3D y Pixal3D están bastante igualados en calidad de reconstrucción, Hunyuan3D lidera en calidad de matching, lo que atribuimos a una geometría más regular.
FAUST - métricas de reconstrucción
| Método | CD-L1 (cm)↓ | CD-L2 (cm²)↓ | F1@2cm↑ | F1@5cm↑ |
|---|---|---|---|---|
| PoinTr | 3.09±1.28 | 27.95±23.31 | 0.58±0.16 | 0.81±0.11 |
| Hunyuan3D | 2.41±1.02 | 15.57±19.15 | 0.63±0.15 | 0.90±0.08 |
| Pixal3D | 2.56±1.32 | 19.33±30.75 | 0.59±0.14 | 0.90±0.10 |
FAUST - métricas de calidad de matching
| Método | Error Geodésico↓ | AOC↑ |
|---|---|---|
| Bridging | 0.230±0.128 | 0.276±0.189 |
| PoinTr | 0.311±0.086 | 0.140±0.136 |
| Hunyuan3D | 0.078±0.097 | 0.561±0.194 |
| Pixal3D | 0.327±0.228 | 0.246±0.289 |
Efficient Neighbourhood Search in 3D Point Clouds Through Space-Filling Curves and Linear Octrees
Este es mi primer artículo de investigación, escrito en colaboración con Miguel Yermo, Ph.D., Silvia R. Alcaráz, Ph.D., Óscar G. Lorenzo, Ph.D., Francisco F. Rivera, Prof. y José C. Cabaleiro, Prof., y disponible como preprint en arXiv. Se desarrolló como una continuación y ampliación de mi TFG en Ingeniería Informática. La librería desarrollada en C++ también está disponible como código abierto en GitHub.
Abstract (traducido del original)
Este trabajo presenta un enfoque eficiente para la búsqueda de vecindades en nubes de puntos 3D, combinando una reordenación espacial basada en Space-Filling Curves (SFC), concretamente en las curvas de Morton y Hilbert, con una implementación de octree lineal. También proponemos algoritmos de búsqueda especializados para consultas de radio fijo y kNN, basados en octrees lineales. Además, introducimos el concepto de histograma de localidad kNN, que puede emplearse para caracterizar la localidad en los accesos a datos, y que observamos que está directamente relacionado con los fallos caché y el rendimiento de las búsquedas. Nuestros experimentos revelan que la reordenación mediante SFC mejora significativamente el acceso a datos espaciales, reduciendo el número de fallos caché entre un 25% y un 75% y el tiempo de ejecución hasta en un 50%. Asimismo, comparamos nuestra propuesta con varias implementaciones de octree y KDTree ampliamente utilizadas. Nuestro método logra una reducción significativa del tiempo de búsqueda, siendo hasta 10 veces más rápido que las soluciones existentes. Además, analizamos el rendimiento de nuestras búsquedas de vecindad (paralelizadas con OpenMP), demostrando alta escalabilidad con el número de núcleos y el tamaño del problema. En particular, observamos un speedup de hasta 36x al ejecutar búsquedas de radio fijo en un sistema con 40 núcleos. Los resultados obtenidos indican que nuestros métodos proporcionan una solución robusta y eficiente para aplicaciones que requieren acceso rápido a conjuntos de vecinos 3D a gran escala.


Estudio y mejora del rendimiento de modelos Octree para búsqueda de vecinos en nubes de puntos 3D
Para mi TFG de Ingeniería Informática, desarrollé algoritmos rápidos para consultas espaciales en nubes de puntos 3D . El problema que abarqué es sencillo: dado un centro , o bien buscamos todos los puntos a menos de una distancia dada (fixed-radius queries), o bien buscamos los puntos más cercanos (kNN queries) de la nube. Estas dos operaciones de búsqueda de vecindad son extremadamente comunes, y suelen convertirse en un cuello de botella computacional en el procesado de nubes grandes para teledetección y fotogrametría. Para resolver este problema, desarrollamos dos enfoques para acelerar las búsquedas:
- Reordenación de la nube de puntos mediante Space Filling Curves (SFCs), alterando el orden en memoria para reducir fallos de caché y mejorar el rendimiento hasta un 75%.
- Una estructura de datos en forma de octree linear, equipada con un algoritmo novedoso para recuperación rápida de puntos en búsquedas de radio fijo, y una adaptación a esta estructura de un algoritmo conocido para búsquedas kNN. Ambos algoritmos destacan en rendimiento y superan incluso bibliotecas SoTA en términos de velocidad de las búsquedas (hasta 10x más rápido, mejor escalabilidad en y ), uso de memoria (70% menos, layout compacto) y tiempo de construcción (paralelizable, hasta 30x más rápida).
El trabajo obtuvo la nota máxima (10/10) y fue reconocido con Matrícula de Honor como uno de los mejores de la promoción. Tras mi graduación, mis tutores y yo seguimos trabajando en el proyecto y lo ampliamos primero a un artículo corto para las Jornadas SARTECO 2025. Más adelante, redactamos un artículo completo, ya enviado y disponible como preprint en arXiv. Consulta la entrada del proyecto de investigación para más información!.
La Transformada Rápida de Fourier
El tema que escogí para mi TFG de Matemáticas fue la Transformada de Fourier, una herramienta matemática que me fascina desde hace años y que quería estudiar a fondo. Este trabajo comienza con una recopilación de resultados importantes sobre espacios , en particular , donde definimos por primera vez la Transformada de Fourier (FT) continua. Después demostramos el teorema de Plancherel para su extensión a y apuntamos la construcción y propiedades de la FT multidimensional.
En la segunda parte del trabajo, desarrollamos un marco matemático sólido para la Transformada Discreta de Fourier (DFT). Esta DFT puede entenderse como un muestreo de una FT continua, y se define de forma limpia mediante raíces de la unidad y matrices de Fourier. Una vez definida la DFT, podemos introducir algoritmos de Tranformada Rápida de Fourier (FFT) para su cálculo. Primero presentamos el conocido algoritmo Cooley-Tukey, tanto en su variante Decimation-In-Time (DIT) como Decimation-In-Frequency (DIF), que aplican la idea de divide y vencerás para reducir la complejidad del cálculo de una DFT de puntos desde a , para . Esto permite realizar convoluciones muy rápidas en el dominio de la frecuencia mediante el discrete convolution theorem. También existen otros algoritmos FFT, como split-radix FFT y Rader o Bluestein FFT para primo.
Para cerrar el trabajo, repasamos aplicaciones importantes en procesamiento de señales (filtros low-pass, high-pass y band-pass, análisis espectral de acordes de guitarra) y compresión de imágenes (formato JPEG). El trabajo obtuvo una nota sobresaliente (9.8/10). En conjunto, aprendí muchísimo y disfruté mucho escribiendo esta tesis. Muchas gracias a Lucía López Somoza por su excelente supervisión!

Proyecto Hestia
Hestia es un proyecto del club de estudiantes RoboTUM cuyo objetivo es construir un entorno de cocina robotizado capaz de percibir ingredientes y recipientes, operar electrodomésticos inteligentes y, con el tiempo, encargarse de una receta de principio a fin. El proyecto todavía está en una fase temprana. Empezamos en abril de 2026 y hemos dedicado los primeros meses a definir las capas de percepción, acción y física (hardware) del sistema en simulación. En paralelo al desarrollo técnico, hemos trabajado en obtener patrocinio de varias empresas y grupos: MIRMI (el instituto de robótica de la TUM) nos aporta cómputo y acceso a brazos Franka Emika, BSH (electrodomésticos de Bosch/Siemens) patrocina electrodomésticos de cocina inteligentes, y SICK nos suministra cámaras RGB-D de alta calidad para el sistema de percepción.
En agosto de 2026 organizamos nuestro primer hackathon, donde el equipo se puso manos a la obra por primera vez: manejando electrodomésticos de encimera de BSH mediante manipulación básica y teleoperación, y comenzando los primeros experimentos de finetuning de modelos vision-language-action (VLA) junto con control más clásico de un brazo Franka Emika. En paralelo, nuestro equipo de hardware empezó a prototipar la “encimera inteligente”. Tenemos previsto desarrollar una superficie basada en una matriz de bobinas con levitación magnética (inspirada en SupraMotion de Festo y en los sistemas de Planar Motor), pensada para deslizar los recipientes por la cocina sin necesidad de manipulación mecánica adicional.
AI for Industry Challenge: Inserción Robótica de Cables
El AI for Industry Challenge es una competición de robótica organizada por Intrinsic y Open Robotics, centrada en uno de los problemas más complicados de la manufactura de componentes electrónicos: la inserción de cables y conectores. Nuestro equipo RoboTaNGo, formado por miembros de RoboTUM e ingenieros de TNG Technology Consulting, participó en la fase de clasificación, dividiéndonos en los subequipos de generación de datos, investigación de policies y despliegue.
Primero tuvimos que desarrollar una política de “cheat code”: dado que el simulador de la fase de clasificación expone las posiciones reales (ground truth) de los objetos, escribimos un controlador que lee directamente la posición del cable y del puerto y calcula geométricamente la trayectoria de recogida e inserción, sin ningún tipo de aprendizaje de por medio. Debido a una física ligeramente defectuosa en el entorno de simulación, y teniendo que equilibrar simplicidad y predictibilidad (para facilitar el entrenamiento de modelos VLA) con precisión, tuvimos que reescribir esta política muchas veces. Una vez terminada, se convirtió en nuestra principal herramienta para generar datos de demostración limpios.
Tras recolectar datos de buena calidad con nuestra política de código trampa, empezamos a hacer finetuning del modelo fundacional (VLA) Isaac GR00T de NVIDIA. Para alimentarlo, construimos un pipeline de grabación basado en LeRobot conectado al stack de ROS 2 del reto. Combinamos episodios generados automáticamente por nuestro controlador de cheat code en escenarios aleatorizados, más una configuración de teleoperación que permitía a un miembro del equipo manejar el brazo simulado directamente y grabar el episodio directamente en el formato de dataset de LeRobot. Usamos la teleoperación tanto para demostraciones normales como para episodios de “recuperación”. Estos episodios se tratan de ejemplos correctivos grabados tras los propios fallos de la política entrenada. Por último, empaquetamos el modelo ya afinado detrás de una pequeña arquitectura servidor/cliente, de forma que un servidor de inferencia con mucha GPU pudiera ejecutarse por separado del nodo ligero de ROS 2 que enviamos como envío final. Por desgracia, la competición estuvo muy reñida y tuvimos algunos problemas con nuestra política de GR00T que no pudimos resolver a tiempo, así que no conseguimos suficientes puntos para clasificarnos a la siguiente fase.
En retrospectiva, nos habría beneficiado construir primero una baseline más sencilla (por ejemplo, reconstrucción multi-vista junto con una política simple para seguir una pose predicha) antes de apostar de lleno por los VLA. Los modelos de fundación están diseñados para generalizar muy bien, pero nuestra tarea era acotada y localizada, así que puede que no fueran la mejor elección: son más difíciles de entrenar, necesitan más recolección de datos, y son menos estables y menos robustos que los enfoques más clásicos.
Proyecto PUMA
Junto con miembros de RoboTUM y Maxwell Robotics, desarrollamos un stack de software para el robot cuadrúpedo M20 Lynx de Deep Robotics. Este modelo viene originalmente con un stack propietario difícil de extender, así que reescribimos el software desde cero para mejorar sus capacidades. Primero construimos una capa de interfaz de bajo nivel en ROS2 que interactúa con la telemetría del robot, envía comandos de movimiento y lee los flujos de datos provenientes de las dos cámaras y sensores LiDAR. Sobre esta base, desarrollamos un stack de autonomía para el mapeado y la navegación por waypoints. Este fue mi primer proyecto como miembro de RoboTUM y una gran forma de empezar en el mundo de la robótica!

Curso de introducción a Python y su uso en el análisis de datos
Durante nuestro último cuatrimestre en la Universidade de Santiago de Compostela, Xiana Carrera y yo decidimos colaborar junto a la facultad de Matemáticas organizando un curso de competencias auxiliares. Nos centramos en uno de los temas que no se cubren en el currículum del Grado en Matemáticas, pero que es fundamental para muchos de sus estudiantes: La programación en Python y el Análisis de Datos.
Los contenidos del curso se diseñaron con mucho detalle para poder enseñar lo máximo posible en 8 sesiones, con un total de 16 horas lectivas, de forma entretenida para todos. Programamos diapositivas interactivas en reveal.js para que el alumnado pudiera seguir la clase en directo. Los temas incluyeron una introducción a las estructuras básicas de programación en Python (control de flujo, functions, tipos de datos, I/O, lambdas, OOP, ) y el uso de paquetes fundamentales para análisis de datos (NumPy, Pandas, matplotlib, seaborn y scikit-learn). Cerramos el curso con un proyecto de análisis de datos sobre la correlación entre el gusto musical y los rasgos psicológicos de una persona.
En conjunto, el curso despertó mucho interés: tuvimos que seleccionar 30 estudiantes entre más de 100 solicitudes, y en una encuesta de satisfacción posterior nuestros alumnos destacaron la calidad de la docencia impartida y de los materiales que preparamos.
Lo que la geometría no te cuenta: la cuadratura del círculo
Los Premios Emmy Noether fueron un concurso de divulgación matemática en YouTube organizado en 2023 por el popular youtuber Mike Mates. Decidí participar junto con Xiana Carrera y crear un vídeo sobre el problema clásico de la cuadratura del círculo.
Después de cursar en el cuatrimestre anterior una asignatura de Teoría de Galois, en la que aprendimos sobre temas como la irresolubilidad algebraica de las ecuaciones de quinto grado y los números construibles, nos motivó preparar una propuesta sobre un problema relacionado. El enfoque consistía en partir de construcciones clásicas con regla y compás, como las que se encuentran en los Elementos de Euclídes, y llegar hasta la teoría de números moderna, en particular a la demostración de que es un número trascendente, lo que prueba la imposibilidad de resolver el problema de la cuadratura del círculo.
En lo visual, apostamos por un enfoque híbrido, combinando timelapses dibujando con regla y compás reales con animaciones hechas con la librería manim de 3blue1brown.
Para nuestra sorpresa, el vídeo fue un éxito! Ya acumula más de 137.000 visualizaciones y fue premiado como uno de los ganadores del concurso. Sin embargo, para nosotros la mayor recompensa fue el gran número de comentarios positivos y la sensación de haber inspirado a mucha gente joven interesada en las matemáticas.
HackaTUM
Para HackaTUM 2025, formé un equipo con David Atanasoski, Vinicius Agreste Martines dos Santos y Merve Öztekin para participar en el track de Logitech y construir un plugin de bienestar para el ecosistema Logitech Actions+. El plugin incluía interacciones con webcams, ratones con sensor háptico y el panel de entrada Options+. Incorporamos varias funcionalidades, entre ellas:
- Seguimiento del tiempo dedicado a redes sociales.
- Gestión de tareas de Notion.
- Recordatorios de nivel de energía y estiramientos.
- Temporizador Pomodoro.
- Detección de somnolencia.
Aunque no obtuvimos ningún premio en la track, fuimos uno de los equipos shortlisteados, y disfrutamos muchísimo construyéndolo durante un fin de semana realmente intenso.
HackUDC
Sentikelia fue nuestro proyecto ganador en el track de Kelea en HackUDC 2025. Este proyecto fue desarrollado junto a Pablo Landrove Pérez-Gorgoroso, Nicolás Rosales Gómez y Robert Ostrozhinskiy. Nuestro objetivo era crear un asistente digital comprensivo que ofreciera un espacio seguro para la autorreflexión, construyendo además un perfil psicológico dinámico. Con esta información, la aplicación proporciona recomendaciones personalizadas, actuando como un coach virtual que guía a las personas en sus pensamientos y ayuda a detectar patrones de salud mental a largo plazo. Algunas funcionalidades clave son:
- Diario virtual: un diario intuitivo para registrar pensamientos, emociones y experiencias personales de forma segura.
- Análisis de personalidad: evaluación continua de las entradas para comprender estados emocionales y rasgos de personalidad a lo largo del tiempo.
- Coach Virtual: recomendaciones prácticas y personalizadas basadas en la evolución del perfil psicológico.
- Autoreflexión mediante IA: uso de inteligencia artificial para analizar registros pasados y lanzar preguntas relevantes que fomenten una autorreflexión más profunda.
El proyecto se construyó con un stack moderno: frontend con Vite y TailwindCSS, backend con FastAPI sobre Uvicorn y base de datos con MongoDB y PyMongo. Los modelos de IA que usamos son gpt-4o-mini, como LLM de propósito general, y modelos BERT finetuneados para análisis de personalidad y sentimiento.

UniversityHack
Para esta competición de análisis de datos, mis compañeros Pablo Landrove Pérez-Gorgoroso, Xiana Carrera y yo desarrollamos una pipeline end-to-end para predecir el rendimiento de producción en la fabricación de antígenos en biorreactores. El reto consistía en tomar conjuntos de datos grandes y desestructurados, desde logs generales de lotes hasta lecturas de sensores de alta frecuencia, y transformarlos a un formato unificado para entender qué factores impulsan realmente un cultivo exitoso.
Primero limpiamos los datos a través de varias fases de fabricación (pre-inoculación, inoculación y cultivo final) y seleccionamos las variables más relevantes para explicar la producción. Después entrenamos un modelo de machine learning predictivo para estimar los rendimientos y aplicamos herramientas de interpretabilidad para explicar los resultados. Vimos que factores como los niveles mínimos de glucosa, cambios en la turbidez del fluido e incluso la humedad ambiental de la sala de cultivo estaban entre los predictores más fuertes del éxito del proceso.
Nuestro equipo consiguió el primer puesto en la fase local de la USC y se clasificó para la fase nacional. A nivel personal, este proyecto me ayudó a profundizar mucho en modelos clásicos de Machine Learning y en workflows de análisis de datos complejos.
Tabster
Tabster fue un proyecto de desarrollo web full-stack realizado para la asignatura Software Atelier 3: The web durante nuestro Erasmus en la USI. Nuestro equipo, formado por Pablo Landrove Pérez-Gorgoroso, Elvira Baltasar, Vladyslav Kotov, Guglielmo Daniele Mazzesi, Eduard Bilous y yo, desarrolló una web para renderizar, subir y reproducir tablaturas de guitarra interactivas, intentando recrear y ampliar las ideas de la popular plataforma Songsterr.
La idea del proyecto fue propuesta por Pablo Landrove y yo al profesor Cesare Pautasso. Ambos somos guitarristas y nos apetecía construir algo relacionado con uno de nuestros hobbies. Tras un par de meses de trabajo intenso, conseguimos un diseño coherente y limpio, con buen rendimiento y una interfaz fácil de usar.
Tabster fue uno de los proyectos de clase con los que más he disfrutado, tanto durante el desarrollo como con el resultado final, y me enseñó muchísimo sobre software engineering y web development en un contexto real. El proyecto fue seleccionado como uno de los mejores de la clase, y presentado frente a cientos de personas durante el día de la facultad!