As palavras que usamos nos prompts são chamadas de tokens. Cada token tem seu próprio poder, que depende de sua frequência de ocorrência no conjunto de dados usado para treinar a IA. Vamos entrar nos detalhes técnicos em um momento, mas primeiro vamos nos concentrar em como pensar sobre os tokens na prática.
Vamos dar uma olhada em um exemplo: eu prompto “1girl wearing white oversized coat with >< and outstretched arms”. Se cada palavra é um token, temos 11 tokens.
(Ao digitar este prompt no BetterWaifu, você notará que o contador de tokens exibe 13. Isso ocorre porque os tokens <start> e <end> são adicionados pela IA nos bastidores. Mais sobre isso na próxima seção.)
Preposições como “with”, “for”, “at”, “in” e partículas como “and”, “a”, “to” contam como tokens. Assim, elas também têm poder e influenciam a imagem.
Vamos tentar o mesmo prompt sem partículas ou preposições: “1girl, white oversized coat, ><, outstretched arms”. As vírgulas contam como tokens, então ainda estamos com 11 tokens, 13 com os tokens de início e fim. O resultado é bem diferente:
Eu gosto mais deste resultado porque parece que mais atenção foi dada ao casaco. O token de vírgula é usado para demarcar entre conceitos diferentes.
Agora, enquanto usar tags separadas por vírgula é minha abordagem recomendada para prompts no BetterWaifu, isso não significa que remover todas as preposições e partículas sempre torna o resultado melhor. Às vezes, é importante usar preposições para indicar posições relativas.
Aqui está um exemplo simples de quando uma preposição faz toda a diferença:
1girl, avião, casaco oversized branco, ><, braços estendidos1girl dentro do avião, casaco oversized branco, ><, braços estendidos
Além da força inerente de um token, sua posição no prompt também é ponderada. Tokens no início têm maior peso do que tokens no final. É importante entender isso, pois um token fraco no final do prompt pode não ter impacto na imagem. Por outro lado, um token forte no início pode determinar completamente o resultado.
Para controlar a força de um token, você pode usar a construção (token:1.0), onde o número representa a força do token. 0 - sem influência, 1 - peso normal. Eu geralmente não ultrapasso 1.5. Experimentar com diferentes valores de força pode ajudá-lo a ajustar o nível desejado de controle sobre os tokens em seus prompts.
Explicação Técnica
A tokenização é uma maneira comum de lidar com dados textuais na geração de IA. Usamos isso para transformar o texto em números e processá-los com redes neurais.
O Stable Diffusion tokeniza um prompt de texto em uma sequência de tokens. Por exemplo, ele divide o prompt de texto um coelho fofo e adorável em os tokens um, fofo, e, adorável, e coelho. Em seguida, o Stable Diffusion adiciona os tokens <start> e <end> no início e no final dos tokens.
A sequência de tokens resultante para o exemplo acima seria <start>, um, fofo, e, adorável, coelho, e <end> (7 tokens).
Para facilitar o cálculo, o Stable Diffusion mantém as sequências de tokens de qualquer prompt de texto com o mesmo comprimento de 77, preenchendo ou truncando. Se o prompt de entrada tiver menos de 77 tokens, tokens <end> são adicionados ao final da sequência até que ela atinja 77 tokens.
O comprimento de 77 foi definido para equilibrar desempenho e eficiência computacional. Diferentes softwares terão comportamentos diferentes se mais de 77 tokens forem usados:
Os primeiros 77 tokens são retidos e o restante é cortado.
Todo o prompt é dividido em partes de 75, tokens de início e fim são adicionados, e cada parte é processada em ordem. Este é o método que o BetterWaifu usa.