>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Python

UP2You przekształca porozrzucane zdjęcia w model 3D człowieka bez dostrajania

Jeśli kiedykolwiek próbowałeś zbudować awatara 3D ze zdjęć, prawdopodobnie pamiętasz główne wymagania większości potoków: idealne oświetlenie, statyczna poza i fotografowanie ze wszystkich stron podczas jednej sesji. Zrób krok w lewo, zmień oświetlenie lub dodaj rozmazane tło — a sieci neuronowe, takie jak NeRF czy Gaussian Splatting, produkują masę artefaktów.

Niedawno natknąłem się na świeże repozytorium UP2You, przygotowane przez autorów na konferencję ICLR 2026. Projekt rozwiązuje ten nieprzyjemny problem. Pobiera zwykłą partię zdjęć z galerii smartfona, gdzie osoba była fotografowana w różne dni, przy różnym oświetleniu i pod różnymi kątami, i szybko rekonstruuje gotową siatkę 3D. Bez żmudnego dostrajania dla konkretnej osoby.

UP2You Teaser

Na czym polega główna trudność takich rekonstrukcji

Kiedy dostarczamy ramki z rzeczywistego świata (nieograniczone zdjęcia) do algorytmów, matematyka klasycznych metod rekonstrukcji 3D się załamuje. W jednym ujęciu słońce świeci z lewej strony, w innym — żarówka żarowa z góry. W trzeciej klatce tło jest rozmazane przez bokeh, a poza zmieniła się całkowicie.

Większość istniejących rozwiązań wymaga dostrajania wag dla konkretnej osoby (optymalizacja per-scena). Trwa to od dziesiątek minut do kilku godzin na przyzwoitej karcie GPU.

Autorzy UP2You skupili się na kategorii bez dostrajania. Model jest wstępnie trenowany na dużych zbiorach danych skanów 3D i uczy się uogólniać geometrię ciała oraz tekstury, filtrując szum środowiskowy i niespójności oświetlenia. Podajesz folder z niejednorodnymi zdjęciami jako wejście, a otrzymujesz siatkę w ciągu kilku minut jako wyjście.

Jak zorganizowany jest stos projektu

Pod maską architektura opiera się na połączeniu generatywnych modeli dyfuzyjnych i bibliotek geometrii 3D.

  1. Segmentacja człowieka. Projekt używa BiRefNet jako domyślnego narzędzia. To osobny model do precyzyjnego wycinania sylwetki człowieka ze złożonego tła.
  2. Fundament generatywny. Projekt opiera się na wagach bazowych Stable Diffusion 2.1 w połączeniu z adapterami wielowidokowymi, czerpiącymi pomysły z projektów MV-Adapter, PuzzleAvatar i PSHuman. Dyfuzja pomaga uzupełnić obszary niewidoczne na zdjęciach i wyrównać ogólny wygląd postaci.
  3. Silnik geometrii. Do pracy z siatkami i reprezentacjami 3D autorzy użyli Kaolin od NVIDIA i PyTorch3D.

Repozytorium zawiera od razu skrypt inference_low_gpu.py, więc możesz uruchomić generowanie nawet na konsumenckich GPU z stosunkowo niewielką ilością pamięci VRAM.

Instalacja i uruchomienie

Potok jest rygorystyczny jeśli chodzi o wersje bibliotek, dlatego najlepiej zainstalować ściśle według instrukcji przez Conda.

Najpierw sklonuj projekt i utwórz środowisko wirtualne z Pythonem 3.10:

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

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

Następnie zainstaluj PyTorch 2.4.1 z obsługą CUDA 11.8 i moduł 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

Do budowania PyTorch3D autorzy zalecają pobranie wstępnie skompilowanego archiwum:

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

Wagi modelu są pobierane z Hugging Face przez CLI:

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

Gdy środowisko jest gotowe, po prostu umieść zdjęcia w folderze examples i wywołaj wnioskowanie:

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

Albo po prostu uruchom skrypt bash bash run.sh.

Na co zwrócić uwagę

Projekt jest wciąż świeży, ma około 380 gwiazdek na GitHub i niestandardową licencję. Dokumentacja w repozytorium jest zwięzła, bez szczegółowego opisu formatu danych wejściowych, ale kod wnioskowania jest łatwy do czytania.

Jeśli zdecydujesz się eksperymentować, pamiętaj o jakości segmentacji. Jeśli BiRefNet słabo oddziela tło (na przykład osoba zlewa się ze ścianą lub na zdjęciu są inne osoby), wpłynie to bezpośrednio na końcową siatkę. Lepiej wybierać zdjęcia, gdzie osoba jest widoczna w pełnej sylwetce lub przynajmniej od pasa w górę.

Dla kogo to będzie przydatne

Projekt warto sprawdzić twórcom gier i artystom 3D, którzy potrzebują szybkiego szkicu siatki prawdziwej osoby do dalszego rigowania i rzeźbienia. Repozytorium będzie również interesujące dla inżynierów ML eksplorujących generowanie awatarów 3D i potoki dyfuzyjne wielowidokowe. Kod nie oferuje jeszcze pełnego zastępstwa dla studyjnej fotogrametrii, ale jako sposób na złożenie rozpoznawalnego obrazu 3D ze zwykłych zdjęć w ciągu kilku minut — sprawdza się świetnie.

Powiązane projekty