TextDiffuser-2: генерация текста диффузиями

Генерация текста на изображении — на мой взгляд одна из самых сложных задач в genAI. О ней сегодня будет разговор подробнее.

Во-первых, как проблемы могут встретиться в задаче?

  • Дополнительные действия со стороны пользователя для определения ключевых слов (GlyphDraw, TextDiffuser), а в работе GlyphControl создание глиф изображения для запоминания текста после OCR черными буквами на белом фоне по технологии ControlNet

  • Ограничение сценарной генерации (по большому промпту)

  • Невозможно менять исходное изображение в режиме диалога, указывая на ошибки самой модели

Все это, так или иначе, решают авторы статьи TextDiffuser-2. Вместе с этим, они также обеспечивают улучшение своей прошлой работы TextDiffuser в вариации стиля текста, так как отказываются от маски сегментации текста

Спойлер, какой результат получится по итогу работы над TextDiffuser-2:

6cf525047352a3585440be8ed3054d22.png

Как именно авторы добиваются такого результата?

Вдохновленным шумом LLM весь 2023 год, чувакам в мете приходит просто гениальная идея: зачем использовать трансформер для распознавания ключевых слов и смешивания с диффузией, если можно использовать декодер (они используют vicuna) для генерации координат, которые позже появятся на сгенерированном изображении, а затем заиспользовать умную токенизацию второй языковой моделью, которая включит эти позиции в информацию для диффузии

целостный пайплайн обучения

целостный пайплайн обучения

Теперь по порядку

  • Юзер подает на вход промпт, конечно, он должен включать в себя специальные токены (ключевые слова или промпт), все мы это знаем из использования больших декодеров

  • Vicuna учится ходить по нескольким сценариям, когда юзер либо уже представил ключевые слова и остается сгенерировать только координаты, либо по промпту следует определить, как ключевое слово, так и координаты к нему

Вот так выглядит обучающий сет

Вот так выглядит обучающий сет

  • Далее происходит умная токенизация, плюсы такого похода в том, что мы можем уже учитывать позицию текста для картинки, а второй плюс в том, что такого рода токенизация просто исключает орфографические ошибки. Мы представляем каждую букву, как отдельный токен, и позиция тоже является отдельным токеном

  • Дальше диффузия учится как обычно, когда через клип энкодер подкидывается в cross-attention текст

Красивые метрики:

метрики

метрики

Ссылка на репозиторий с кодом и демо

Ссылка на модель на huggingface

Ссылка на статью

© Habrahabr.ru