Jump to content

[Návod] Vytváření AI promptů (Midjourney)


ffredyk

Recommended Posts

  • Majitel

Navážu zde na obsah předchozího návodu o OpenAI, přeskočím tedy definice pojmů a vrhneme se přímo do problematiky.

Rozdíly

Nejpodstatnějším rozdílem mezi OpenAI modelem a Midjourney je právě skladba samotného promptu. Zatímco OpenAI GPT modely jsou stavěné pro komunikaci, Midjourney je navržen jen pro generaci obrázků. Původně modely generující obrázky vznikly jako modely popisující obrázky - model měl za úkol popsat co na existujícím obrázku vidí. Samotným otočením logiky začaly modely obrázky generovat na základě vložených "popisů". Je vhodné nad tímto přemýšlet při stavbě samotného promptu.

Midjourney jmenovitě také nabízí možnost použití speciálních parametrů přímo v promptu (tedy na konci promptu). Tyto parametry vždy začínají dvěma pomlčkami, klíčovým slovem, mezerou a hodnotou. Podobně jako parametry konzolových aplikací jak na Windows tak linuxu.

Další zajímavostí oproti jazykovým modelům je možnost tvorby negativních promptů - resp. zanesení slov do promptu, kterým se má model vyvarovat, či je úplně odstranit z možných generovatelných kontextů

Architektura promptu

Prompt jako takový lze dnes stavět různými způsoby. Původně však nejlepší výsledky vznikaly z promptů stavěných z klíčových slov. Čím více specifikovaná slova, tím přesnější, kvalitnější nebo hodnotnější výsledky byly generovány. Nejnovější modely se snaží přiblížit citlivostí na architekturu promptu co nejširší cílové skupině uživatelů - dokáží tedy zpracovávat i texty plné zbytečných nuancí s irelevantními větnými doplňky. Avšak nejlepších výsledků stále dosáhneme právě stavbou klíčových slov bez spojek, předložek a podobných větných součástí. 

Midjourney je také více citlivé na angličtinu, než jiné jazyky. Neznamená to však, že by se nedaly psát prompty v češtině nebo slovenštině. (Při ověřování českých promptů jsem se setkal spíše s neúspěchem než s úspěchem..) Spíše je potřeba počítat s tím, že pokud nastane problém s generací promptů v jazyce jiném než angličtina, je vhodné zkusit je nutné generovat s promptem přeloženým do angličtiny. To je však problém všech modelů (i jazykových), protože tréninková data jsou nejbohatší právě v anglickém jazyce.

Podobně jako u OpenAI i zde platí pravidlo, že prompt je nejsilnější v prvních několika slovech. Avšak následný spád relevance už není tak znatelný, tedy prompt si po celou jeho délku udržuje celkem stabilní váhový gradient. Zjednodušeně řečeno - prvních pár slov je nejsilnějších, vše poté má o něco menší váhu v generaci, avšak stále dostatečně citelnou. Dle mého názoru je to typickým biasem lidských popisovačů tréninkových obrázků - lidé si nejdřív všimnou nejsilnějšího prvku v obrázku, který vždy dosadí na první pozici v popisu.

Obsah promptu:

  • Předmět
  • Předmětné modifikátory
  • Stylistické modifikátory
  • Pozadí
  • Efekty
  • Negativní předmět
  • Parametry

Pořadí těchto prvků není kriticky důležité, jde spíš o můj vlastní zvyk napříč různými modely jak Midjourney tak i klasické stabilní difuze.

Předmět je vlastně obsah obrázku, objekt pozorování, situace, čí jiná myšlenka, kterou má model generovat. 

Citace

"Panáček..."
"Modrá obloha..."
"Tropický prales..."
"Noční závody superaut..."
"Abstraktní kreace plná barev duhy..."

Předmětné modifikátory

Jde o úpravy předmětu, nebo jeho bližší specifikace. Vlastně tím zpřesňujeme definici předmětu, přidáváme další požadavky nebo se tím snažíme stočit pomyslnou cestičku samotné generace.

Citace

"..., jedna noha větší než druhá, modré oči, tupé ruce bez prstů..."
"..., plná bílých oblaků, létající siluety ptáků, mírná mlha, v dálce deštivo..."
"..., plný hmyzu a drobného života, uprostřed majestátní starý strom..."
"..., ilegální, tajné, street tuning..."
"..., barvy se mezi sebou různě mísí, barevný tanec..."

Modifikátorů může být jakékoliv množství a mohou být jakkoliv specifické, nebo obecné, či naprosto vágní - model si s tím vždy nějak poradí. Sledovat občas co vzniká z naprosto nesmyslných, či totálně obecných promptů, je občas zážitek sám o sobě.

Stylistické modifikátory

Těmito nastavujeme celkovou kompozici, realističnost, či jiné stylistické zpracování celkového produktu.

Citace

"..., 3D model, CAD, Blender, realistické nasvětlení, raytracing, 30mm objektiv..."
"..., kreslený obraz, tempery, pohled v galerii, výstava..."
"..., realistická fotka, canon, dynamické osvětlení, živé barvy, 35mm objektiv..."
"..., záběry ze hry, raytracing, RTX 4090, directx 12, vulkan..."
"..., bouře prvků, kreativní interpretace, živé barvy..."

Stejně jako předtím, těchto modifikátorů může být jakékoliv množství a specifikovat mohou cokoliv. Jde o podrobnější štelování výsledků.

Pozadí

Stejně tak jako předmět, můžeme v zařadit do promptu i definici pozadí. Já obvykle definuji pozadí spíše ke konci promptu, ale jde asi jen o můj osobní zvyk. Model si zpracuje prompt po svém a teoreticky jen klíčové slovíčko "background", nebo "pozadí" je dostačující k tomu, aby model pochopil o co nám jde.

Citace

"..., pozadí šedivého gradientu, plynulý přechod z tmavší na světlejší..."
"..., v pozadí vysoké siluety hor, kopce a louky..."
"..., v pozadí zeleň, další stromy a flóra pralesa..."
"..., v pozadí noční velkoměsto, budovy, paneláky..."

Efekty

Podobně jako stylistické modifikátory, můžeme specifikovat i efekty, resp. simulaci post-procesního zpracování.

Citace

"..., viněta, malý barevný šum obrazu..."
"..., zvýraznění kontury, textura štětce..."
"..., profi ostření, photoshop post-process.."
"..., bloom, odlesky kamery..."
"..., malý blur, rozmazání, popraskání obrazu, glitch..."

Negativní předmět

Stejně jako stavíme předmět s jeho modifikátory, můžeme stavět i negativní součásti. Chápejme ve smyslu seznamu věcí, které generovat nechceme, tedy které nechceme vidět ve výsledcích. Negativní předmět je však součást parametru (--no), měl by tak být na konci promptu. Pokud chceme specifikovat více předmětů, je potřeba je oddělit čárkou

Citace

"... --no oči, prsty..."
"... --no lidé, postavy..."
"... --no opice..."
"... --no policie..."
"... --no růžová..."

Negativní prompty existují hlavně proto, že model nedokáže dobře odhadnout relevanci negativních vazeb samotného promptu vůči předmětům. Takže pokud chceme modelu předat informaci o tom, že něco nechceme generovat, tak místo tvorby takového požadavku v předmětu, nebo jeho modifikátorech (např. "tupé ruce bez prstů") bychom měli vždy použít parametr ("--no prsty").

Parametry

Samotné parametry nám poté upravují již externí nastavení modelu, či jeho výstupu. Obvykle se nastavuje výběr samotného modelu, poměr stran, teplota (chaos), seed apod.

Citace

--ar 1:1 = Aspect Ratio - poměr stran
--iw 1 = Váha obrázku - při vložení URL obrázku do promptu, toto nastavuje jeho váhu ve výsledku
--chaos 0= Nastavení deviace variací - jak moc se od sebe liší jednotlivé variace generace
--quality 1 = Kvalita generace - jak dlouho trvá samotná generace, kolik cyklů proběhne, ovlivňuje podrobnost a kvalitu výsledků, ale žere více času
--tile = Zapnutí generace textur, které po všech stranách hladce přiléhají (tiling texture)

Další parametry lze najít v dokumentaci https://docs.midjourney.com/docs/parameter-list

Multi-prompting

Midjourney nabízí také velmi silnou funkci multi-promptů. Je využitelná zejména, pokud chceme logicky oddělit předměty, tedy separovat jejich relevanci vůči sobě. Či pokud chceme jednotlivým předmětům nastavit různé váhy (a ovlivnit tak jejich podíl na výsledku)

Citace

"space, ship" - velká pravděpodobnost, že model vygeneruje futuristickou vesmírnou loď
"space:: ship" - model vygeneruje klasicky pochopené vyobrazení mořské lodi, která pluje vesmírem
"space::2 ship" - model vygeneruje hlavně vesmír, mořská loď je sekundární

Dvojité dvojtečky definují separaci významů mezi oběma stranami. Lze za nimi specifikovat číslo (i s desetinou čárkou u nejnovějších modelů), které definuje váhu levé strany. Pokud chceme specifikovat i váhu pravé strany, je potřeba použít dvojtečky i za ní

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • Majitel

Zde ukázka rozdílu mezi promptem v češtině a angličtině:

Citace

Panáček, jedna noha větší než druhá, modré oči, tupé ruce bez prstů, 3D model, CAD, Blender, realistické nasvětlení, raytracing, 30mm objektiv, pozadí šedivého gradientu, plynulý přechod z tmavší na světlejší, viněta, malý barevný šum obrazu --no oči, prsty --s 750 --v 6.0

ffredyk_Panacek_jedna_noha_vetsi_nez_dru

České prompty na nejnovějším modelu již vůbec nefungují. Je zde cítit vzdálené splnění vybraných součástí celku (nohy, osvětlení a objektiv), ale zbytek byl naprosto vynechán

Citace

Stick figure, one leg bigger than the other, blue eyes, blunt arms without fingers, 3D model, CAD, Blender, realistic lighting, raytracing, 30mm lens, gray gradient background, smooth gradient from darker to lighter, vignette, small color noise --no eyes, fingers --s 750 --v 6.0

ffredyk_Stick_figure_one_leg_bigger_than

Lze poznat, že nejnovější model (v6) už nereaguje moc na post-process prompty, dříve celkem hodně reagoval na vinětu, občas byl schopen přidat i celkem kvalitní šum. Zbytek promptu v angličtině dopadl vcelku obstojně.

Také jsem si všiml, že negativní prompt naprosto nefunguje.. Jdu prolézt dokumentaci, zda se něco nezměnilo pro v6 model v tomto ohledu

Link to comment
Share on other sites

  • Majitel

Další prompty z ukázek:

Citace

blue sky, full of white clouds, flying silhoulettes of birds, mild fog, far away rain, drawn picture, distempers, gallery overview, presentation, large silhoulettes of mountains in the background, hills and plains, conture highlights, paint brush texture --s 750 --v 6.0

ffredyk_blue_sky_full_of_white_clouds_fl

Citace

tropical forest, full of insects and small animals, a majestic old tree in the middle, reallistic photo, canon, dynamic lighting, vibrant colors, 35mm lens, green foliage in the background, more trees and forest flora, professional sharpening, photoshop post-process --s 750 --v 6.0

ffredyk_tropical_forest_full_of_insects_

Citace

night supercar race, illegal, secret, street tuning, game footage, raytracing, rtx 4090, directx 12, vulkan, night big city in the background, buildings, tall housing, bloom, camera lens flare --s 750 --v 6.0

ffredyk_night_supercar_race_illegal_secr

Citace

abstract creation full of rainbow colors, colors are mixing with each other, dance of colors, storm of particles, creative interpretation, vibrant colors, small blur, smudging, picture cracking, glitch" --s 750 --v 6.0

ffredyk_abstract_creation_full_of_rainbo

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...