Sparse R-CNN: новый вид детекторов от создателей TikTok
Сегодня рассмотрим метод, предложенный исследователями из сразу из четырех организаций, одна из которых ByteDance AI Lab (компания известна приложением TikTok). Они предложили метод детекции объектов на фото, который называется Sparse R-CNN (не путать с ранее уже существовавшим Sparse R-CNN, который использовал sparse-свёртки в 3D Сomputer Vision для сегментации объектов на сканах датасета ScanNet).
Новый метод достигает почти state-of -the-art performance на задаче детектирования объектов и при этом использует только не плотные и обучаемые bounding box proposals.
Релевантные исследования
Проведем небольшой обзор существующих методов детекции и их классификации относительно работы с bounding box proposals.
Плотный метод
Один из широко используемых подходов — это одностадийные детекторы: они в один шаг предсказывают класс и координаты по якорным bounding box, плотно покрывающим картинку различными масштабами и различными соотношениями сторон. Представителями этого класса являются SSD, YOLO, и т.п.
Рассмотрим особенности на примере YOLO. Конечной целью этого алгоритма является предсказание класса объекта на картинке и координат bounding box, который соответствует объекту. Любой из этих bounding box’ов характеризуется следующими параметрами:
- координаты центра (bx, by)
- ширина (bw)
- высота (bh)
- лейбл c, соответствующий классу из обучающей выборки (например: машина, светофор или пешеход).
Дополнительно к этому обучается параметр pc, который соответствует вероятности того, что внутри bounding box находится объект переднего плана (т.е. возможна ситуация, что P(C=”Машина”) = 0.8, но pc = 0.1, в этом случае такой объект будет отметаться)
Такой метод является плотным, поскольку он не нацелен на поиск “интересных” регионов (regions of interest) на картинке для дальнейшего предсказания, а сразу даёт оценку для каждой заданной области. В случае с YOLO, картинка разбивается сеткой на 19×19 областей, но в общем случае таких областей может быть столько же, сколько пикселей на картинке, т.е. W×H. Для каждой клетки в сетке выполняется предсказание k bounding box (например, 5). Исходя из этого получается огромное число W×H×k областей на картинке, для каждой из которых одностадийный детектор должен сделать предсказание.
Переходный dense-to-sparse метод
Существуют также двустадийные детекторы, в своей архитектуре они опираются на пропозалы, сгенерированные с помощью RPN, которая была предложена в статье Faster R-CNN. Такие детекторы доминируют в в качестве уже несколько лет.
Благодаря RPN внутри нейронной сети, последующие части получают разреженный (т.е. не плотный) набор proposals-объектов переднего плана из плотного набора, которые обрабатываются в последующих слоях.
Эти пропозалы получаются таким же способом как и случае одностадийных детекторов, но теперь класс объекта c на этом этапе не предсказывается, а остаётся долько objectness score , т.е. pc. После получения плотного набора proposals, они фильтруются, используя objectness score и меру наложения друг на друга. Затем этот разреженный набор используется для уточнения координат и классов объектов.
Разреженный метод
Авторы этой статьи категоризуют принцип их новой Sparse R-CNN, как расширение существующей парадигмы перехода от основательно плотного набора proposals к dense-to-sparse подходу, новым принципом основательно разреженным.
В обозреваемой работе не используется RPN, её функция заменена генерацией небольшого количества proposals (авторы указывают число 100). Эти bounding box’ы получены с помощью двух обучаемых частей нейронной сети и называются авторами proposal boxes и proposal features.
Первая часть состоит из 4х значений (x,y,h,w) для каждого пропозала, вторая из векторов длиной 256, в которых закодировано внутреннее представление содержимого этих bounding box’ов (постановка объекта на сцене, его форма, др. характеристики). Обучаемые пропозалы используются как разумная статистика для дальнейшего улучшения предсказаний, а обучаемые proposal features реализуют механизм внимания (attention mechanism). Этот подход вдохновлен более ранней статьёй DETR, где он так же был использован для задачи детекции. Непосредственное применение механизма внимания происходит в голове нейронной сети, которую авторы называют dynamic instance interactive head, рассмотрим ее далее.
Особенности предложенной модели
Как сказано в названии статьи, предлагаемая модель end-to-end, и её архитектура довольно элегантная. Она состоит из FPN-генератора фичей из изображений, двух упомянутых выше proposal boxes и proposal features, а также dynamic instance interactive head, которая является основным вкладом данной статьи в усовершествование архитектур нейронных сетей.
Dynamic instance interactive head
К данным N bounding box proposals, Sparse R-CNN сначала применяет RoIAlign, чтобы извлечь фичи из FPN для каждого региона из пропозалов. Каждый такой регион затем подается в уникальную динамически генерируемую голову для того, чтобы получить точные координаты bounding box’а и класс объекта. Голова генерируется с помощью proposal feature для этого конкретного пропозала.
Proposal features используются как веса для свёртки: на картинке выше они обозначены как “Params.”. Фичи каждого региона RoI обрабатываются с помощью соответствующих ему proposal features внутри свёртки. Таким способом области фичей, с наибольшей информацией об объектах переднего плана, вносят большую лепту в итоговые предсказания. Модуль self-attention встроен в эту динамическую голову: он отвечает за установление связей между объектами на фото и влияет на итоговое предсказание с помощью упомянутой свёртки.
Основные результаты
Авторы приводят несколько сравнительных таблиц, которые демонстрируют производительность нового метода. Sparse R-CNN сравнивается с известными представителями мира детекции: RetinaNet, Faster R-CNN и DETR в двух вариациях бэкбона ResNet50 и ResNet100.
По данным таблицы можно судить, что Sparse R-CNN превосходит RetinaNet и Faster R-CNN в обоих конфигурациях R50 и R100, но он также показывает довольно близкие результаты в сравнении с DETR-based архитектурами.
Согласно авторам статьи, модель DETR на практике dense-to-sparse, набором разреженных запросов она взаимодействует с глобальными (а значит плотными) фичами картинки. Отсюда вытекает новизна статьи в сравнении с DETR.
На картинке выше можно качественно оценить результат работы модели на картинках из COCO Dataset. В первом столбце белым цветом обозначены выученные proposals: они генерируются уникально для каждой новой картинки. В следующих столбцах изображены окончательные, улучшенные из proposals bounding box’ы. Они отличаются, поскольку алгоритм итеративно улучшается: здесь изображены результаты с нескольких таких шагов.
Show me the code!
В заключение хочу сказать, что в конце 2020-го мы видим довольно много статей, которые применяют архитектуру трансформеров к визуальным данным. Трансформеры хорошо зарекомендовали себя на полях NLP и теперь они постепенно входят в мир обработки изображений. Теперь вы знаете как используя трансформеры создать одностадийный детектор, который работает по качеству сравнимо с двустадийными.
Детали реализации этого метода вы можете найти в репозитории авторов, который базируется на коде модели DETR из статьи группы FAIR и detectron2: https://github.com/PeizeSun/SparseR-CNN