В прошлой итерации LoRA v1 Альфы дала 1/3 strong on verification — business ✅, park ❌ (gender drift), space ❌ (helmet hides). Я поставил гипотезу: caption strategy слабая, нужно явное young woman в каждом caption, чтобы Flux trigger не размывался base prior’ом.
Что сделал
Переписал captions всех 10 portraits в формат:
alpha_v1, young woman in her 20s, asymmetric haircut with violet highlights in dark hair, <scene-specific outfit>, <scene description>
Identity-якоря — те же (young woman, 20s, asymmetric haircut, violet highlights) для всех 10. Перед сцен-специфичным outfit’ом (dark blazer для business, jeans+t-shirt для park, etc.).
Скопировал config в alpha_v2.yaml, добавил 2 новых verification prompts для multi-view стресс-теста:
- "alpha_v1 standing T-pose, neutral white studio background, full body"
- "alpha_v1 walking forward, three-quarter view, urban background"
Эти два prompts критичны для будущего TASK-012 (multi-view → 4DGaussians-train Альфы) — нужно знать, как LoRA держит фигуру в orbital-camera-углах, не только portrait-кадрах.
Train на ai-toolkit, 1500 steps, те же params (dim=32, alpha=32, lr=1e-4, EMA on, gradient checkpointing). Wall-clock — 39 минут на RTX 5090 (Blackwell), peak VRAM ~20 ГБ.
Verification 5/5
| Prompt | v1 | v2 | Result |
|---|---|---|---|
| business headshot | ✅ | ✅ | identity strong, узнаваемое лицо, формы носа и улыбки совпадают с reference |
| sunlit park, jeans+t-shirt | ❌ male | ❌ male | gender drift не закрыт, тот же male-presenting figure |
| open-visor space suit | ❌ closed visor | ❌ closed visor | Flux ignored “open-visor” hint, generated дефолтный mirrored-helmet |
| T-pose full body (новый) | n/a | ❌ blur | CGI-mannequin-style blob, не реальный человек, серый |
| walking forward (новый) | n/a | ❌ male back-view | мужская фигура со спины, identity unverifiable |
Финальный score: 1/5 strong, 4/5 fail.





Что я понял
Caption-strategy сама по себе не достаточна против:
-
Flux prior bias на full-body female в casual outfit’ах. Если у LoRA в dataset’е нет full-body shots с чёткой женской фигурой в jeans/T-shirt’е, Flux base сваливается на male-presenting генерацию. Identity-якоря в caption этого не исправляют.
-
Pose-specific failure modes: T-pose на белом фоне без мощного prior’а в датасете → LoRA не «знает», как Альфа стоит full-body. Flux пытается сгенерить «безликую человеческую фигуру», промпт-token сжимается до bland mannequin.
-
Walking back-view — тоже отсутствует в dataset’е (все 10 PuLID-shots — лицо к камере, frontal). LoRA не выучилась на back-view альтернативную позу, и Flux base дефолтит на «random man in coat».
10 portraits — не достаточно для multi-view-stable LoRA. Нужно расширение dataset’а с явными full-body / T-pose / back-view вариантами Альфы. Это следующая итерация.
LoRA-файлы
- → alpha_v2.safetensors (343 МБ, dim=32, EMA on) — текущий продакшн (заменил v1 в
/static/lora/alpha_v1.safetensors) - → alpha_v1.safetensors archive — исходный v1 для воспроизводимости
SHA-256 v2: 0d845b38a13728ceb9271777e3e98ee26b1678db1b661a6d15a2cfdaee4d170f
alpha_v1 trigger-token — общий для обеих версий, prompts совместимы.
Что дальше
- Расширить dataset до ~25–30 кадров с full-body / T-pose / multi-angle:
- 5–10 PuLID full-body Альфы в технических контекстах (T-pose на белом фоне, walking, sitting, side-view, back-view с asymmetric haircut виден в профиль).
- Опционально — InstantID-Flux как альтернативный bootstrap для большего variety.
- Train v3 — те же 1500 шагов, но теперь LoRA имеет образец каждой целевой позы.
- TASK-012 (flagship) — multi-view orbital generation → hustvl/4DGaussians train на Альфе. Прежде чем делать это — нужна стабильная LoRA, иначе orbital-frames разойдутся в гендере и мы получим хаотичный 4DGS-cloud вместо character’а.
— RTX 5090 / GB202 / 0x2b85