"Лучший способ повысить безопасность - это распознавание лиц - скоро оно станет стандартом". ~ Кеша Уильямс

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

За кулисами над этим работают Deep Learning и Machine Learning. CNN - это одна из частей Deep Learning, которая используется для обнаружения, сегментации, распознавания объектов.

Если мы хотим создать систему распознавания лиц с нуля, мы столкнемся с определенными проблемами.

  • Прежде всего, это сбор данных. Для построения модели распознавания лиц с нуля нам понадобится множество наборов данных изображений.
  • Во-вторых, нам нужно обработать изображения, чтобы они соответствовали нашей модели.
  • Для обучения этой модели глубокого обучения нашей системе потребуется больше CPU / GPU и RAM. Для этого нам нужно инвестировать больше денег в оборудование или облачные вычисления.
  • Даже если вы инвестируете в это, если появится новый набор изображений, нам нужно переобучить нашу модель с нуля, что является сложной задачей. Не правда ли?

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

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

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

В этой демонстрации мы собираемся использовать архитектуру VGG 16 и веса из наборов данных image-net. . Приступим к кодированию

Шаг 1. Соберите наборы данных для обучения и проверки

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

  • Для этой демонстрации я собрал изображения пяти человек. От каждого человека я собрал 960 изображений для обучения и 240 для проверки 80:20 процентов.

Общее изображение → 1200

Обучение → 960

Проверка → 240

  • Если вы укажете правильные сведения о папке, вы сможете увидеть изображение, сохраненное в обучении и проверке отдельно.

Шаг 2. Импортируйте модули VGG16 и заморозьте слои

  • В приведенном ниже фрагменте кода мы импортируем модуль VGG16 из пакета keras. За кадром Керас использует TensorFlow.
  • После импорта модулей мы создаем объект и сохраняем его в переменной vgg16.
  • Наконец, мы замораживаем слои, задав layer.trainable = false

Шаг 3. Добавление топовой модели для точной настройки наших потребностей

  • Здесь мы добавляем полностью связанный плотный слой с выпадением 0,3, чтобы уменьшить подгонку.
  • Для активации выходного слоя мы используем классификатор Softmax.

Шаг 4. Увеличение изображения для увеличения размера набора данных

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

  • Как мы обсуждали выше, функция Keras ImageDataGenerator () выполнит расширение.

Шаг 5. Модель обучения

На этапе обучения модели мы используем 3 метода обратного вызова ModelCheckpoint, EarlyStopping, ReduceLROnPlateau.

  • ModelCheckpoint → Чтобы сохранить модель / вес в файле контрольной точки. Так что модель / вес можно обучить из сохраненного состояния.
  • EarlyStopping → Позволяет указать показатель производительности для отслеживания, триггер, и после его запуска процесс обучения будет остановлен.
  • ReduceLROnPlateau → Он отслеживает количество, и если в течение определенного количества эпох не наблюдается улучшений, скорость обучения снижается (т.е. в нашем случае с 0,0001 до 0,00001)

RMSprop - это оптимизатор для оптимизации производительности нашей модели и избавления от градиентного взрыва и исчезновения.

Шаг 6. Тестирование модели в реальном времени с помощью веб-камеры

«Вуаля!» Наша модель успешно распознала изображения в реальном времени.

Дальнейшее улучшение:

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


Заполните блокнот Jupyter для справки



Надеюсь, вам понравилась эта статья. Поделитесь своими ценными отзывами и идеями для совместной работы.

Продолжайте учиться… ..

Продолжать делиться… ..