Генерация текста на изображении – на мой взгляд одна из самых сложных задач в genAI. О ней сегодня будет разговор подробнее.
Во-первых, как проблемы могут встретиться в задаче?
Дополнительные действия со стороны пользователя для определения ключевых слов (GlyphDraw, TextDiffuser), а в работе GlyphControl создание глиф изображения для запоминания текста после OCR черными буквами на белом фоне по технологии ControlNet
Ограничение сценарной генерации (по большому промпту)
Невозможно менять исходное изображение в режиме диалога, указывая на ошибки самой модели
Все это, так или иначе, решают авторы статьи TextDiffuser-2. Вместе с этим, они также обеспечивают улучшение своей прошлой работы TextDiffuser в вариации стиля текста, так как отказываются от маски сегментации текста
Спойлер, какой результат получится по итогу работы над TextDiffuser-2:
Как именно авторы добиваются такого результата?
Вдохновленным шумом LLM весь 2023 год, чувакам в мете приходит просто гениальная идея: зачем использовать трансформер для распознавания ключевых слов и смешивания с диффузией, если можно использовать декодер (они используют vicuna) для генерации координат, которые позже появятся на сгенерированном изображении, а затем заиспользовать умную токенизацию второй языковой моделью, которая включит эти позиции в информацию для диффузии
Теперь по порядку
Юзер подает на вход промпт, конечно, он должен включать в себя специальные токены (ключевые слова или промпт), все мы это знаем из использования больших декодеров
Vicuna учится ходить по нескольким сценариям, когда юзер либо уже представил ключевые слова и остается сгенерировать только координаты, либо по промпту следует определить, как ключевое слово, так и координаты к нему
Далее происходит умная токенизация, плюсы такого похода в том, что мы можем уже учитывать позицию текста для картинки, а второй плюс в том, что такого рода токенизация просто исключает орфографические ошибки. Мы представляем каждую букву, как отдельный токен, и позиция тоже является отдельным токеном
Дальше диффузия учится как обычно, когда через клип энкодер подкидывается в cross-attention текст
Красивые метрики:
Ссылка на репозиторий с кодом и демо
Ссылка на модель на huggingface
Ссылка на статью