Preparação
Dependendo de como e do que você está treinando, talvez seja necessário recortar as fotos para uma largura e altura específicas. Outros tipos de treinamento podem categorizar imagens em vários tamanhos e não exigem recorte. Verifique o que é necessário para o método de treinamento que você está usando, o modelo que você está treinando e o programa que você está usando para treinar seu modelo.Legendagem – Observações gerais
Evite legendagem automatizada
- BLIP e deepbooru são interessantes, mas ainda é um pouco cedo para eles.
- BLIP e deepbooru têm dificuldade com contexto e importância relativa.
- É mais rápido legendar manualmente do que corrigir erros cometidos pelo BLIP ou deepbooru e ainda assim precisar legendar manualmente.
Legende da mesma forma que você escreve prompts
- Legendagem e prompting estão relacionados.
- Reconheça como você normalmente escreve prompts. Você usa frases detalhadas? Descrições curtas? Prompts vagos ou detalhados?
- Legende em um estilo e nível de detalhe semelhantes aos que você normalmente usa nos seus prompts.
Siga uma estrutura definida por conceito
- Seguir uma estrutura beneficiará o processo de aprendizado.
- Você pode ter uma estrutura para fotografias e outra para ilustrações. No entanto, tente evitar misturar estruturas ao legendar um único dataset.
Legendas são como variáveis que você pode usar nos seus prompts
Tudo o que você descreve em uma legenda pode ser entendido como uma variável que você pode manipular no seu prompt. Isso tem duas implicações:- Você deve descrever o maior número possível de detalhes sobre qualquer coisa que não seja o conceito que você está tentando ensinar implicitamente. Em outras palavras, descreva tudo o que você quer que se torne uma variável. Por exemplo, se você está ensinando um rosto específico, mas quer poder alterar a cor do cabelo, você deve descrever a cor do cabelo em cada imagem para que “hair color” se torne uma das suas variáveis.
- Você não deve descrever nada (além de uma descrição em nível de classe) que você queira que seja aprendido implicitamente. Em outras palavras, aquilo que você está tentando ensinar não deve se tornar uma variável. Por exemplo, se você está ensinando um rosto específico, não deve descrevê-lo como tendo um nariz grande. Você não quer que o tamanho do nariz seja variável, porque então ele deixaria de ser aquele rosto específico. No entanto, você ainda pode legendar “face”, se quiser, o que fornece contexto ao modelo que você está treinando. Isso tem algumas implicações descritas no ponto seguinte.
Aproveitando classes como tags
- Há dois conceitos aqui.
- Usar tags de classe genéricas enviesará toda essa classe em direção aos seus dados de treinamento. Isso pode ou não ser desejado, dependendo dos seus objetivos.
- Usar tags de classe genéricas fornece contexto ao processo de aprendizado. Conceitualmente, é mais fácil aprender o que é uma “face” quando o modelo já tem uma aproximação razoável de “face”.
- Se você quer enviesar toda a classe do seu modelo em direção às suas imagens de treinamento, use tags de classe amplas em vez de específicas. Por exemplo, se você quer ensinar ao seu modelo que todo homem deve se parecer com Brad Pitt, suas legendas devem conter a tag “man”, mas não devem ser mais específicas do que isso. Isso influencia seu modelo a produzir um homem parecido com Brad Pitt sempre que você usar a palavra “man” no seu prompt. Isso também permite que seu modelo use e aproveite o que ele já sabe sobre o conceito de “man” durante o treinamento.
- Se você quer reduzir o impacto do seu treinamento em toda a classe, inclua tags específicas e reduza a ênfase em tags de classe. Por exemplo, se você quer ensinar ao seu modelo que somente “ohwxman” deve se parecer com Brad Pitt, e não quer que todo “man” se pareça com Brad Pitt, você não usaria “man” como tag, marcando apenas com “ohwxman”. Isso reduz o impacto das suas imagens de treinamento na tag “man” e associa fortemente suas imagens de treinamento a “ohwxman”. Seu modelo usará o que sabe sobre “ohwxman”, que é praticamente nada (veja a observação), acumulando conhecimento quase exclusivamente a partir das suas imagens de treinamento e criando uma associação muito forte.
- Observação: Isso está simplificado para facilitar a compreensão. Na verdade, isso seria tokenizado em dois tokens, “ohwx” e “man”, mas esses tokens ficariam fortemente correlacionados para fins de treinamento, o que ainda deve reduzir o impacto na classe geral de “man” em comparação com o treinamento usando “man” como token na legenda. A matemática envolvida é bastante complexa e está muito além do escopo deste documento.
Legendagem consistente
- Use legendas consistentes em todo o seu treinamento. Isso ajudará você a invocar seu conceito de forma consistente ao escrever prompts.
- Usar tags inconsistentes ao longo do seu dataset tornará o conceito que você está tentando ensinar mais difícil para o modelo compreender, pois você estará essencialmente forçando-o a aprender tanto o conceito quanto as diferentes formas de expressar esse conceito. É muito melhor fazer com que ele aprenda apenas o conceito sob um único termo.
- Por exemplo, você provavelmente não quer ter tanto “legs raised in air” quanto “raised legs” se está tentando ensinar um único conceito de uma pessoa com as pernas levantadas no ar. Você quer conseguir invocar essa pose de forma consistente no seu prompt, então escolha uma única forma de legendá-la.
Evite repetição
- Tente evitar repetição sempre que possível. Assim como em prompts, repetir palavras aumenta o peso dessas palavras.
- Por exemplo, se repetirmos demais a palavra “background”, podemos acabar com três tags que dizem “background” (por exemplo, simple background, white background, lamp in background). Mesmo querendo que o fundo tenha baixo peso, aumentamos sem querer esse peso de forma significativa. Seria melhor combinar essas tags ou reescrevê-las (por exemplo, simple white background with a lamp).
Preste atenção à ordenação
- Novamente, assim como em prompts, a ordem importa para o peso relativo das tags.
- Ter uma estrutura ou ordem específica que você geralmente usa para legendas pode ajudar a manter os pesos relativos das tags entre as imagens do seu dataset, o que deve beneficiar o processo de treinamento.
- Ter uma ordenação padronizada torna todo o processo de legendagem mais rápido à medida que você se familiariza com a legenda dentro dessa estrutura.
Use o conhecimento existente do seu modelo a seu favor
- Seu modelo já produz resultados decentes e entende razoavelmente o que você escreve nos prompts. Aproveite isso legendando com palavras que já funcionam bem nos seus prompts.
- Você deve usar palavras descritivas, mas, se usar palavras muito obscuras ou de nicho, provavelmente não conseguirá aproveitar muito do conhecimento existente. Por exemplo, você poderia dizer “sarcastic” ou “mordacious”. O modelo tem alguma ideia do que “sarcastic” transmite, mas provavelmente não tem a menor ideia do que “mordacious” significa.
- Você também pode ver isso pela perspectiva oposta. Se estivesse tentando ensinar o conceito de “mordacious”, poderia ter um dataset cheio de imagens que transmitem “sarcastic” e legendá-las com as tags “sarcastic” e “mordacious” lado a lado (para que fiquem próximas em peso relativo).
Legendagem – Estrutura
Isto é voltado principalmente para pessoas ou personagens, então talvez não seja tão aplicável a algo como paisagens de fantasia, mas talvez possa servir de inspiração.Formato geral
Associações livres
- É aqui que colocamos quaisquer associações livres finais que temos com a imagem.
- Isso pode ser qualquer coisa que venha à nossa cabeça, geralmente “sentimentos” que sentimos ao olhar para a imagem ou conceitos que sentimos que são retratados; na prática, qualquer coisa vale aqui, desde que exista na imagem.
- Tenha em mente que isto é para associações livres. Se a imagem estiver retratando algum sentimento de forma muito evidente, talvez seja melhor marcá-lo mais perto do início da legenda para obter maior peso.
- Por exemplo: feliz, triste, alegre, esperançoso, solitário, sombrio
EXEMPLO COMPLETO DE UMA ÚNICA IMAGEM
Este é um exemplo de como legendaríamos uma única imagem que escolhemos no safebooru. Vamos supor que eu queira treinar o estilo desta imagem e associá-lo à tag “ohwxStyle”, e vamos supor que temos muitas imagens nesse estilo dentro do nosso dataset. Imagem de exemplo: https://safebooru.org/index.php?page=post&s=view&id=3887414- Globais: ohwxStyle
- Tipo ou perspectiva de um(a): anime, desenho, de uma jovem mulher, corpo inteiro, de lado
- Palavras de ação: sentada, olhando para o espectador, sorrindo, cabeça inclinada, segurando um telefone, olhos fechados
- Descrição do sujeito: cabelo castanho curto, vestido rosa-claro com bordas escuras, bicho de pelúcia no colo, chinelos marrons
- Detalhes notáveis: luz do sol entrando pelas janelas como fonte de iluminação
- Fundo ou localização: sofá marrom, tecido vermelho estampado no sofá, piso de madeira, tinta branca manchada de água nas paredes, geladeira ao fundo, máquina de café sobre uma bancada, mesa em frente ao sofá, bananas e cafeteira sobre a mesa, quadro branco na parede, relógio na parede, bicho de pelúcia de galinha no chão
- Associações livres: ambiente melancólico