Stable Diffusion

Popiš postavu jednou, ComfyUI ti nafotí celou sérii

Popiš postavu jednou, ComfyUI ti nafotí celou sérii

Udržet stejnou postavu napříč sérií obrázků je v generování obrázků letitý problém. Buď si trénuješ LoRA, nebo spoléháš na IP-Adapter, že obličej udrží. A i když se to povede, u každého záběru pořád ručně přepisuješ prompt: teď detail, teď celá postava, teď jiná póza. Po dvacáté fotce se z toho stává mechanická práce a na dvacáté první ti vypadne, že měla mít pihy.

Uzel ComfyUI-Photoshoot od vývojáře ralksty jde na to opačně. Postavu popíšeš jednou a on z ní uspořádá celé focení.

Dvě poloviny: člověk a focení

První polovinu tvoří Photoshoot Person — jediný uzel se 44 poli v šesti záložkách. Základy (pohlaví, věk, etnicita, tón a textura pleti), tělo (výška, stavba, ramena), hlava (typ a barva vlasů, tvar a barva očí), obličej (lícní kosti, nos), líčení a oblečení (punčochy, boty, svrchní vrstva, doplňky). Popis vyplníš jednou a uložíš pod jménem.

Druhou polovinou je Photoshoot Series. Zadáš počet fotek, stiskneš Start shooting a uzel si celou sérii sám zařadí do fronty. Jednotlivé snímky se liší v šesti nezávislých osách:

  • Camera — 7 typů záběru od extrémního detailu po celek
  • Pose — 18 pozic ve čtyřech rodinách, k tomu umístění v prostoru, natočení, ruce, nohy a napětí těla
  • Expression — 90 nálad v devíti rodinách (klid, sebejistota, zaujetí, strach, smutek, odstup) plus oči, pohled, obočí, ústa a náklon hlavy
  • Focus — 12 bodů zájmu od obličeje po chodidla
  • Ratio — 9 poměrů stran při konstantním počtu pixelů
  • Noise — nový seed pro každou fotku, nebo jeden pro celou sérii

Každou osu lze omezit nebo vypnout. Když chceš jen portréty, necháš u kamery dvě hodnoty a ostatní osy se dál mění.

Tři detaily, které rozhodují

Nad samotným nápadem mě zaujalo spíš to, jak je provedený.

Osy se nelosují náhodně. Uzel používá Kroneckerovu posloupnost — každé pole se posouvá o zlomkovou část odmocniny jiného čísla. Dvě pole se tak nikdy nesesynchronizují do opakujícího se vzoru a série je zároveň reprodukovatelná: stejné nastavení vydá pokaždé stejné fotky a sérii lze později rozšířit, aniž by se přeházelo to, co už máš hotové.

Osy jsou vzájemně provázané. Celá postava nikdy nespadne do širokoúhlého formátu na šířku a celkový záběr se nezaostří na rty. Vypadá to jako drobnost do chvíle, než strávíš večer probíráním nesmyslných kombinací.

Popis se zkracuje podle záběru. U detailu jde do promptu celý popis včetně líčení. U celé postavy vypadnou mikrodetaily make-upu. U širokého záběru zbude jen identita — silueta, vlasy, hrubá postava. Pihy na dálku stejně nikdo neuvidí a v promptu by jen ubíraly váhu kompozici. Modely mají omezený rozpočet pozornosti a tohle s ním hospodaří za tebe.

Instalace a nároky

Instalace je nezvykle bezbolestná. Přes ComfyUI Manager stačí vyhledat „Photoshoot“, ručně pak:

cd ComfyUI/custom_nodes
git clone https://github.com/ralksta/ComfyUI-Photoshoot

Následuje restart ComfyUI a je hotovo. Uzel nemá žádné závislosti nad rámec samotného ComfyUI — nic se neinstaluje přes pip a nestahují se žádné modely. Sám totiž obrázky negeneruje, jen skládá text promptu a čísla rozměrů. Vlastní generování zůstává na modelu, který používáš.

Tím je daná i kompatibilita. Modely s textovým enkodérem T5 nebo LLM — Flux, SD 3.5, Qwen-Image, Krea 2 — zpracují 190 až 250 tokenů, takže popis projde celý. Modely postavené jen na CLIPu (SD 1.5, SDXL) mají strop 77 tokenů na blok, prompt se rozseká a konec popisu ztrácí váhu. Na SD 1.5 v rozlišení 512 px je výsledek ještě slabší, protože délky hran jsou navržené pro 1024 až 1536 px.

Omezení, se kterými počítej

Repozitář je čerstvý, s jediným commitem a několika desítkami hvězd, takže na drobnosti narazíš. Licence MIT ale nechává volné ruce.

Uložené postavy, scény a styly leží v adresáři ComfyUI/user/. Nejsou součástí repozitáře, takže je při přeinstalaci nikdo nezálohuje za tebe — a hodina ladění postavy je znát.

Na obyčejné img2img uzel nepoužiješ: latent nese geometrii zdrojového obrázku, takže se rámování ani poměr stran nemají jak pohnout. Jde o nástroj pro generování od nuly.

Autor také výslovně řeší věk. Nástroj popisuje dospělé — věkové předvolby začínají na raných dvacátých letech a pole pro přesný věk má pevnou spodní hranici 18 let. Sám to označuje za pojistku proti nechtěné chybě, ne za obsahový filtr.

Kolik to zabere času

Podle autora stálo čtyřicet plných průchodů 860 sekund, tedy zhruba 21,5 sekundy na obrázek. Na ladění doporučuje obejít upscaler a druhý sampler klávesou Ctrl+B — jeden náhled pak vznikne za 10,2 sekundy. Postup dává smysl: nejdřív si na rychlých náhledech odladíš postavu a světlo, teprve pak pustíš plnou sérii.

Praktická rada na začátek: první sérii pusť na dvanáct fotek se všemi osami zapnutými, ať uvidíš celý rozptyl toho, co uzel vymyslí. Teprve podle výsledku osy přiškrť na to, co pro svůj projekt opravdu potřebuješ. Je to rychlejší než odhadovat dopředu.

Odkaz na repozitář: github.com/ralksta/ComfyUI-Photoshoot (MIT, zdarma)

← Zpět na tutoriály