UP2You transforme des photos dispersées en modèle humain 3D sans affinage
Si vous avez déjà essayé de construire un avatar 3D à partir de photos, vous vous souvenez probablement de l'exigence principale de la plupart des pipelines : éclairage parfait, pose statique et prise de vue sous tous les angles en une seule session. Un pas à gauche, un éclairage différent ou un arrière-plan flou — et les réseaux neuronaux comme NeRF ou Gaussian Splatting produisent un amas d'artefacts.
Je suis récemment tombé sur un nouveau dépôt UP2You, préparé par les auteurs pour la conférence ICLR 2026. Le projet résout ce problème désagréable. Il prend un lot ordinaire de photos depuis la galerie d'un smartphone, où une personne a été photographiée à différents jours, sous différents éclairages et sous différents angles, et reconstruit rapidement un maillage 3D prêt à l'emploi. Sans affinage fastidieux pour une personne spécifique.
En quoi réside la principale difficulté de ces reconstructions
Lorsque nous fournissons des images du monde réel (photos non contraintes) aux algorithmes, les mathématiques des méthodes classiques de reconstruction 3D s'effondrent. Dans une prise, le soleil brille depuis la gauche, dans une autre — une lampe à incandescence depuis le haut. Dans la troisième image, l'arrière-plan est flou par le bokeh et la pose a complètement changé.
La plupart des solutions existantes nécessitent un affinage des poids pour une personne spécifique (optimisation par scène). Cela prend de dizaines de minutes à plusieurs heures sur un GPU correct.
Les auteurs d'UP2You se sont concentrés sur la catégorie sans affinage. Le modèle est entraîné à l'avance sur de grands ensembles de données de scans 3D et apprend à généraliser la géométrie du corps et les textures, en filtrant le bruit environnemental et les incohérences d'éclairage. Vous fournissez un dossier avec des photos hétérogènes en entrée, et vous obtenez un maillage en quelques minutes en sortie.
Comment est organisé le stack du projet
En coulisses, l'architecture repose sur une combinaison de modèles de diffusion génératifs et de bibliothèques de géométrie 3D.
- Segmentation humaine. Le projet utilise BiRefNet comme outil par défaut. Il s'agit d'un modèle distinct pour la découpe haute précision de la silhouette humaine d'un arrière-plan complexe.
- Base générative. Le projet s'appuie sur les poids de base de Stable Diffusion 2.1 combinés à des adaptateurs multi-vues, s'inspirant des projets MV-Adapter, PuzzleAvatar et PSHuman. La diffusion permet de compléter les zones invisibles sur les photos et d'aligner l'apparence globale du personnage.
- Moteur de géométrie. Pour travailler avec les maillages et les représentations 3D, les auteurs ont utilisé Kaolin de NVIDIA et PyTorch3D.
Le dépôt inclut directement un script inference_low_gpu.py, vous pouvez donc exécuter la génération même sur des GPU grand public avec une quantité relativement faible de VRAM.
Installation et exécution
Le pipeline est strict concernant les versions des bibliothèques, il est donc préférable d'installer en suivant strictement les instructions via Conda.
D'abord, clonez le projet et créez un environnement virtuel avec Python 3.10 :
git clone https://github.com/zcai0612/UP2You.git
cd UP2You
conda create -n up2you python=3.10 -y
conda activate up2you
Puis installez PyTorch 2.4.1 avec support CUDA 11.8 et le module 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
Pour construire PyTorch3D, les auteurs recommandent de prendre une archive précompilée :
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
Les poids du modèle sont téléchargés depuis Hugging Face via CLI :
hf download Co2y/UP2You --local-dir ./src
mv ./src/human_models ./
mv ./src/pretrained_models ./
rm -rf ./src
Lorsque l'environnement est prêt, il suffit de mettre les photos dans le dossier examples et d'appeler l'inférence :
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
Ou exécutez simplement le script bash bash run.sh.
Ce qu'il faut surveiller
Le projet est encore récent, il compte environ 380 étoiles sur GitHub et une licence personnalisée. La documentation dans le dépôt est concise, sans description détaillée du format des données d'entrée, mais le code d'inférence est facile à lire.
Si vous décidez d'expérimenter, gardez à l'esprit la qualité de la segmentation. Si BiRefNet sépare mal l'arrière-plan (par exemple, la personne se fond avec le mur ou il y a d'autres personnes sur la photo), cela affectera directement le maillage final. Mieux vaut sélectionner des photos où la personne est visible en entier ou au moins de la taille jusqu'à la tête.
À qui cela sera utile
Le projet mérite d'être essayé pour les développeurs de jeux et les artistes 3D qui ont besoin d'un maillage préliminaire rapide d'une vraie personne pour la suite du rigging et de la sculpture. Le dépôt sera également intéressant pour les ingénieurs ML explorant la génération d'avatars 3D et les pipelines de diffusion multi-vues. Le code ne remplace pas encore complètement la photogrammétrie en studio, mais comme moyen d'assembler une image 3D reconnaissable à partir de photos ordinaires en quelques minutes, c'est très efficace.
Projets similaires