"Лучший способ повысить безопасность - это распознавание лиц - скоро оно станет стандартом". ~ Кеша Уильямс
Распознавание лиц - это метод идентификации или подтверждения личности человека по его лицу. Системы распознавания лиц можно использовать для идентификации людей на фотографиях, видео или в режиме реального времени. Вы когда-нибудь задумывались, как работает ваша мобильная система блокировки лица?
За кулисами над этим работают Deep Learning и Machine Learning. CNN - это одна из частей Deep Learning, которая используется для обнаружения, сегментации, распознавания объектов.
Если мы хотим создать систему распознавания лиц с нуля, мы столкнемся с определенными проблемами.
- Прежде всего, это сбор данных. Для построения модели распознавания лиц с нуля нам понадобится множество наборов данных изображений.
- Во-вторых, нам нужно обработать изображения, чтобы они соответствовали нашей модели.
- Для обучения этой модели глубокого обучения нашей системе потребуется больше CPU / GPU и RAM. Для этого нам нужно инвестировать больше денег в оборудование или облачные вычисления.
- Даже если вы инвестируете в это, если появится новый набор изображений, нам нужно переобучить нашу модель с нуля, что является сложной задачей. Не правда ли?
Итак, чтобы избавиться от этих вещей, предлагается концепция Передаточного обучения.
Трансферное обучение - это метод машинного обучения, при котором модель, разработанная для задачи, повторно используется в качестве отправной точки для модели при выполнении второй задачи. Он состоит из трех ступеней.
- Выберите исходную модель. Предварительно обученная исходная модель выбирается из доступных моделей. Многие исследовательские институты выпускают модели на больших и сложных наборах данных, которые могут быть включены в пул моделей-кандидатов, из которых можно выбирать.
- Модель повторного использования. Предварительно обученную модель затем можно использовать в качестве отправной точки для второй интересующей задачи. Это может включать использование всей модели или ее частей, в зависимости от используемой техники моделирования.
- Настройте модель. По желанию, модель может потребоваться адаптировать или уточнить на основе парных данных ввода-вывода, доступных для интересующей задачи.
В этой демонстрации мы собираемся использовать архитектуру 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 для справки
Надеюсь, вам понравилась эта статья. Поделитесь своими ценными отзывами и идеями для совместной работы.
Продолжайте учиться… ..
Продолжать делиться… ..