Добавление и передвижение объектов
Перейдём к более интересным задачам - добавлению и перемещению объектов на фотографии. Подробнее остановимся на добавлении, потому что перемещение - это просто удаление объекта из одной части фотографии, что мы уже умеем делать, и добавление его в другую часть.
Начнём снова с примера. Добавим на фотографию собаку. Фото слева выглядит нереалистично только из-за того, что у неё нет тени.
Как раз эту задачу авторы и решают: они учат модель добавлять тени и отражения к вставленному объекту. Сам объект почти не меняется: то есть тени от сцены на объект не добавятся и гармонизации не будет.
Из плюсов - объект остаётся почти неизменным, то есть модель его не пытается перерисовать. Из недостатков - нужно вручную вырезать объект, отрегулировать его размер, расположение на сцене, прогнать через авторскую модель и самостоятельно сделать гармонизацию. Кроме того, объект должен идеально вписываться в сцену: кривые края останутся кривыми, а пересечения с другими объектами на сцене не предусмотрены.
Чтобы обучить такую модель, нам нужно исходное реальное изображение с объектом и такое же, только без теней и отражений объекта.
2500 фотографий хватает, чтобы научиться удалять объект, но для вставки объекта этого недостаточно. Поэтому авторы сгенерировали ещё 350к изображений: с фотографии удалили объект, его тени и отражения, оставив сцену без объекта, и приклеили этот же вырезанный объект на полученную сцену. На этих изображениях они дообучили латентно-диффузионную модель так же, как модель для удаления объектов, только теперь они подают на вход зашумленное латентное представление реальной фотографии с объектом, обуславливают фотографией сцены с приклеенным объектом без тени и отражений, маской объекта, пустым текстовым промптом и учат убирать шум. Для дальнейшего улучшения качества авторы дообучили модель и на реальных 2500 парах фотографий из своего нового датасета.
Качество замеряли на 51 примере с известными входными и выходными изображениями, а также на 50 out-of-distribution примерах, где передвигали большие объекты, которых не было в тренировочном датасете. По всем автоматическим метрикам и предпочтению людей модель оказывается лучше, чем AnyDoor и Paint-by-Example.
На мой взгляд, сравнение странное, потому что AnyDoor и Paint-by-Example принимают картинку с объектом, без идеальной маски, в произвольном положении и произвольного размера и перерисовывают его в нужном виде, учитывая пересечения с другими объектами (пример работы Paint-by-Example показан на картинке с кедами, игрушкой и футболкой). Как и в задаче удаления объектов, авторы сравнились с моделями, решающими более широкие и сложные задачи. Кроме того, и на вход эти модели принимают совсем другие, более простые для пользователя вещи. Честнее и полезнее было бы сравниться с методами генерации теней, особенно учитывая то, что авторы мельком упоминают некоторые из них.
Перейдём к более интересным задачам - добавлению и перемещению объектов на фотографии. Подробнее остановимся на добавлении, потому что перемещение - это просто удаление объекта из одной части фотографии, что мы уже умеем делать, и добавление его в другую часть.
Начнём снова с примера. Добавим на фотографию собаку. Фото слева выглядит нереалистично только из-за того, что у неё нет тени.
Как раз эту задачу авторы и решают: они учат модель добавлять тени и отражения к вставленному объекту. Сам объект почти не меняется: то есть тени от сцены на объект не добавятся и гармонизации не будет.
Из плюсов - объект остаётся почти неизменным, то есть модель его не пытается перерисовать. Из недостатков - нужно вручную вырезать объект, отрегулировать его размер, расположение на сцене, прогнать через авторскую модель и самостоятельно сделать гармонизацию. Кроме того, объект должен идеально вписываться в сцену: кривые края останутся кривыми, а пересечения с другими объектами на сцене не предусмотрены.
Чтобы обучить такую модель, нам нужно исходное реальное изображение с объектом и такое же, только без теней и отражений объекта.
2500 фотографий хватает, чтобы научиться удалять объект, но для вставки объекта этого недостаточно. Поэтому авторы сгенерировали ещё 350к изображений: с фотографии удалили объект, его тени и отражения, оставив сцену без объекта, и приклеили этот же вырезанный объект на полученную сцену. На этих изображениях они дообучили латентно-диффузионную модель так же, как модель для удаления объектов, только теперь они подают на вход зашумленное латентное представление реальной фотографии с объектом, обуславливают фотографией сцены с приклеенным объектом без тени и отражений, маской объекта, пустым текстовым промптом и учат убирать шум. Для дальнейшего улучшения качества авторы дообучили модель и на реальных 2500 парах фотографий из своего нового датасета.
Качество замеряли на 51 примере с известными входными и выходными изображениями, а также на 50 out-of-distribution примерах, где передвигали большие объекты, которых не было в тренировочном датасете. По всем автоматическим метрикам и предпочтению людей модель оказывается лучше, чем AnyDoor и Paint-by-Example.
На мой взгляд, сравнение странное, потому что AnyDoor и Paint-by-Example принимают картинку с объектом, без идеальной маски, в произвольном положении и произвольного размера и перерисовывают его в нужном виде, учитывая пересечения с другими объектами (пример работы Paint-by-Example показан на картинке с кедами, игрушкой и футболкой). Как и в задаче удаления объектов, авторы сравнились с моделями, решающими более широкие и сложные задачи. Кроме того, и на вход эти модели принимают совсем другие, более простые для пользователя вещи. Честнее и полезнее было бы сравниться с методами генерации теней, особенно учитывая то, что авторы мельком упоминают некоторые из них.
🔥6❤2
Интересные демки работы FRESCO.
Нет, решать задачи за 30 секунд не нужно😆
Название расшифровывается как Spatial-Temporal Correspondence for Zero-Shot Video Translation и посвящена работа zero-shot транслированию видео при помощи диффузионных моделей.
Т.е. на вход какое-то видео + текстовый промпт -> на выходе изменённое видео.
Код есть🐍
Нет, решать задачи за 30 секунд не нужно
Название расшифровывается как Spatial-Temporal Correspondence for Zero-Shot Video Translation и посвящена работа zero-shot транслированию видео при помощи диффузионных моделей.
Т.е. на вход какое-то видео + текстовый промпт -> на выходе изменённое видео.
Код есть🐍
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8 5🙈1
На днях вышел новый мультимодальный бенчмарк SEED-Bench-2-Plus. Его цель – замер точности работы мультимодальных нейросетей на насыщенных текстом данных в трёх категориях: диаграммы, карты и веб-страницы.
Бенчмарк позиционируется как дополнение к выпущенному теми же авторами основному SEED-Bench-2. Видимо поэтому не очень много примеров, всего 2.3к. Ну и, возможно, было решено, что они достаточно сложные.
Не могут же они майнить Хирша, правда? 😳
Самое интересное в этой статье – сравнение реально всех SOTA моделей, даже ChatGPT и вышедшей за 3 дня😳 до бенчмарка SEED-X.
Всего проверяют 34 модели.
Примеры состоят из вопросов по изображениям с 4 вариантами ответов, см. первую пикчу.
А на следующей представлены итоговые результаты.
Интересно, что ChatGPT не первая и даже не вторая модель в подзадаче с веб-страницами и проигрывает ОС моделям. Что ещё раз намекает, как бы ни славились MLLM универсальностью и генерализацией, как бы ни были хороши коммерческие решения, модель всё ещё нужно выбирать конкретно под решаемую задачу.
В целом же, известно, что с такими данными все MLLM справляются со скрежетом и числа в лидерборде это лишний раз подтверждают.
Бенчмарк позиционируется как дополнение к выпущенному теми же авторами основному SEED-Bench-2. Видимо поэтому не очень много примеров, всего 2.3к. Ну и, возможно, было решено, что они достаточно сложные.
Самое интересное в этой статье – сравнение реально всех SOTA моделей, даже ChatGPT и вышедшей за 3 дня
Всего проверяют 34 модели.
Примеры состоят из вопросов по изображениям с 4 вариантами ответов, см. первую пикчу.
А на следующей представлены итоговые результаты.
Интересно, что ChatGPT не первая и даже не вторая модель в подзадаче с веб-страницами и проигрывает ОС моделям. Что ещё раз намекает, как бы ни славились MLLM универсальностью и генерализацией, как бы ни были хороши коммерческие решения, модель всё ещё нужно выбирать конкретно под решаемую задачу.
В целом же, известно, что с такими данными все MLLM справляются со скрежетом и числа в лидерборде это лишний раз подтверждают.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5🔥4❤2
Наткнулся на интересное исследование с ICLR – Vision Transformers Need Registers.
Оказывается, визуальные трансформеры в процессе обучения смекают, что не все токены одинаково полезны и учатся использовать малосодержательные для своих личных технических нужд – для сохранения туда глобальной информации об изображении.
Речь идёт об участках карт признаков, в которых чего-то полезного изначально мало (вроде заднего фона). На первой картинке можно увидеть визуализацию артефактов в этих областях.
Эффект появляется примерно в средних слоях, только в достаточно больших трансформерах (ViT >= L, OpenCLIP и DeiT-III >= B) и при достаточно долгих тренировках.
Эти артефакты вносят искажения и могут ухудшать результаты в некоторых downstream задачах.
Авторы делают логичный вывод - если модель вынуждена так хитро изворачиваться, значит ей чего-то в жизни явно не хватает.
Поэтому в качестве регистров добавляют обучаемые токены (см. пикчу 2), которые непосредственно в предсказании не участвуют, но выполняют техническую функцию (делать ViT счастливым). После этого изменения эффект пропадает. Ну и доказывается экспериментально, что в большинстве случаев от использования регистров есть прирост качества.
Самый интересный вопрос, будет ли этот эффект возникать в гибридных моделях, особенно в таких, где для подготовки патчей используются блоки со свёрточными слоями? Можно предположить, что естественные свойства свёрток и более качественные, плотные, инвариантные признаки сильно уменьшают вероятность возникновения этого эффекта. Было бы интересно исследовать, но, к сожалению, авторы вопроса гибридов совсем никак не касаются.
На лично нашей практике, такие модели показывают себя очень хорошо, по крайней мере на специальных задачах, сочетая все плюсы двух миров: хорошо и быстро сходятся, требуют намного меньшие объёмы данных и достигают как минимум сравнимой точности.
MiVOLO как раз именно из их числа 😄
Оказывается, визуальные трансформеры в процессе обучения смекают, что не все токены одинаково полезны и учатся использовать малосодержательные для своих личных технических нужд – для сохранения туда глобальной информации об изображении.
Речь идёт об участках карт признаков, в которых чего-то полезного изначально мало (вроде заднего фона). На первой картинке можно увидеть визуализацию артефактов в этих областях.
Эффект появляется примерно в средних слоях, только в достаточно больших трансформерах (ViT >= L, OpenCLIP и DeiT-III >= B) и при достаточно долгих тренировках.
Эти артефакты вносят искажения и могут ухудшать результаты в некоторых downstream задачах.
Авторы делают логичный вывод - если модель вынуждена так хитро изворачиваться, значит ей чего-то в жизни явно не хватает.
Поэтому в качестве регистров добавляют обучаемые токены (см. пикчу 2), которые непосредственно в предсказании не участвуют, но выполняют техническую функцию (делать ViT счастливым). После этого изменения эффект пропадает. Ну и доказывается экспериментально, что в большинстве случаев от использования регистров есть прирост качества.
Самый интересный вопрос, будет ли этот эффект возникать в гибридных моделях, особенно в таких, где для подготовки патчей используются блоки со свёрточными слоями? Можно предположить, что естественные свойства свёрток и более качественные, плотные, инвариантные признаки сильно уменьшают вероятность возникновения этого эффекта. Было бы интересно исследовать, но, к сожалению, авторы вопроса гибридов совсем никак не касаются.
На лично нашей практике, такие модели показывают себя очень хорошо, по крайней мере на специальных задачах, сочетая все плюсы двух миров: хорошо и быстро сходятся, требуют намного меньшие объёмы данных и достигают как минимум сравнимой точности.
MiVOLO как раз именно из их числа 😄
👍7🔥3🤔1
Очень классный жанр публикаций – это практические советы-рецепты в стиле "cookbook". Хорошо помню, что одной из первых прочитанных мной статей, в начале карьеры, была работа Иошуа Бенджио Practical Recommendations for Gradient-Based Training of Deep Architectures.
Мне это вспомнилось потому, что ребята из HuggingFace выпустили препринт: Что важно при создании визуально-языковых моделей?
Продолжая кулинарные аналогии, к сожалению, несмотря на аппетитное название, под крышкой кастрюли всего 6 рецептов. И не все из них интересные. Поэтому в посте я их немного переделал💊
Авторы делят архитектуры VLM моделей на 2 типа: cross-attention и полностью авторегрессионные. В первом варианте изображение кодируется энкодером и прокидывается в разные слои LLM через механизм внимания. Во втором выход энкодера объединяется с текстовыми эмбеддингами напрямую и всё подаётся на вход LLM.
Рецепты полезные, но не хватает более интенсивных экспериментов с визуальными моделями и LLM.
Вторая часть работы посвящена VLM, которая, понятное дело, натренирована с учётом всех найденных вещей – Idefics2. Метрики хорошие, правда на наших задачах она не взлетела вообще😳
Мне это вспомнилось потому, что ребята из HuggingFace выпустили препринт: Что важно при создании визуально-языковых моделей?
Продолжая кулинарные аналогии, к сожалению, несмотря на аппетитное название, под крышкой кастрюли всего 6 рецептов. И не все из них интересные. Поэтому в посте я их немного переделал
Авторы делят архитектуры VLM моделей на 2 типа: cross-attention и полностью авторегрессионные. В первом варианте изображение кодируется энкодером и прокидывается в разные слои LLM через механизм внимания. Во втором выход энкодера объединяется с текстовыми эмбеддингами напрямую и всё подаётся на вход LLM.
Рецепт: Для фиксированного количества параметров, качество LLM важнее, чем качество визуального энкодера.
Это проверяли на cross-attention архитектуре, остальное на авторегрессионной.
Рецепт: При применении более комплексных визуальных энкодеров качество растёт слабее, чем можно было бы ожидать. При попытке использовать огромную EVA-CLIP-5B, авторы получают точность даже хуже, чем у SigLIP-SO400M. Из чего делается вывод, что EVA-CLIP-5B сильно недотренирована и у коммьюнити до сих пор нет сильной фундаментальной визуальной модели.
Рецепт: Cross-attention архитектура работает лучше, чем авторегрессионная, если тренировать только новые слои (CA или проекционные). Но так сравнивать не совсем честно, т.к. тогда у первой тренируется 25% параметров, а у второй 15%. А разморозить целиком просто в лоб не получилось, потому что авторы не смогли стабилизировать тренировку авторегрессионной модели. В итоге, использовали LoRA (метод уменьшения количества тренируемых параметров модели). В таком варианте сильно лучше авторегресионный подход и он дал наилучшие результаты вообще.
Рецепт: Количество визуальных токенов важно для точности, но при этом когда их слишком
много, это ухудшает производительность и контекст может распухнуть. Если использовать Perceiver Resampler в качестве обучаемого пуллинга (операция уменьшения размерности входных данных, сохраняющая при этом важные характеристики), то 64 визуальных токена будет за глаза и качество вырастет.
Рецепт: Изначально визуальный энкодер SigLIP тренировался на квадратных изображениях 768х768. Адаптация его для работы с изображениями с сохранённым оригинальным соотношением сторон – это хорошая идея. Делают это через интерполяцию позиционных эмбеддингов и LoRA. Качество немного падает, но зато существенно эффективнее тренировка, инференс и расход памяти.
Рецепты полезные, но не хватает более интенсивных экспериментов с визуальными моделями и LLM.
Вторая часть работы посвящена VLM, которая, понятное дело, натренирована с учётом всех найденных вещей – Idefics2. Метрики хорошие, правда на наших задачах она не взлетела вообще
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4🤔2❤1
Пару недель назад вышел новый метод дистилляции диффузионных моделей Flash Diffusion, а сейчас подвезли демку для SD3!
Дистилляция занимает от пары десятков (SD1.5) до пары сотен (SDXL) GPU-часов, протестирована на множестве задач: text-to-image, inpainting, super resolution, face swap и на T2I адаптерах, а FID и CLIP-Score на COCO датасетах лучше, чем у других методов.
Авторы выложили код, в том числе и для обучения, модели (SD3, SDXL, Pixart-alpha) и онлайн-демо.
А умельцы уже добавили TinyAutoencoder для SD3, что ещё ускорило модель, попробуйте сами!
Дистилляция занимает от пары десятков (SD1.5) до пары сотен (SDXL) GPU-часов, протестирована на множестве задач: text-to-image, inpainting, super resolution, face swap и на T2I адаптерах, а FID и CLIP-Score на COCO датасетах лучше, чем у других методов.
Авторы выложили код, в том числе и для обучения, модели (SD3, SDXL, Pixart-alpha) и онлайн-демо.
А умельцы уже добавили TinyAutoencoder для SD3, что ещё ускорило модель, попробуйте сами!
Встречайте GigaCheck – наш внезапный, удивительный и потрясающий продукт для детектирования русскоязычных текстов, сгенерированных LLM.
Всего за год экспериментальный проект эволюционировал до серьёзного продукта и технологии с SOTA качеством среди всего известного на данный момент. Понимаю, заявление громкое, но подождите, мы в скорости выпустим статью и расставим все точки во флоатах.
То, что задача горячая, думаю, доказывать не нужно: чего сейчас только LLM ассистенты не делают за людей – и знакомятся, и дипломы пишут, и бизнес планируют. Не сомневаюсь, что вы встречали это в новостях.
Больше хочется поговорить про решаемость задачи. Мнения тут сильно разнятся – не специалисты почему-то зачастую крепко убеждены, что распознать текст, сгенерированный LLM очень просто, в то время как в профессиональной среде популярно ровно обратное мнение: задача нерешаема. Подливает масла в огонь и то, что OpenAI делали свой собственный детектор, но спустя непродолжительное время его спрятали, посчитав нерабочим.
В пабликах по всему Телеграму можно найти много достаточно близких мнений: раз, два, три... имя им легион.
Да, задача, безусловно, очень сложная, а ещё для решения требуется много данных, кропотливого труда, усердия и постоянной поддержки в проде.
Но, если очертить ей какие-то практические рамки, то всё меняется.
Сделаю маленькое отступление: во многих сферах, например, в вопросах противодействия угону автомобиля, известен такой феномен, что пытаться сделать защиту абсолютной – бессмысленно, если прямо очень понадобится, злоумышленники всё равно решат вопрос. У борьбы меча и щита просто нет конца, это основа мироздания. Но зато можно защититься в такой мере, что риски и затраты перевесят выгоду.
Тут история близкая. В практическом применении совершенный детектор не нужен. Нужно, чтобы текст для обхода детектора пришлось бы достаточно сильно исказить и он стал бесполезен для использования. Ну или вынудить переписывать и подбирать текст так долго, что гораздо дешевле окажется сразу написать самому.
Это та цель, которую мы преследовали, и, в рамках первой итерации, достигли.
Конечно, детектор ещё иногда ошибается (например, есть проблемы со стихами), но и мы ещё не закончили.
GigaCheck доступен:
- На сайте developers.sber.ru.
- Как Телеграм бот: @layer_ai_detector_bot
- Как API для бизнеса [скоро].
А ещё мы скоро выпустим дополнение – интервальную детекцию, которая позволяет работать со смешанными текстами.
Всего за год экспериментальный проект эволюционировал до серьёзного продукта и технологии с SOTA качеством среди всего известного на данный момент. Понимаю, заявление громкое, но подождите, мы в скорости выпустим статью и расставим все точки во флоатах.
То, что задача горячая, думаю, доказывать не нужно: чего сейчас только LLM ассистенты не делают за людей – и знакомятся, и дипломы пишут, и бизнес планируют. Не сомневаюсь, что вы встречали это в новостях.
Больше хочется поговорить про решаемость задачи. Мнения тут сильно разнятся – не специалисты почему-то зачастую крепко убеждены, что распознать текст, сгенерированный LLM очень просто, в то время как в профессиональной среде популярно ровно обратное мнение: задача нерешаема. Подливает масла в огонь и то, что OpenAI делали свой собственный детектор, но спустя непродолжительное время его спрятали, посчитав нерабочим.
В пабликах по всему Телеграму можно найти много достаточно близких мнений: раз, два, три... имя им легион.
Да, задача, безусловно, очень сложная, а ещё для решения требуется много данных, кропотливого труда, усердия и постоянной поддержки в проде.
Но, если очертить ей какие-то практические рамки, то всё меняется.
Сделаю маленькое отступление: во многих сферах, например, в вопросах противодействия угону автомобиля, известен такой феномен, что пытаться сделать защиту абсолютной – бессмысленно, если прямо очень понадобится, злоумышленники всё равно решат вопрос. У борьбы меча и щита просто нет конца, это основа мироздания. Но зато можно защититься в такой мере, что риски и затраты перевесят выгоду.
Тут история близкая. В практическом применении совершенный детектор не нужен. Нужно, чтобы текст для обхода детектора пришлось бы достаточно сильно исказить и он стал бесполезен для использования. Ну или вынудить переписывать и подбирать текст так долго, что гораздо дешевле окажется сразу написать самому.
Это та цель, которую мы преследовали, и, в рамках первой итерации, достигли.
Конечно, детектор ещё иногда ошибается (например, есть проблемы со стихами), но и мы ещё не закончили.
GigaCheck доступен:
- На сайте developers.sber.ru.
- Как Телеграм бот: @layer_ai_detector_bot
- Как API для бизнеса [скоро].
Интересный факт:
Ради интереса мы прогнали 220 000 текстов, взятых за последний месяц из крупных новостных изданий. Оказалось, что 6% из них были сгенерированы LLM, а в случае некоторых конкретных изданий эта доля больше трети!
А ещё мы скоро выпустим дополнение – интервальную детекцию, которая позволяет работать со смешанными текстами.
🔥12 7❤3