InstantID: Zero-shot Identity-Preserving Generation in Seconds #face_id #paper
Еще одна статья, решающая задачу ID customization (перевод облика персонажа из одного стилевого домена в другой с сохранением его Identity). Начало 2024 года, 11к звезд на💻 Github.
Схема обучения и архитектура InstantID довольно простая. В основе лежит SDXL, авторы предлагают внедрять информацию об Identity персонажа двумя вариантами. а) Первый - IP-Adapter, позволяющий объединить текстовую информацию с эмбеддингом лица, полученный из face recognition model. б) Второй - IdentityNet. На деле это кастомизированный под свои нужды ControlNet, принимающий на вход 5 keypoint-ов лица в качестве дополнительного кондишена ControlNet-а и всё те же эмбеддинги лица из face recognition model вместо текстовых эмбеддингов промта. Авторы намеренно берут только 5 ключевых точек лица, в попытке повысить гибкость алгоритма и добиться его робастности для изображений, где лицо занимает малую часть.
Обучались только Image Adapter часть IP-Adapter-а и IdentityNet. Для дообучения использовались LAION-Face 50М датасет и были собраны 10М изображений с людьми из интернета без дополнительного кропа по лицам.
В результате имеем сильный алгоритм, хорошо показывающий себя как с точки зрения сохранения Identity лица, так и с точки зрения следования промту, задающему стилистику финального избражения.
🤗 Hugging face & demo
💻 Github
📜Paper
@gentech_lab
Еще одна статья, решающая задачу ID customization (перевод облика персонажа из одного стилевого домена в другой с сохранением его Identity). Начало 2024 года, 11к звезд на
Схема обучения и архитектура InstantID довольно простая. В основе лежит SDXL, авторы предлагают внедрять информацию об Identity персонажа двумя вариантами. а) Первый - IP-Adapter, позволяющий объединить текстовую информацию с эмбеддингом лица, полученный из face recognition model. б) Второй - IdentityNet. На деле это кастомизированный под свои нужды ControlNet, принимающий на вход 5 keypoint-ов лица в качестве дополнительного кондишена ControlNet-а и всё те же эмбеддинги лица из face recognition model вместо текстовых эмбеддингов промта. Авторы намеренно берут только 5 ключевых точек лица, в попытке повысить гибкость алгоритма и добиться его робастности для изображений, где лицо занимает малую часть.
Обучались только Image Adapter часть IP-Adapter-а и IdentityNet. Для дообучения использовались LAION-Face 50М датасет и были собраны 10М изображений с людьми из интернета без дополнительного кропа по лицам.
В результате имеем сильный алгоритм, хорошо показывающий себя как с точки зрения сохранения Identity лица, так и с точки зрения следования промту, задающему стилистику финального избражения.
📜Paper
@gentech_lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Методы удаления объектов из изображений #removers_обзор
Основная задача заключается в удалении выделенного объекта из изображения с помощью предоставленной маски. Рассмотрели следующие методы: LaMa, MAT, MI-GAN, Latent Diffusion Model (LDM), ZITS, FcF-Inpainting и Manga Inpainting.
Для оценки качества использовались два набора данных с объектами масштабов
Мы пронаблюдали, что размер удаляемого объекта существенно влияет на качество: с увеличением масштаба объектов возрастает вероятность появления блюра и артефактов. Частой причиной этих недостатков являются тени и рефлексы удаляемого объекта, которые модели пытаются сгенерировать заново. По скорости работы на
В итоге, для задач, требующих минимизации количества артефактов при допустимом небольшом блюре, рекомендуем использовать ZITS. Если приоритетом является общее качество при небольшой вероятности артефактов, тут FcF-Inpainting является оптимальным выбором.
@gentech_lab
Основная задача заключается в удалении выделенного объекта из изображения с помощью предоставленной маски. Рассмотрели следующие методы: LaMa, MAT, MI-GAN, Latent Diffusion Model (LDM), ZITS, FcF-Inpainting и Manga Inpainting.
Для оценки качества использовались два набора данных с объектами масштабов
0.5
и 0.25
на сгенерированном фоне. Метрики включали долю наличия блюра Blur, артефактов Artifacts и успешных удалений Good. Результаты показали, что LaMa(код) часто оставляет заметный блюр. MAT(код) и MI-GAN(код) создают более чёткие изображения, но могут вводить артефакты. LDM(код) имеет небольшое количество артефактов и меньший блюр по сравнению с LaMa. ZITS(код) минимизирует артефакты, но оставляет небольшой блюр. FcF-Inpainting(код) продемонстрировал наилучшие результаты по визуальному восприятию, хотя иногда возникают артефакты. Manga Inpainting(код) не подходит для цветных изображений, так как обучен на чёрно-белых комиксах.Мы пронаблюдали, что размер удаляемого объекта существенно влияет на качество: с увеличением масштаба объектов возрастает вероятность появления блюра и артефактов. Частой причиной этих недостатков являются тени и рефлексы удаляемого объекта, которые модели пытаются сгенерировать заново. По скорости работы на
gpu
A100
самыми быстрыми оказались MI-GAN и FcF-Inpainting, потребляя минимальное количество памяти, тогда как LDM оказался самым медленным и требовательным к ресурсам.В итоге, для задач, требующих минимизации количества артефактов при допустимом небольшом блюре, рекомендуем использовать ZITS. Если приоритетом является общее качество при небольшой вероятности артефактов, тут FcF-Inpainting является оптимальным выбором.
@gentech_lab
Implicit Style-Content Separation using B-LoRA #paper
Еще одна статья (март 2024) про генерацию картинок с заданными объектами в заданном стиле. Является развитием идеи ZipLoRA. Аналогично сделано на основе SDXL. И точно так же используется механизм LoRA, в инференсе используются одновременно 2 обученных матрицы - одна для объекта, другая - для стиля.
В отличие от предыдущих подходов не требуется дополнительный этап дообучения двух матриц LoRA вместе, но каждую по отдельности (объект и стиль) - по-прежнему учить надо. Суть оптимизации заключается в том, что обученные матрицы LoRA накладываются не на все блоки attention, а только на 2 конкретных, в одном из которых обрабатывается информация об объекте, а в другом - о стиле. Авторы провели подробное исследование, чтобы найти в каких именно блоках attention-а это происходит. Основная часть статьи - как раз обоснование выбора этих блоков.
Есть репозиторий с кодом, код запускается и работает, результаты из статьи в немного худшем качестве, но воспроизводятся. Есть демо на HF, с некоторым набором предварительно обученных моделей.
В качестве недостатка можно отметить, что под стилем понимался цвет объекта, из чего следует проблема (которую сами же авторы и отмечают), что стиль, заключенный не в цвете, а, например, в форме объекта - может оказаться в других блоках, и тогда метод не сработает.
🤗 HF demo
💻 Github
📜Paper
@gentech_lab
Еще одна статья (март 2024) про генерацию картинок с заданными объектами в заданном стиле. Является развитием идеи ZipLoRA. Аналогично сделано на основе SDXL. И точно так же используется механизм LoRA, в инференсе используются одновременно 2 обученных матрицы - одна для объекта, другая - для стиля.
В отличие от предыдущих подходов не требуется дополнительный этап дообучения двух матриц LoRA вместе, но каждую по отдельности (объект и стиль) - по-прежнему учить надо. Суть оптимизации заключается в том, что обученные матрицы LoRA накладываются не на все блоки attention, а только на 2 конкретных, в одном из которых обрабатывается информация об объекте, а в другом - о стиле. Авторы провели подробное исследование, чтобы найти в каких именно блоках attention-а это происходит. Основная часть статьи - как раз обоснование выбора этих блоков.
Есть репозиторий с кодом, код запускается и работает, результаты из статьи в немного худшем качестве, но воспроизводятся. Есть демо на HF, с некоторым набором предварительно обученных моделей.
В качестве недостатка можно отметить, что под стилем понимался цвет объекта, из чего следует проблема (которую сами же авторы и отмечают), что стиль, заключенный не в цвете, а, например, в форме объекта - может оказаться в других блоках, и тогда метод не сработает.
📜Paper
@gentech_lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Visual Instruction Tuning (LLAVA) #VLM_обзор #paper
Статья 2023-его года опубликованная исследователями из Microsoft Research. LLAVA – это идейное продолжение BLIP 2. Процесс обучения опять состоит из двух стадий: 1) Pre-training for Feature Alignment и 2) Fine-tuning End-to-End, однако данные на которых обучается модель, а также количество обучаемых компонентов различаются.
На первом этапе LLM и Vision Encoder замораживаются (обучается только проекция W), на этой стадии система учится переводить представления из Vision Encoder в пространство токенов языковой модели. Благодаря этой проекции токены из Vision Encoder можно подавать в LLM вместе с текстовым промптом. Таким образом утилизируются знания, содержащиеся в весах языковой модели. На этом этапе система учится на парах вида
Второй этап – разморозка LLM и продолжение тренировки с LM loss. Также важное отличие второго этапа от первого заключается в том, что в качестве данных используются диалоги состоящие из нескольких пар вида
Благодаря синергии LLAVA и GPT-4 получившаяся модель стала SOTA (на момент выхода статьи) на ScienceQA, а так же показывает конкурентное качество на других бэнчмарках. Датасет, код и модели выложены в опенсорс. Подход обрёл популярность и на дату выхода поста (то есть через полтора года после выхода статьи) на сайт huggingface.com загружено более двух тысяч моделей с LLAVA в названии.
🔥 Project
💻 Github
📜 Paper
@gentech_lab
Статья 2023-его года опубликованная исследователями из Microsoft Research. LLAVA – это идейное продолжение BLIP 2. Процесс обучения опять состоит из двух стадий: 1) Pre-training for Feature Alignment и 2) Fine-tuning End-to-End, однако данные на которых обучается модель, а также количество обучаемых компонентов различаются.
На первом этапе LLM и Vision Encoder замораживаются (обучается только проекция W), на этой стадии система учится переводить представления из Vision Encoder в пространство токенов языковой модели. Благодаря этой проекции токены из Vision Encoder можно подавать в LLM вместе с текстовым промптом. Таким образом утилизируются знания, содержащиеся в весах языковой модели. На этом этапе система учится на парах вида
<вопрос + картинка, ответ>
, при чём вопросы к картинкам сгенерированы GPT-4 "вслепую", только по текстовым описаниям изображений. Для обучения используется Language Modeling loss.Второй этап – разморозка LLM и продолжение тренировки с LM loss. Также важное отличие второго этапа от первого заключается в том, что в качестве данных используются диалоги состоящие из нескольких пар вида
<вопрос, ответ>
. Эти диалоги, как и одно-ходовые диалоги используемые на первом этапе получены с помощью GPT-4, что обеспечивает высокое качество синтетических данных и, как следствие, улучшает качество обучаемой модели.Благодаря синергии LLAVA и GPT-4 получившаяся модель стала SOTA (на момент выхода статьи) на ScienceQA, а так же показывает конкурентное качество на других бэнчмарках. Датасет, код и модели выложены в опенсорс. Подход обрёл популярность и на дату выхода поста (то есть через полтора года после выхода статьи) на сайт huggingface.com загружено более двух тысяч моделей с LLAVA в названии.
🔥 Project
📜 Paper
@gentech_lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Visual Style Prompting with Swapping Self-Attention #paper
Очередная статья (февраль 2024) про генерацию картинок в заданном стиле. Сделано на основе SDXL. Является развитием одновременно двух направлений: Style Aligned (в части замены значений в блоках attention) и B-LoRA (в части выбора блоков attention для изменения).
На вход подается референсная картинка (с которой копируется стиль) + текстовый промпт для генерации новой картинки. Во время инференса — внутри U-net делается замена значений в self-attention блоках (queries от генерируемой картинки — остаются неизменными, keys/values — берутся от референсной картинки).
Приводится интересное интуитивное объяснение, в каких именно слоях U-net надо делать замену self-attention:
bottleneck-блоки — содержат сжатую информацию обо всей картинке, поэтому их копирование приводит к "content leakage", когда вместо переноса стиля — просто копируется исходная картинка.
downstream-блоки — содержат сырые, неструктурированные фичи, их копирование приводит к сильным искажениям в картинке.
upstream-блоки — чем ближе блок к концу, тем более тонкие детали они прорисовывают, соответственно, копирование нескольких последних блоков — дает нужный баланс переноса стиля из референсной картинки и следования текстовому промпту.
💻 Github
📜 Paper
@gentech_lab
Очередная статья (февраль 2024) про генерацию картинок в заданном стиле. Сделано на основе SDXL. Является развитием одновременно двух направлений: Style Aligned (в части замены значений в блоках attention) и B-LoRA (в части выбора блоков attention для изменения).
На вход подается референсная картинка (с которой копируется стиль) + текстовый промпт для генерации новой картинки. Во время инференса — внутри U-net делается замена значений в self-attention блоках (queries от генерируемой картинки — остаются неизменными, keys/values — берутся от референсной картинки).
Приводится интересное интуитивное объяснение, в каких именно слоях U-net надо делать замену self-attention:
bottleneck-блоки — содержат сжатую информацию обо всей картинке, поэтому их копирование приводит к "content leakage", когда вместо переноса стиля — просто копируется исходная картинка.
downstream-блоки — содержат сырые, неструктурированные фичи, их копирование приводит к сильным искажениям в картинке.
upstream-блоки — чем ближе блок к концу, тем более тонкие детали они прорисовывают, соответственно, копирование нескольких последних блоков — дает нужный баланс переноса стиля из референсной картинки и следования текстовому промпту.
📜 Paper
@gentech_lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
FreeTuner: Any Subject in Any Style with Training-free Diffusion #paper
Cтатья (май 2024) про генерацию картинок в заданном стиле, в основе SD1.5. На вход подается картинка референсного объекта, картинка стиля, и текстовый промпт. На выходе генерируется референсный объект, перерисованный в другом стиле (картинка стиля), и помещенный в другой контекст (заданный промптом). Плюс можно указывать координаты на картинке, где хотим в результате видеть объект.
Весь пайплайн разбивается на 3 стадии:
Пре-процессинг:
Конечная цель — нахождение маски объекта в латентном пространстве, с учетом того, что можно указать произвольное место на таргетной картинке. Для этого последовательно определяются bounding box объекта, делается сегментация, вычисляется маска объекта, она переносится в новое место на картинке, и все это инвертируется из пиксельного пространства в латентное.
Генерация контента (первая часть шагов денойзинга):
Конечная цель — создать примерный образ объекта, чтобы были прорисованы крупномасштабные фичи. Для этого делается множественное обусловливание на референсную картинку: заменяются карты cross-attention и self-attention, а также сами латентные значения. Кроме того, в формуле classifier-free guidance предсказания шума добавляется дополнительный компонент — функция энергии, рассчитываемая на основе cross-attention и маски объекта.
Генерация стиля (оставшаяся часть шагов денойзинга):
Конечная цель — дорисовать мелкие фичи объекта, но уже в другом стиле. На каждом шаге делается декодирование промежуточного латента в пиксельное пространство и считаются Style Guidance (разность с картинкой стиля) и Content Preservation Guidance (разность с референсным объектом). В качестве энкодера используется VGG-19. Через него прогоняется текущее предсказание модели, картинка объекта и картинка стиля. Style Guidance и Content Preservation Guidance считаются как разность фичей по всем слоям декодера, внутри пар (предсказание/стиль) и (предсказание/объект) соответственно.
Кода нет. Основной минус алгоритма — референсный объект переносится просто по маске, его можно перекрасить, но нельзя изменить (то есть нельзя поменять позу человека, добавить элемент одежды или заменить собаку на кошку).
📜 Paper
@gentech_lab
Cтатья (май 2024) про генерацию картинок в заданном стиле, в основе SD1.5. На вход подается картинка референсного объекта, картинка стиля, и текстовый промпт. На выходе генерируется референсный объект, перерисованный в другом стиле (картинка стиля), и помещенный в другой контекст (заданный промптом). Плюс можно указывать координаты на картинке, где хотим в результате видеть объект.
Весь пайплайн разбивается на 3 стадии:
Пре-процессинг:
Конечная цель — нахождение маски объекта в латентном пространстве, с учетом того, что можно указать произвольное место на таргетной картинке. Для этого последовательно определяются bounding box объекта, делается сегментация, вычисляется маска объекта, она переносится в новое место на картинке, и все это инвертируется из пиксельного пространства в латентное.
Генерация контента (первая часть шагов денойзинга):
Конечная цель — создать примерный образ объекта, чтобы были прорисованы крупномасштабные фичи. Для этого делается множественное обусловливание на референсную картинку: заменяются карты cross-attention и self-attention, а также сами латентные значения. Кроме того, в формуле classifier-free guidance предсказания шума добавляется дополнительный компонент — функция энергии, рассчитываемая на основе cross-attention и маски объекта.
Генерация стиля (оставшаяся часть шагов денойзинга):
Конечная цель — дорисовать мелкие фичи объекта, но уже в другом стиле. На каждом шаге делается декодирование промежуточного латента в пиксельное пространство и считаются Style Guidance (разность с картинкой стиля) и Content Preservation Guidance (разность с референсным объектом). В качестве энкодера используется VGG-19. Через него прогоняется текущее предсказание модели, картинка объекта и картинка стиля. Style Guidance и Content Preservation Guidance считаются как разность фичей по всем слоям декодера, внутри пар (предсказание/стиль) и (предсказание/объект) соответственно.
Кода нет. Основной минус алгоритма — референсный объект переносится просто по маске, его можно перекрасить, но нельзя изменить (то есть нельзя поменять позу человека, добавить элемент одежды или заменить собаку на кошку).
📜 Paper
@gentech_lab
OmniGen: Unified Image Generation #paper
Совсем свежая статья (сентябрь 2024), которая предлагает новый метод генерации изображений, открывающий радикально новые возможности для решения задач компьютерного зрения с помощью генеративных моделей.
Архитектура модели: трансформер (инициализирован весами Phi–3), VAE (взят из SDXL, заморожен) в качестве image encoder. На вход модель принимает текст и картинки (в любом количестве и в любом порядке), при этом картинки кодируются с помощью VAE, а затем проецируются в пространство текстовых токенов. Для текста используется маска Causal Attention, а для токенов картинки — Bi-directional. Так как модель диффузионная, то в неё на каждом шаге также подаются шум и timestep.
Модель обучается с помощью MSE, как FLUX.1 или SD3, по методу rectified flow. В качестве данных для тренировки используются классические датасеты содержащие картинки и их описания, а также специальные датасеты для различных задач: image editing, conditional generation, etc.
Получившаяся в результате модель позволяет не только генерировать изображения по тексту, но и использовать при этом различные вспомогательные данные, а также может решать любые задачи в сфере компьютерного зрения, которые можно представить в формате задачи генерации. Помимо этого, благодаря использованию мощной LM, модель показывает способности к размышлению и in-context learning.
💻 Github (обещают выложить веса и код)
📜 Paper
@gentech_lab
Совсем свежая статья (сентябрь 2024), которая предлагает новый метод генерации изображений, открывающий радикально новые возможности для решения задач компьютерного зрения с помощью генеративных моделей.
Архитектура модели: трансформер (инициализирован весами Phi–3), VAE (взят из SDXL, заморожен) в качестве image encoder. На вход модель принимает текст и картинки (в любом количестве и в любом порядке), при этом картинки кодируются с помощью VAE, а затем проецируются в пространство текстовых токенов. Для текста используется маска Causal Attention, а для токенов картинки — Bi-directional. Так как модель диффузионная, то в неё на каждом шаге также подаются шум и timestep.
Модель обучается с помощью MSE, как FLUX.1 или SD3, по методу rectified flow. В качестве данных для тренировки используются классические датасеты содержащие картинки и их описания, а также специальные датасеты для различных задач: image editing, conditional generation, etc.
Получившаяся в результате модель позволяет не только генерировать изображения по тексту, но и использовать при этом различные вспомогательные данные, а также может решать любые задачи в сфере компьютерного зрения, которые можно представить в формате задачи генерации. Помимо этого, благодаря использованию мощной LM, модель показывает способности к размышлению и in-context learning.
📜 Paper
@gentech_lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
ZeST: Zero-Shot Material Transfer from a Single Image #paper
Статья (апрель 2024) про перенос материала с одной картинки на другую. Написана в соавторстве с Stability AI. Реализация сделана на основе SDXL Inpainting. Не требуется дообучения, все происходит в момент инференса.
На вход подаются 2 картинки: объект и материал. На выходе генерируется объект с измененным материалом, но весь окружающий фон — остается неизменным.
Пайплайн состоит из нескольких частей:
— картинка материала проходит через CLIP image encoder, чтобы получить эмбединг материала, который потом подается в cross-attention;
— по картинке объекта вычисляется карта глубины, которая подается в ControlNet;
— дополнительно по картинке объекта считается маска объект/фон, затем объект переводится в grayscale, фон остается неизменным;
— и все это (эмбединг материала, карта глубины , grayscale объект + маска фона) подается в Diffusion Inpaining.
Демо на HF работоспособное, объект действительно перекрашивается. Из минусов я бы отметил, что из-за бинарной маски объекта на границе явно видны артефакты. Но, кажется, это можно поправить легким размытием маски.
🤗 HF demo
💻 Github
📜Paper
@gentech_lab
Статья (апрель 2024) про перенос материала с одной картинки на другую. Написана в соавторстве с Stability AI. Реализация сделана на основе SDXL Inpainting. Не требуется дообучения, все происходит в момент инференса.
На вход подаются 2 картинки: объект и материал. На выходе генерируется объект с измененным материалом, но весь окружающий фон — остается неизменным.
Пайплайн состоит из нескольких частей:
— картинка материала проходит через CLIP image encoder, чтобы получить эмбединг материала, который потом подается в cross-attention;
— по картинке объекта вычисляется карта глубины, которая подается в ControlNet;
— дополнительно по картинке объекта считается маска объект/фон, затем объект переводится в grayscale, фон остается неизменным;
— и все это (эмбединг материала, карта глубины , grayscale объект + маска фона) подается в Diffusion Inpaining.
Демо на HF работоспособное, объект действительно перекрашивается. Из минусов я бы отметил, что из-за бинарной маски объекта на границе явно видны артефакты. Но, кажется, это можно поправить легким размытием маски.
📜Paper
@gentech_lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM