Взгляд в будущее сегментации инстансов в реальном времени

Обновлять:

  • 2020/07/17: Добавьте краткое описание SpatialEmbedding (ICCV 2019), один восходящий подход

Сегментация экземпляров - это сложная задача компьютерного зрения, которая требует прогнозирования экземпляров объектов и их попиксельной маски сегментации. Это делает его гибридом семантической сегментации и обнаружения объектов.

С тех пор, как была изобретена Mask R-CNN, самым современным методом, например сегментацией, в основном была маска RCNN и ее варианты (PANet, Mask Score RCNN и т. Д.). Он использует подход обнаружения, а затем сегмента, сначала выполняется обнаружение объекта для извлечения ограничивающих рамок вокруг каждого экземпляра объекта, а затем выполняется двоичная сегментация внутри каждого ограничивающего прямоугольника для разделения переднего плана (объекта) и фона.

Существуют и другие методы сегментации экземпляров, отличные от нисходящего подхода обнаружение затем сегментирование (или сегментация путем обнаружения). Одним из таких примеров является фокусировка на пикселе путем формулирования сегментации экземпляра как проблемы присваивания пикселей снизу вверх, как это сделано в SpatialEmbedding (ICCV 2019). Но такие методы обычно имеют более низкую производительность, чем SOTA с последующим обнаружением сегментов, и мы не будем вдаваться в подробности в этом посте.

Однако Mask RCNN довольно медленная и исключает использование многих приложений реального времени. Кроме того, маски, предсказываемые функцией Mask RCNN, имеют фиксированное разрешение и, следовательно, недостаточно уточнены для больших объектов сложной формы. Была волна исследований по одноэтапной сегментации экземпляров, подпитываемая достижениями в методах обнаружения объектов без привязки (таких как CenterNet и FCOS. См. Мои слайды для быстрого введения в объект без привязки. обнаружение). Многие из этих методов быстрее и точнее, чем Mask RCNN, как показано на изображении ниже.

В этом блоге будут рассмотрены последние достижения в сегментировании одноэтапных экземпляров с акцентом на представление маски - один из ключевых аспектов сегментации экземпляров.

Локальная маска и глобальная маска

Один из основных вопросов, который следует задать при сегментации экземпляров, - это представление или параметризация масок экземпляров: 1) следует ли использовать локальные маски или глобальные маски и 2) как представлять / параметризовать маску.

Существует два основных способа представления маски экземпляра: локальные маски и глобальные маски. В конечном итоге нам нужна глобальная маска, которая имеет такой же пространственный размер, что и входное изображение, хотя разрешение может быть меньше, например 1/4 или 1/8 исходного изображения. У него есть естественное преимущество в том, что оно имеет одинаковое разрешение (и, следовательно, функции фиксированной длины) для больших и маленьких объектов. Это не принесет в жертву разрешению для более крупных объектов, а фиксированное разрешение позволяет выполнять пакетную обработку для оптимизации. Локальная маска обычно более компактна в том смысле, что у нее нет чрезмерных границ, как у глобальной маски. Он должен использоваться с местоположением маски для восстановления в глобальную маску, а размер локальной маски будет зависеть от размера объекта. Но для эффективного пакетирования маски экземпляров требуют параметризации фиксированной длины. Самое простое решение - изменить размер маски экземпляра до фиксированного разрешения изображения, как это принято в Mask RCNN. Как мы увидим ниже, существуют и более эффективные способы параметризации локальных масок.

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

Методы на основе локальной маски

Методы, основанные на локальных масках, выводят маски экземпляров непосредственно для каждого локального региона.

Контуры с явным кодированием

Ограничивающая рамка в некотором смысле представляет собой грубую маску, которая приближает контур маски с минимальным ограничивающим прямоугольником. ExtremeNet (Обнаружение объектов снизу вверх путем группирования крайних и центральных точек, CVPR 2019) выполняет обнаружение с использованием четырех крайних точек (таким образом, ограничивающая рамка с 8 степенями свободы вместо обычных 4 степеней свободы), и эта более богатая параметризация может быть естественным образом расширяется до восьмиугольной маски, расширяя крайнюю точку в обоих направлениях на соответствующем крае до сегмента 1/4 всей длины края.

С тех пор существует серия работ, пытающихся закодировать / параметризовать контуры маски экземпляра в коэффициенты фиксированной длины, учитывая различную основу декомпозиции. Эти методы регрессируют центр каждого экземпляра (не обязательно центр bbox) и контур относительно этого центра. ESE-Seg (Explicit Shape Encoding for Real-Time Instance Segmentation, ICCV 2019) разрабатывает сигнатуру формы внутреннего центрального радиуса для каждого экземпляра и сопоставляет ее с полиномами Чебышева. PolarMask (PolarMask: Single Shot Instance Segmentation с полярным представлением, CVPR 2020) использует лучи с постоянными углами от центра для описания контура. FourierNet (FourierNet: компактное представление маски, например, сегментация с использованием декодеров дифференцируемых форм) вводит декодер формы контура с использованием преобразования Фурье и обеспечивает более плавные границы, чем PolarMask.

Эти методы обычно используют коэффициенты от 20 до 40 для параметризации контуров маски. Их легко сделать вывод и легко оптимизировать. Однако очевидны и их недостатки. Во-первых, визуально все они выглядят - скажем честно - довольно ужасно. Они не могут точно изобразить маску и не могут описать предметы, имеющие отверстия в центре.

Лично я считаю, что эта работа симпатична, но у нее мало будущего. Явное кодирование сложной топологии масок экземпляров или их контуров невозможно.

Структурированный 4D тензор

TensorMask (TensorMask: A Foundation for Dense Object Segmentation, ICCV 2019) - одна из первых работ, демонстрирующих идею прогнозирования плотной маски путем прогнозирования маски в каждом местоположении карты объектов. TensorMask по-прежнему прогнозирует маску по интересующей области вместо глобальной маски, и он может выполнять сегментацию экземпляра без запуска обнаружения объекта.

TensorMask использует структурированные 4-мерные тензоры для представления масок в пространственной области (2D-итерация по всем возможным местам во входном изображении и 2D, представляющая маску в каждом месте), а также вводит выровненное представление и тензор bipyramid для восстановления пространственных деталей, но эти операции выравнивания делают сеть даже медленнее, чем двухэтапная маска R-CNN. Кроме того, чтобы получить хорошую производительность, его необходимо обучить по расписанию, которое в шесть раз длиннее, чем стандартный конвейер обнаружения объектов COCO (6-кратное расписание).

Компактное кодирование по маске

Маски естественных объектов не являются случайными и похожи на естественные изображения, маски экземпляров находятся в гораздо более низком внутреннем измерении, чем размер пиксельного пространства. MEInst (Mask Encoding for Single Shot Instance Segmentation, CVPR 2020) преобразует маску в компактное и фиксированное размерное представление. С помощью простого линейного преобразования с помощью PCA MEInst может сжать локальную маску 28x28 в вектор признаков с размером 60. В статье также была предпринята попытка прямой регрессии вектора признаков размером 28x28 = 784 на одноступенчатом детекторе объектов (FCOS), а также были получены приемлемые результаты с падением от 1 до 2 точек AP. Это означает, что прямое предсказание масок большой размерности (в естественном представлении на TensorMask) не совсем невозможно, но сложно оптимизировать. Компактное представление масок упрощает оптимизацию, а также ускоряет выполнение во время логического вывода. Он наиболее похож на Mask RCNN и может напрямую использоваться с большинством других алгоритмов обнаружения объектов.

Методы на основе глобальной маски

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

Прототипы и коэффициенты

YOLACT (YOLACT: Real-time Instance Segmentation, ICCV 2019) - один из первых методов, пытающихся выполнить сегментацию экземпляров в реальном времени. YOLACT разделяет сегментацию экземпляров на две параллельные задачи, генерируя набор масок прототипа и прогнозируя коэффициенты маски для каждого экземпляра. Маски прототипов генерируются с помощью FCN и могут напрямую извлекать выгоду из достижений в семантической сегментации. Коэффициенты прогнозируются как дополнительные функции ограничивающей рамки. За этими двумя параллельными этапами следует этап сборки: простая линейная комбинация, реализованная путем умножения матриц, и операция обрезки с предсказанными ограничивающими рамками для каждого экземпляра. Операция обрезки снижает нагрузку на сеть по подавлению шума за пределами ограничивающего прямоугольника, но все же обнаруживает некоторую утечку, если ограничивающий прямоугольник включает часть другого экземпляра того же класса.

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

Оглядываясь назад на InstanceFCN (полностью сверточные сети, чувствительные к экземплярам, ​​ECCV 2016) и последующее исследование FCIS (полностью сверточная семантическая сегментация с учетом экземпляров, CVPR 2017) MSRA, они кажутся частным случаем YOLACT. И InstanceFCN, и FCIS используют FCN для создания нескольких чувствительных к экземпляру карт оценок, которые содержат относительные положения экземпляров объектов, а затем применяют модуль сборки к выходным экземплярам объектов. Чувствительные к положению карты оценок можно рассматривать как маски прототипа, но вместо изученных линейных коэффициентов IntanceFCN и FCIS используют фиксированный набор операций пространственного объединения для объединения чувствительных к положению масок прототипа.

BlendMask (BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation, CVPR 2020) основан на YOLACT, но вместо того, чтобы предсказывать один скалярный коэффициент для каждой маски прототипа, BlendMask предсказывает низкое разрешение ( 7x7) карта внимания для смешивания масок в ограничивающей рамке. Эта карта внимания прогнозируется как объект большого размера (7x7 = 49-d), прикрепленный к каждому ограничивающему прямоугольнику. Интересно, что BlendMask использует 4 маски прототипа, но работает даже только с 1 маской прототипа. CenterMask (CenterMask: сегментация единичного экземпляра с точечным представлением, CVPR 2020) работает почти точно так же и явно использует 1 маску прототипа (называемую глобальной картой значимости). CenterMask использует CenterNet в качестве основы, в то время как BlendMask использует аналогичную одноступенчатую FCOS без привязки в качестве основы.

Обратите внимание, что и BlendMask, и CenterMask разработали дальнейшие зависимости от обнаруженного ограничивающего прямоугольника. Карта внимания или маска формы должны быть масштабированы до того же размера, что и ограничивающая рамка, перед смешиванием с обрезанной маской прототипа.

CondInst (условные свертки для сегментации экземпляров) делает еще один шаг вперед и полностью устраняет любую зависимость от ограничивающих рамок. Вместо того, чтобы собирать обрезанные маски прототипа, он заимствует идею динамических фильтров и предсказывает параметры облегченной головки FCN. Головка FCN имеет три уровня и всего 169 параметров. Удивительно то, что авторы показали, что даже когда маска прототипа представляет собой только двухканальный CoordConv, сеть предсказывает хорошие результаты с 31 AP на COCO. Мы обсудим это в разделе неявное представление ниже.

И BlendMask / CenterMask, и CondInst являются расширением YOLACT.

  • BlendMask / CenterMask пытается смешать обрезанные маски прототипа с маской с более мелким зерном в каждом блоке. YOLACT - это особый случай BlendMask или CenterMask, где разрешение карты внимания составляет 1x1.
  • CondInst пытается смешать обрезанные маски прототипов с более глубокими контурами, состоящими из динамически предсказываемых фильтров. YOLACT - это особый случай CondInst, где FCN - это сверточный слой 1 1x1.

Использование ветвления для прогнозирования масок прототипов позволяет этим методам извлекать выгоду из использования вспомогательной задачи семантической сегментации (обычно с повышением AP на 1-2 балла). Его также можно естественным образом расширить для выполнения паноптической сегментации.

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

  • YOLACT использует 32 прототипа маски + 32-dim mask coeff + box кадрирование;
  • BlendMask использует 4 маски прототипа + 4 карты внимания 7x7 + рамку кадрирования;
  • CondInst использует correConv + 3 1x1 динамический преобразователь (169 параметров).

SOLO и SOLOv2: сегментирование объектов по местоположению

СОЛО единственный в своем роде и заслуживает отдельного раздела. Статьи глубоко проницательны и очень хорошо написаны. Для меня они - произведение искусства (как еще один из моих любимых CenterNet).

Первый автор статьи опубликовал свой ответ о мотивации СОЛО на Zhihu (知 乎), который я цитирую ниже:

Семантическая сегментация позволяет прогнозировать семантическую категорию для каждого пикселя изображения. Аналогичным образом, например, при сегментации, мы предлагаем прогнозировать «категорию экземпляра» каждого пикселя. Теперь ключевой вопрос: как определить категорию экземпляра?

Если два экземпляра объекта во входном изображении имеют одинаковую форму и положение, они являются одним и тем же экземпляром. Любые два разных экземпляра имеют разное положение или форму. А поскольку форму трудно описать в целом, мы приближаем форму к размеру.

Таким образом, «категория экземпляров» определяется местоположением и размером. Местоположение классифицируется по его центральному положению. SOLO аппроксимирует центральное положение, разделяя входное изображение на сетку из ячеек S x S и, таким образом, классов S². Размер обрабатывается путем назначения объектов разного размера на разные уровни пирамиды функций (FPN). Таким образом, для каждого пикселя SOLO нужно только решить, какой ячейке сетки SxS и какому уровню FPN назначить пиксель (и соответствующую категорию экземпляра). Таким образом, SOLO необходимо выполнить только две задачи классификации на уровне пикселей, аналогично семантической сегментации. Теперь еще один ключевой вопрос: как представлены маски?

Маски экземпляров представлены непосредственно глобальными масками, сложенными в каналы S². Это гениальный дизайн, который одновременно решает множество проблем. Во-первых, многие предыдущие исследования хранят 2D-маски в виде плоского вектора, и это быстро становится трудноразрешимым, когда разрешение маски увеличивается, что приводит к резкому увеличению количества каналов. Глобальная маска естественным образом сохраняет пространственные отношения внутри пикселей маски. Во-вторых, генерация глобальной маски может сохранить высокое разрешение маски. В-третьих, количество прогнозируемых масок является фиксированным, независимо от объектов на изображении. Это похоже на работу с прототипами масок, и мы увидим, как эти два потока объединяются в SOLOv2.

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

Компромисс разрешения

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

Идея четырехмерного структурированного тензора в TensorMask имеет смысл в теории, но ее трудно реализовать на практике в текущих рамках тензорного формата NHWC. Уплощение двумерного тензора с пространственной семантикой в ​​одномерный вектор неизбежно приведет к потере некоторых пространственных деталей (аналогично семантической сегментации с полностью подключенными сетями) и имеет свои ограничения даже при представлении изображения с низким разрешением 128x128. Либо 2D локации, либо 2D маски должны жертвовать разрешением. Большинство предыдущих исследований считали само собой разумеющимся, что разрешение местоположения более важно и уменьшает / сжимает размеры маски, ухудшая выразительность и качество масок. TensorMask пытался найти баланс, но утомительные операции привели к медленному обучению и выводам. SOLO понимает, что нам не нужна информация о местоположении с высоким разрешением, и заимствует данные из YOLO, сжимая местоположение в крупную сетку S². Таким образом, SOLO сохраняет высокое разрешение глобальных масок.

Я наивно думал, что SOLO, возможно, может работать, предсказывая глобальные маски S² x W x H как дополнительную сплющенную WH-размерную функцию, прикрепленную к каждой из сеток S² в YOLO. Я был неправ - формулировка глобальных масок в полном разрешении вместо плоского вектора на самом деле является ключом к успеху SOLO.

Разделение соло и динамического соло

Как упоминалось выше, глобальные маски, предсказываемые SOLO в каналах S², довольно избыточны и разрежены. Даже при грубом разрешении S = ​​20 имеется 400 каналов, и маловероятно, что на изображении так много объектов, чтобы каждый из каналов содержал действительную маску экземпляра.

В несвязанном SOLO исходный тензор M формы H x W x S² заменяется двумя тензорами X и Y, каждый из которых имеет форму H x W x S. Для объекта, расположенного в ячейке сетки (i, j), M_ij аппроксимируется поэлементное умножение X_i ⊗ Y_j. Это сокращает количество каналов с 400 до 40, и эксперименты показывают, что производительность отсутствует.

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

В SOLOv2 есть две ветви, ветвь функций и ветвь ядра. Ветвь функций предсказывает маски прототипа E, а ветвь ядра предсказывает ядро ​​размера D в каждой из ячеек сетки S². Этот подход динамического фильтра является наиболее гибким, как мы видели в разделе YOLACT выше. Когда D = E, это простая линейная комбинация масок-прототипов (или 1x1 conv), такая же, как YOLACT. В статье также были опробованы ядра 3x3 conv (D = 9E). Это можно сделать еще дальше, предсказав веса и смещения облегченного многослойного FCN, такого как CondInst.

Теперь, когда ветвь глобальной маски отделена от своего выделенного местоположения, мы можем наблюдать, что появляющиеся маски-прототипы демонстрируют более сложные шаблоны, чем в SOLO. Они по-прежнему чувствительны к положению и больше похожи на YOLACT.

Неявное представление масок

Идея динамических фильтров, используемых в CondInst и SOLOv2, поначалу кажется великолепной, но на самом деле она довольно проста, если рассматривать ее как естественное расширение списка коэффициентов, используемых для линейной комбинации.

Вы также можете подумать, что мы параметризовали маску с помощью коэффициентов или карт внимания или, в конечном итоге, в динамические фильтры для небольшой головы нейронной сети. Идея использования нейронной сети для динамического кодирования геометрической сущности также недавно изучается в 3D-обучении. Традиционно 3D-фигура кодируется с помощью вокселей, облаков точек или сетки. Компания Occupancy Networks (Occupancy Networks: Learning 3D Reconstruction in Function Space, CVPR 2019) предложила закодировать форму в нейронную сеть, рассматривая непрерывную границу принятия решений глубокой нейронной сети как трехмерную поверхность. Сеть берет точку в 3D и сообщает, находится ли она на границе закодированной 3D-формы. Этот подход позволяет извлекать трехмерные сетки с любым разрешением во время вывода.

Можем ли мы изучить нейронную сеть, состоящую из динамических фильтров для каждого экземпляра объекта, чтобы сеть принимала точку в 2D и выводила, принадлежит ли точка этой маске объекта или нет? Это естественным образом выводит глобальную маску и может иметь любое желаемое разрешение. Оглядываясь назад на исследование абляции CondInst, можно увидеть, что даже без маски прототипа, но только с вводом CoordConv (который служит для выполнения однородной пространственной выборки). Поскольку эта операция отделена от разрешения масок прототипа, было бы интересно ввести только CoordConv с более высоким разрешением, чтобы получить глобальные маски с более высоким разрешением, чтобы увидеть, улучшит ли это производительность. Я твердо верю, что будущее за неявным кодированием маски экземпляра.

Последнее слово

Большая часть одноэтапной сегментации экземпляров основана на обнаружении объектов без привязки, таких как CenterNet и FCOS. Возможно, неудивительно, что многие из приведенных выше статей взяты из той же лаборатории в Университете Аделаиды, которая создала FCOS. Недавно они открыли исходный код своей платформы по адресу https://github.com/aim-uofa/AdelaiDet/.

Многие из последних методов являются быстрыми и обеспечивают производительность в реальном или близком к реальному времени (30+ FPS). NMS обычно является узким местом для сегментации экземпляров в реальном времени. Чтобы добиться действительно производительности в реальном времени, YOLACT использует Fast NMS, а SOLOv2 использует Matrix NMS. Я расскажу о различных методах NMS в другом посте.

Выводы

  • Предсказать многомерный вектор признаков, например, по маске, сложно. Почти все методы сосредоточены на том, как сжать маску в представление более низкой размерности. Методы обычно используют от 20 до 200 параметров для описания одной маски с разной степенью успеха. Я думаю, что это фундаментальный предел минимального количества параметров для представления формы маски.
  • Созданные вручную параметрические контуры не очень перспективны.
  • Локальные маски по своей сути зависят от обнаружения объекта. Я ожидаю увидеть больше исследований по непосредственному созданию глобальных масок.
  • Неявное представление маски выразительно, компактно и может генерировать маски с любым разрешением. CondInst может создавать глобальные маски с еще более высоким разрешением, используя возможности неявного представления.
  • SOLO прост, а SOLOv2 быстрый и точный. Я ожидаю увидеть больше исследований в этом направлении в будущем.

использованная литература