Дорога к Sparse R-CNN - ключевые идеи и интуиция

Краткое объяснение прежних моделей SOTA для обнаружения объектов и нововведений, которые были внесены Sparse R-CNN.

Sparse R-CNN - это новый алгоритм SOTA, который был представлен на конференции 2021 года по компьютерному зрению и распознаванию образов (CVPR). Он быстрее и в некоторых случаях лучше своих предшественников. Но какие новые решения он предлагает и чем отличается от того, что было раньше? В этом блоге я попытаюсь объяснить, как развивалось обнаружение объектов, и, в конце концов, я покажу вам интуицию, лежащую в основе работы новой современной модели машинного обучения.

Двухэтапное обнаружение объекта

Алгоритмы двухэтапных групп обнаружения объектов сначала предлагают области, в которых наиболее вероятно будут находиться некоторые объекты. Первый под названием R-CNN был основан на выборочном поиске. Идея здесь проста, мы не хотим, чтобы наши коробки размещались

случайным образом, и мы не хотим их большого количества. Помните, что коробки могут быть маленькими или огромными, разной формы и положения. Вот почему лучше смотреть на цвет, текстуру и размер. Поэтому Регионы с функциями CNN (R-CNN) - отличное сочетание. Вместо сотен тысяч ящиков мы получаем всего около 2 тысяч густонаселенных ящиков. Однако этот алгоритм был очень медленным, занимая 40–50 секунд на изображение. Такая медленная обработка была затем ускорена преемниками Fast R-CNN и Faster R-CNN. В этом блоге я остановлюсь только на последнем.

Более быстрый R-CNN состоит из двух модулей: первый региональная сеть предложений (RPN), а второй использует объединение RoI, а затем классификацию и регрессию ограничивающих рамок. RPN на основе карт функций выводит

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

Одноэтапное обнаружение объекта

Двухэтапное обнаружение обычно более точное и точное, но ему не хватает скорости, чтобы использовать его в реальных сценариях реального времени. Самым известным одноэтапным алгоритмом обнаружения объектов является YOLO, который по своей простоте достигает высоких результатов при тестировании наборов данных. Это единая нейронная сеть, которая использует функции всего изображения для прогнозирования каждой ограничивающей рамки. Вот почему он подходит для работы в режиме реального времени. Однако у него есть некоторые ограничения, например, обнаружение более мелких объектов или объектов, расположенных близко друг к другу. Был разработан и улучшен алгоритм YOLO (на момент написания статьи существует 5 версий YOLO). Но я сосредоточусь на модели, на которую ссылается Sun et al., 2021, то есть на RetinaNet.

Основой RetinaNet является сеть пирамид функций (FPN), которая помогает обнаруживать объекты разного масштаба. Он построен поверх ResNet. У каждого изображения в пирамиде изображения несколько якорей (изначально 9) с разными соотношениями сторон. Эти суб-изображения передаются в подсеть классификации и подсеть регрессии. Подсеть классификационной сверточной нейронной сети и подсеть блока имеют одинаковые параметры для всех уровней пирамиды. Основная атрибуция RetinaNet - это новый вид потерь, называемый Focal Loss. Он фокусируется на смягчении эффекта дисбаланса классов между объектами переднего и заднего плана.

Чем отличается Sparse R-CNN?

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

Как это работает?

Ящики сначала генерируются случайным образом. Затем с помощью обратного распространения происходит оптимизация размещения блоков, поэтому, если определенные классы обычно находятся в правом верхнем углу, несколько блоков будут размещены там. Авторы предполагают, что это можно интерпретировать как просмотр статистики потенциальных местоположений объектов. Например, если один класс - это коврик, то некоторые коробки будут шире и размещены в нижней части изображения.

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

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

Насколько это хорошо?

В тестах MS COCO это быстрее (на что указывает более высокая частота кадров в секунду (FPS)) и значительно лучше для небольших объектов (на что указывает средняя точность для небольших объектов (AP)).

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

Резюме

Область обнаружения объектов прошла долгий путь. Благодаря инновациям он обеспечивает лучшую производительность при меньшей вычислительной мощности. Такие системы также довольно легко реализовать с помощью таких библиотек, как pytorch или tensorflow. Код для нового ультрасовременного детектора объектов можно найти здесь. Если вы хотите узнать больше о разработках в области обнаружения объектов, я рекомендую вам прочитать Обзор по обнаружению объектов. А если вы хотите узнать больше о Sparse R-CNN, то есть отличная статья.