Es posible eliminar fondo de retrato en el navegador sin enviar la fotografía a un servicio remoto. El navegador decodifica el archivo elegido, un modelo de segmentación calcula qué píxeles pertenecen a la persona y Canvas aplica esa máscara sobre la imagen original. El resultado se convierte en un PNG transparente dentro de la misma pestaña.

Este enfoque resulta apropiado para avatares, fotografías de perfil, diapositivas y miniaturas donde la persona ocupa un lugar claro en la composición. No requiere un servidor de inferencia ni una clave de API. Tampoco convierte el modelo en una solución universal para productos, animales o escenas complejas. La promesa debe coincidir con el tipo de imagen que el modelo aprendió a segmentar.

La privacidad empieza por el recorrido de los datos

Un mensaje como "procesamiento local" solo es útil si se puede explicar el recorrido real de la foto. En esta herramienta ocurre lo siguiente:

  1. La persona elige de forma explícita un archivo JPEG, PNG o WebP.
  2. El navegador lo decodifica y lo dibuja en un lienzo de memoria.
  3. El entorno WebAssembly ejecuta el modelo de segmentación.
  4. El resultado se transforma en una máscara de transparencia.
  5. Canvas compone la persona con un fondo transparente o de color.
  6. El navegador crea el archivo PNG descargable.

No hay una petición de inferencia que contenga la foto. No hace falta copiar el archivo a una base de datos, a un bucket ni a un registro del servidor. Wisly sirve el código, el entorno WebAssembly y el modelo desde su propio dominio. La imagen seleccionada se utiliza como entrada local de las API del navegador.

Esto no significa que la primera visita funcione sin conexión. La página y sus recursos deben descargarse antes de procesar una imagen. El navegador puede conservarlos en caché para usos posteriores, pero una aplicación realmente offline necesita una política explícita con Service Worker, versiones y actualización de recursos. "La foto se procesa localmente" es una afirmación precisa. "Siempre funciona sin Internet" sería una promesa distinta.

Del retrato a una máscara de confianza

La herramienta utiliza MediaPipe Image Segmenter con el modelo Selfie Segmentation. Según la documentación de Google, la variante cuadrada trabaja con una entrada de 256 por 256, utiliza float16 y produce dos categorías: fondo en el índice 0 y persona en el índice 1. La ficha del modelo indica un tamaño aproximado de 249 KB para el modelo. El entorno completo que ejecuta el modelo en el navegador ocupa más que ese archivo aislado.

La salida no es una fotografía ya recortada. Es una máscara de confianza. Cada posición contiene un valor que expresa hasta qué punto el modelo cree que ese píxel corresponde a una persona. Un valor cercano a 1 indica primer plano con alta confianza. Un valor cercano a 0 indica fondo. El cabello, los hombros, el desenfoque y los tejidos semitransparentes suelen producir valores intermedios.

Para generar transparencia hay que convertir ese intervalo continuo en un canal alfa. Un corte rígido puede representarse así:

confianza mayor que el umbral: conservar
confianza menor que el umbral: borrar

Es sencillo, pero el borde puede quedar dentado o eliminar mechones finos. Una transición suave alrededor del umbral conserva mejor los contornos graduales. Si la transición es demasiado amplia, puede aparecer un halo con el color del fondo original. Por eso la herramienta permite ajustar la suavidad del borde después de la inferencia.

El ajuste no vuelve a ejecutar el modelo. Conserva los valores de la máscara y vuelve a calcular el canal alfa. Esto hace que la vista previa responda de inmediato y evita gastar recursos en una predicción idéntica.

Cómo Canvas produce el PNG

El navegador mantiene varios lienzos con funciones separadas. Uno contiene la imagen de origen, otro la máscara a la resolución del modelo, otro conserva únicamente la persona y el último representa la salida. La máscara pequeña se escala de forma suave hasta el tamaño de la imagen procesada y se utiliza para limitar los píxeles visibles del retrato.

Para un resultado transparente, el lienzo de salida comienza vacío. Para un fondo blanco o personalizado, primero se rellena el color y después se dibuja la persona segmentada. El orden es importante porque el fondo no debe alterar la transparencia usada para definir los bordes.

El archivo final es PNG porque este formato conserva el canal alfa. JPEG necesita rellenar las zonas transparentes y por eso no sirve como salida transparente. WebP también admite alfa, pero PNG sigue siendo una opción clara para presentaciones, editores de imagen, documentos y fotografías de perfil.

Las dimensiones de la imagen afectan al uso de memoria. Un JPEG comprimido puede parecer pequeño y, al decodificarse, ocupar muchos más megabytes. Cada píxel necesita cuatro canales y la herramienta usa varios lienzos durante la composición. Para evitar que una foto enorme bloquee un teléfono, Wisly limita el archivo a 15 MB y reduce a 4096 píxeles el lado más largo cuando es necesario. La interfaz informa de esa reducción.

Cuándo esperar un buen resultado

Selfie Segmenter está pensado para personas destacadas en la escena. Una fotografía con luz suficiente, un sujeto cercano y separación visual respecto al fondo ofrece una entrada más adecuada. Los resultados empeoran cuando el cabello comparte color con el fondo, hay movimiento, la persona aparece muy lejos o gran parte del cuerpo está oculta.

La ficha oficial del modelo señala límites concretos:

  • Puede perder elementos finos como los dedos.
  • El ruido, la iluminación deficiente y el movimiento rápido reducen la calidad.
  • Las personas alejadas de la cámara quedan fuera del uso previsto.
  • Varias personas con escalas muy distintas forman un caso difícil.
  • El modelo prioriza la respuesta en dispositivos variados y no garantiza máscaras perfectas a nivel de píxel.

La suavidad del borde puede mejorar una zona dudosa, pero no recupera una mano que el modelo clasificó por completo como fondo. Un flujo profesional con cabello muy detallado, velos, transparencias o selección de objetos variados necesita un modelo de matting más especializado o una fase de corrección manual.

El primer uso incluye más que la inferencia

El tiempo visible no corresponde únicamente a la red neuronal. En la primera ejecución hay que descargar y compilar WebAssembly, cargar el modelo, decodificar la foto, preparar los píxeles, ejecutar la segmentación, escalar la máscara, componer los lienzos y codificar el PNG. Las siguientes imágenes de la misma sesión reutilizan el segmentador ya inicializado.

Google publica mediciones de referencia, pero no constituyen un tiempo garantizado para todos los dispositivos. El navegador, la memoria disponible, el ahorro de energía y el tamaño de la fotografía cambian el comportamiento. Una interfaz responsable muestra estados diferentes para la carga del modelo y el procesamiento de la imagen en lugar de prometer una cifra universal.

La guía web de MediaPipe también advierte que segment() se ejecuta de forma síncrona y bloquea temporalmente el hilo de interfaz. Para una fotografía ocasional puede ser aceptable si el estado se muestra antes de iniciar el cálculo. Para vídeo o lotes de imágenes conviene trasladar la segmentación a un Web Worker.

La licencia también condiciona la arquitectura

Que una biblioteca sea gratuita para probar no significa que cualquier sitio pueda integrarla con cualquier licencia. Antes de publicar una herramienta hay que revisar tanto la licencia del código como la de los pesos del modelo. Wisly utiliza MediaPipe Tasks Vision y Selfie Segmentation bajo Apache License 2.0 e incluye la licencia y la atribución junto a los recursos desplegados.

La misma revisión debe cubrir la seguridad del navegador. Los recursos se fijan a versiones conocidas, la política de seguridad de contenido restringe conexiones y scripts, y los mensajes de error no deben registrar el nombre ni el contenido del archivo. Tampoco hay motivo para introducir credenciales en el código cliente cuando toda la inferencia es local.

Probar el flujo completo

La herramienta para eliminar fondo de retrato gratis permite seleccionar una foto, ejecutar la segmentación local, ajustar el borde y elegir entre transparencia, blanco o un color personalizado. Después descarga el resultado como PNG.

Para una primera prueba conviene usar un retrato nítido, con la persona ocupando una parte importante de la imagen y un fondo diferente del cabello y la ropa. El valor de esta arquitectura no está en prometer que todo funciona con cualquier foto. Está en resolver una tarea concreta con un recorrido de datos comprensible, límites visibles y una salida útil.