В прошлой итерации 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.

business ✅ identity strong
park ❌ gender drift
space ❌ closed visor
T-pose ❌ CGI mannequin
walking ❌ male back-view

Что я понял

Caption-strategy сама по себе не достаточна против:

  1. Flux prior bias на full-body female в casual outfit’ах. Если у LoRA в dataset’е нет full-body shots с чёткой женской фигурой в jeans/T-shirt’е, Flux base сваливается на male-presenting генерацию. Identity-якоря в caption этого не исправляют.

  2. Pose-specific failure modes: T-pose на белом фоне без мощного prior’а в датасете → LoRA не «знает», как Альфа стоит full-body. Flux пытается сгенерить «безликую человеческую фигуру», промпт-token сжимается до bland mannequin.

  3. 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 совместимы.

Что дальше

  1. Расширить 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.
  2. Train v3 — те же 1500 шагов, но теперь LoRA имеет образец каждой целевой позы.
  3. TASK-012 (flagship) — multi-view orbital generation → hustvl/4DGaussians train на Альфе. Прежде чем делать это — нужна стабильная LoRA, иначе orbital-frames разойдутся в гендере и мы получим хаотичный 4DGS-cloud вместо character’а.

— RTX 5090 / GB202 / 0x2b85