Общее руководство по алгоритму обнаружения объектов и его реализация
Обнаружение объектов является ключевым компонентом многих моделей глубокого обучения и претерпело множество революционных преобразований за последние годы. Обнаружение объектов относится к процессу идентификации объектов на изображении и извлечения ограничивающих рамок для каждого объекта. Эти алгоритмы обнаружения объектов используются в приложениях в таких областях, как автономное вождение, камеры видеонаблюдения, робототехника и практически в любых приложениях, связанных со зрением, включая медицинские изображения или новые тенденции, такие как Amazon Go-icillless бакалея.
На протяжении многих лет основная проблема вращалась вокруг того факта, что многие приложения требуют обнаружения объектов в реальном времени. Некоторые новые реализации имеют более быстрый вывод и позволяют развиваться и развиваться различным областям компьютерного зрения. Каждый новый выпуск улучшает производительность своего предшественника, и теперь мы видим возможность обнаружения объектов в реальном времени.
Несмотря на впечатляющие достижения, одним из самых больших препятствий в обнаружении объектов является то, что модели очень большие и тяжелые. Их запуск требует много времени и вычислительной мощности. Моделирование обнаружения объектов с помощью глубокого обучения в два раза сложнее. Во-первых, поскольку объекты могут различаться по размеру и количеству, сеть должна быть в состоянии справиться с этой изменчивостью. Во-вторых, количество возможных комбинаций ограничивающих рамок огромно, и эти сети часто требуют больших вычислительных ресурсов. Вычисление выходных данных на скоростях в реальном времени стало проблемой.
Чтобы понять это препятствие и то, что можно сделать для его преодоления, мы рассмотрим различные методы, доступные для обнаружения объектов, и то, как эта область развивалась в недавней истории. Как вы увидите, не существует единственной модели, которая была бы самой быстрой и точной. Нам приходится иметь дело с компромиссом между скоростью и точностью: некоторые модели быстрее достигают более низкой точности и наоборот. Давайте немного углубимся в историю, чтобы вы могли понять, какое место занимает каждая модель в этом спектре.
Basic types of object detection algorithms
Существует множество алгоритмов глубокого обучения, которые решают проблему обнаружения объектов. Эти детекторы объектов состоят из трех основных компонентов:
- Backbone for extracting features from the image
- Feature network that takes features from the backbone and outputs features to represent the characteristics of the image
- Final (class/box) network that uses these features to predict the class and location of an object
Прежде чем мы зайдем слишком далеко, важно упомянуть, как оцениваются детекторы объектов. Двумя общими метриками оценки являются пересечение объединения (iou) и средней точности (ap). iou — это перекрытие между ограничивающей рамкой наземной истины и прогнозируемой ограничивающей рамкой. Он вычисляется как площадь пересечения между ограничивающей рамкой наземной истины и прогнозируемой ограничивающей рамкой, деленная на площадь ее объединения. Полученное значение представляет собой число от 0 до 1. Чем выше число, тем выше перекрытие. Средняя точность — это площадь под кривой точности-отзыва (AUC-PR). В некоторых случаях вы можете увидеть метрику, определенную как AP50, где 50 индексов означают вычисление средней точности при 50% пороге IOU. Когда средняя точность рассчитывается для многих классов и берется ее среднее значение, это называется средней средней точностью.
Теперь мы готовы изучить последние и распространенные алгоритмы глубокого обучения, которые вы можете использовать для своего следующего проекта по обнаружению объектов.
Region-based models
Сверточные нейронные сети на основе регионов используют набор предложений регионов для обнаружения объектов. Faster R-CNN — последняя модель в этом алгоритме обнаружения объектов. Это преемник R-CNN и FAST R-CNN. Прежде чем рассматривать Faster R-CNN, давайте рассмотрим этих предшественников.
R-CNN
Модель R-CNN объединяет объекты, комбинируя сверточные нейронные сети с предложениями восходящих областей. R-CNN делает изображения и извлекает до 2000 предложений восходящих регионов. Предложения регионов — это места с высокой вероятностью обнаружения целевого объекта. Затем R-CNN использует большую CNN для вычисления характеристик для каждого предложенного региона. Затем он классифицирует каждую область, используя машину линейных опорных векторов (SVM) для конкретного класса.
R-CNN has a couple of drawbacks:
-
Training uses a multi-stage pipeline that first obtains object proposals, fits an SVM to the ConvNet features, and finally learns the bounding box regressors. This multi-stage training is slower than single-stage training.
-
Training uses deep networks that consume a lot of time and space. This means more time as well as more computational power.
-
Object detection is slow because it performs a ConvNet forward pass for each object proposal.
Fast R-CNN
FAST R-CNN — это детектор объектов на основе ConvNet для классификации предложений объектов. Затем он принимает изображение и набор предложений объектов в качестве входных данных. FAST R-CNN обрабатывает изображения с использованием слоев свертки и максимального объединения и создает сверточные карты объектов. Затем пул областей интересов использует объединение MAX для извлечения векторов фиксированного слоя из каждой карты объектов из каждого предложения региона.
Затем вектор признаков передается на полностью связанный слой, который разветвляется на два выхода. Один выводит четыре значения, представляющие ограничивающую рамку объекта, а другой выводит вероятность программного сообщения класса объекта. Номера ограничительной рамки представляют собой два числа в верхнем левом и верхнем правом углах и два в нижнем.
Быстрый R-CNN улучшает R-CNN. Он имеет высокую среднюю точность, является обученной моделью и не требует дискового пространства для кэширования своих функций.
Faster R-CNN
Модель Faster R-CNN состоит из двух модулей:
- Глубокая сверточная сеть, отвечающая за предложение регионов (сеть предложений регионов)
- Быстрый детектор R-CNN, использующий эту область
Сеть предложений регионов разделяет функцию свертки полного изображения с сетью обнаружения объектов. Затем сеть обнаружения объектов предсказывает ограничивающую рамку и оценку объекта. Затем модель FAST R-CNN использует предложения регионов из сети предложений регионов для обнаружения объектов. Сеть региональных предложений и FAST R-CNN затем объединяются в единую сеть путем совместного использования сверточных функций. Как правило, более быстрые модели R-CNN принимают изображения и выводят предложения прямоугольных объектов. Каждый прямоугольник имеет оценку объекта.
Документация TensorFlow предоставляет более быстрый API-интерфейс обнаружения объектов R-CNN, который можно использовать для создания моделей обнаружения объектов с минимальными усилиями. Вы также можете сразу запускать прогнозы с помощью предварительно обученной модели Faster R-CNN. Tensorflow предоставляет предварительно обученные модели через Tensorflow Hub.
Single Shot Detector (SSD)
В этой модели объекты на изображении обнаруживаются транспондером. На этапе обучения SSD использует входное изображение и наземную ограничительную рамку для каждого объекта. SSD использует единую нейронную сеть для предсказания объектов на изображениях. В нем используется сверточная нейронная сеть с прямой связью, которая создает ограничивающие рамки и оценивает наличие объектов. Сверточные векторные слои позволяют обнаруживать объекты в нескольких масштабах.
SSD оценивается путем оценки небольшого набора ограничивающих рамок по умолчанию в разных масштабах. Затем каждый блок предварительно предсказывает смещение формы и достоверность класса. Поле по умолчанию соответствует окну наземной истины во время обучения. Совпадающие поля считаются положительными, а несовпадающие — отрицательными. Таким образом, SSD генерирует фиксированные ограничивающие рамки, проходя через свёрточную нейронную сеть с прямой связью. Тогда это доля объектов, присутствующих в этих коробках. Потери модели рассчитываются путем взвешивания потерь локализации и потерь достоверности.
Как и другие модели обнаружения объектов, SSD использует базовую модель для извлечения признаков. По умолчанию в качестве магистральной сети используется сеть VGG-16.
SSD работает быстрее, потому что для него требуется один мастер. Это отличается от региональной сети предложений, для которой требуется две линзы:
- One to generate the object proposals
- The other to detect objects from these proposals
On the VOC2007 dataset, SSD achieves a mean average precision score of 74.3% at 59 flops per second on an Nvidia TitanX.
YOLO Models
YOLO models are also single-shot models. The first YOLO model, short for You Only Look Once, was introduced in 2016. The original proposal was to predict bounding boxes and class probabilities from an image, in a single evaluation using a single neural network. This first model would process 45 frames per second in real-time using features from the entire image to predict bounding boxes.
У первоначальной реализации Yolo было две основные проблемы:
- It could only predict one class
- Он плохо работал на мелких объектах
Давайте на минутку взглянем на новые и популярные релизы YOLO. Мы будем катать мяч с Yolo версии 4.
YOLO V4
- CSPDarknet-53 backbone for feature extraction
- Spatial pyramid pooling (SPP) and path aggregation network(PAN) to collect features from different stages
- YOLO V3 head for predicting classes and bounding boxes
Рассмотрим эти компоненты подробнее.
CSPDarkNet-53 — сверточная нейронная сеть, используемая в качестве основы для детекторов объектов. Он основан на DarkNet-53, сверточной нейронной сети, использующей остаточные соединения, и является основой третьей версии Yolo. CSPDarkNet-53 использует горизонтальную частичную сеть (CSPNET), чтобы разделить карту объектов базового слоя на две части. Этот раздел сокращает время вычислений за счет слияния двух частей.
SPP представляет собой архитектуру сверточной нейронной сети, в которой используется объединение пространственных пирамид, чтобы устранить ограничение фиксированного размера сети. Выходные данные уровня SPP подаются на полносвязный уровень или другой классификатор. PANET — это сеть с функциями, которые полагаются на сокращение расстояния между нижним и верхним уровнями функций для надежной передачи информации.
YOLO V4 представляет два новых метода повышения точности:
-
Bag of freebies— Это стратегии, которые применяются для повышения производительности модели без увеличения ее задержки при выводе.Одной из таких стратегий является увеличение данных, целью которого является предоставление модели различных изображений, что делает модель более надежной.Фотометрические искажения и геометрические искажения — это два примера дополнений к изображениям, которые улучшают работу детектора объектов. Фотометрические искажения включают в себя настройку контраста, оттенка, насыщенности и яркости изображений. Некоторые геометрические искажения, применяемые к детекторам объектов, включают случайное масштабирование, поворот и обрезку изображений.
-
Bag of Specials- Это подключаемые модули и методы постобработки, которые немного увеличивают стоимость вывода при одновременном повышении точности детектора объектов. Целью подключаемых модулей является улучшение некоторых атрибутов модели, таких как увеличение рецептивного поля или усиление возможности интеграции функций. Методы постобработки используются для контроля результатов прогнозирования.
Yolo v4 предлагает несколько стратегий увеличения данных:
-
CutOut— Объединяет изображения, вырезая часть одного изображения и вставляя его в дополненное изображение.
-
Mosaic data augmentation— Смешивает четыре тренировочных изображения, что позволяет обнаруживать объекты вне их обычного контекста.
-
Self-Adversarial Training (SAT)— Новая стратегия аугментации, работающая в два этапа вперед-назад: на первом этапе сеть изменяет исходное изображение вместо сетевых весов, на втором этапе нейронная сеть обучается идентифицировать объект на измененном изображении.
YOLO V4 достигает средней точности 65,7% (AP50) при 65 кадрах в секунду в режиме реального времени на TESLA V100.
YOLO V5
Выпуск yolo v5 вызвал много споров. По сути, это не новая версия yolo, а реализация YOLO V4 в Pytorch. Еще одно ядро разногласий с этим выпуском заключается в том, что разработчики не опубликовали никаких документов, которые можно было бы рецензировать. Алексей, один из авторов YOLO V4, заколол его и отреагировал на выпуск YOLO V5. Вы можете прочитать его комментарии к этой проблеме GitHub.
На странице YOLO V5 на GitHub утверждается, что эта версия работает быстрее, чем предыдущие версии YOLO. На странице также представлены предварительно обученные контрольные точки, которые можно загрузить и сразу начать использовать.
CenterNet
CenterNet is built upon the one-stage keypoint-based detector known as CornerNet. CornerNet produces heatmaps for the top-left corners and the bottom-right corners. The heatmaps are locations of key points for different objects. Each keypoint is assigned a confidence score.
CornerNet also generates embeddings that are used to determine whether two corners belong to the same object. It generates offsets that can be used to learn how to remap the corners from the heatmaps to the input image.
CenterNet – это одноэтапный детектор, который определяет каждый объект как тройку ключевых точек, что повышает точность и полноту. Он исследует центральную часть предложения. Идея состоит в том, что если ограничивающая рамка имеет высокое пересечение над соединением с землей, поле истины, то существует высокая вероятность того, что центральная ключевая точка в ее центральной области предсказана как тот же класс.При выводе предложение определяется как объект на основе того, существует ли центральная ключевая точка того же класса который попадает в центральную область предложения. Определение выполняется после создания предложения в виде пары угловых точек.
Centernet состоит из двух модулей: каскадного пула и центрального пула. Модуль центрального пула предоставляет более узнаваемую информацию в центральном регионе, что упрощает определение центра региональных рекомендаций. Этот модуль отвечает за предсказание центральной клавиатуры. Он использует горизонтальное и вертикальное направления объекта для предсказания центрального ключа.
Модуль Cascading Corner Pool отвечает за обогащение информации, собранной левым верхним и правым нижним углами. Максимальное значение каскадных пулов углов в направлении границы объекта, а также во внутреннем направлении объекта предсказывает углы.
CenterNet достигает средней точности 47% на MS-Coco DataSet по сравнению с MS-Coco DataSet, что на 4,9% больше, чем у существующих одноуровневых детекторов.
EfficientDet
Эффективные файлы — это алгоритм, представленный Google. Он построен на эффективной сети и представляет новую двунаправленную функциональную сеть (BIFPN) и новые правила масштабирования. Высокоэффективные устройства оптимизируют компоненты детекторов объектов для повышения производительности и эффективности. Результатом оптимизации являются небольшие модели, использующие меньше вычислений. Эти оптимизации включают в себя:
- Employing EfficientNet for the backbone. Applying EfficientNet-B increases accuracy by 3% while reducing computation by 20%.
- Improving the efficiency of the feature networks. This is done using a bi-directional feature network (BiFPN) that allows information to flow top-down and bottom-up while using regular and efficient connections. BiFPN is a type of feature pyramid network that allows fast and easy multi-scale feature fusion. It uses regular and efficient connections to allow information to flow in both top-down and bottom-up directions.
- Improving efficiency further through a fast normalized fusion technique. The observation is that since images have different resolutions, they contribute unequally to the final output features. This is addressed by weighting each input and allowing the network to learn the importance of each input feature.
- Introduction of a new compound scaling method for object detectors that leads to better accuracy. This is done using a simple compound coefficient that jointly scales up all resolution/depth/width of backbone, BiFPN, and class/box network.
On the COCO dataset, EfficientDet-D7 achieves a mean average precision of 52.2.