Las palabras que usamos en los prompts se llaman tokens. Cada token tiene su propio poder, que depende de su frecuencia de aparición en el conjunto de datos utilizado para entrenar la IA. Nos adentraremos en los detalles técnicos en un momento, pero primero nos centraremos en cómo pensar en los tokens de manera práctica.
Veamos un ejemplo: Yo prompt “1girl wearing white oversized coat with >< and outstretched arms”. Si cada palabra es un token, tenemos 11 tokens.
(Al escribir este prompt en BetterWaifu, notarás que el contador de tokens muestra 13. Esto se debe a que los tokens <start> y <end> son añadidos por la IA en segundo plano. Más sobre esto en la siguiente sección.)
Las preposiciones como “with”, “for”, “at”, “in” y partículas como “and”, “a”, “to” cuentan como tokens. Por lo tanto, también tienen poder e influyen en la imagen.
Intentemos el mismo prompt sin partículas ni preposiciones: “1girl, white oversized coat, ><, outstretched arms”. Las comas cuentan como tokens, así que seguimos teniendo 11 tokens, 13 con los tokens de inicio y fin. El resultado es bastante diferente:
Me gusta más este resultado porque parece que se prestó más atención al abrigo. El token de la coma se utiliza para demarcar entre diferentes conceptos.
Ahora, aunque usar tags separados por comas es mi enfoque recomendado para hacer prompts en BetterWaifu, eso no significa que eliminar todas las preposiciones y partículas siempre mejore el resultado. A veces, es importante usar preposiciones para indicar posiciones relativas.
Aquí hay un ejemplo simple de cuándo una preposición marca la diferencia:
1girl, airplane, white oversized coat, ><, outstretched arms1girl inside airplane, white oversized coat, ><, outstretched arms
Además de la fuerza inherente de un token, su posición en el prompt también tiene peso. Los tokens al principio tienen mayor peso que los tokens al final. Es importante entender esto, ya que un token débil al final del prompt puede no tener impacto en la imagen. Por el contrario, un token fuerte al principio puede determinar completamente el resultado.
Para controlar la fuerza de un token, puedes usar la construcción (token:1.0), donde el número representa la fuerza del token. 0 - sin influencia, 1 - peso normal. Normalmente no paso de 1.5. Experimentar con diferentes valores de fuerza puede ayudarte a ajustar el nivel deseado de control sobre los tokens en tus prompts.
Explicación Técnica
La tokenización es una forma común de manejar datos de texto en la generación de IA. La usamos para convertir el texto en números y procesarlos con redes neuronales.
Stable Diffusion tokeniza un prompt de texto en una secuencia de tokens. Por ejemplo, divide el prompt de texto un lindo y adorable conejito en los tokens a, cute, and, adorable, y bunny. Luego, Stable Diffusion añade los tokens <start> y <end> al principio y al final de los tokens.
La secuencia de tokens resultante para el ejemplo anterior sería <start>, a, cute, and, adorable, bunny, y <end> (7 tokens).
Para facilitar el cálculo, Stable Diffusion mantiene las secuencias de tokens de cualquier prompt de texto con la misma longitud de 77, mediante padding o truncamiento. Si el prompt de entrada tiene menos de 77 tokens, se añaden tokens <end> al final de la secuencia hasta que alcance 77 tokens.
La longitud de 77 se estableció para equilibrar el rendimiento y la eficiencia computacional. Diferentes software tendrán diferentes comportamientos si se utilizan más de 77 tokens:
Se retienen los primeros 77 tokens y se eliminan los demás.
Todo el prompt se divide en trozos de 75, se añaden tokens de inicio y fin, y cada trozo se procesa en orden. Este es el método que utiliza BetterWaifu.