Введение

Чтобы подтвердить личность фермера, HARA требует, чтобы фермеры зарегистрировали свой национальный идентификационный номер (известный как Kartu Tanda Penduduk, сокращенно KTP), сфотографировали свой KTP и сфотографировали себя с KTP (т. Е. «Селфи»). с КТП).

Мы стремимся автоматически проверять эти селфи-изображения KTP путем разработки детектора визуальных объектов человеческого лица (владельца KTP) и самого KTP, который также будет использоваться для обнаружения изображения профиля KTP и использования его в качестве изображения профиля фермера в приложения HARA.

В компьютерном зрении обнаружение объектов - это процесс обнаружения экземпляров реальных объектов, таких как лица, автомобили и дома, на изображениях или видео. Алгоритмы обнаружения объектов обычно используют извлеченные функции и алгоритмы обучения для распознавания экземпляров категории объектов.

Такие проблемы обнаружения визуальных объектов относятся к сфере контролируемого обучения. В частности, это проблема классификации.

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

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

Алгоритм визуального обнаружения объектов

Детектор Виолы-Джонса

Одним из классификаторов, с которым мы экспериментировали, является метод обнаружения объектов, разработанный Полом Виолой и Майклом Джонсом в их статье 2001 г. «Быстрое обнаружение объектов с использованием усиленного каскада простых функций».

Виола и Джонс используют несколько сверточных ядер для извлечения признаков. Вы можете быстро объяснить, что такое сверточное ядро, в нашей статье Основные особенности размытых изображений.

Каждая функция представляет собой отдельное значение, полученное путем вычитания суммы пикселей под белым прямоугольником из суммы пикселей под черным прямоугольником (см. Рисунок 1).

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

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

Виола и Джонс выдвинули гипотезу, что на самом деле только небольшое количество этих функций можно объединить в эффективный классификатор, что было подтверждено экспериментально. Итак, как они нашли эти небольшие наборы функций?

Виола и Джонс обращаются к очень известному мета-алгоритму, известному как Adaptive Boosting или AdaBoost. В этом подходе слабый ученик ограничен, так что каждый слабый классификатор зависит только от одной функции.

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

Мы провели собственный эксперимент, используя набор тестовых данных, состоящий из 446 изображений KTP. Чтобы иметь возможность обнаруживать лицо, необходимо сначала загрузить требуемый XML-классификатор (haarcascade_frontalface_default.xml), который является предварительно обученным классификатором. Таким образом, все 446 изображений KTP были использованы в качестве тестовых данных. Используя модуль OpenCV, классификатор XML обнаруживал лица на изображениях KTP, где ограничивающая рамка была нарисована вокруг лиц. Затем эффективность классификатора оценивалась с помощью матрицы неточностей (см. Рисунок 2).

В этом случае нам нужно иметь собственное определение Истинно / Ложно Положительного и Истинно / Ложно Отрицательного относительно ограничивающего прямоугольника, созданного классификатором.

Истинно-положительные (TP) - это случаи, когда вокруг изображения профиля KTP нарисован один (и только один) ограничивающий прямоугольник. Ложные срабатывания (FP) - это случаи, когда есть одна или несколько ограничивающих рамок, при этом минимум одна ограничивающая рамка не содержит изображения профиля KTP.

Истинно-отрицательные (TN) - это случаи, когда ограничивающая рамка не создается, поскольку в изображении нет изображения профиля KTP. Наконец, Ложноотрицательный (FN) - это случаи, когда вообще нет ограничивающей рамки, несмотря на наличие в изображении изображения профиля KTP.

Гистограмма детектора на основе ориентированного градиента

В 2005 году Далал и Триггс показали, что сетки дескриптора гистограммы ориентированного градиента (HOG) значительно превосходят существующие наборы функций для обнаружения человека.

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

Сначала они делят изображение на небольшие фрагменты изображения или ячейки, а затем накапливают гистограмму ориентации краев внутри этой ячейки (см. Рисунок 3). Объединенные записи гистограммы используются как вектор признаков, описывающий объект.

Далал и Триггс попробовали несколько детекторов градиента, таких как [1, -1] и [1,0, -1]. Они выяснили, что [1,0, -1] работают лучше всего. Каждый пиксель голосует за ориентацию в соответствии с ближайшим интервалом в диапазоне от 0 до 180 градусов. Затем векторные характеристики изображения передаются в линейную машину опорных векторов для классификации изображений.

В этом случае мы использовали тот же набор данных из 446 изображений KTP. Предварительно обученный классификатор предоставляется в модуле dlib (dlib.get_frontal_face_detector), так что все 446 изображений KTP могут использоваться в качестве тестовых данных.

Предварительно обученный классификатор обнаруживает изображение профиля KTP в изображениях KTP, где ограничивающая рамка нарисована вокруг лиц. Затем эффективность классификатора оценивается с помощью матрицы неточностей (см. Рисунок 4). Наши определения Истинно / Ложно-положительного и Истинно / Ложно-отрицательного такие же, как и в предыдущем случае.

Помимо использования функций на основе HOG для обнаружения изображения профиля KTP, мы также используем этот алгоритм для обнаружения человеческого лица (владельцев KTP) и KTP на селфи с изображениями KTP.

Предварительно обученный детектор лиц из модуля dlib используется для обнаружения лиц на селфи с изображениями KTP. В случае обнаружения KTP, инструмент на основе графического интерфейса, imglab, используется для аннотирования KTP путем создания ограничивающей рамки на KTP. Пошаговая процедура выглядит следующим образом:

1. Маркировка данных путем аннотирования KTP ограничивающей рамкой с помощью imglab, создания координат прямоугольника в KTP, сохранения в файле .xml.

2. Обучите SVM с координатами ограничивающего прямоугольника.

3. Создайте детектор с SVM и сохраните в файле .svm.

Мы использовали 1000 селфи с изображениями KTP в качестве обучающих данных, но столкнулись с проблемой выделения памяти в процессе обучения модели. Кажется, что dlib не может правильно распределить память, что приводит к нехватке памяти, что приводит к преждевременному завершению процесса обучения. Чтобы решить эту проблему, мы уменьшили общее количество изображений для обучения до 200 изображений, и здесь у нас больше не было проблем с распределением памяти.

После обучения модели мы могли загрузить SVM (файл classifier path .svm) и затем протестировать его на тестовом наборе данных, состоящем из 102 селфи с изображениями KTP. Для распознавания лиц мы использовали тот же предварительно обученный классификатор.

Классификатор обнаружил лица и KTP в селфи с изображениями KTP, где ограничивающая рамка была нарисована вокруг лиц (зеленая рамка) и KTP (красная рамка). Затем эффективность классификатора оценивалась с помощью матрицы неточностей (см. Рисунок 5).

В этом случае нам нужно правильное определение Истинно / Ложно-положительного и Истинно / Ложно-отрицательного, которое отличается от предыдущих случаев.

Истинные положительные результаты (TP) - это случаи, когда одна красная рамка вокруг KTP, одна зеленая рамка вокруг лица и разрешающая зеленая рамка для определения изображения профиля внутри KTP. Ложные срабатывания (FP) - это случаи, когда на лице более одного красного или одного зеленого прямоугольника (дополнительных зеленых прямоугольников нет на профиле KTP)

Истинно-отрицательные (TN) - это случаи, когда на KTP нет ни рамки, ни грани, поскольку на изображении нет KTP или лица. Наконец, Ложноотрицательный (FN) - это случаи, когда есть KTP и лицо, но нет ни красного, ни зеленого прямоугольника.

AutoML на основе нейронной сети

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

Несмотря на их успех, нейронные сети по-прежнему сложно спроектировать. Процесс создания моделей машинного обучения вручную сложен, потому что пространство поиска всех возможных моделей может быть комбинаторно большим.

По этой причине процесс проектирования сетей часто требует значительного количества времени и экспериментов со стороны тех, кто обладает значительным опытом в области машинного обучения. Чтобы сделать процесс разработки моделей машинного обучения более доступным, два исследователя Google Баррет Зоф и Куок Ле изучают способы автоматизации проектирования моделей машинного обучения с помощью эволюционных алгоритмов и алгоритмов обучения с подкреплением.

Подход Zeph and Le называется AutoML, который относится к автоматическим методам выбора модели и / или оптимизации гиперпараметров. Эти методы существуют для многих типов алгоритмов, таких как случайные леса, машины повышения градиента, нейронные сети и т. Д.

В случае нейронных сетей нейронная сеть контроллера может предложить «дочернюю» архитектуру модели, которую затем можно обучить и оценить качество для конкретной задачи. Контроллер учится назначать высокую вероятность тем областям архитектурного пространства, которые обеспечивают лучшую точность в наборе данных для длительной проверки, и низкую вероятность - областям архитектурного пространства, которые имеют низкую оценку.

Поиск нейронной архитектуры, основанный на градиенте метод поиска хороших архитектур (см. Рисунок 6), основан на наблюдении, что структура и возможности подключения нейронной сети обычно могут быть заданы строкой переменной длины.

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

На конференции Google Cloud Next в Сан-Франциско dGoogle Cloud объявила о расширении Cloud AutoML в 2018 году. Google AutoML Vision позволяет обучать модели машинного обучения классифицировать изображения в соответствии с вашими собственными ярлыками. Пошаговая инструкция выглядит следующим образом:

1. Обучите модели по изображениям с метками и оцените их эффективность.

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

3. Зарегистрируйте обученные модели для обслуживания через AutoML API.

Мы провели эксперимент с использованием набора данных для поезда и тестирования, состоящего из 2864 селфи с изображениями KTP, помеченными как SelfieWithKTP. Мы предоставляем 874 других селфи или изображений с пометкой NotSelfieWithKTP.

Все изображения были загружены в Google AutoML Vision и помечены вручную. Обучение длилось 10–15 минут (см. Рисунок 8) с использованием 80–10–10% набора данных для обучения, тестирования и проверки.

Затем эффективность классификатора оценивается с помощью матрицы неточностей (см. Рисунок 9). После того, как оценка будет выполнена, вы можете предсказать новое изображение, которое будет отображаться с меткой SelfieWithKTP или NotSelfieWithKTP, щелкнув «Прогнозировать» и загрузив одно или несколько изображений.

Заключение

Мы проводим эксперимент по обнаружению изображений профиля KTP с использованием алгоритма Виолы-Джонса и алгоритма на основе HOG. Результаты нашего эксперимента показали, что 125 изображений оказались ложноположительными (см. Рис. 2) при применении алгоритма Виолы-Джонса, по сравнению с 34 ложноположительными данными (см. Рис. 4) при использовании алгоритма на основе HOG. Эмпирически, основываясь на минимальном количестве ложноположительных результатов, алгоритм на основе HOG дал лучшие результаты, чем алгоритм Виолы-Джонса.

Сообщается, что алгоритмы на основе HOG дают лучшие результаты, чем алгоритмы Виолы-Джонса, потому что для проверки обнаружения лиц он будет тратить много времени на настройку своих параметров, чтобы минимизировать ложные срабатывания, и нет никакой гарантии, что точно такие же параметры будут работать от изображения к изображению.

Это делает пакетную обработку больших наборов данных для обнаружения лиц с использованием алгоритма Виолы-Джонса утомительной задачей, поскольку вы будете обеспокоены ошибочным обнаружением лиц или полным отсутствием лиц просто из-за неправильного выбора параметров для каждого изображения. Когда алгоритм на основе HOG используется для обнаружения объекта, он дает фантастические результаты по сравнению с алгоритмом Виолы-Джонса.

Мы также экспериментировали с человеческими лицами и KTP в селфи с изображениями KTP, используя алгоритм на основе HOG и алгоритм AutoML на основе нейронной сети. Обучение с использованием алгоритма на основе HOG занимает около трех часов, в то время как обучение алгоритма на основе нейронной сети занимает от десяти до пятнадцати минут.

Хотя алгоритм на основе HOG использует линейную SVM для обучения, мы должны установить параметр. Итак, мы должны пройти через ряд возможных параметров, чтобы получить лучший детектор, а установка параметра для обучения занимает много времени. При использовании алгоритма Auto ML на основе нейронной сети мы не устанавливаем никаких параметров, потому что разработка этого алгоритма автоматическая.

Заключение: сравнивая все алгоритмы, использование алгоритма Auto ML на основе нейронной сети лучше, чем другие, потому что этот алгоритм дает лучший результат и время работы, чем алгоритм Виолы-Джонса и алгоритм на основе HOG.

Использованная литература:

Виола, Пол и Майкл Джонс, Быстрое обнаружение объектов с использованием усиленного каскада простых функций, Comput. Vis. Pattern Recog. 1, 2001.

Далал, Навнит и Билл Триггс, Гистограммы ориентированных градиентов для обнаружения человека, IEEE 2005.

Зоф, Баррет и Куок В. Ле, Поиск нейронной архитектуры с обучением с подкреплением. ICLR, 2017.

Присоединяйтесь к нашему сообществу в Telegram!

Узнать больше о HARA