Локализация и обнаружение объектов — две основные задачи в Computer Vision, поскольку они применяются во многих реальных приложениях, таких как автономные транспортные средства и робототехника. Итак, если вы хотите работать в этих отраслях в качестве специалиста по компьютерному зрению или хотите создать относительный продукт, вам лучше хорошо в них разобраться. Но что это такое? Что означает обнаружение и локализация объектов? И почему мы группируем их, поскольку они представляют собой одно целое?
Перво-наперво. Давайте сделаем краткий обзор наиболее часто используемых терминов и их значения, чтобы избежать неправильных представлений:
-
Классификация/признание: Имея изображение с объектом, узнайте, что это за объект. Другими словами, классифицировать его в классе из набора предопределенных категорий.
-
Локализация : Найдите, где находится объект, и нарисуйте вокруг него ограничивающую рамку.
-
Обнаружение объекта: классифицировать и обнаруживать все объекты на изображении. Назначьте класс каждому объекту и нарисуйте вокруг него ограничивающую рамку.
-
Семантическая сегментация: классифицируйте каждый пиксель изображения по классу в соответствии с его контекстом, чтобы каждый пиксель был назначен объекту.
-
Сегментация экземпляра: классифицируйте каждый пиксель изображения по классу, чтобы каждый пиксель был назначен другому экземпляру объекта.
Помните, однако, что эти термины не имеют четкого определения в научном сообществе, поэтому вы можете встретить один из них в другом значении. В моем понимании это правильные толкования.
Когда мы разобрались с основными терминами, пришло время заняться локализацией и обнаружением объектов. Как мы делаем это? Ну, за эти годы было много подходов, но с появлением глубокого обучения сверточные нейронные сети стали отраслевым стандартом. Помнить наша цель — классифицировать объект и локализовать его. Но уверены ли мы, что существует только один объект? Возможно ли, чтобы объектов было два, три или пятнадцать? На самом деле, большую часть времени это так.
Вот почему мы можем разделить нашу проблему на две разные проблемы. В первом случае мы знаем количество объектов (будем называть задачу классификацией + локализацией), а во втором — нет (обнаружение объектов). Начну с первого, так как он самый простой.
Инженерная школа Стэнфордского университета
Классификация + локализация
Если у нас есть только один объект или мы знаем количество объектов, это на самом деле тривиально. Мы можем использовать одну сверточную нейронную сеть и обучить ее не только для классификации изображения, но и для вывода 4 координат ограничивающей рамки. Таким образом, мы рассматриваем локализацию как простую проблему регрессии..
Например, мы можем позаимствовать хорошо изученную модель, такую как ResNet или Alexnet, которая состоит из множества сверточных, пулинговых и других слоев, и переназначить полностью связанный слой для создания ограничивающей рамки отдельно от категории. Это настолько просто, что заставляет задуматься, даст ли это результат. И это на самом деле работает очень хорошо на практике. Конечно, вы можете пофантазировать и изменить архитектуру для решения конкретных задач или повысить ее точность, но основная идея остается.
Обязательно обратите внимание, что для использования этой модели у нас должен быть обучающий набор с изображениями, аннотированными для класса и ограничивающей рамки. Да и делать такие аннотации не самое веселое занятие.
Но что, если мы априори не знаем количество объектов? Тогда нам нужно залезть в кроличью нору и поговорить о некоторых хардкорных вещах. Вы готовы? Вы хотите сделать перерыв перед? Конечно, я понимаю, но я предупреждаю вас, чтобы вы не уходили. Здесь начинается самое интересное.
Обнаружение объекта
Я шучу. В архитектуре, о которой пойдет речь, нет ничего жесткого. Все, что есть, — это несколько умных идей, чтобы сделать систему нетерпимой к количеству выходов и снизить ее вычислительную стоимость. Итак, мы не знаем точного количества объектов на нашем изображении и хотим классифицировать их все и нарисовать вокруг них прыгающего быка. Это означает, что количество координат, которое должна выводить модель, не является постоянным. Если на изображении 2 объекта, нам нужно 8 координат. Если у него 4 объекта, нам нужно 16. Так как же построить такую модель?
Одной из ключевых идей традиционного компьютерного зрения является предложение регионов. Мы создаем набор окон, которые могут содержать объект, используя классические алгоритмы CV, такие как обнаружение краев и форм, и применяем только эти окна (или области интереса) к CNN. Чтобы узнать больше о том, как предлагаются регионы, обязательно проверьте
здесь.
Это основа фундаментального
бумага которая представила новую архитектуру под названием RCNN.
R-CNN
Учитывая изображение с несколькими объектами, мы создаем некоторые области интересов, используя метод предложения (в случае RCNN этот метод называется выборочным поиском) и деформируем области до фиксированного размера. Мы направляем каждый регион в сверточную нейронную сеть (такую как AlexNet), которая будет использовать SVM для принятия решения о классификации для каждого из них и прогнозирования регрессии для каждого ограничивающего прямоугольника. Это предсказание происходит как коррекция предложенной области, которая может быть в правильном положении, но не в точном размере и ориентации.
Хотя модель дает хорошие результаты, у нее есть один главный недостаток. Это довольно медленно и требует больших вычислительных ресурсов. Представьте, что в среднем мы создаем 2000 областей, которые нам нужно сохранить на диске, и мы отправляем каждую из них в CNN на несколько проходов, пока она не будет обучена. Чтобы решить некоторые из этих проблем, в игру вступает улучшение модели под названием «fast-RCNN».
Быстрый RCNN
Идея проста. Вместо того, чтобы передавать все регионы в сверточный слой один за другим, мы передаем все изображение один раз и создаем карту объектов. Затем мы берем предложения регионов, как и раньше (используя какой-то внешний метод), и как бы проецируем их на карту объектов. Теперь у нас есть регионы на карте объектов вместо исходного изображения, и мы можем перенаправить их в некоторые полносвязные слои, чтобы вывести решение о классификации и коррекцию ограничивающей рамки.
Обратите внимание, что проекция предложения регионов реализована с использованием специального слоя (слоя ROI), который по сути является типом максимального объединения с размером пула, зависящим от ввода, так что вывод всегда имеет одинаковый размер. Для получения более подробной информации о слое ROI проверьте этот большой статья.
Быстрее RCNN
И мы можем пойти дальше. Используя карты объектов, созданные на сверточном слое, мы делаем вывод о предложении регионов, используя сеть Region Proposal, а не полагаясь на внешнюю систему. Когда у нас есть это предложение, оставшаяся процедура такая же, как и в Fast-RCNN (переадресация на уровень ROI, классификация с использованием SVM и прогнозирование ограничивающей рамки). Хитрость заключается в том, как обучить всю модель, поскольку у нас есть несколько задач, которые необходимо решить:
-
Сеть региональных предложений должна решить для каждого региона, содержит ли он объект или нет.
-
И ему нужно создать координаты ограничивающей рамки
-
Вся модель должна классифицировать объекты по категориям
-
И снова предсказать смещения ограничивающей рамки
Если вы хотите узнать больше об обучающей части, вы должны проверить оригинал
бумагано чтобы дать вам общее представление, нам нужно использовать потерю многозадачности, чтобы включить все 4 задачи и передать эту потерю обратно в сеть.
Быстрее R-CNN: на пути к обнаружению объектов в реальном времени с сетями региональных предложений
Как следует из названия, FasterRCNN оказывается намного быстрее, чем предыдущие модели, и является предпочтительным для большинства реальных приложений.
Локализация и обнаружение объектов — сверхактивная и интересная область исследований из-за высокой аварийности приложений реального мира, требующих отличной производительности в задачах компьютерного зрения (беспилотные автомобили, робототехника). Компании и университеты регулярно выдвигают новые идеи о том, как повысить точность.
Существует еще один класс моделей для локализации и обнаружения объектов, называемых однократными детекторами, которые стали очень популярными в последние годы, потому что они еще быстрее и в целом требуют меньших вычислительных затрат. Конечно, они менее точны, но идеально подходят для встраиваемых систем и подобных энергоемких приложений.
Но чтобы узнать больше, вам придется дождаться моей следующей статьи.
Хорошо, я шучу. Вам не нужно ждать. Есть еще вот это чудо курс от Coursera. А если серьезно, ты тоже должен дождаться меня. Не забывай меня.
* Раскрытие информации: Обратите внимание, что некоторые из приведенных выше ссылок могут быть партнерскими ссылками, и без дополнительной оплаты для вас мы будем получать комиссию, если вы решите совершить покупку после перехода по ссылке.