Перейти к основному содержимому

Подходы к решению

Скользящее окно

Поскольку мы уже умеем решать задачу классификации изображений, то мы могли бы сопоставить каждому пикселю тот класс, который ему назначает классификационная сеть, если её применить к квадратному фрагменту изображения с центром в интересуемом пикселе. Тогда для сегментации всего изображения нам бы пришлось просканировать изображение квадратной областью, вычисляя для каждого положения свой класс.

Это очень неэффективное решение, поскольку пришлось бы производить классификацию столько раз, сколько у нас пикселей. При этом классификатору пришлось бы выделять одни и те же признаки для пересекающихся фрагментов.

Сеть из свёрток

Мы могли бы к изображению применить серию свёрток, как показано ниже (источник):

Каждая свёртка должна иметь шаг (stride) 1 и использовать дополнение вокруг границ (padding), чтобы размер выхода совпадал с размером входа. Такой подход эффективнее, чем первый, поскольку признаки, извлекаемые для соседних пикселей, вычисляются однократно и переиспользуются. Тем не менее, этот подход очень затратен по памяти и вычислениям, поскольку предполагает многократную обработку тензоров с высоком разрешении исходного изображения.

Кодировщик-декодировщик

Третий подход также использует свёрточную архитектуру, но предполагает постепенное уменьшение разрешения, а затем возврат к исходному разрешению, как показано ниже (источник):

Благодаря тому, что пространственное разрешение снижается, у нас появляется возможность эффективно произвести вычисление сложных признаков. Эта архитектура и заложена в основу основных методов сегментации.

Классификационные сети далее векторизуют это представление, но в случае сегментации, поскольку нам нужно выдать результат в виде тензора такого же пространственного размера, как входное изображение, поэтому далее к этим признакам применяется декодировщик, состоящий из блоков, повышающих разрешение (upsampling).

Особенность сегментации

Ограничение предложенной архитектуры заключается в том, что мы по промежуточному представлению в низком разрешении (результат действия кодировщика) пытаемся восстановить выход в высоком разрешении. Это неизбежно будет приводить к потере пространственной информации и неточностям в извлечении границ объектов. Разные методы сегментации, о которых будет рассказано далее, по-разному решают эту проблему.