Referencia bilateral para la segmentación de imágenes de alta resolución
Un espacio de trabajo de modelos orientado a la investigación para obtener máscaras nítidas, bordes difíciles y experimentos visuales reproducibles.
Este es el espacio de trabajo oficial de birefnet para Segmentación bilateral de imágenes dicotómicas de alta resolución, adaptado aquí como un punto de partida práctico para la extracción de primeros planos en alta resolución, el recorte y otras tareas relacionadas con imágenes binarias.
Nota
El trabajo con imágenes de alta resolución se beneficia de un hardware potente. La familia de modelos está diseñada para preservar la estructura a medida que aumentan las dimensiones de las imágenes, mientras que el conjunto de herramientas mantiene los experimentos fáciles de reproducir.
Novedades 📰
Sep 23, 2025: La ruta de atención se actualizó con una implementación oficial de SDPA de PyTorch para reducir la presión sobre la memoria durante el entrenamiento y la inferencia.Jun 30, 2025: El refinamiento del primer plano se aceleró con una ruta de estimación rápida asistida por GPU y un preprocesamiento de matrices más limpio.May 15, 2025: Se publicó un tutorial grabado para ajustar birefnet con datos personalizados, dirigido a quienes prefieren una guía paso a paso.Mar 31, 2025: La ruta de modelos dinámicos se amplió para distintas resoluciones, desde256x256hasta2304x2304para un uso general más robusto.Feb 12, 2025: Se añadió una variante de matting de mayor resolución para flujos de trabajo que necesitan bordes más suaves y transiciones más naturales.Feb 1, 2025: El modelo de uso general de alta resolución se publicó con un entrenamiento centrado en2048x2048imágenes.Jan 6, 2025: La inferencia con FP16 se validó con una calidad prácticamente sin cambios y un menor uso de memoria en GPU compatibles.Dec 5, 2024: Se incorporaron correcciones de compatibilidad para la compilación actual de PyTorch y el entrenamiento acelerado de precisión mixta.Nov 28, 2024: Un proyecto estudiantil creado con birefnet recibió reconocimiento en una competencia nacional de innovación.Oct 26, 2024: La documentación incorporó una guía específica para ajustar pesos existentes con conjuntos de datos personalizados.Oct 6, 2024: Se añadieron pesos de matting sin trimap para flujos de trabajo generales de primer plano.Sep 24, 2024: Se publicaron un modelo ligero de 2K y un cuaderno de inferencia de vídeo para entradas de mayor resolución.Aug 30, 2024: Se añadieron cuadernos de inferencia local y conversión a ONNX a la carpeta de tutoriales.Aug 23, 2024: El trabajo de investigación se publicó formalmente en línea, junto con el lanzamiento de un proyecto público.Aug 19, 2024: Se recopilaron archivos de modelos ONNX para los pesos disponibles, con notas de conversión.Jul 28, 2024: Se añadieron ejemplos de segmentación guiada por cuadros para una selección de objetos más controlada.Jul 15, 2024: Se documentó la carga del modelo en una sola línea para realizar un primer experimento más rápido.May 28, 2024: El catálogo de modelos se amplió con pesos para uso general, matting, DIS, HRSOD y COD.May 7, 2024: Se publicó un cuaderno de inferencia de múltiples imágenes para realizar experimentos por lotes.Mar 7, 2024: El código de entrenamiento, las utilidades de evaluación y los pesos específicos de cada tarea se organizaron en el proyecto público.Jan 7, 2024: Se publicaron el artículo original y la implementación inicial.
🚀 Carga birefnet en UNA LÍNEA
from transformers import AutoModelForImageSegmentation birefnet = AutoModelForImageSegmentation.from_pretrained( "birefnet/model", trust_remote_code=True )
🛬 Socio de inferencia:
Puedes acceder al flujo de trabajo de inferencia de birefnet a través del espacio de trabajo del modelo o usa la vía de implementación para configurar tu propio entorno.
- Abre el flujo de trabajo de inferencia de birefnet
- Prepara un espacio de trabajo para la implementación
Nuestros modelos de birefnet están diseñados para tareas exigentes de alta resolución
Prueba nuestras demostraciones en línea para realizar inferencias:
- Inferencia y evaluación de los pesos que hayas elegido: abre el flujo de trabajo de evaluación
- Inferencia en línea con una interfaz gráfica y resoluciones ajustables: abre el espacio de trabajo visual
- Inferencia con múltiples imágenes para un lote pequeño: abre el flujo de trabajo por lotes
Premios:
Se han desarrollado destacados proyectos estudiantiles y comunitarios en torno a birefnet.
Colección de modelos
Para ampliar su uso práctico, la implementación de la investigación original se ha extendido con variantes del modelo para distintos tamaños de imagen, tareas y requisitos de implementación.
Los conjuntos de datos preparados y los pesos de los modelos base se organizan por tarea para que los experimentos puedan partir de una referencia conocida.
Los registros de rendimiento y los mapas predichos se conservan junto con la configuración de cada experimento.
Modelos del artículo original para la comparación con los puntos de referencia
| Tarea | Conjuntos de entrenamiento | Arquitectura base | Descargar |
|---|---|---|---|
| DIS | DIS5K-TR | swin_v1_large | archivo del modelo |
| COD | COD10K-TR, CAMO-TR | swin_v1_large | archivo del modelo |
| HRSOD | DUTS-TR | swin_v1_large | archivo del modelo |
| HRSOD | DUTS-TR, HRSOD-TR | swin_v1_large | archivo del modelo |
| HRSOD | DUTS-TR, UHRSD-TR | swin_v1_large | archivo del modelo |
| HRSOD | DUTS-TR, HRSOD-TR, UHRSD-TR | swin_v1_large | archivo del modelo |
Modelos entrenados para uso general y matting
| Tarea | Conjuntos de entrenamiento | Backbone | Conjunto de prueba | Métrica | Descargar |
|---|---|---|---|---|---|
| uso general, 2048x2048 | AIM-500, DIS, HIM2K, PPM-100 y conjuntos de personas de alta resolución | swin_v1_large | DIS-VD | 0.927, 0.894 | archivo del modelo |
| uso general | DIS5K, DIS-TEs, DUTS, HRSOD y UHRSD | swin_v1_large | DIS-VD | 0.911, 0.875 | archivo del modelo |
| uso general | DIS5K y DIS-TEs | swin_v1_tiny | DIS-VD | 0.882, 0.830 | archivo del modelo |
| matting general | P3M, personas, AIM-500, HIM2K y fondos sintetizados | swin_v1_large | TE-P3M | 0.979, 0.988 | archivo del modelo |
| recorte de retratos | conjuntos de imágenes P3M y humanas | swin_v1_large | P3M-500-P | 0.983, 0.989 | archivo del modelo |
Segmentación con guía de recuadro
Eficiencia del modelo
| Tiempo de ejecución | FP32 | FP16 |
|---|---|---|
| A100 | 86.8ms | 69.4ms |
| 4090 | 95.8ms | 57.7ms |
| V100 | 384ms | 152ms |
Conversión a ONNX
Creaciones de terceros
Varias aplicaciones de la comunidad usan birefnet como backend o nodo. Los ejemplos siguientes mantienen el mismo espíritu práctico y centrado en los clics que el proyecto original.
-
Aplicaciones
Borrador de fondos: un flujo de trabajo compacto en el navegador para eliminar fondos de fotos con una variante ligera de birefnet.
Abrir flujo de trabajo
Eliminación en el navegador: una interfaz que prioriza el procesamiento local mantiene la imagen en el dispositivo mientras se calcula la máscara en el navegador.
Abrir flujo de trabajo
Flujo de trabajo de inferencia flexible: un proceso visual conecta la imagen de entrada, la configuración del modelo, el refinamiento y la vista previa del resultado.
Abrir flujo de trabajo
Integración con ComfyUI: un panel basado en nodos permite segmentar y convertir máscaras dentro de un flujo de trabajo visual.
Abrir flujo de trabajo
Servicio de recorte de vídeo: birefnet puede servir como motor de extracción del primer plano en flujos de trabajo de eliminación de fondos de vídeos cortos.
Abrir flujo de trabajo
Nodo de estilo Invoke: un componente básico de imagen alimenta un nodo de eliminación de fondos con refinamiento opcional del primer plano.
Abrir flujo de trabajo
Generación de recursos 2D: la extracción del primer plano se combina con herramientas creativas para producir recursos recortados y limpios para diseño y previsualización.
Abrir flujo de trabajo
Efectos de texto detrás del sujeto: extraer el primer plano permite colocar texto entre el sujeto y la escena original.
Abrir flujo de trabajo
Utilidad de Stable Diffusion: un panel de modelos añade extracción del primer plano a un flujo de generación de imágenes con vistas de la máscara y de la salida transparente.
Abrir flujo de trabajo
Entorno de pruebas de modelos en línea: una interfaz centrada en la entrada y el resultado ofrece controles útiles sin requerir una configuración local.
Abrir flujo de trabajo
-
Extensiones del modelo
Modelos de primer plano para anime: los datos ajustados pueden adaptar birefnet a personajes ilustrados y obras de arte estilizadas donde importan el cabello, las cintas y los bordes del vestuario.
Explorar extensión
Inferencia ligera: los tiempos de ejecución alternativos y los formatos compactos facilitan llevar la segmentación a hardware de consumo.
image_data image = image_load("input.png"); backend_device device = backend_init(); birefnet_model model = birefnet_load_model("BiRefNet-F16", device); image_data mask = birefnet_compute(model, image);
Datos privados de mayor calidad: el entrenamiento específico para cada tarea puede mejorar las máscaras binarias del primer plano, especialmente en escenas variadas y con límites de objetos difíciles.
Explorar extensión
-
Más comparaciones visuales
Las comparaciones en paralelo muestran cómo se comporta birefnet en escenas de productos, retratos y bordes detallados del primer plano.
Las comparaciones de vídeo se centran en la continuidad, la estabilidad de la silueta y la conservación de pequeños detalles en movimiento.
Uso
Configuración del entorno
# PyTorch >= 2.5.0 is used for faster training with compilation.
conda create -n birefnet python=3.11 -y && conda activate birefnet
pip install -r requirements.txt
Preparación del conjunto de datos
Descarga los conjuntos combinados de entrenamiento y prueba organizados para DIS, COD y HRSOD, o utiliza los conjuntos de datos oficiales de origen en la single_ones carpeta. Mantén alineadas las carpetas de imágenes y de datos de referencia dentro de cada tarea.
Preparación de los pesos
Descarga los pesos del backbone desde el espacio de trabajo del modelo o sus páginas oficiales del proyecto antes de iniciar el entrenamiento o la inferencia local.
Ejecutar
# Train & Test & Evaluation ./train_test.sh RUN_NAME GPU_NUMBERS_FOR_TRAINING GPU_NUMBERS_FOR_TEST # Example: ./train_test.sh tmp-proj 0,1,2,3 0 # See train.sh / test.sh for only training or evaluation. # After evaluation, use gen_best_ep.py to select the best checkpoint.
🖊️ Ajuste fino con datos personalizados
Un tutorial grabado explica el proceso de ajuste fino de birefnet, desde la estructura del conjunto de datos hasta la selección del checkpoint.
- Prerrequisitos: coloca los conjuntos de datos en
${data_root_dir}/TASK_NAME/DATASET_NAME, con las carpetasimygtdentro de cada conjunto de datos. - Cambia una tarea existente: reemplaza el nombre de la tarea existente en todo el proyecto por el nombre de tu tarea personalizada.
- Adapta la configuración: actualiza
sys_home_dir,testsets,training_sety los pesos de pérdida para tu tarea. - Usa los pesos existentes: reanuda desde un checkpoint y continúa el rango de épocas a partir del número codificado en el nombre del archivo.
- Valida el resultado: compara las máscaras del conjunto de validación antes de promover un checkpoint a un flujo de trabajo de producción.
Pesos bien entrenados:
Descarga los archivos BiRefNet-{TASK}-{EPOCH}.pth desde el espacio de trabajo del modelo y la colección de versiones. Los mapas predichos, los resúmenes de rendimiento y los registros de entrenamiento se encuentran junto a la configuración del experimento correspondiente.
Los resultados pueden variar ligeramente según el hardware y la configuración de entrenamiento. Una sola GPU con capacidad suficiente puede bastar para la inferencia a 1024x1024, mientras que el entrenamiento a mayor resolución se beneficia de memoria adicional.
Cuando haya más GPU disponibles, aumenta el tamaño del lote y configura los ID de dispositivo en config.py para pasar sin problemas del entrenamiento con una sola tarjeta al entrenamiento con varias tarjetas.
Algunos de mis mensajes:
Este proyecto comenzó como una implementación de DIS y evolucionó hasta convertirse en un conjunto más amplio de herramientas para la segmentación binaria de imágenes. Puede utilizarse para DIS, COD, SOD, imágenes médicas y segmentación de anomalías cuando la configuración de la tarea se adapta cuidadosamente.
- El entrenamiento con múltiples GPU se puede activar o desactivar con un solo ajuste.
- Las opciones de arquitectura base incluyen variantes de Swin, variantes de PVT y redes convolucionales.
- Las funciones de pérdida ponderadas incluyen BCE, IoU, SSIM, MAE y términos orientados a la regresión.
- Las técnicas de entrenamiento incluyen supervisión multiescala, congelación de la arquitectura base y entradas multiescala.
- El agregador de datos puede combinar conjuntos de datos en memoria para coordinar el entrenamiento y las pruebas.
- El objetivo es ofrecer una base reutilizable para nuevos trabajos de segmentación visual.
Resultados cuantitativos
Los resúmenes de las evaluaciones comparan birefnet con métodos consolidados en conjuntos de datos de alta y baja resolución.
| Conjunto de prueba | Puntuación de estructura | Puntuación F ponderada | MAE | HCE |
|---|---|---|---|---|
| DIS-TE1 | 0.860 | 0.819 | 0.037 | 106 |
| DIS-TE2 | 0.894 | 0.857 | 0.036 | 266 |
| DIS-TE3 | 0.925 | 0.893 | 0.028 | 569 |
| DIS-VD | 0.891 | 0.854 | 0.038 | 989 |
Resultados cualitativos
Las comparaciones visuales se centran en estructuras estrechas, oclusiones parciales, patrones repetidos y camuflaje.
Agradecimientos:
Muchas gracias a las empresas, instituciones y colaboradores de la comunidad que ayudan a hacer más accesible la investigación visual de alta resolución.
Cita
@article{birefnet2024,
title={Bilateral Reference for High-Resolution Dichotomous Image Segmentation},
author={Birefnet Research Team},
journal={CAAI Artificial Intelligence Research},
volume={3},
pages={9150038},
year={2024}
}
Contacto
Las preguntas, los debates y las notas de implementación se pueden compartir a través del espacio de trabajo del proyecto. Para comenzar con una guía, usa el flujo de trabajo de birefnet y aporta tu propia imagen o indicación.
Licencia MIT
La documentación del proyecto y la implementación principal se presentan bajo la licencia MIT. Revisa el archivo de licencia adjunto antes de usar cualquier peso de modelo o extensión de terceros.