Анализ MTCNN распознавания лиц
исходный код, который работает довольно хорошо (толькоконтрольная работакод):
Боюсь, Zhang93.GitHub.IO/Mt CNN_face_…
MTCNN, реализованный одноклассником, основан на обучающем коде MXNET, работа относительно завершена, а эталонное значение относительно велико:GitHub.com/Шон Лин Х/Каждый день…
------------ Трубопровод------------
Выше приведена блок-схема метода, видно, что это тоже трехуровневый каскад, и моя предыдущая запись в блогеCascadeCNNТак же, как.
этап 1: На основе построения пирамиды изображений для обнаружения используется полностью сверточная сеть, а для коррекции используются регрессия ограничивающей рамки и NMS. (Примечание. Полностью сверточная сеть здесь отличается от сети с деконволюцией в R-CNN. Это относится только к сверточному слою, который может принимать входные данные любого размера и полагаться на шаг сети для автоматического завершения скользящего окна)
stage2: дальнейшая оценка будет сделана через все входные данные окна stage1, а также будет выполнена регрессия ограничивающей рамки и NMS.
stage3: Аналогичен этапу 2, но с более сильными ограничениями: 5 ключевых точек лица.
------------ Сеть ------------
Stage1: Proposal Net
Stage2: Refine Net
Stage3: Output Net
Как видно из вышеизложенного, его сетевая структура относительноCascadeCNNНемного глубже, но меньше параметров на слой, поэтому этот метод имеет лучшую производительность при той же скорости и времени.CascadeCNNтакжеПочти то же самое.
Пополнить:
(1) Для обучения в этой статье используется онлайн-стратегия извлечения жестких образцов, то есть для BP в партии выбираются только образцы с потерями, составляющими 70% лучших;
(2) На разных этапах классификатор, регрессия ограничивающей рамки и обнаружение ориентиров имеют разные веса при расчете потерь;
(3) Существует 4 типа обучающих данных, соотношение 3:1:1:2: отрицательные, IOU0,65; часть лица, 0,4.
------------ Результат ------------
Производительность на FDDB:
Скорость работы, ЦП около 15FPS
MTCNNалгоритмИз Шэньчжэньского научно-исследовательского института передовых технологий, группы г-на Цяо Ю, в этом году 2016 ECCV. (По крайней мере я знаю, что в этом году уже один cvpr, один eccv).
К точке
Теоретические основы:
Как показано на рисунке выше, MTCNN состоит из 3-х сетевых структур (P-Net, R-Net, O-Net).
Сеть предложений (P-Net): эта сетевая структура в основном получает окно-кандидат области лица и вектор регрессии ограничивающей рамки. И используйте ограничивающую рамку для регрессии, откалибруйте окно-кандидат, а затем объедините сильно перекрывающиеся поля-кандидаты с помощью немаксимального подавления (NMS).
Уточнить сеть (R-Net): структура сети по-прежнему удаляет эти ложноположительные области с помощью регрессии ограничивающей рамки и NMS.
Просто потому, что структура сети отличается от структуры сети P-Net, есть еще один полносвязный слой, поэтому он обеспечивает лучший эффект подавления ложных срабатываний.
Выходная сеть (O-Net): этот уровень имеет на один базовый объем больше, чем уровень R-Net, поэтому результаты обработки будут более точными. Роль та же, что и у уровня R-Net. Но этот слой имеет больше контроля над областью лица, а также выводит 5 ориентиров.
Подробная структура сети показана на следующем рисунке:
Более подробная сетевая структура prototxt выглядит следующим образом: det1, det2, det3 соответственно.
Структура det1.prototxt:
Структура det2.prototxt:
Структура det3.prototxt:
тренироваться:
Дескриптор функции MTCNN в основном включает три части: классификатор лиц/не лиц, регрессию ограничительной рамки и локализацию ориентиров.
Классификация лица:
Вышеприведенная формула представляет собой функцию кросс-энтропийных потерь для классификации лиц, где pi — вероятность лица, а yidet — истинная метка фона.
Регрессия ограничивающей рамки:
Приведенная выше формула представляет собой потерю регрессии, рассчитанную по евклидову расстоянию. Среди них заостренный y получается с помощью предсказания сети, а не заостренный y является фактической реальной координатой фона. Среди них у — четверка, состоящая из (левый верхний угол х, левый верхний угол у, длина, ширина).
Позиционирование ориентира:
Подобно граничной регрессии, вычисляется и минимизируется евклидово расстояние между местоположением ориентира, предсказанным сетью, и фактическим ориентиром. Среди них заостренный y получается с помощью предсказания сети, а не заостренный y — это фактические реальные координаты ориентира. Так как всего 5 точек, и каждая точка имеет 2 координаты, y принадлежит десятке.
Обучение с несколькими источниками ввода:
Весь процесс обучения и обучения должен минимизировать указанную выше функцию, где N — количество обучающих выборок, aj представляет важность задачи, bj — метка выборки, а Lj — указанная выше функция потерь.
В процессе обучения, чтобы добиться лучших результатов, автор каждый раз выполняет обратное распространение градиента только первых 70% выборок, чтобы обеспечить передачу всех допустимых чисел. Это немного похоже на латентный SVM, но автор воплощает его больше в реализацииглубокое обучениеконцы с концами.
Во время обучения отношение IoU (Intersection-over-Union) y-tip и y равно:
0-0,3: нечеловеческое лицо
0,65-1,00: человеческое лицо
0,4–0,65: грань детали
0.3-0.4: Достопримечательности
Отношение обучающих выборок, отрицательных выборок: положительных выборок: частичных выборок: ориентиров = 3:1:1:2
шаги установки:
Установка кафе-витрин:
Установка Pdollartoolbox:
Pdollartoolbox, написанный Петром Долларом из UCSD, фокусируется на алгоритмах выделения и классификации признаков, связанных с обнаружением распознавания объектов. Этот набор инструментов представляет собой специализированный и сложный тип, в основном связанный с алгоритмами нескольких статей Доллара по обнаружению объектов.Если вы проводите исследования по распознаванию объектов, это должно быть очень полезно. В то же время его функции обработки изображений или обработки матриц также могут использоваться в качестве дополнения к набору инструментов обработки изображений Matlab.Функции в основном включают несколько модулей:
* модуль каналов, извлечение признаков изображения, включая HOG и т. д. В исследовательской работе Доллара была предложена функция Channel Feature [2], поэтому этот канал в основном включает в себя некоторые базовые алгоритмы, такие как градиент, объем и другие базовые алгоритмы, необходимые для извлечения этой функции.
* классифицировать модуль, некоторые алгоритмы, связанные с быстрой классификацией, включая случайные папоротники, функции RBF, PCA и т. д.
* модуль детектора, алгоритм обнаружения 1, соответствующий функции Channel Feature
* модуль фильтров, некоторые обычные фильтры изображений
* модуль изображений, некоторые обычные операции с изображениями и видео, есть несколько очень полезных функций
* модуль матлаб, некоторые обычные функции Matlab, включая вычисление матриц, отображение, работу с переменными и т. д., очень практичны.
* модуль видео, некоторые общие функции обработки видео и т. д.
Ссылка для скачивания:GitHub.com/Pдоллар/слишком…
После загрузки в Toolbox разархивируйте его в любой каталог, например E:\MATLAB\MATLAB Production Server\toolbox.
Введите в командной строке Matlab
addpath(genpath('toolbox-masterROOT')); savepath;
Добавьте каталог распаковки в путь Matlab. где toolbox-masterROOT — путь к каталогу распаковки.Например, при распаковке в E:\MATLAB\MATLAB Production Server\toolbox команда
addpath(genpath('E:\MATLAB\MATLAB ProductionServer\toolbox')); savepath;
Это установит Piotr's Image & VideoMatlab Toolbox.
Добавьте каталог библиотеки caffe в путь, например, добавьте следующий путь к моему пути
Откройте demo.m, измените в нем caffe_path, pdollar_toolbox_path, caffe_model_path
. При этом, поскольку у моего компьютера нет GPU, в него внесены следующие модификации.
Результаты экспериментов:
Время работы составляет 1,2 с.По обнаружению лиц 18, среднее значение составляет 66 мс.Текущая версия является релизной версией. Судя по экспериментальным результатам, и обнаружение, и выравнивание беспрецедентно хороши. По моему опыту, выравнивание face++ лучше всего, а MTCNN в оставшихся опенсорсах лучше всего, а потом уже SDM.
Судя по правильности, проверенной автором ниже на FDDB+WIDERFACE+AFLW, точность в основном 95%. Видно, что производительность и эффективность MTCNN очень высоки.
Из результатов эксперимента видно, что есть проблема со вторым выравниванием второй строки на рисунке выше, поэтому я внес небольшие изменения в его программу. Фактический эффект работы показан на рисунке ниже, и время и эффект были улучшены.
Ссылка для скачивания:скачать.CSDN.net/detail/QQ_1…
После группы, я хотел бы поблагодарить Даниэля компании за их помощь.язык СиНаконец-то версия изменена. Честно говоря, это действительно непросто, и я прошел через множество ям. Опубликуйте визуализацию, чтобы отметить те времена горьких улыбок.
References:
[1] Боюсь, Zhang93.GitHub.IO/Mt CNN_face_…
[2] GitHub.com/Боюсь, Чжан93/М…
[3] ZhangK, Zhang Z, Li Z, et al. Joint Face Detection and Alignment using Multi-taskCascaded Convolutional Networks[J]. arXiv preprint arXiv:1604.02878, 2016.
эксперимент
В этой статье для обучения в основном используются три набора данных: FDDB, Wider Face, AFLW.
А. Тренировочные данные
В этой статье данные разделены на 4 типа:
Отрицательное: нечеловеческое лицо
Положительное: лицо
Часть лица: часть лица
Лицо ориентира: лицо, отмеченное характерными точками
использовались для обучения трем различным задачам. Отрицательный и положительный используются для классификации граней, положительные и частичные грани используются для регрессии ограничительной рамки, а грань ориентира используется для позиционирования характерных точек.
Б. эффект
Результаты обнаружения лиц и определения местоположения характерных точек лица в этой статье очень хорошие. Дело в том, что этот алгоритм работает быстро, достигая 16 кадров в секунду на процессоре с частотой 2,6 ГГц и 99 кадров в секунду на Nvidia Titan.
Суммировать
В этой статье используется каскадная структура для обнаружения лиц и обнаружения характерных точек.Этот метод является быстрым и эффективным и может рассматриваться для использования на мобильных устройствах. Этот метод также представляет собой метод от грубого к точному, аналогичный идее каскадного AdaBoost Виолы-Джонс.
Аналогично методу Виолы-Джонса: 1. Как выбрать область для обнаружения: пирамида изображений + P-Net 2. Как выделить целевые признаки: CNN 3. Как определить, является ли это заданной целью: каскадное суждение.
приложение
В документах по обнаружению целей часто упоминаются некоторые методы: регрессия ограничивающей рамки, IoU и NMS. Вот подробное введение.
Bounding box regression
Вот хороший ответ:
Проще говоря, это перемещение предсказанного поля в фактическое поле, входной признак — это признак, извлеченный из области-кандидата, а цель — значение изменения двух полей.
IoU
Степень перекрытия (IOU):
Обнаружение объекта должно найти ограничивающую рамку объекта, как на картинке ниже, мы не только должны найти ограничивающую рамку транспортного средства, но также распознать, что объект в ограничивающей рамке является транспортным средством.
Для точности позиционирования ограничительной рамки существует очень важная концепция: поскольку наш алгоритм не может полностью соответствовать размеченным вручную данным, существует формула оценки точности позиционирования: IOU. Он определяет перекрытие двух ограничивающих рамок, как показано на следующем рисунке.
Это отношение площади перекрытия прямоугольных коробок А и В к площади объединения А и В.
Немаксимальное подавление (NMS):
RCNN найдет n прямоугольных блоков, которые могут быть объектами с изображения, а затем присвоит вероятность классификации класса для каждого прямоугольного блока:
Точно так же, как на картинке выше, найдите транспортное средство, и, наконец, алгоритм найдет кучу коробок Нам нужно определить, какие прямоугольные коробки бесполезны. Метод подавления немаксимального значения: сначала предположим, что есть 6 прямоугольных блоков, и отсортируем их в соответствии с вероятностью классификации классификатора.
(1) Начиная с прямоугольного кадра F с максимальной вероятностью, определить, превышает ли перекрытие IOU A~E и F определенный порог;
(2) Предположим, что перекрытие B, D и F превышает пороговое значение, тогда отбрасываем B и D и отмечаем первую прямоугольную рамку F, которую сохраняем.
(3) Из остальных прямоугольных ящиков A, C и E выберите E с наибольшей вероятностью, а затем судить степень перекрытия между E и A и C. Если степень перекрытия больше, чем определенный порог, затем бросьте Это прочь; и отметьте наш второй прямоугольник, который остается.
И так далее, и так далее, найдите все оставшиеся прямоугольники.
Немаксимальное подавление (NMS)Как следует из названияЭто подавление элементов, которые не являются максимумами, и поиск локальных максимумов. Эта часть представляет окрестность, а окрестность имеет два переменных параметра: один размер окрестности, а другой размер окрестности. Общий алгоритм NMS здесь не обсуждается, но он используется при обнаружении объектов для извлечения окна с наивысшей оценкой. Например, при обнаружении пешеходов скользящее окно извлекает признаки, и после классификации и распознавания классификатором каждое окно получает оценку. Но скользящие окна могут привести к тому, что многие окна будут содержать или в основном пересекаться с другими окнами. В настоящее время необходимо использовать NMS для выбора районов с наивысшими оценками (наибольшая вероятность присутствия пешеходов) и подавления окон с низкими показателями.