Интерактивная сегментация
Алгоритмы интерактивной сегментации позволяют пользователям с высокой вероятностью управлять прогнозами. Для них используется интерактивный ввод (обычно это клики) и прогон картинки через сеть несколько раз. Это отличает их от обычных алгоритмов сегментации, которые могут выводить маску сегментации только за один проход. Такое взаимодействие помогает выделить интересующий нас объект и исправить ошибки предсказания. Еще одна важная особенность данной группы алгоритмов — возможность сегментировать объекты, которых нет в обучающей выборке классов

Рисунок 1. Пользователь убирает регионы с помощью одного negative click (сверху) и добавляет с помощью двух positive clicks
Интерактивную сегментацию используют для предварительной разметки данных. Сначала сеть, обученная на небольшой выборке, предсказывает маску, а затем уже человек правит эту маску. При использовании сетей для обычной сегментации маску тоже можно поправить, но это займет больше времени.

Рисунок 2. Схема инференса из другой статьи
Также этот метод сегментации применяется в различных фоторедакторах: с ним пользователь может выделять контур быстро при помощи всего одного клика.
Training
Как обучать такой тип моделей?
В общих чертах все довольно просто: мы обучаем обычную сегментационную сеть, но после первого предсказания отправляем каждый сэмпл на ещё n итераций — закидываем дополнительным каналом в сетку выданную ей же маску с предыдущего шага, а еще закодированные клики как бы от “пользователя”. На самом деле мы получаем клики алгоритмически.
Как получить клики, закодировать их и передать в сеть? Рассмотрим сейчас это на примере конкретной архитектуры.
В общих чертах все довольно просто: мы обучаем обычную сегментационную сеть, но после первого предсказания отправляем каждый сэмпл на ещё n итераций — закидываем дополнительным каналом в сетку выданную ей же маску с предыдущего шага, а еще закодированные клики как бы от “пользователя”. На самом деле мы получаем клики алгоритмически.
Как получить клики, закодировать их и передать в сеть? Рассмотрим сейчас это на примере конкретной архитектуры.
Reviving Iterative Training with Mask Guidance for Interactive Segmentation (RITM)
Авторы статьи старались улучшить существующие в 2021 году решения для интерактивной сегментации. С этой целью они сконцентрировались на трех важных пунктах: кодировании кликов, архитектуре и сэмплировании.
Click encoding
Важно понять, как кодировать клики до этой работы и передавать информацию о них в сеть.
Для передачи положительных и отрицательных кликов в сверточную сеть мы сначала должны закодировать их в пространственной форме. Вот пользователь увидел первый результат сегментации, оставил три клика, а теперь нужно закодировать их в “карту кликов”.Авторы статьи старались улучшить существующие в 2021 году решения для интерактивной сегментации. С этой целью они сконцентрировались на трех важных пунктах: кодировании кликов, архитектуре и сэмплировании.
Для передачи положительных и отрицательных кликов в сверточную сеть мы сначала должны закодировать их в пространственной форме. Вот пользователь увидел первый результат сегментации, оставил три клика, а теперь нужно закодировать их в “карту кликов”.Авторы статьи старались улучшить существующие в 2021 году решения для интерактивной сегментации. С этой целью они сконцентрировались на трех важных пунктах: кодировании кликов, архитектуре и сэмплировании.

Рисунок 3. Разные варианты кодирования кликов
Для решения такой задачи самым распространенным способом долгое время считался distance transform: для каждого пикселя на изображении мы считаем расстояние до выделенных пикселей (чем ближе пиксель к клику, тем больше его значение). Альтернативный подход —подход, при котором мы берем вокруг кликов диски фиксированного радиуса. Диски можно целиком заполнить единицами или применить размытие по аналогии с первым вариантом.
Альтернативный подход более локальный. Авторы объясняют его большую эффективность следующим образом: при distance transform каждая добавленная точка сильно изменяет полученную “карту кликов”, а это путает сеть.
Отрицательные и положительные клики кодируются в две разные карты.
Альтернативный подход более локальный. Авторы объясняют его большую эффективность следующим образом: при distance transform каждая добавленная точка сильно изменяет полученную “карту кликов”, а это путает сеть.
Отрицательные и положительные клики кодируются в две разные карты.
Architecture
Предобучить сеть для интерактивной сегментации возможно на задаче обычной сегментации, инстанс или семантической. Затем можно имитировать поведение пользователя и доучить сеть уже для интерактивной сегментации. Но как передать в сеть карту кликов? Что сделать с изначальной обученностью сети на входе с тремя каналами?

Рисунок 4. Разные способы добавления информации о кликах в сеть
В статье рассмотрели три подхода:
- DMF. Сконкатенируем исходное изображение, маску с предыдущей итерации и клики, прогоним их через свертки 1x1 (нашу статью про виды сверток вы можете почитать тут). В результате мы получим трехканальный тензор, который подадим сети как обычное изображение.
- Conv1E. Также сконкатенируем все на входе, но изменим первую свертку так, чтобы она обрабатывала 5-канальный тензор на входе. Нужно пошаманить с learning rate, потому что мы добавим довольно сильное изменение в самом начале сети.
- Conv1S. Будем отдельно обрабатывать изображение и карту кликов. Затем обработаем карту так, чтобы иметь возможность просто сложить её с результатом обработки изображения. Получается, мы все еще вносим изменения в начале сети, но мы можем выбрать свой learning rate для новых весов без влияния на предобученные веса основной сети.

Рисунок 5. Метрики
Сравнение моделей мы можем увидеть на Рисунке 5. DT обозначает distance transform, Disc3/Disc5 — использование заполненной единицами окружности с радиусом 3 и 5 соответственно. Еще в таблице есть специфическая метрика NoC_{20}@90 — среднее количество кликов для получения IOU = 0.9. Каждый клик делается автоматически в центр самой большой “ошибочной” области.
Sampling
Для создания выборки с разметкой только для обычной сегментации на руках можно просто на каждой итерации выбирать случайные точки на областях, в которых сеть ошиблась. Но такой способ очень далек от реального выставления точек пользователем.
Чтобы учесть поведение пользователя, авторы обращаются к предложенному в этой статье подходу. Сначала задается изначальный набор кликов. Для этого алгоритм выбирает положительные и отрицательные клики на основе трех разных стратегий, которые пытаются охватить несколько шаблонов поведения пользователей: клики по границе объекта, удаление небольших ложноположительных регионов и т.д.
Чтобы учесть поведение пользователя, авторы обращаются к предложенному в этой статье подходу. Сначала задается изначальный набор кликов. Для этого алгоритм выбирает положительные и отрицательные клики на основе трех разных стратегий, которые пытаются охватить несколько шаблонов поведения пользователей: клики по границе объекта, удаление небольших ложноположительных регионов и т.д.

Рисунок 6. Алгоритм выбора точки для клика при обучении
Затем:
В статье добавили эрозию после второго шага. Это позволило меньше переобучаться под метрику (ведь в ее подсчете тоже выбирается центр области).
Клики, полученные алгоритмом выше, используются вместе со случайными для ускорения обучения, которое можно сделать более устойчивым.
- Выделяем все ошибочно классифицированные пиксели (Рисунок 6.a);
- Кластеризуем все ошибочные пиксели и находим самую большую группу (Рисунок 6.b);
- Выбираем клик — максимально удаленную от границ группы точку (Рисунок 6.с). Если клики уже были на предыдущих шагах, то максимизируется расстояние от остальных кликов в кластере до нового.
В статье добавили эрозию после второго шага. Это позволило меньше переобучаться под метрику (ведь в ее подсчете тоже выбирается центр области).
Клики, полученные алгоритмом выше, используются вместе со случайными для ускорения обучения, которое можно сделать более устойчивым.
Итоги
State-of-the-art решение получилось не только за счет описанных выше подходов — авторы также работали с данными, функцией потерь, архитектурой бэкбона. Но представленные идеи дают понимание того, как сети учатся для интерактивной сегментации и какие специфичные фишки есть в их улучшении.
И напоследок прикрепляем ссылки:
И напоследок прикрепляем ссылки:
- Оригинальная статья;
- Официальный репозиторий;
- Можно пощупать в Supervisely;
- Интересные решения той же задачи: SimpleClick и FocalClick.