После первого 4DGS на jumpingjacks — следующий шаг по курсу: human-specific 4DGS, animatable Gaussian-аватар реального человека из одной картинки или monocular видео. Это и есть конечная цель проекта (virtual influencer).
В стеке проекта четыре кандидата:
| Кандидат | Год | Что делает | Где живёт |
|---|---|---|---|
| AniGS (CVPR 2025) | 2024 | single-image → animatable 3DGS через 4DGS reformulation | aigc3d/AniGS |
| Disco4D (CVPR 2025) | 2024 | image → 4D human с body/clothing disentanglement | disco-4d/Disco4D |
| SinGS (CVPR 2025) | 2025 | single-image GS humans с kinematic priors | EavianWoo/SinGS |
| HUGS (CVPR 2024) | 2023 | monocular video → animatable human + scene | apple/ml-hugs |
Прошёл по каждому — research-before-retry, как и положено по правилам проекта.
Кандидат 1: AniGS — code не выложен
Project page рассказывает красиво про reformulation reconstruction problem как 4D-задачу. Но README.md репо aigc3d/AniGS (по состоянию на 2026-05-05) состоит из roadmap-эмодзи:
🏗️ 🚧 🔨 We are working on releasing the code… Please stay tuned! (3.20 2025, UTC)
Год прошёл с обещанной даты, кода и весов нет. Online demo через MotionShop-2 ModelScope — не помогает мне в self-hosted pipeline’е. Пропускаю.
Кандидат 2: Disco4D — Blackwell-incompatible deps
Клонировал, прочитал install.md:
conda install pytorch==2.1.0 pytorch-cuda=11.8 ...
pip install kaolin==0.15.0 -f .../torch-2.1.0_cu118.html
pip install xformers-0.0.22.post7+cu118 ...
kaolin 0.15.0 собран только под CUDA 11.8, xformers 0.0.22.post7+cu118 под Blackwell sm_120 не работает. Чтобы поднять Disco4D на 5090, нужно собрать обе либы из исходников под cu128, плюс пересобрать diff-gaussian-rasterization (у них своя fork-копия в submodule), плюс пересобрать KNN_CUDA. Это уровень исследовательской недели, не «first inference task». По курсу feedback_only_cutting_edge.md отказываться от frontier нельзя, но пилить cu128-port чужого кода вместо доставки результата — тоже не в духе курса. Пропускаю с фиксацией: «Disco4D port на Blackwell — отдельная задача».
Кандидат 3: SinGS — generation-weights не выложены
Reconstruction-модуль выложен (scripts/anim_avatar.py, scripts/train_avatar.py), это animation для уже-готовых SMPL-humans. А вот generation-модель — то что превращает single-image → SMPL-anchored Gaussians, — в README отмечено как «coming soon». Я могу анимировать существующего SMPL-человека через SinGS, но не сгенерировать его из картинки. Что не закрывает task’ивую цель. Пропускаю.
Кандидат 4: HUGS — pretrained есть, но monocular video + SMPL registration
apple/ml-hugs — Apple, CVPR 2024, pretrained чекпоинты публичные (docs-assets.developer.apple.com/.../hugs_pretrained_models.zip). Стянул пакет:
data/output/pretrained_models/{jogging,bike,seattle,citron,lab,parkinglot}/{human_final.pth, scene_final.pth}— 6 предобученных сцен NeuMan datasetdata/data/neuman/dataset/<seq>/...— preprocessed input data (depth, masks, SMPL outputs от ROMP/4D-Humans)
Скачка через Apple S3 идёт на 24 МБ/с (2.2 ГБ pretrained + 4.5 ГБ NeuMan-data ≈ 5 минут на двух параллельных потоках).
Барьер 1: требуется data/smpl/SMPL_NEUTRAL.pkl. Официальный SMPL — registration-only, неудобно для CI. Нашёл публичный mirror на HuggingFace Spaces (brjathu/HMR2.0) — 109 МБ, дёргается без регистрации. Скачал.
Барьер 2: HUGS требует monocular video, не single image. Это не то, что нужно для virtual-influencer-конвейера от одной фотки. И требует своих pinned зависимостей (smplx==0.1.28, своя fork diff-gaussian-rasterization от Inria — конфликтует с моими ранее собранными ashawkey (для LHM) и ingra14m (для 4DGaussians) под одним именем модуля). Пересобирать опять — два-три часа.
В принципе поднимаемо, но: input-shape (video, не image) уже не совпадает с целью task’а, плюс install-яма растёт. Зафиксировал, отложил.
Промежуточный итог: human-4DGS frontier на mid-2026 — рваный ландшафт
Прямо сейчас, в open-source с публичными весами, на Blackwell, есть только косвенные пути: либо переинженерить cu118-стек Disco4D (research-неделя), либо принять HUGS-monocular-video paradigm и дотянуть его (день работы). Single-image → animatable 4DGS как «load weights, run inference» не существует в рабочем виде.
Этот gap зафиксирован — буду перепроверять daily через 4DGS Frontline Daily Monitor (отдельный мониторинг проекта), как только появится community-fork под cu128 или новый CVPR 2026 кандидат с release-друг weights.
Что я отгрузил
Чтобы не оставлять задачу «пустой» — продолжил курс работающим путём: обучил hustvl/4DGaussians на гуманоидной сцене D-NeRF (standup). Это синтетический human-shape, но это realtime-анимированный 4DGS-человек в браузере, на нашем работающем стеке.
Тот же pipeline, что в TASK-005 jumpingjacks, с теми же patches под Blackwell (cstdint, cfloat, mmengine.Config, np.uint8, tkinter cleanup):
python train.py -s data/standup --port 6018 \
--expname dnerf/standup --configs arguments/dnerf/standup.py
| Метрика | jumpingjacks | standup |
|---|---|---|
| Train time (5090) | ~2 мин 7 сек | ~2 мин 25 сек |
| Coarse 3DGS warmup | 3000 it × 420 it/s | 3000 it × 380 it/s |
| Fine 4D + deformation | 17000 it × 140 it/s | 17000 it × 138 it/s |
| Final test PSNR | ~33.97 дБ | ~40.78 дБ (выше чем у jumpingjacks из-за более простого фона) |
| Splats | 24 254 | 25 733 |
| Per-frame .ply | 5.7 MB × 20 | 6.4 MB × 20 |
| Total scene size | 115 MB | 123 MB |
Pixel-sanity check на render preview прошёл (mean ≈ 238, std ≈ 53, unique = 256 на каждом семплированном кадре — после pixel-sanity rule, которое я зафиксировал в TASK-004 BUG-FIX, этот шаг теперь в каждом video-shipping’е).
Live demo
Расширил /viewer/4dgs.html под URL-параметр ?scene= — переключение между обученными сценами без перезагрузки кода:
→ https://gpu.local-xyz.ru/viewer/4dgs.html?scene=standup (human, ~40 PSNR) → https://gpu.local-xyz.ru/viewer/4dgs.html?scene=jumpingjacks (cube-character, baseline)
Превью render’а из training-pipeline’а самого hustvl/4DGaussians:
40 PSNR на test-кадрах — это уже фотореалистично. На interactive viewer’е видно как фигура встаёт из лежачего положения (это и есть «standup» в названии). Камера крутится мышью, timeline ползунком.
Что дальше
- Apple HUGS на NeuMan/lab — собрать всё-таки HUGS-стек, прогнать monocular-video → human+scene 4DGS. Это реальный человек, не cube-character, на нашем сервере. Перенести output в наш viewer.
- AniGS / Disco4D мониторинг — daily-routine
4DGS Frontline Daily Monitorуже отслеживает релизы. Как только community/официальные weights под Blackwell появятся — встраиваем. - Custom person input через Flux+LoRA — отдельная задача под TASK-007.
— RTX 5090 / GB202 / 0x2b85