Автор: Александр Лекомцев Редактура: Илья Бакалец
Алгоритмы интерактивной сегментации позволяют пользователям с высокой вероятностью управлять прогнозами. Для них используется интерактивный ввод (обычно это клики) и прогон картинки через сеть несколько раз. Это отличает их от обычных алгоритмов сегментации, которые могут выводить маску сегментации только за один проход. Такое взаимодействие помогает выделить интересующий нас объект и исправить ошибки предсказания. Еще одна важная особенность данной группы алгоритмов — возможность сегментировать объекты, которых нет в обучающей выборке классов.
Рисунок 1. Пользователь убирает регионы с помощью одного negative click (сверху) и добавляет с помощью двух positive clicks
Интерактивную сегментацию используют для предварительной разметки данных. Сначала сеть, обученная на небольшой выборке, предсказывает маску, а затем уже человек правит эту маску. При использовании сетей для обычной сегментации маску тоже можно поправить, но это займет больше времени.
Рисунок 2. Схема инференса из другой статьи
Также этот метод сегментации применяется в различных фоторедакторах: с ним пользователь может выделять контур быстро при помощи всего одного клика.
Как обучать такой тип моделей?
В общих чертах все довольно просто: мы обучаем обычную сегментационную сеть, но после первого предсказания отправляем каждый сэмпл на ещё n итераций — закидываем дополнительным каналом в сетку выданную ей же маску с предыдущего шага, а еще закодированные клики как бы от “пользователя”. На самом деле мы получаем клики алгоритмически.
Как получить клики, закодировать их и передать в сеть? Рассмотрим сейчас это на примере конкретной архитектуры.
Авторы статьи старались улучшить существующие в 2021 году решения для интерактивной сегментации. С этой целью они сконцентрировались на трех важных пунктах: кодировании кликов, архитектуре и сэмплировании.
Важно понять, как кодировать клики до этой работы и передавать информацию о них в сеть.
Для передачи положительных и отрицательных кликов в сверточную сеть мы сначала должны закодировать их в пространственной форме. Вот пользователь увидел первый результат сегментации, оставил три клика, а теперь нужно закодировать их в “карту кликов”.
Рисунок 3. Разные варианты кодирования кликов
Для решения такой задачи самым распространенным способом долгое время считался distance transform: для каждого пикселя на изображении мы считаем расстояние до выделенных пикселей (чем ближе пиксель к клику, тем больше его значение). Альтернативный подход —подход, при котором мы берем вокруг кликов диски фиксированного радиуса. Диски можно целиком заполнить единицами или применить размытие по аналогии с первым вариантом.
Альтернативный подход более локальный. Авторы объясняют его большую эффективность следующим образом: при distance transform каждая добавленная точка сильно изменяет полученную “карту кликов”, а это путает сеть.
Отрицательные и положительные клики кодируются в две разные карты.