En artículos anteriores mostramos cómo ejecutar un mapa de profundidad y un recorte de fondo directamente en la GPU del usuario con WebGPU. Esta vez fuimos un paso más allá: una demo en la que haces clic sobre las personas que quieres eliminar de una foto y la IA no solo las recorta, sino que rellena el hueco de forma realista — como el "borrador mágico" de las apps de fotos, pero corriendo por completo en tu navegador, sin que la imagen salga nunca de tu dispositivo.
Qué hace la demo
- Subes una foto (o usas la de ejemplo).
- Haces clic sobre cada persona que quieras quitar. Un modelo de segmentación resalta al instante la silueta completa de esa persona.
- Pulsas "Eliminar seleccionadas". Un segundo modelo rellena la zona vacía con un fondo coherente con el resto de la imagen.
- Comparas el antes y el después con un slider, y descargas el resultado.
Por qué dos modelos (y dos motores de IA distintos)
Quitar a alguien de una foto de forma convincente en realidad son dos problemas distintos:
- Saber qué píxeles son esa persona (segmentación). Para esto usamos SlimSAM, una versión ligera de Segment Anything (el modelo de segmentación por clic de Meta) portada para ejecutarse en el navegador. Con un solo clic obtenemos una máscara precisa del objeto que hay bajo el cursor.
- Rellenar el hueco que deja (inpainting). Para esto usamos MI-GAN, un modelo mucho más ligero y rápido que las alternativas basadas en difusión, pensado específicamente para móvil y navegador.
Ningún modelo hace bien las dos cosas a la vez, así que en lugar de forzar uno solo, usamos el más adecuado para cada tarea — y eso significa combinar dos motores de inferencia distintos en la misma demo: Transformers.js para SlimSAM y ONNX Runtime Web (con su backend WebGPU) para MI-GAN, cargados ambos desde CDN y ejecutados enteramente en tu tarjeta gráfica.
Cómo funciona por dentro
La segmentación por clic tiene un truco de rendimiento que la hace viable en el navegador: en lugar de reprocesar la foto entera en cada clic, la IA calcula los embeddings de la imagen una sola vez al cargarla. Cada clic posterior solo ejecuta la parte "ligera" del modelo (el decodificador), así que el resultado aparece casi al instante aunque hagas clic varias veces.
Quitar personas de una foto
Toda esta inferencia —cargar los modelos, calcular los embeddings, decodificar cada clic y ejecutar el inpainting— corre en tu tarjeta gráfica vía WebGPU. Como el trabajo pesado lo hace la GPU y no la CPU, la interfaz sigue respondiendo con fluidez aunque hagas clic varias veces seguidas, y como los embeddings se calculan una sola vez, cada clic posterior es casi instantáneo. Nada de esto viaja a un servidor: los dos modelos se descargan una vez desde un CDN, quedan en la caché del navegador y a partir de ahí todo ocurre en local.
Una limitación honesta
SlimSAM no "sabe" qué es una persona: segmenta lo que haya bajo el punto donde haces clic, sea persona, objeto o animal. Funciona muy bien cuando clicas sobre alguien, pero no es un detector de personas dedicado — si el resultado no es exactamente lo que esperabas, prueba a hacer clic en un punto distinto de la silueta.
Cómo encaja en lo que hacemos en Fastex
Esta demo es otro ejemplo de nuestra filosofía con la IA en el navegador: en lugar de mandar la foto a un servidor (con el coste, la latencia y el riesgo de privacidad que eso implica), aprovechamos la GPU que el usuario ya tiene delante para resolver el problema en el sitio. Elegimos, para cada parte del problema, el modelo más pequeño y rápido que resuelve bien esa parte — exactamente el mismo criterio de ingeniería que aplicamos en proyectos de cliente.
En Fastex diseñamos arquitecturas de IA que equilibran rendimiento, coste y privacidad. Si quieres explorar IA en el cliente para tu producto, hablemos a través del formulario de contacto.