Команда исследователей лаборатории Huawei Bayer Lab и Швейцарской высшей технической школы Цюриха (ETH Zurich) представила WindowSeat — модель машинного обучения для удаления отражений с фотографий. Модель адаптировали для типичных пользовательских сценариев: съёмка из окна транспорта, фотографирование предметов через стекло витрин и снимки городских пейзажей.

Одна из проблем любительских фотографий — отражений в стёклах. Они портят кадр, особенно если делать снимки пейзажей в поезде, самолёте или автомобиле. Кроме того, отражения довольно сложно и долго убрать в фоторедакторах.
Качественных моделей машинного обучения для удаления отражений всё ещё нет из-за того, что сложно собрать качественный датасет с достаточным набором данных. В идеале нужен датасет с парами фотографий с отражением и без него. При этом у отражений есть свойство быстро меняться: листва колышется из-за ветра, мимо проходящие люди быстро меняются в кадре и возникают другие ситуации. По этой причины все существующие датасеты маленькие или содержат в себе много несовпадений.
Исследователи решили, что если набора данных нет, то его надо создать самостоятельно. Накладывать отражения на готовые фотографии не самое лучшее решение, потому что такие кадры выглядят неестественно. Решение проблемы стали фотореалистичные 3D-сцены в Blender с отражениями на стёклах. Авторы отмечают, что использовали Principled BSDF — универсальный шейдер, который относительно точно передаёт физические эффекты материалов, включая отражения, преломления и рассеивания. В результате получился набор данных из 25 тыс. рендеров.

После этого исследователи использовали синтетический датасет для обучения модели. При этом они решили взять за основу диффузионный трансформер Qwen-Image-Edit-2509 (12,5 млрд параметров), адаптированный для задач редактирования снимков, и с помощью LoRA-адаптера научили его удалять только отражения. Благодаря этому получилась модель, которая справляется с задачей всего за один «прогон» фотографии. Кроме того, обучали только 3,6% параметров Qwen-Image-Edit-250, а оставшиеся 95,7% квантизировали до 4 бит, чтобы модель поместилась в видеопамять обычной потребительской видеокарты.
WindowSeat адаптировали и для работы с фотографиями в высоком разрешении. Для этого алгоритм разделяет изображение на несколько плиток с фиксированным размером, прогоняет каждую часть через модель для удаления отражений и склеивает всё в итоговую картинку. Если базовых настроек не хватает для корректной работы, то с помощью команды --more-tiles можно увеличить количество плиток.


В тестах использовали видеокарту с 24 ГБ видеопамяти. При этом при пиковой нагрузке модель потребляла около 21 ГБ. В бенчмарках WindowSeat справляется с задачей лучше конкурентов и сохраняет детали.

Одну из версий WindowSeat исследователи опубликовали в открытом доступе по лицензии Apache 2.0. Все необходимые файлы можно найти в репозиториях на GitHub и Hugging Face. Более подробное описание самого метода доступно в тексте исследовательской работы.


Автор: daniilshat


