sexta-feira, 2 de setembro de 2022

Fabricando imagens: prompt-crafting no Midjourney

Vou começar a falar de “AI generated art” fora de ordem. Há um outro post no qual estou trabalhando que deveria aparecer antes e que trata de questões mais elementares e interessantes, mas acabei terminando este aqui antes.


Há muita discussão a respeito do status destas ferramentas como sendo arte ou não. Isso fica para um outro momento e acho que ainda vou amadurecer o que penso sobre o tema, possivelmente a partir de uma conversa que pretendo ter com o meu co-blogger em breve. Mas quero pontuar um aspecto aqui: gerar imagens bonitas nessas ferramentas é fácil. Gerar o que se pretende gerar, é muito difícil. Dá trabalho e ninguém sabe muito bem ainda qual é a melhor forma de explicar, para um robô treinado para compreender linguagem natural, o que nós queremos dizer. Aí entra a “arte” do prompt-crafting. É mais um trabalho de direção artística e evolução memética do que qualquer outra coisa. Vamos para um  exemplo prático:

Ontem comecei a tentar criar versões humanas de personagens de anime. Comecei por alguns de Demon Slayer, cheguei em resultados muito bonitos, mas que não remetem muito aos personagens - parecem mais releituras de figurinos de ópera, tipo, esse cara 'simboliza' o Inosuke".

 



Resolvi tentar algo mais simples, algum personagem com visual mais limpo e de fácil descrição: passei a tentar um Inu Yasha. É um garoto com orelhas de lobo, cabelos muito compridos, vestimentas de sacerdotisas Miko e kimono vermelho, olhos amarelos.




Fazer com que o Midjouney (MJ) produza imagens de personagens conhecidos é relativamente fácil. Eu consegui, rapidamente, produzir uma série de Dilmas como Wonder Woman, bonequinhos em miniatura do Lula:

 



Bom, fui para o início óbvio: tentar fazer com que o MJ gerasse um retrato do Ina Yasha tilizando parâmetros de outros trabalhos meus e pronto. Comecei descrevendo assim:

"Portrait of Inu Yasha, very intricate costume, hyper detailed, serious stare, lifelike, Atmospheric, 600mm lens, Sony Alpha α7, epic, dramatic, cinematic lighting, ray tracing, high contrast, 8k, photo realistic, character design".

Como eu brinquei de fotografia por bastante tempo, sei que lentes de 600mm não utilizadas para retratos, mas são residuais de uma outra série de imagens que fiz, de close-up portraits. Prompt-crafting funciona assim, a gente vai mantendo o que deu certo. Cheguei nesta imagem aqui:




 Achei o resultado legal, mas não se parece em nada com o que eu pretendia. Mudei o prompt para algo que descrevesse melhor o personagem, já que o MJ claramente não sabia o que era um Inu Yasha:

“Portrait of a young boy with yellow eyes, very long white hair and white wolf ears, dressed as japanese miko priestress, Inu Yasha, hyperrealist, hyper detailed, serious stare, lifelike, Atmospheric, 600mm lens, Sony Alpha α7, epic, dramatic, cinematic lighting, ray tracing, high contrast, 8k, photo realistic, character design"

Notem que, ao invés de mencionar o personagem, eu o descrevi fisicamente e retirei a complexidade do figurino, já que o personagem não é assim. Mencionei o nome, como referência adicional porque “vai que”. Um dos segredos da coisa é enfatizar aspectos que se queira forçar na imagem. Também deixei claro que se trata de um garoto, não de uma menina. Resultado:

 



 

O figurino ficou aceitável, as orelhas estão lá, cabelos e tudo, mas ainda é uma menina. Mudei o prompt para "young man" ao invés de "young boy" e rodei o MJ algumas vezes, cheguei em alguns resultados, uns melhores e outros melhores.

 

 


Uma das questões, imagino, é que rostos de personagens masculinos de mangá são muito femininos. Mudei pra "Man" e cheguei num resultado razoável, mas agora muito butch.

 



Decidi retornar ao "young man", o MJ haveria de, eventualmente, me devolver um resultado melhor. Passei a reforçar que queria um Inu Yasha passando a citá-lo também a partir de uma imagem de referência (coisa que não é possível no modo "testp"). Antes de me acusarem de trapaça, saibam que o máximo que dá pra fazer, a partir de uma referência, é dar a ela peso equivalente a todo o resto do prompt, de maneira que a descrição e refinamento descritico continuam sendo fundamentais.Decidi abandonar o test mode recomendado para fotorrealismo, (testp) e passei a receber os resultados em grades de quatro. Não demorou muito pra conseguir a resultados com os quais eu achei que dava pra trabalhar:

 



A partir daí, gerei versões e fiz o upscaling de algumas delas:



 


Essa última tá bem legal, né? Faltam as orelhas. Fui gerando variações e upscales e e cheguei na que considereio a mais bonita do conjnto todo - embora não o mais próximo do resultado pretendido:



O garoto tá lindíssimo, as orelhas parecem muito naturais, as roupas, quase lá. Já havia me dado por satisfeito quando tentei um último movimento: o botão "remaster". Esse é um gamble, póde melhorar ou piorar  imagem. Funciona assim: a IA joga a imagem gerada e o prompt como seeds para um novo upscale, só qe  no modo "creative". Esse modo em princípio só funciona dentro do "testp". E aí eu dei "sorte":

 



Dá pra melhorar? Dá. Um photoshop e alguma ferramenta de pós-processamento resolvem facilmente a orelha humana que tá sobranado e alguma coisa que tá meio off nos olhos. Mas vou deixar isso pra mais tarde, o que interessa, agora, é o que o MJ gerou, que é a imagem acima. O prompt final foi o seguinte:

<https://s.mj.run/EEj6DQLp114> portrait of a young man with yellow eyes, very long white hair and white wolf ears, dressed in a japanese red kimono, Inu Yasha, hyperrealist, hyper detailed, serious stare, lifelike, Atmospheric, 600mm lens, Sony Alpha α7, epic, dramatic, cinematic lighting, ray tracing, high contrast, 8k, photo realistic, character design, --ar 9:16 --iw 1 --test --creative –upbeta

E aqui está a imagem final, após o photoshop e tratamento:





Sintam-se à vontade para pegar, alterar e melhorar, é assim que funciona. Há uma comunidade enorme de gente aprendendo e, ao mesmo tempo, ensinando o MJ a refinar os resultados. Eu levei 36 iterações de cabo a rabo pra chegar no resultado. As que eu mostrei aqui são as fndamentais.

Moral da história: não sei se AI Art é arte ou não. Como disse no começo do texto, gerar algo bonito e/ou interessante com AI é extremamente fácil. Conseguir um resultado específico demanda paciência, identificar o que o robô acha que você está dizendo, dirigir um processo de evolução artificial a partir de referências de outros trabalhos, descobrir como descrever o que se pretende atingir, aprender os parâmetros de funções e comandos possíveis, testar, testar e testar.

 

Enjoy!