Вышла интересная работа по удалению и добавлению объектов на фото: https://objectdrop.github.io/
Преимущества
- простой и элегантный подход к сбору данных
- хорошие результаты на двух противоположных задачах
- понятно написанная статья
- указаны детали обучения
Недостатки
- некорректные сравнения с моделями, решающими другие задачи и имеющими совсем другие ограничения
- в задаче добавления объекта нет сравнений с подходящими моделями
- нет кода, весов и датасета
Удаление объектов
Рассмотрим пример со стаканом охлаждённого чая на гранитном столе (первое изображение). Чтобы реалистично удалить стакан с фотографии, нужно ещё избавиться от его тени и отражения на поверхности стола.
Мы хотим, чтобы пользователь указывал только маску или контуры объекта, а модель автоматически удаляла все проекции объекта со всех поверхностей. Существующие методы удаления объектов (object removal/inpainting) с этим не справляются, удаляя только ту часть, которая находится непосредственно внутри маски. Можно отдельно удалить тени, но для этого нам потребуется сегментационную маска тени, да и отражения никуда не денутся.
Авторы придумали элегантное решение, как без особых модификаций существующей модели, решить такую задачу. Основная идея - не пытаться по существующим данным выучить механизм создания теней и отражений, а просто собрать небольшой датасет реальных фотографий для целевой задачи. Оказалось достаточно (всего!) 2500 фотографий сцен с объектом и без него, оба фото идентичны, сняты на статичную камеру при одинаковом освещении и с тем же фоном, отличаются лишь наличием объекта. На самом деле даже с 1000 фото заметны улучшения!
Перейдём к обучению ObjectDrop’а, авторы берут предобученную латентно-диффузионную модель inpainting’а (похожую на SDXL), на вход подают зашумленное латентное представление фотографии без объекта, обуславливают фотографией с объектом, маской объекта, пустым текстовым промптом и учат убирать шум.
Дообучение на собранном датасете сильно улучшает несколько автоматических метрик (таблица 2), а финальная модель людям нравится намного больше, чем Emu Edit и MGIE (таблица 3). Кроме этого, и для модели SD Inpainting v1 дообучение на ObjectDrop датасете даёт заметное улучшение (таблица 5). Качество замеряли на своём отложенном датасете неизвестного размера и на датасете Emu Edit из 264 примеров.
Ниже пример сравнения с MGIE и Emu Edit. Стоит отметить, что этим моделям не нужна маска объекта, они понимают текстовые инструкции, причём они умеют не только удалять объект, но и ещё по-всякому редактировать фото, например, изменять объекты или время года. Для ObjectDrop авторы получили маски по тексту с помощью SegmentAnything.
И ещё сравнение с базовой моделью: в нём второй и третий пример, на мой взгляд, странные, и у меня есть подозрение, что авторы указали силу закрашивания 0.99 вместо 1, поэтому SDXL Inpainting модель видит часть изображения под маской и может не удалить объект, а сгенерировать что-то с учётом этой части изображения.
Post #98
597