Cansado de modelos de texto para imagem que não podem soletrar ou lidar com fontes e tipografia corretamente? O segredo parece estar no uso de codificadores multilíngues, sem tokenização e com consciência de caracteres, como BYT5 e canine-C.
text-to-image de HFComo parte do sprint do Hugging Face Jax difuser, substituiremos o tokenizador e o codificador do clipe pelo código de pré-treinamento do Byt5 no Jax/Flax da HF e o execute no TPU Ressources patrocinados fornecido pelo Google para o evento.
Mais especificamente, aqui estão as principais tarefas que tentaremos realizar durante o sprint:
Preparação do conjunto de dados pré-treinamento: não vamos treinar em lambdalabs/pokemon-blip-captions . Então, o que vai ser, quais são as opções? Algo aqui ou aqui leva sua fantasia? Ou talvez DiffusionDB? Ou uma mistura ousada de muitos conjuntos de dados? Provavelmente precisaremos combinar muitos conjuntos de dados, pois procuramos cobrir esses requisitos:
Nós usamos a biblioteca de conjuntos de dados de face abraçados o máximo possível, pois ela suporta Jax fora da caixa. Por uma questão de simplicidade, nos limitaremos a conjuntos de conjuntos de dados de rosto de abraços concatenados, como Laion2b EN, Multi e Nolang. No entanto, devemos, no entanto, pré-carregar, pré-processo e armazenar em cache o conjunto de dados no disco antes de treiná-lo.
Melhorias no código original:
jnp (em vez de NP) jit , grad , vmap , pmap , pjit em todos os lugares! E devemos garantir que não perdemos nenhuma otimização feita no código Sprint também.FlaxStableDiffusionSafetyChecker do caminho.Substitua o clipe por BYT5 no código original:
CLIPTokenizer pelo ByT5Tokenizer . Como isso será executado nas CPUs, não há necessidade de Jax/linho, a menos que haja esperança para grandes melhorias no desempenho. Isso deve ser trivial.FlaxCLIPTextModel por FlaxT5EncoderModel . Isso pode ser quase tão fácil quanto substituir o tokenizer.CLIPImageProcessor PARA BYT5. Isso ainda está sob investigação. Não está claro o quão difícil será.FlaxAutoencoderKL E FlaxUNet2DConditionModel PARA BYT5, se necessário.Em segundo lugar, nos integraremos ao acima, uma implementação de ControlNet Jax/Flax de Face Hugging para um melhor controle tipográfico sobre as imagens geradas. To the orthographically-enanced SD above and as per Peter von Platen's suggestion, we also introduce the idea a typographic ControlNet trained on an synthetic dataset of images paired with multilingual specifications of the textual content, font taxonomy, weight, kerning, leading, slant and any other typographic attribute supported by the CSS3 Text, Fonts and Writing Modes modules, as implemented by the latest version of Chromium.