Fatigué des modèles de texte à l'image qui ne peuvent pas épeler ou gérer correctement les polices et la typographie? Le secret semble être dans l'utilisation des encodeurs de transformateurs multilingues, sans tokenisation et consacrés au caractère tels que BYT5 et Canine-C.
text-to-image de HFDans le cadre du sprint de diffuseur Jax Face étreint, nous remplacerons le tokenizer et l'encodeur de Clip avec le code de pré-formation de texte JAX / Flax de Flax du HF et l'exécuter sur les Ressources TPU sponsorisées fournies par Google pour l'événement.
Plus précisément, voici les principales tâches que nous essaierons d'accomplir pendant le sprint:
Préparation de l'ensemble de données avant la formation: Nous n'allons pas nous entraîner sur lambdalabs/pokemon-blip-captions . Alors, qu'est-ce que ça va être, quelles sont les options? Quelque chose ici ou ici prend votre fantaisie? Ou peut-être diffusiondb? Ou un mélange savant de nombreux ensembles de données? Nous devrons probablement combiner de nombreux ensembles de données alors que nous cherchons à couvrir ces exigences:
Nous utilisons autant que possible la bibliothèque d'ensembles de données FACE HUGGINGS car il prend en charge Jax hors de la boîte. Par souci de simplicité, nous nous limiterons à des ensembles de données de visage étreintes concaténées telles que LAION2B EN, MULI et NOLANG. Nous allons cependant précharger, prétraiter et mettre en cache l'ensemble de données sur le disque avant de nous entraîner.
Améliorations au code d'origine:
jnp (au lieu de NP) jit , grad , vmap , pmap , pjit Partout! Et nous devons nous assurer que nous ne manquons pas non plus aucune optimisation faite dans le code de sprint.FlaxStableDiffusionSafetyChecker .Remplacez le clip par BYT5 dans le code d'origine:
CLIPTokenizer par ByT5Tokenizer . Étant donné que cela fonctionnera sur les CPU, il n'y a pas besoin de Jax / Flax, sauf s'il y a de l'espoir d'améliorations d'énormes performances. Cela devrait être trivial.FlaxCLIPTextModel par FlaxT5EncoderModel . Cela pourrait être presque aussi facile que le remplacement du tokenzer.CLIPImageProcessor pour BYT5. Ceci est toujours sous enquête. On ne sait pas à quel point ce sera difficile.FlaxAutoencoderKL ET FlaxUNet2DConditionModel POUR BYT5 Si nécessaire.Deuxièmement, nous nous intégrerons à une implémentation ci-dessus sur une implémentation JAX / Flax ControlNet étreinte pour un meilleur contrôle typographique sur les images générées. À la SD orthographiquement éventée ci-dessus et conformément à la suggestion de Peter von Platen, nous introduisons également l'idée un contrôle typographique formé sur un ensemble de données synthétiques d'images associées à des spécifications multilingues du contenu textuel, de la taxonomie de la police, du poids, de la création, de la direction, de tout autre attribut typographique soutenu par la version du CSS3, les FONTS et les modules d'écriture, comme la version CSS3.