¿Cansado de modelos de texto a imagen que no pueden deletrear o tratar correctamente las fuentes y la tipografía? El secreto parece estar en el uso de codificadores de transformadores multilingües, sin tokenización, conscientes de los caracteres como BYT5 y Canine-C.
text-to-image de HFComo parte de la facultad de abrazo Jax Diffuser Sprint, reemplazaremos el tokenizador y el codificador de Clip con BYT5 en el código de pre-entrenamiento de texto a imagen Jax/lino de HF y lo ejecutarán en las reensaciones de TPU patrocinadas proporcionadas por Google para el evento.
Más específicamente, estas son las tareas principales que intentaremos lograr durante el sprint:
Preparación del conjunto de datos previa al entrenamiento: no vamos a entrenar en lambdalabs/pokemon-blip-captions . Entonces, ¿qué va a ser, cuáles son las opciones? ¿Algo aquí o aquí te toma fantasía? ¿O tal vez DiffusionDB? ¿O una mezcla sabia de muchos conjuntos de datos? Probablemente necesitaremos combinar muchos conjuntos de datos mientras buscamos cubrir estos requisitos:
Shove usar la biblioteca de conjuntos de datos de abrazaderas tanto como sea posible, ya que admite Jax fuera de la caja. Por el bien de la simplicidad nos limitaremos a conjuntos de datos faciales concatenados como Laion2b EN, Multi y Nolang. Sin embargo, prepacitaremos, preprocesaremos y almacenaremos el conjunto de datos en el disco antes de capacitarlo.
Mejoras al código original:
jnp (en lugar de NP) jit , grad , vmap , pmap , pjit en todas partes. Y debemos asegurarnos de que tampoco perdamos ninguna optimización hecha en el código Sprint.FlaxStableDiffusionSafetyChecker fuera del camino.Reemplace el clip con BYT5 en el código original:
CLIPTokenizer con ByT5Tokenizer . Dado que esto se ejecutará en las CPU, no hay necesidad de Jax/Flax a menos que haya esperanzas de grandes mejoras de rendimiento. Esto debería ser trivial.FlaxCLIPTextModel con FlaxT5EncoderModel . Esto podría ser casi tan fácil como reemplazar el tokenizador.CLIPImageProcessor para BYT5. Esto todavía está bajo investigación. No está claro qué tan difícil será.FlaxAutoencoderKL y FlaxUNet2DConditionModel para BYT5 si es necesario.En segundo lugar, nos integraremos con la implementación de control de control Jax/Flax de la cara de abrazo de abrazo para un mejor control tipográfico sobre las imágenes generadas. A la SD de nivelado ortografía anterior y según la sugerencia de Peter von Platen, también presentamos la idea de un control tipográfico entrenado en un conjunto de datos sintético de imágenes emparejadas con especificaciones multilingües del contenido textual, taxonomía de fuente, peso, kerning, liderazgo, slant y cualquier otro atributo tipográfico respaldado por los textos CSS3, las fuentes y los modos de escritura, los modos de la última versión.