В части 1 этой серии мы обсудили ранние подходы, используемые для обнаружения человека, такие как структура обнаружения объектов Виолы Джонса (каскады Хаара) и гистограммы ориентированных градиентов для обнаружения человека (HOG). Мы рассмотрели некоторые недостатки этих более ранних подходов, такие как пропущенные обнаружения, ложные обнаружения, повторяющиеся обнаружения и ненадежная граница обнаружения. В этой части серии мы рассмотрим, как современные подходы к обнаружению людей решают некоторые проблемы ранних подходов (в значительной степени). Мы также рассмотрим образец кода, в котором будут использоваться некоторые из современных подходов к обнаружению человека.

Современные подходы к обнаружению человека

Рассматриваемые нами современные подходы к обнаружению людей характеризуются следующими особенностями.

Это «нейронные сети с глубокой сверткой».

Современные подходы к обнаружению человека в значительной степени основаны на нейронных сетях глубокой свертки. Эта тенденция началась с AlexNet, который выиграл Imagenet Large Scale Visual Recognition Challenge (ILSVRC) в 2012 году с использованием сети глубокой свертки (CNN) для классификации изображений. С тех пор CNN были широко адаптированы для решения различных задач компьютерного зрения, таких как Классификация изображений (определение типа объекта, содержащегося в изображении), Обнаружение объектов (обнаружение различных типов объектов. на изображении) и Локализация объекта (определение местоположения обнаруженных объектов). Обнаружение человека, как мы определили ранее, является частным случаем обнаружения и локализации объектов.

Это «Многоклассные детекторы объектов».

Еще одна ключевая особенность современных систем обнаружения объектов на основе CNN заключается в том, что они способны обнаруживать несколько классов объектов. Таким образом, современные современные детекторы людей - это не просто детекторы людей, но и точные детекторы объектов, которые могут обнаруживать различные типы объектов, включая людей. Имея в виду этот контекст, позвольте мне представить вам « Tensorflow Object Detection API и «Zoo Tensorflow Detection Model Zoo ».

Обнаружение человека с использованием API обнаружения объектов Tensorflow

TensorFlow ™ - это API с открытым исходным кодом от Google, который широко используется для решения задач машинного обучения, связанных с Deep Neural Сети. Tensorflow Object Detection API - это библиотека с открытым исходным кодом, созданная на основе Tensorflow для поддержки обучения и оценки моделей обнаружения объектов. Сегодня мы рассмотрим « Зоопарк моделей обнаружения Tensorflow , который представляет собой набор предварительно обученных моделей, совместимых с API обнаружения объектов Tensorflow .

На момент написания этой статьи Tensorflow Detection Model Zoo состоит из 16 моделей обнаружения объектов, предварительно обученных на COCO Dataset. Первые 12 моделей из этого списка предоставляют коробки в качестве выходных данных, и они совместимы с кодом, приведенным в этой статье. Эти модели способны обнаруживать 80 типов объектов, включая человека. Сегодня мы рассмотрим, как эти модели могут быть использованы для обнаружения людей.

Настройка базового детектора присутствия человека

  1. Прежде всего убедитесь, что установлены Open CV 3.0 (или выше) и Tensorflow 1.5 (или выше). Если у вас графический процессор nVidia, рекомендуется использовать версию Tensorflow GPU. Я связал статьи, описывающие процесс установки, в справочном разделе.
  2. Создайте папку для этого проекта.
  3. Загрузите fast_rcnn_inception_v2_coco.tar.gz из зоопарка Tensorflow Detection Model Zoo. Распакуйте загруженный файл в каталог проекта.
  4. Загрузите tensorflow-human-detection.py отсюда и переместите его в каталог проекта. Откройте загруженный файл и обновите / path / to / fast_rcnn_inception_v2_coco, чтобы указать расположение извлечения загруженного файла tar.gz. Укажите / путь / к / входу / видео. Я использовал тестовое видео TownCentre, скачанное здесь.
  5. Запустите файл python и посмотрите, что выводится на экране. (Для выхода нажмите «Q»). Вы можете настроить пороговый параметр, чтобы улучшить результаты. Надеюсь, вы увидите что-то подобное ниже.

Вы можете опробовать другие 11 совместимых моделей (перечисленных в разделе Модели, обученные COCO и предоставляющие коробки в качестве выходных данных), доступные в Зоопарке моделей обнаружения тензорного потока, заменив файл модели, загруженный выше. И, конечно же, предоставленные модели способны обнаруживать все 80 типов объектов, включенных в набор данных COCO. Только небольшая модификация предоставленного кода необходима для обнаружения других типов объектов.

Испытательный стенд

Упомянутые в этой статье результаты получены с использованием предоставленного кода на ноутбуке со следующими характеристиками.

Intel Core i7 7700 HQ (до 3,8 ГГц), 16 ГБ памяти, nVidia Geforce GTX 1060 6 ГБ VGA, Ubuntu 16.04, Open CV 3.4 и Tensorflow 1.5.

Все тесты проводятся на тестовом видео TownCentre из Coarse Gaze Estimation in Visual Surveillance Project Оксфордского университета.

Сравнение моделей из Tensorflow Detection Model Zoo

Модель, которую мы рассмотрели выше, - это модель Fast_rcnn_inception_v2_coco из Tensorflow Detection Model Zoo. Конечно, есть 11 других совместимых моделей (перечисленных в разделе Модели, обученные COCO и предоставляющие коробки в качестве выходных данных), которые мы можем рассмотреть для обнаружения человека. Google предоставляет количественный анализ этих моделей в этой таблице.

Показатель COCO mAP, представленный в таблице анализа, является мерой, называемой «средней средней точностью». Более высокое значение MAP означает более точные результаты.

Меня больше интересуют следующие 3 модели из Tensorflow Detection Model Zoo.

  1. ssd_mobilenet_v1_coco (может работать в режиме реального времени на телефонах Android )
  2. Fast_rcnn_inception_v2_coco (Справедливый компромисс между точностью и скоростью для сред с ускорением на GPU)
  3. Fast_rcnn_nas (предоставлена ​​наиболее точная модель)

Следующие темы охватывают качественный анализ вышеупомянутых трех моделей.

SSD Mobilenet V1 COCO Модель

Это наименее точный, но самый быстрый из списка. Оно способно работать в режиме реального времени на современных телефонах Android, как показано в этом приложении для Android, основанном на этом проекте.

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

В моем тестовом стенде с включенным ускорением графического процессора время кадра варьировалось в диапазоне 30–50 миллисекунд. (Примерно 25 кадров в секунду). При отключенном ускорении графического процессора время кадра варьировалось в диапазоне 60–80 миллисекунд. (Примерно 15 кадров в секунду).

Более быстрая модель RCN Inception V2 COCO

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

В моем тестовом стенде с включенным ускорением графического процессора время кадра варьировалось в диапазоне 200–300 миллисекунд. (Примерно 4 кадра в секунду). При отключенном ускорении графического процессора время кадра варьировалось в диапазоне 1,5–1,6 секунды.

Более быстрая модель RCN NAS COCO

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

Улучшения по сравнению с более ранними подходами

По моим наблюдениям, все модели более точны, чем предыдущие подходы. Более быстрая модель RCN Inception V2 COCO (включая ее) работает значительно лучше, чем подходы HOG и Хаара для обнаружения человека. Эти модели обеспечивают жесткую постоянную границу вокруг обнаруженного человека. Кроме того, эти модели с меньшей вероятностью приведут к ложным срабатываниям. Повторяющиеся обнаружения все же могут возникать в менее точных моделях в ситуациях, когда несколько человек находятся рядом. Пропущенные обнаружения и мерцание также могут иногда возникать, если используются менее точные модели. Эти проблемы решаются в более точных моделях (таких как RCN NAS Model) за счет времени вычислений.

Первые две модели в списке (ssd_mobilenet_v1_coco и ssd_inception_v2_coco) кажутся немного лучше, чем предыдущие подходы. Эти менее точные модели по-прежнему подвержены пропущенным обнаружениям, ложным обнаружениям, повторяющимся обнаружениям, мерцанию и несовместимые границы обнаружения.

Недостатки по сравнению с более ранними подходами

В целом подходы на основе глубокой нейронной сети обеспечивают более точные результаты за счет дополнительных вычислений. Если ускорение графического процессора недоступно, самая легкая модель, обсуждаемая здесь (ssd_mobilenet_v1_coco), способна работать быстрее, чем ранее обсуждавшиеся подходы. Но улучшенная точность этой модели очень незначительна.

Чтобы добиться значительного повышения точности, необходимо рассмотреть модель Faster RCN Inception V2 COCO или лучше. Эти модели требуют ускорения графического процессора, чтобы обеспечить частоту кадров, сопоставимую с ранее обсуждавшимися ранее подходами.

Заключение

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

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

Ссылка

  1. Все тесты проводятся на тестовом видео TownCentre из Coarse Gaze Estimation in Visual Surveillance Project Оксфордского университета.
  2. В официальной документации от Tensorflow есть пошаговое руководство по установке (Ссылка).
  3. Установка OpenCV 3.4.