Что такое DETR? Что отличает его от других алгоритмов обнаружения объектов? И как его тренировать на собственных данных?

DETR - или DEtection TRansformer - это новейшее дополнение Facebook на рынке доступных решений для обнаружения объектов на основе глубокого обучения. Очень просто, он использует архитектуру преобразователя для прогнозирования объектов и их положения на изображении.

Что такое DETR?

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

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

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

Чем DETR отличается от других детекторов объектов?

У всех алгоритмов обнаружения объектов есть свои плюсы и минусы; R-CNN (и его производные) - это двухэтапный алгоритм, требующий как вычисления предложения региона, так и вычисления обнаружения. Более поздние разработки, такие как SSD (Single-Shot Multibox Detector) и YOLO (You Only Look Once), называются одноступенчатыми детекторами объектов, потому что они вычисляют свои оценки за один прямой проход. Специфика того, как они достигают этого, различаются, но у этих сетей есть одна общая черта - это требование априори.

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

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

Как мне тренировать DETR для себя?

DETR обычно требует очень интенсивного графика тренировок. В исходной статье авторы обучают свою модель с использованием 16 графических процессоров Nvidia V100 в течение 300 эпох, что в сумме составляет более 3 дней обучения (и около 4000 долларов США в AWS). Вы можете попробовать это сами, но этот раздел не об этом. Мы заинтересованы в точной настройке предварительно обученной модели DETR на личном наборе данных, возможно, с другим количеством классов, чем COCO.

Наша вилка DETR (находится здесь: https://github.com/aivclab/detr) позволяет нам делать это, изменяя несколько ключевых элементов. Во-первых, мы изменяем структуру построения модели, чтобы включить любое количество классов. Затем мы предоставляем конструктору веса предварительно обученной модели (без вложений классов). Кроме того, мы изменяем максимальную ширину изображений в случайном преобразовании на 800 пикселей. Это должно позволить обучение на большинстве графических процессоров, но рекомендуется вернуться к исходному 1333, если ваш графический процессор может с этим справиться. По умолчанию мы уменьшаем скорость обучения для головы и скорость обучения для позвоночника до 1e-5 и 1e-6 соответственно, но вы можете поэкспериментировать с этим самостоятельно.

В зависимости от количества образцов, имеющихся в вашем наборе данных, может быть предпочтительнее переобучить модель с нуля. Исходный набор данных COCO содержит более 200 000 аннотированных изображений с более чем 1,5 миллионами экземпляров, разделенных на 90 классов, поэтому, если ваш набор данных сопоставим, это может улучшить ваше расписание обучения, установив pretrained = False в записной книжке.

Блокнот находится здесь: https://github.com/aivclab/detr/blob/master/finetune_detr.ipynb

Ниже примерные параметры показывают, насколько просто вы можете настроить такую ​​модель под себя:

Заключение

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

Я работаю в Alexandra Institute, датской некоммерческой компании, специализирующейся на современных ИТ-решениях. Здесь, в Visual Computing Lab, мы сосредоточены на использовании новейших достижений в области компьютерного зрения и исследований компьютерной графики. В настоящее время мы изучаем методы, которые позволят небольшим компаниям и частным лицам начать глубокое обучение. Мы всегда открыты для сотрудничества!