**[Аннотация]** Мы начнем с технических деталей технологии распознавания лиц и перейдем к предварительному пониманию процесса разработки технологии распознавания лиц. На примере работы экземпляра платформы я покажу вам, как использовать вычислительные ресурсы общедоступного облака для быстрого обучения пригодной для использования модели распознавания лиц.
предисловие
Все должны были видеть «Миссия невыполнима 4» режиссера Брэда Бёрда с Томом Крузом в главной роли? На переполненном вокзале в мгновение ока его распознал компьютер, а за ним и агенты; встретившаяся лицом к лицу красивая женщина была смертоносным убийцей, а мобильный телефон запищал тревогу, и имя и информация о красивой женщине уже были отображены на нем. Это алгоритм распознавания лиц, который мы хотим представить в этой статье, и если вы используете общедоступную облачную платформу искусственного интеллекта для обучения модели.
Как одна из самых ранних зрелых и широко внедренных технологий в области искусственного интеллекта, цель распознавания лиц состоит в том, чтобы определить идентичность лиц на фотографиях и видео. Технология распознавания лиц имеет широкий спектр применения, от разблокировки лицом к лицу и оплаты лицом к лицу в обычных мобильных телефонах, до развертывания и контроля распознавания лиц в сфере безопасности и т. д.Человеческое лицо — это неотъемлемая черта каждого человека, она уникальна и ее нелегко скопировать, что создает необходимую предпосылку для идентификации.
Исследования в области распознавания лиц начались в 1960-х годах с постоянным совершенствованием компьютерных технологий и технологии оптических изображений, а также с возрождением в последние годы технологии нейронных сетей, особенно сверточной нейронной сети для распознавания и обнаружения изображений. значительно улучшен эффект системы распознавания лиц. В этой статье мы начнем с технических деталей технологии распознавания лиц и приведем вас к предварительному пониманию процесса разработки технологии распознавания лиц.Во второй половине статьи мы будем использовать пользовательское зеркалирование платформы ModelArts. чтобы показать вам, как использовать ресурсы общедоступных облачных вычислений для быстрого обучения пригодной для использования модели распознавания лиц.
текст
Независимо от того, основано ли оно на традиционных методах обработки изображений и машинного обучения или на методах глубокого обучения, процесс один и тот же. Как показано на рисунке 1, система распознавания лиц состоит из четырех основных звеньев: обнаружение лиц, выравнивание, кодирование и сопоставление. Поэтому в этой части сначала кратко излагается система распознавания лиц, основанная на традиционных алгоритмах обработки изображений и машинного обучения, и мы видим развитие всего алгоритма глубокого обучения в области распознавания лиц.
процесс распознавания лица
Традиционные алгоритмы машинного обучения
Как упоминалось ранее, цель распознавания лиц состоит в том, чтобы определить личность лица на изображении, поэтому необходимо сначала обнаружить лицо на изображении, Фактически, этот шаг в конечном итоге является проблемой обнаружения цели. Традиционный алгоритм обнаружения цели изображения в основном состоит из трех частей: создание ящика для предложений, разработка функций и классификация, включая идею оптимизации известных алгоритмов серии RCNN, также основанных на этих трех частях.
Первым шагом является создание предлагаемого кадра.Самая простая идея этого шага состоит в том, чтобы обрезать кучу кадров, которые будут обнаружены на изображении, а затем определить, есть ли цель в кадре.Если есть, то Положение кадра на исходном изображении — это обнаруженная цель. Общие стратегии создания ящиков предложений включают скользящее окно, выборочный поиск, рандомизированный первичный поиск и т. д., которые генерируют большое количество ящиков кандидатов, как показано на следующем рисунке.
После получения большого количества кадров-кандидатов следующей наиболее важной частью традиционного алгоритма обнаружения лиц является разработка признаков. Разработка признаков на самом деле заключается в использовании экспертного опыта инженеров-алгоритмистов для извлечения различных особенностей лиц в разных сценах, таких как особенности краев, морфологические особенности формы, особенности текстуры и т. д. Конкретными алгоритмами являются LBP, Gabor, Haar, SIFT и т. д. Алгоритм выделения признаков преобразует изображение лица, представленное двумерной матрицей, в представление различных векторов признаков.
После того, как вектор признаков получен, признаки могут быть классифицированы традиционными классификаторами машинного обучения, и может быть получено суждение о том, является ли это лицом, например, с помощью adaboost, каскада, SVM, случайного леса и т. д. После классификации с помощью традиционных классификаторов можно получить регион, вектор признаков и достоверность классификации лица. С помощью этой информации мы можем завершить работу по выравниванию лиц, представлению признаков, сопоставлению и распознаванию лиц.
Взяв в качестве примера традиционный метод, классический метод HAAR+AdaBoost, на этапе извлечения признаков многие простые признаки сначала извлекаются из изображения с помощью признака хаара. Функция Хаара показана на рисунке ниже. Чтобы обеспечить обнаружение лиц разных размеров, пирамиды Гаусса обычно используются для извлечения признаков Хаара из изображений с разным разрешением.
Метод вычисления признака Хаара заключается в вычитании пикселей в белой области из черной области, поэтому полученные значения различны для лицевых и нелицевых областей. Как правило, в конкретном процессе реализации это можно быстро реализовать методом интегрального графа. Как правило, в тренировочном изображении, нормализованном до 20*20, количество доступных для использования признаков Хаара составляет около 10 000. Следовательно, в случае такого масштаба признаков для классификации и идентификации можно использовать алгоритмы машинного обучения.
После получения признаков Хаара для классификации можно использовать Adaboost.Алгоритм Adaboost — это новый метод строгой классификации, объединяющий несколько методов слабой классификации. В соответствии с каскадным классификатором и порогом выбора обученных признаков распознавание лиц может быть завершено.
Из приведенных выше методов видно, что традиционный алгоритм машинного обучения представляет собой алгоритм, основанный на функциях, поэтому для выполнения проектирования функций и настройки параметров требуется большой опыт инженеров-алгоритмов, а эффект алгоритма не очень хороший. Более того, ручному проектированию трудно быть устойчивым к различным изменениям в среде без ограничений. В прошлых алгоритмах обработки изображений инженеры использовали традиционные методы обработки изображений для извлечения большого количества функций на основе реальных сцен и опыта экспертов, а затем выполняли статистическое обучение извлеченных функций, так что производительность всего алгоритма сильно зависела от реальности. Сцены и экспертный опыт, непринужденные сцены, где категория лиц огромна, а сэмплы каждой категории сильно несбалансированы, не очень хороши. Таким образом, благодаря большому успеху глубокого обучения в обработке изображений в последние годы, технология распознавания лиц также доминирует над глубоким обучением и достигла очень хороших результатов.
Применение глубокого обучения в области распознавания лиц
В системе распознавания лиц глубокого обучения проблема делится на проблему обнаружения цели и проблему классификации, а проблема обнаружения цели, по сути, является проблемой классификации и проблемой регрессии в глубоком обучении.При успешном применении классификации эффект Система распознавания лиц была быстро и значительно улучшена, появилось большое количество компаний, занимающихся визуальными алгоритмами, а распознавание лиц применялось ко всем аспектам общественной жизни.
На самом деле, использование нейронных сетей для распознавания лиц — не новая идея.В 1997 году некоторые исследователи предложили метод, названный нейронной сетью, основанный на вероятностном принятии решений для обнаружения лиц, позиционирования глаз и распознавания лиц. Эта PDBNN распознавания лиц разделена на полностью подключенную подсеть для каждого учебного предмета, чтобы уменьшить количество скрытых единиц и избежать переобучения. Исследователи обучили две PBDNN, используя функции плотности и края по отдельности, а затем объединили их результаты, чтобы получить окончательное решение о классификации. Однако из-за серьезной нехватки вычислительных мощностей и данных в то время алгоритм был относительно простым, поэтому алгоритм не дал хороших результатов. Благодаря зрелости теории обратного распространения и вычислительной мощности только в этом году эффект алгоритма распознавания лиц начал значительно улучшаться.
В глубоком обучении полная система распознавания лиц также включает четыре шага, показанные на рисунке 1. Первый шаг называется алгоритмом обнаружения лиц, который по сути также является алгоритмом обнаружения целей. Второй шаг называется выравниванием лица, которое в настоящее время основано на геометрическом выравнивании на основе ключевых точек и выравнивании лица на основе глубокого обучения. Третий шаг, представление признаков, в глубоком обучении состоит в том, чтобы извлечь некоторые слои признаков в сети классификации в качестве представления признаков лица с помощью идеи сети классификации, а затем таким же образом обработать стандартное изображение лица. , и, наконец, передать сравнение.Метод запроса завершает общую систему распознавания лиц. Ниже приводится краткий обзор развития алгоритмов обнаружения и распознавания лиц.
Распознавание лиц
После большого успеха глубокого обучения в классификации изображений он вскоре был использован для проблемы обнаружения лиц.Сначала большинство идей для решения этой проблемы были основаны на инвариантности масштаба сети CNN.Сделайте прогнозы по информации о классе и местоположении . Кроме того, поскольку регрессия положения каждой точки на карте признаков выполняется напрямую, точность полученного кадра лица относительно низкая, поэтому некоторые люди предложили многоэтапный классификатор, основанный на стратегии обнаружения от грубого к точному. для обнаружения лиц.Например, основным методом является Cascade CNN, DenseBox и MTCNN, и это лишь некоторые из них.
MTCNN - это многозадачный метод. Впервые обнаружение области лица и обнаружение ключевых точек лица объединены. Как и Cascade CNN, он также основан на каскадной структуре, но общая идея более оригинальна и разумна. разделен на две части Он разделен на три части: PNet, RNet и ONet, а структура сети показана на следующем рисунке.
Во-первых, сеть PNet изменяет размер входного изображения до разных размеров.В качестве входных данных он возвращается к кадру классификации и обнаружения лиц сразу после двух слоев свертки.Эта часть называется грубым обнаружением. После того, как лицо, полученное грубым обнаружением, вырезается из исходного изображения, во входной R-Net снова выполняется обнаружение лица. Наконец, полученное лицо окончательно вводится в O-Net, а полученный результат вывода O-Net является окончательным результатом обнаружения лица.Общий процесс MTCNN относительно прост и может быть быстро развернут и реализован, но MTCNN имеет много недостатков. Включение многоэтапного обучения задач занимает много времени, а хранение большого количества промежуточных результатов требует большого объема памяти. Кроме того, поскольку сеть напрямую возвращает ограничивающую рамку к характерным точкам, эффект обнаружения лица маленькой цели не очень хорош. Кроме того, чтобы удовлетворить потребности в распознавании лиц разных размеров в процессе рассуждений, сети необходимо изменять размеры изображений лиц до разных размеров, что серьезно влияет на скорость рассуждений.
С развитием области обнаружения целей все больше и больше экспериментальных свидетельств доказывают, что все больше узких мест в обнаружении целей заключается в противоречии между семантикой сети низкого уровня, но относительно высокой точностью позиционирования, и семантикой сети высокого уровня, но низкой точностью позиционирования. стали популярными стратегии на основе и стратегии межуровневого слияния, такие как знаменитые серии Faster-rcnn, SSD и yolo. Поэтому все больше и больше алгоритмов обнаружения лиц используют якоря и несколько выходов для удовлетворения эффекта обнаружения лиц разных размеров.Наиболее известным алгоритмом является сетевая структура SSH.
Как видно из приведенного выше рисунка, в сети SSH уже есть метод обработки вывода разных сетевых слоев.Для завершения процесса обнаружения лиц разного размера требуется только один вывод, поэтому он называется одноэтапным. Сеть SSH также относительно проста, то есть расчет ветвей и вывод будятся для разных сверточных слоев VGG. Кроме того, функции высокого уровня подвергаются повышающей дискретизации, а функция Eltwise Sum выполняется с функциями нижнего уровня, чтобы завершить слияние функций нижнего уровня и функций высокого уровня. Кроме того, сеть SSH также разрабатывает модуль обнаружения и модуль контекста.Как часть модуля обнаружения, модуль контекста принимает структуру начала для получения дополнительной информации о контексте и большего поля восприятия.
модуль обнаружения в SSH
Модуль контекстного модуля в модуле обнаружения в SSH
SSH использует свертку 1 × 1 для вывода окончательных результатов ветви регрессии и классификации и не использует полный слой соединения, поэтому он может гарантировать, что ввод изображений разных размеров может получить выходные результаты, которые также реагируют на полную свертку. дизайн в то время тенденция. К сожалению, сеть не выводит ориентиры.Кроме того, более популярная структура пирамиды признаков не используется в структуре контекста.Основа VGG16 относительно неглубокая.С непрерывным развитием технологии оптимизации лица также совершенствуются различные приемы. Поэтому, наконец, я представлю сеть Retinaface, которая широко используется в текущем алгоритме распознавания лиц.
Retinaface был предложен Google.Он основан на сетевой структуре RetinaNet.Он использует технологию функциональных пирамид для реализации слияния многомасштабной информации, которая играет важную роль в обнаружении мелких объектов. Структура сети показана ниже.
Как видно из приведенного выше рисунка, магистральная сеть Retinaface является обычной сверточной нейронной сетью, а затем добавляются структура пирамиды функций и модуль контекстного модуля для дальнейшей интеграции контекстной информации и завершения классификации, обнаружения, ориентира. регрессия и самоулучшение имиджа различных задач.
Поскольку сущностью обнаружения лиц является задача обнаружения целей, будущее направление обнаружения целей также применимо к направлению оптимизации лица. В настоящее время все еще трудно обнаруживать малые цели и закрытые цели при обнаружении целей.Кроме того, большинство сетей обнаружения развернуты на терминальной стороне.Поэтому сжатие сетевой модели и ускорение реконструкции на основе терминальной стороны являются более сложными. для инженеров алгоритмов Понимание и применение алгоритмов обнаружения глубокого обучения.
распознавание лица
Проблема распознавания лиц, по сути, является проблемой классификации, то есть каждый человек классифицируется и определяется как класс, но в реальном процессе приложения будет много проблем. Во-первых, существует много категорий лиц.Если вы хотите идентифицировать всех жителей города, категорий около 100 000. Кроме того, для каждого человека доступно очень мало помеченных выборок, и будет много длинных хвостов данных. В соответствии с вышеуказанными проблемами традиционная сеть классификации CNN должна быть изменена.
Мы знаем, что, хотя глубокая сверточная сеть является моделью черного ящика, она может характеризовать особенности изображений или объектов посредством обучения данных. Таким образом, алгоритм распознавания лиц может извлекать большое количество векторов признаков лица через сверточную сеть, а затем завершать процесс распознавания лиц в соответствии с оценкой сходства и сравнением с базовой библиотекой. разные лица. Генерация сходных признаков для одного и того же лица будет в центре внимания этого типа задачи встраивания, то есть как максимизировать расстояние между классами и минимизировать расстояние внутри классов.
При распознавании лиц магистральная сеть может использовать различные сверточные нейронные сети для завершения извлечения признаков, таких как повторная сеть, начало и другие классические сверточные нейронные сети в качестве основы, ключ заключается в разработке и реализации последнего уровня функции потерь. Теперь давайте проанализируем различные функции потерь в алгоритме распознавания лиц, основанном на глубоком обучении двух идей.
Идея 1: метрическое обучение, включая контрастные потери, триплетные потери и метод выборки.
Идея 2: классификация на основе полей, включая softmax с потерей в центре, сферическую поверхность, нормальную поверхность, AM-sofrmax (cosface) и дуговую поверхность.
1. Metric Larning
(1) Контрастная потеря
Одним из первых применений идей метрического обучения в глубоком обучении является DeepID2. Основное улучшение DeepID2 заключается в том, что одна и та же сеть обучает проверку и классификацию одновременно (с двумя контрольными сигналами). Среди них контрастные потери вводятся в слой признаков потерь проверки.
Контрастная потеря учитывает не только минимизацию расстояния одной и той же категории, но также учитывает максимизацию расстояния различных категорий и повышает точность распознавания лиц за счет полного использования информации о метках обучающих выборок. Следовательно, функция потерь, по существу, делает фотографии одного и того же человека достаточно близкими в пространстве признаков, а разных людей — достаточно далеко друг от друга в пространстве признаков, пока не будет превышен определенный порог. (звучит немного как потеря триплета).
Контрастная потеря вводит два сигнала и обучает сеть с ними. Выражение для идентификации сигнала выглядит следующим образом:
Выражение для проверочного сигнала выглядит следующим образом:
Основываясь на таком сигнале, DeepID2 использует не изображение как единицу во время обучения, а пару изображений как единицу.Каждый раз, когда вводятся два изображения, это 1 для одного и того же человека и -1, если это не одно и то же человек .
(2) Потеря триплета от FaceNet
Этот 15-летний FaceNet от Google также является переломным моментом в области распознавания лиц. Он предлагает унифицированную структуру решения для большинства проблем с лицами, то есть: распознавание, проверку, поиск и другие задачи можно выполнять в пространстве признаков, и единственное, на чем нужно сосредоточиться, — это как лучше сопоставить лицо с элементом. космос. .
На основе DeepID2 Google отказался от уровня классификации, а именно от потери классификации, и улучшил контрастную потерю до потери триплетов только с одной целью: изучить лучшие функции.
Функция потери потери триплета публикуется напрямую.Ввод больше не пара изображений, а три изображения (триплет), а именно якорное лицо, отрицательное лицо и положительное лицо. Якорь и Положительное Лицо — один и тот же человек, а Отрицательное Лицо — другой человек. Тогда функция потерь триплетных потерь может быть выражена как:
Интуитивная интерпретация этой формулы заключается в том, что расстояние между Якорем и Положительным в пространстве признаков меньше, чем расстояние между Якорем и Негативом, и превышает Поле Альфа. Интуитивная разница между ним и контрастной потерей показана на рисунке ниже.
(3) Проблемы с метрическим обучением
Вышеупомянутые две функции потерь очень эффективны, и они также соответствуют объективному познанию людей.Существует также большое количество приложений в практических проектах, но этот метод все еще имеет некоторые недостатки.
- **Обучение модели основано на большом количестве данных, а процесс подгонки идет медленно. **Поскольку как контрастные потери, так и потери триплетов основаны на паре или триплете, необходимо подготовить большое количество положительных и отрицательных образцов, и невозможно полностью пройти все возможные комбинации образцов после обучения в течение длительного времени. В Интернете есть блоги, в которых говорится, что для завершения подбора азиатского набора данных, состоящего примерно из 10 000 человек и 500 000 изображений, требуется месяц.
- **Режим примера влияет на обучение модели. **Например, для потери триплетов якорное лицо, отрицательное лицо и положительное лицо должны быть выбраны случайным образом в процессе обучения.Хорошая выборка выборки может ускорить скорость обучения и сходимость модели, но трудно достичь очень хороших результатов в процессе обучения. процесс случайной выборки.хорошо.
- **Отсутствие добычи сложных триплетов, что также является проблемой для большинства моделей обучения. **Например, в области распознавания лиц жесткие негативы представляют похожих, но разных людей, а жесткие позитивы представляют одного и того же человека, но совершенно разные позы, выражения и т. д. Изучение и специальная обработка сложных примеров имеют решающее значение для повышения точности моделей распознавания.
2. Различные приемы, чтобы исправить отсутствие Metric Learning
(1) Тонкая настройка
Справочный документ: Глубокое распознавание лиц
В статье «Глубокое распознавание лиц», чтобы ускорить обучение потере триплетов, модель распознавания лиц сначала обучается с помощью softmax, затем слой классификации на верхнем слое удаляется, а затем выполняется тонкая настройка модели на уровне признаков. выполняется с тройной потерей, при этом также достигаются очень хорошие результаты. Этот метод также является наиболее часто используемым методом при обучении выпадению триплетов.
(2) Модификация триплетной потери
Справочный документ: В защиту тройной потери для повторной идентификации личности
Автор высказывается о недостатках триплетной потери. Для триплета, необходимого для обучения потере триплетов, привязки (a), положительного (p), отрицательного (n), его необходимо выбрать случайным образом из обучающего набора. Из-за функции потерь очень вероятно, что будет выбрана очень простая комбинация выборок, то есть очень похожая положительная выборка и очень похожая отрицательная выборка, и предоставление сети возможности все время учиться на простых выборках ограничит нормализация работы сети. Таким образом, сидя и изменяя потерю триплетов и добавляя новый трюк, множество экспериментов доказали, что эта улучшенная версия метода работает очень хорошо.
В обучении потери триплетов Facenet, предоставленном Google, после выбора набора B триплетов данные будут организованы в группы по 3 по порядку, поэтому всего существует 3B видов комбинаций, но на самом деле их столько же, сколько этих 3B. Комбинация триплетов эффективна, использовать только 3B видов расточительно.
В данной работе автор предлагает TriHard-проигрыш, основная идея которого состоит в том, чтобы добавить обработку сложных примеров на основе триплетного проигрыша: для каждой обучающей партии случайным образом выбираются P пешеходов с идентификаторами, а каждый пешеход случайным образом выбрано K разных изображений, то есть пакет содержит P×K изображений. Затем для каждого изображения a в пакете мы можем выбрать самый сложный положительный образец и самый сложный отрицательный образец, чтобы сформировать триплет с a. Сначала мы определяем набор изображений с тем же идентификатором, что и a, как A, а остальные наборы изображений с разными идентификаторами — как B, тогда потеря TriHard выражается как:
где – искусственно установленный пороговый параметр. TriHard loss рассчитает евклидово расстояние каждого изображения в a и пакете в пространстве признаков, а затем выберет положительный образец p с самым дальним (наименее похожим) расстоянием от a и отрицательный образец n с самым близким (наиболее похожим) расстоянием до Вычислите тройную потерю. где d представляет собой евклидово расстояние. Другой способ записи функции потерь выглядит следующим образом:
Кроме того, автор также выдвинул несколько экспериментальных точек в раунде:
- Квадрат евклидова расстояния не так хорош, как квадрат евклидова расстояния (причина будет кратко упомянута позже).
- Функция потерь Soft-Margin предлагается заменить исходное выражение потерь Triplet.Мягкая маржа может сделать функцию потерь более гладкой, избежать сходимости функции в плохой локальной области и в определенной степени ускорить сходимость алгоритма.
- Введен пакетный жесткий сэмплинг
Этот метод лучше, чем традиционная потеря триплетов после рассмотрения сложного примера.
(3) Модификации методов потерь и проб
Справочный документ: Глубокое метрическое обучение с помощью встраивания расширенных структурированных функций
В статье сначала предлагаются существующие триплетные методы.Невозможность в полной мере воспользоваться тренировочными партиями для обучения мини-пакетов SGD., творчески преобразовал вектор попарных расстояний в матрицу попарных расстояний, а затем разработал новую структурированную функцию потерь, которая добилась очень хороших результатов. Как показано на рисунке ниже, это диаграмма выборки трех методов: контрастное встраивание, триплетное встраивание и структурированное встраивание с приподнятой структурой.
Интуитивно, приподнятое структурированное встраивание включает в себя больше режимов классификации.Чтобы избежать трудностей обучения, вызванных большим объемом данных, автор дает структурированную функцию потерь на этой основе. Как показано ниже.
где P — набор положительных образцов, а N — набор отрицательных образцов. Видно, что по сравнению с приведенной выше функцией потерь функция потерь начинает рассматривать проблему выборочного набора. Однако не все отрицательные границы между парами выборок несут полезную информацию.Другими словами, отрицательные границы между случайно выбранными парами выборок несут очень ограниченную информацию, поэтому нам необходимо разработать метод неслучайной выборки.
Через приведенную выше структурированную функцию потерь мы можем видеть, что при окончательном расчете функции потерь учитываются наиболее похожие и наименее непохожие жесткие пары (то есть использование max в функции потерь), что эквивалентно добавлению в в процессе обучения.Информация о трудных соседях используется для обучения мини-пакета.Таким образом, обучающие данные могут искать образцы жестких отрицаний и жестких положительных результатов с высокой вероятностью, и по мере продолжения обучения обучение жестких Образцы также максимизируют класс.Цель межклассового расстояния и минимизация внутриклассового расстояния.
Как показано на рисунке выше, в этой статье пары выборок не выбираются случайным образом при выполнении метрического обучения, а интегрируются трудноразличимые несколько типов выборок для обучения. Кроме того, в статье также упоминается, что процесс поиска максимума или поиска одного наибольшего отрицательного значения приведет к тому, что сеть сойдется к плохому локальному оптимуму.Я думаю, это может быть из-за эффекта усечения максимума, который делает градиент более крутым или градиент имеет слишком много разрывов. Автор дополнительно улучшил функцию потерь и принял гладкую верхнюю границу, которая показана в следующей формуле.
(4) Дальнейшие модификации метода выборки и потери триплетов
Справочный документ: Вопросы выборки в глубоком обучении
- Модификации метода выборки
**В статье указано, что жесткие отрицательные выборки имеют небольшое расстояние между якорями.При наличии шума на этот метод выборки легко влияет шум, что приводит к коллапсу модели во время обучения. **FaceNet когда-то предложил полутвердый метод отрицательного майнинга, который предполагает, что отобранные образцы не слишком тверды. Однако, согласно анализу автора, образец должен быть равномерно отобран в образце, поэтому наилучшее состояние выборки должно быть в равномерно распределенных отрицательных образцах, включая твердые, полутвердые и легкие образцы, поэтому автор предлагает новую выборку. метод Взвешенная по расстоянию выборка.
В реальном состоянии мы сэмплируем все выборки попарно, вычисляем их расстояния и, наконец, получаем распределение точек по расстояниям, которые имеют следующую зависимость:
Затем, в соответствии с заданным расстоянием, вероятность выборки может быть получена через функцию, обратную вышеуказанной функции, и доля каждого расстояния, которое необходимо выбрать, определяется в соответствии с вероятностью. При заданном якоре вероятность выборки отрицательного примера определяется как:
Поскольку обучающие выборки сильно связаны с обучающим градиентом, автор также отображает взаимосвязь между расстоянием выборки, методом выборки и дисперсией градиента данных, как показано на следующем рисунке. Из рисунка видно, что выборки, отобранные методом жесткого отрицательного майнинга, все находятся в области высокой дисперсии.Если в наборе данных есть шум, то выборка легко поддается воздействию шума, что приводит к коллапсу модели. Случайно выбранные образцы, как правило, концентрируются в областях с низкой дисперсией, что делает потери небольшими, но в настоящее время модель фактически не обучена. Диапазон выборки полужесткого отрицательного майнинга очень мал, что, вероятно, приведет к тому, что модель будет сходиться очень рано, а потери уменьшатся очень медленно, но на самом деле в это время модель не была хорошо обучена; и метод предложенный в этой статье, может обеспечить равномерную выборку по всему набору данных.
- Модификации функции потерь
**Автор обнаружил проблему при наблюдении констриктивных потерь и потерь триплетов, то есть функция потерь отрицательного образца очень гладкая, когда она очень жесткая, а это значит, что градиент будет очень маленьким, а малый градиент означает очень низкий для обучения Твердые образцы не могут быть полностью обучены, и сеть не может получить эффективную информацию о жестких образцах, поэтому эффект жестких образцов будет хуже. ** Так что, если потеря не такая гладкая вокруг жесткого образца, то есть производная, часто используемая в глубоком обучении, равна 1 (например, relu), то жесткий режим решит проблему исчезновения градиента. Кроме того, функция потерь также должна учитывать положительные и отрицательные выборки при потере триплетов и имеет функцию проектирования запаса, то есть адаптивную к различным распределениям данных. Функция потерь выглядит следующим образом:
Расстояние между якорным образцом и положительным образцом мы называем расстоянием положительной пары, а расстояние между якорным образцом и отрицательным образцом расстоянием отрицательной пары. Параметр бета в формуле определяет границу между положительным парным расстоянием и отрицательным парным расстоянием примера.Если положительное парное расстояние Dij примера больше, чем бета, потери будут увеличиваться, или если отрицательное расстояние пары примера Dij меньше, чем бета , потери возрастут. A управляет интервалом разделения выборок; yij равно 1, если выборка представляет собой положительную пару, и -1, если выборка представляет собой отрицательную пару. На рисунке ниже показана кривая функции потерь.
Из приведенного выше рисунка видно, почему градиент исчезает, когда он очень жесткий, потому что синяя линия становится все более плавной, когда она приближается к точке 0, а градиент становится все меньше и меньше. Кроме того, автор также оптимизировал настройки, добавив смещение выборки, смещение категории и гиперпараметры, а также дополнительно оптимизировав функцию потерь, которая может автоматически изменяться в соответствии с процессом обучения.
3. Margin Based Classification
Классификация на основе маржи не накладывает сильных интуитивных ограничений на функции, такие как метрическое обучение, которое напрямую вычисляет потери на уровне функций.По-прежнему используйте распознавание лиц в качестве задачи классификации для обучения, путем преобразования формулы softmax косвенно реализуется ограничение маржи для слоя объектов, так что конечный признак, полученный сетью, является более дискриминационным.
(1) Центральная потеря
Справочный документ: Подход к обучению дискриминационным признакам для глубокого распознавания лиц
В этой статье ECCV 2016 в основном предлагается новая потеря: центральная потеря, которая используется, чтобы помочь Softmax Loss в тренировке лица, чтобы сжать одну и ту же категорию вместе и, наконец, получить больше отличительных признаков. Значение потери центра состоит в том, чтобы обеспечить центр класса для каждого класса и минимизировать расстояние между каждым образцом в минимальной партии и центром соответствующего класса, чтобы можно было достичь цели уменьшения расстояния внутри класса. На рисунке ниже показана функция потерь, которая минимизирует расстояние между центрами выборки и класса.
Для центра категории, соответствующего каждому образцу в каждой партии, так же, как размерность объекта, евклидово расстояние используется как многомерное многообразное расстояние для выражения. Следовательно, на основе softmax функция потерь центра потерь:
Личное понимание потери центра похоже на добавление функции кластеризации к функции потерь.По мере обучения образцы сознательно группируются в центре каждой партии, чтобы еще больше увеличить разницу между классами. Но я думаю, что для многомерных объектов евклидово расстояние не отражает расстояние кластеров, поэтому такая простая кластеризация не может дать лучших результатов в больших размерностях.
(2) L-Софтмакс
Цель оригинального Softmax — преобразовать метод векторного умножения в отношение между модулем и углом вектора, то есть на этой основе L-Softmax надеется добавить положительную целочисленную переменную m, как видите:
Результирующая граница решения может более строго ограничивать вышеупомянутые неравенства, делая интервал внутри класса более компактным и делая интервал между классами более различимым. Таким образом, на основе приведенной выше формулы и формулы softmax формула L-softmax может быть получена как:
Поскольку cos является убывающей функцией, умножение на m уменьшит внутренний продукт, и в конечном итоге расстояние между самими классами будет увеличиваться по мере обучения. Управляя размером m, можно увидеть изменения расстояния между классами и между классами.Двумерный график показан следующим образом:
Чтобы гарантировать, что угол между векторами категорий может удовлетворять процессу поля во время обратного распространения и вывода, а также обеспечить монотонное уменьшение, строится новая функциональная форма:
Некоторые люди сообщали, что настроить параметры L-Softmax сложно, и для достижения лучших результатов необходимо повторить настройку параметра m.
(3) Нормфейс
Справочный документ: NormFace: встраивание гиперсфер L2 для проверки лиц
Это очень интересная статья, в которой было проведено много интересных дискуссий о нормализации веса и признаков. В статье предполагается, что, хотя сферическое лицо хорошо, оно некрасиво. На этапе тестирования сферическое лицо измеряет сходство по значению косинуса между объектами, то есть в качестве меры сходства используется угол. Однако в процессе обучения также существует проблема.Веса не нормируются.Когда функция потерь уменьшается в процессе обучения, модуль весов будет становиться все больше и больше.Поэтому направление оптимизации функции потерь сферического грани не очень строго На самом деле, оптимизация Существует также часть направления на увеличение длины функции. Некоторые блоггеры провели эксперименты и обнаружили, что с увеличением m масштаб координат также увеличивается, как показано на следующем рисунке.
Поэтому в процессе оптимизации автор нормализует характеристики. Соответствующая функция потерь также показана ниже:
Где W и f — нормированные признаки, а два скалярных произведения — угловые косинусы. Введение параметра s обусловлено математической природой, обеспечивающей рациональность размера градиента.В исходном тексте есть относительно интуитивное объяснение.Вы можете прочитать исходную статью,не в этом суть. s может стать либо обучаемым параметром, либо гиперпараметром.Автор статьи дал много рекомендуемых значений, которые можно найти в статье.Фактически нормализованное евклидово расстояние в FaceNet унифицировано с косинусным расстоянием.
4. AM-softmax/CosFace
Справочный документ: Additive Margin Softmax для проверки лиц
CosFace: Large Margin Cosine Loss for Deep Face Recognition
Глядя на приведенный выше документ, вы обнаружите, что отсутствует одна вещь, а именно маржа, или значение маржи меньше, поэтому AM-softmax ввел маржу на основе нормализации. Функция потерь выглядит следующим образом:
Интуитивно понятно, что отношение -m меньше, поэтому значение функции потерь больше, чем в Normface, поэтому возникает ощущение запаса. m — гиперпараметр, управляющий штрафом, и чем больше m, тем сильнее штраф. Чем хорош этот метод, так это тем, что его легко воспроизвести, и не так много ухищрений по настройке параметров, да и эффект тоже очень хороший.
(1) АркФейс
По сравнению с AM-softmax разница заключается в том, как Arcface вводит маржу, функцию потерь:
На первый взгляд это то же самое, что и AM-softmax? Обратите внимание, что m находится в косинусе. В статье отмечается, что граница между признаками, полученными на основе упомянутой выше оптимизации, более совершенна и имеет более сильную геометрическую интерпретацию.
Однако есть ли проблема с введением маржи таким образом? Хорошо подумайте, должен ли cos(θ+m) быть меньше, чем cos(θ)?
Наконец, мы используем рисунок в статье, чтобы объяснить эту проблему, а также подведем итог части этой главы, посвященной классификации на основе маржи.
Это изображение взято из Arcface, Абсцисса - это угол между объектом и центром класса, а ордината - значение части молекулярного индекса функции потерь (независимо от s). Чем меньше значение, тем больше функция потерь.
Прочитав так много статей о распознавании лиц на основе классификации, я полагаю, у вас также возникло ощущение, что все, кажется, суетятся из-за функции потерь, или, точнее, все обсуждают, как спроектировать целевую логит-θ-кривую в приведенном выше фигура.
Эта кривая означает, как вы хотите оптимизировать выборки, которые отклоняются от цели, или, в зависимости от степени отклонения от цели, насколько штрафовать. Два момента, чтобы подвести итог:
1. Слишком сильные ограничения нелегко обобщить. Например, функция потерь Sphereface может удовлетворять требованию, чтобы максимальное расстояние внутри класса было меньше минимального расстояния между классами, когда m=3 или 4. В это время значение функции потерь велико, то есть целевые логиты малы. Но это не означает, что его можно обобщить на выборки за пределами обучающей выборки. Наложение слишком жестких ограничений ухудшит производительность модели и сделает обучение менее вероятным.
2. Важно выбрать, какие образцы оптимизировать. В статье Arcface указано, что слишком большое количество выборок θ∈[60°, 90°] может привести к несходимости обучения. Оптимизация выборок для θ ∈ [30°, 60°] может повысить точность модели, в то время как чрезмерная оптимизация выборок для θ ∈ [0°, 30°] не принесет значительного улучшения. Что касается образцов с большими углами, отклонение слишком далеко от цели, и принудительная оптимизация, вероятно, снизит производительность модели.
Это также отвечает на вопрос, оставленный в предыдущем разделе: кривая Arcface на приведенном выше рисунке поднимается назад, что не имеет значения и даже полезно. Потому что может быть бесполезно оптимизировать твердые образцы с большими углами. Это то же самое, что и полужесткая стратегия отбора проб в FaceNet.
Классификация на основе маржи Дальнейшее чтение
1. A discriminative feature learning approach for deep face recognition [14]
Предлагается центральная потеря, которая взвешивается и интегрируется в исходную потерю softmax. При сохранении центра евклидова космического класса расстояние внутри класса уменьшается, а различительная способность признака повышается.
2. Large-margin softmax loss for convolutional neural networks [10]
Предыдущая статья автора Sphereface, ненормированные веса, ввела поля в потерях softmax. Это также включает в себя детали обучения Sphereface.
Обучите модель лица с помощью ModelArts
Объяснение реализации алгоритма распознавания лиц
Модель алгоритма распознавания лиц, которую мы используем в этой статье, в основном состоит из двух частей:
- Первая часть представляет собой модель алгоритма обнаружения лица, которая распознает лицо на изображении и возвращает информацию о положении лица;
- Вторая часть — это модель алгоритма представления признаков лица, также известная как модель распознавания. Эта часть встраивает обрезанное изображение лица в вектор фиксированного размера, а затем использует вектор для сравнения с базовой библиотекой для завершения общего процесса распознавания лиц.
Как показано на рисунке ниже, общий процесс реализации алгоритма разделен на две части: оффлайн и онлайн.Прежде чем каждый раз идентифицировать разных людей, сначала используйте обученный алгоритм для создания стандартной базовой библиотеки лиц и сохраните данные базовой библиотеки в модельискусство. Затем в каждом процессе вывода входное изображение будет проходить через модель обнаружения лиц и модель распознавания лиц, чтобы получить функцию лица, а затем на основе этой функции в базовой библиотеке будет выполняться поиск функции с парой наибольшего сходства для завершения анализа. процесс распознавания лиц.
В процессе реализации мы используем алгоритм на основе Retinaface+resnet50+arcface для завершения выделения признаков изображений лиц, в котором Retinaface используется в качестве модели обнаружения, а resnet50+arcface – в качестве модели выделения признаков.
В зеркале есть два скрипта беговой тренировки, соответствующие тренировке распознавания лиц и тренировке распознавания лиц.
-
Сценарий обучения распознаванию лиц:
run_face_detection_train.sh
Команда запуска для этого скрипта
sh run_face_detection_train.sh data_path model_output_path
Где model_output_path — это путь к выходным данным модели, data_path — это входной путь обучающего набора для обнаружения лиц, а структура пути входного изображения выглядит следующим образом:
detection_train_data/
train/
images/
label.txt
val/
images/
label.txt
test/
images/
label.txt
-
Сценарий обучения распознаванию лиц:
run_face_recognition_train.sh
Команда запуска для этого скрипта
sh run_face_recognition_train.sh data_path model_output_path
Где model_output_path — это путь к выходным данным модели, data_path — это входной путь обучающего набора для обнаружения лиц, а структура пути входного изображения выглядит следующим образом:
recognition_train_data/
cele.idx
cele.lst
cele.rec
property
-
Скрипт, сгенерированный базовой библиотекой:
run_generate_data_base.sh
Команда запуска для этого сценария:
sh run_generate_data_base.sh data_path detect_model_path recognize_model_path db_output_path
Где data_path — это входной путь базовой библиотеки, detect_model_path — входной путь модели обнаружения,cognition_model_path — входной путь модели распознавания, а db_output_path — выходной путь базовой библиотеки.
-
Скрипт, сгенерированный базовой библиотекой:
run_face_recognition.sh
Команда запуска для этого сценария:
sh run_generate_data_base.sh data_path db_path detect_model_path recognize_model_path
Где data_path — это входной путь тестового изображения, db_path — это путь к базовой библиотеке, detect_model_path — это входной путь модели обнаружения,cognin_model_path — входной путь модели распознавания.
тренировочный процесс
HUAWEI CLOUD ModelArts имеет функцию обучающих заданий, которую можно использовать для обучения модели и управления параметрами и версиями обучения модели. Эта функция полезна для разработчиков, которые итеративно разрабатывают несколько версий. В учебном задании есть несколько предустановленных изображений и алгоритмов.В настоящее время есть предустановленные изображения для распространенных фреймворков (включая Caffe, MXNet, Pytorch, TensorFlow) и собственный образ движка чипа Huawei Ascend (Ascend-Powered-Engine).
В этой статье, основываясь на функции пользовательского изображения в ModelArts, мы загрузим собственное полное изображение, отлаженное локально, и воспользуемся ресурсами графического процессора HUAWEI CLOUD для обучения модели.
Мы хотим обучить модель распознавания лиц на ModelArts в HUAWEI CLOUD на основе данных общих звездочек на сайте. В этом процессе, поскольку сеть распознавания лиц представляет собой сетевую структуру, разработанную инженером, ее необходимо загрузить через пользовательское изображение. Итак, весь процесс тренировки лица делится на следующие девять шагов:
- Создайте локальную среду Docker
- Загрузите базовый образ из HUAWEI CLOUD
- Создайте пользовательскую среду зеркального отображения в соответствии с вашими потребностями
- Импорт данных обучения в пользовательское изображение
- Импортировать базовую библиотеку распознавания лиц в пользовательское изображение
- Импорт предварительно обученных моделей в пользовательские изображения
- Загрузить собственное изображение в SWR
- Используйте учебные задания HUAWEI CLOUD для обучения
- Использование HUAWEI CLOUD для логических выводов
Создайте локальную среду Docker
Среду Docker можно создать на локальном компьютере или приобрести эластичный облачный сервер в HUAWEI CLOUD для создания среды Docker. Обратитесь к официальной документации Docker за всем процессом:
Загрузите базовый образ из HUAWEI CLOUD
URL описания официального сайта:
support.huaweicloud.com/engineers-no…
Нам нужно использовать среду MXNet для обучения.Во-первых, нам нужно загрузить базовый образ соответствующего пользовательского образа из HUAWEI CLOUD. Команда загрузки, указанная на официальном сайте, выглядит следующим образом:
Объяснение этой команды можно найти в спецификации базового образа для обучающего задания.
support.huaweicloud.com/engineers-no…
В соответствии с требованиями нашего скрипта я использую образ cuda9:
Официальный также дает другой метод, который заключается в использовании файла докера. Dockerfile базового образа также находится в спецификации базового образа учебного задания. Вы можете обратиться к dockerfile:
Создайте пользовательскую среду зеркального отображения в соответствии с вашими потребностями
Поскольку я ленив, я до сих пор не использую метод Dockerfile для сборки образа самостоятельно. я используюпо-другому!
Поскольку нашим требованием является cuda 9 и некоторые связанные с ним зависимости от Python, предполагая, что официальный образ предоставляет cuda 9, мы можем добавить требование.txt в сценарий обучения, следуя этому руководству. Просто, эффективно и быстро, чтобы решить ваши потребности! ! ! Вот инструкция~~~
support.Huawei cloud.com/model arts_post…
Загрузить собственное изображение в SWR
Учебник на официальном сайте:
На странице загрузки образа написано, что файл после распаковки не должен превышать 2 ГБ. Однако официальный базовый образ весит 3,11 ГБ. После добавления необходимой предварительно обученной модели размер образа составляет 5+ ГБ, поэтому страницу нельзя использовать для загрузки, и необходимо использовать клиент. Чтобы загрузить изображение, вы должны сначала создать организацию.
Если вам сложно понять документацию по продукту, вы можете попробовать зеркалирование по принципу pull/push на странице SWR:
Вот руководство о том, как отправить локальный образ в облако. Первый шаг — войти в хранилище:
Второй шаг — вытащить изображение, которое мы заменим нашим собственным изображением.
Третий шаг — изменить организацию, используя имя организации, созданное из документации по продукту. На этом шаге вам нужно переименовать локальный образ в имя образа, распознаваемое в облаке. Для пояснения см. следующий рисунок:
Четвертый шаг — нажать изображение,
Когда вы овладеете этими четырехступенчатыми навыками, вы можете оставить это руководство и использовать клиент для загрузки. Используйте клиент для входа и загрузки. Логины клиента можно сгенерировать с помощью команды временного входа в докер. Эта страница находится в разделе «Мое изображение» -> «Загрузка клиента» -> «Создать временную команду входа в докер»:
В локальной среде Docker после входа в систему с помощью этой сгенерированной временной команды входа в Docker используйте следующую команду для загрузки образа:
Используйте учебные задания HUAWEI CLOUD для обучения
HUAWEI CLOUD ModelArts предоставляет пользователям обучающие задания для обучения моделей. В задании на обучение есть предустановленные изображения и необязательные пользовательские изображения. В предустановленные образы входит большинство фреймворков, представленных на рынке, когда нет особых требований, также очень удобно использовать образы этих фреймворков для обучения. В этом тесте по-прежнему используется пользовательское изображение.
В пользовательском образе вам нужно не только настроить собственную среду в образе, но и, если вы измените способ запуска задания обучения, вам также потребуется изменить сценарий запуска обучения. В пути /home/work/ официального образа, взятого с официального веб-сайта Huawei Cloud ModelArts, есть сценарий запуска «run_train.sh». На основе этого сценария необходимо изменить настроенный сценарий запуска. Главное, обратите внимание на «dls_get_app», это команда, связанная со скачиванием из OBS. Остальные части модифицируются по собственным сценариям обучения.
Если вам нужно загрузить результаты обучения или модели в OBS, вам нужно обратиться к команде «dls_get_app» плюс «dls_upload_model». В нашем обучении загруженный скрипт выглядит следующим образом:
При отладке учебного задания в настоящее время вы можете использовать бесплатную часовую версию V100. Хорошая часть работы по обучению ModelArts заключается в облегчении управления версиями. Все параметры, переданные в сценарий обучения через параметры запуска, будут записаны в версию, также вы можете использовать сравнение версий для сравнения параметров. Еще одним удобным местом является то, что его можно модифицировать на основе определенной версии, что сокращает шаг повторного ввода всех параметров, что более удобно для отладки.
После завершения обучения в учебном задании модель также можно развернуть в режиме онлайн в ModelArts.
Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~