>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Python

UP2You convierte fotos dispersas en un modelo 3D humano sin ajuste fino

Si alguna vez has intentado construir un avatar 3D a partir de fotos, probablemente recuerdas el requisito principal de la mayoría de pipelines: iluminación perfecta, pose estática y toma desde todos los ángulos en una sola sesión. Un paso a la izquierda, iluminación diferente o un fondo borroso — y redes neuronales como NeRF o Gaussian Splatting producen un desastre de artefactos.

Hace poco me encontré con un nuevo repositorio UP2You, preparado por los autores para la conferencia ICLR 2026. El proyecto resuelve este problema desagradable. Toma un lote ordinario de fotos de la galería de un smartphone, donde una persona fue fotografiada en diferentes días, con diferentes iluminaciones y desde diferentes ángulos, y rápidamente reconstruye una malla 3D lista. Sin largo ajuste fino para una persona específica.

Avance de UP2You

¿Cuál es la principal dificultad con este tipo de reconstrucciones

Cuando alimentamos marcos del mundo real (fotos sin restricciones) a los algoritmos, las matemáticas de los métodos clásicos de reconstrucción 3D se rompen. En una toma el sol brilla desde la izquierda, en otra — una lámpara incandescente desde arriba. En el tercer cuadro el fondo está borroso por bokeh, y la pose ha cambiado completamente.

La mayoría de las soluciones existentes requieren ajuste fino de pesos para una persona específica (optimización por escena). Esto lleva desde decenas de minutos hasta varias horas en una GPU decente.

Los autores de UP2You se centraron en la categoría sin ajuste. El modelo se entrena previamente en grandes conjuntos de datos de escaneos 3D y aprende a generalizar la geometría del cuerpo y las texturas, filtrando el ruido ambiental y las inconsistencias de iluminación. Proporcionas una carpeta con fotos heterogéneas como entrada, y obtienes una malla en un par de minutos como salida.

Cómo está organizado el stack del proyecto

Bajo el capó, la arquitectura se basa en una combinación de modelos de difusión generativos y bibliotecas de geometría 3D.

  1. Segmentación humana. El proyecto utiliza BiRefNet como herramienta predeterminada. Este es un modelo separado para cortar con alta precisión una silueta humana de un fondo complejo.
  2. Base generativa. El proyecto se basa en los pesos base de Stable Diffusion 2.1 combinados con adaptadores de múltiples vistas, tomando ideas de los proyectos MV-Adapter, PuzzleAvatar y PSHuman. La difusión ayuda a completar las áreas invisibles en las fotos y alinear la apariencia general del personaje.
  3. Motor de geometría. Para trabajar con mallas y representaciones 3D, los autores utilizaron Kaolin de NVIDIA y PyTorch3D.

El repositorio incluye un script inference_low_gpu.py directamente, para que puedas ejecutar la generación incluso en GPUs de consumo con una cantidad relativamente pequeña de VRAM.

Instalación y ejecución

El pipeline es estricto con las versiones de las bibliotecas, por lo que es mejor instalar siguiendo estrictamente las instrucciones a través de Conda.

Primero, clona el proyecto y crea un entorno virtual con Python 3.10:

git clone https://github.com/zcai0612/UP2You.git
cd UP2You

conda create -n up2you python=3.10 -y
conda activate up2you

Luego, instala PyTorch 2.4.1 con soporte para CUDA 11.8 y el módulo Kaolin:

pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu118
pip install kaolin==0.17.0 -f https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-2.4.1_cu118.html
pip install -r requirements.txt

Para construir PyTorch3D, los autores recomiendan tomar un archivo precompilado:

conda install -y libffi==3.3
wget https://anaconda.org/pytorch3d/pytorch3d/0.7.8/download/linux-64/pytorch3d-0.7.8-py310_cu118_pyt241.tar.bz2
conda install pytorch3d-0.7.8-py310_cu118_pyt241.tar.bz2

Los pesos del modelo se descargan desde Hugging Face a través de CLI:

hf download Co2y/UP2You --local-dir ./src
mv ./src/human_models ./
mv ./src/pretrained_models ./
rm -rf ./src

Cuando el entorno esté listo, simplemente pon las fotos en la carpeta examples y llama a la inferencia:

python inference_low_gpu.py \
    --base_model_path Manojb/stable-diffusion-2-1-base \
    --segment_model_name ZhengPeng7/BiRefNet \
    --data_dir examples \
    --output_dir outputs

O simplemente ejecuta el script bash bash run.sh.

En qué prestar atención

El proyecto aún es reciente, tiene alrededor de 380 estrellas en GitHub y una licencia personalizada. La documentación en el repositorio es concisa, sin una descripción detallada del formato de datos de entrada, pero el código de inferencia es fácil de leer.

Si decides experimentar, ten en cuenta la calidad de la segmentación. Si BiRefNet separa mal el fondo (por ejemplo, la persona se mezcla con la pared o hay otras personas en la foto), esto afectará directamente la malla final. Es mejor seleccionar fotos donde la persona sea visible en cuerpo completo o al menos desde la cintura hacia arriba.

A quién le será útil

El proyecto vale la pena para desarrolladores de juegos y artistas 3D que necesitan un boceto rápido de la malla de una persona real para un posterior rigging y escultura. El repositorio también será interesante para ingenieros de ML que exploran la generación de avatares 3D y pipelines de difusión multivista. El código aún no ofrece un reemplazo completo para la fotogrametría de estudio, pero como forma de ensamblar una imagen 3D reconocible a partir de fotos ordinarias en un par de minutos, funciona muy bien.

Proyectos relacionados