Повышение разрешения
Как мы видели, базовая архитектура сегментационной сети состоит из кодировщика, постепенно снижающего пространственное разрешение, после которого следует декодировщик, возвращающий разрешение к исходному [1]:
Для уменьшения разрешения (downsampling) в кодировщике можно использовать свёртки с шагом (stride) больше единицы, а также операции пулинга.
Рассмотрим методы повышения пространственного разрешения (upsampling, unpooling, upscaling) в декодировщике.
Задачей повышения разрешения является перевод внутреннего представления изображения из низкого разрешения в высокое: зная значения активаций на грубой сетке значений, требуется восстановить недостающие значения на более мелкой сетке:
Для этого нам нужно воспользоваться тем или иным методом интерполяции промежуточных значений по опорным значениям грубой сетки (чаще всего выполняемой для каждого канала независимо). Поскольку интерполяция будет неточной, часто после интерполяции ставят обучаемую свёртку, настраиваемой немного уточнять результаты интерполяции.
Далее будут описаны популярные методы повышения разрешения.
Bed of nails
Метод bed of nails просто заполняет детальную сетку значений нулями, а потом подставляет значения грубой сетки в соответствующие пространственные позиции (после перемасштабирования). Вот как выглядит результат работы при переводе сетки 2x2 в сетку 5x5:
В случае, если после перемасштабирования обновлённые координаты элементов грубой сетки не идеально соответствуют координатам в мелкой сетке, применяется округление координат, чтобы они всегда были целыми числами.
Max unpooling
Bed of nails - очень грубый метод интерполяции, поэтому в представленном виде он почти не используется. Вместо этого он применяется в декодировщике как симметричная операция к максимизирующему пулингу кодировщика. Позиции, на которых был достигнут максимум пулинга, сохраняются, а при повышении разрешения элементы помещаются в соответствующие позиции [2]. Этот метод называется max unpooling.