06.07.2020 — Глубокое обучение, Компьютерное зрение, F-RCNN, Python — 7 минут чтения

Распознавание лиц — это технология, используемая для распознавания лиц. Основное внимание уделяется осмотру фронтальной части лица.

Это полезно для:

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

Раньше это было утомительным занятием. Множество известных инженерных методов для обнаружения лиц развили это искусство.

Устали распознавать лица с помощью классического метода OpenCV (каскад Хаара)?

В этом блоге вы научитесь:

  • Подготовьте изображение набор данных с данными очисткой.
  • Работайте с моделями глубокого обучения для распознавания лиц на изображениях.
  • Расширьте эту модель для обнаружения лиц и объектов.
  • Работайте с detectron2 (высокопроизводительная кодовая база для обнаружения объектов).

В конце этого блога вы сможете определить собственное лицо с помощью Detectron2. Посмотрите результаты ниже на моей картинке

Вам должно быть интересно работать с Detectron2, не так ли?

Detectron — это высокопроизводительная платформа нового поколения для обнаружения и сегментации объектов. Эта модель похожа на модели YOLO и может создавать ограничивающую рамку вокруг обнаруживаемого объекта.

Он разработан Facebook AI Research и широко используется в области компьютерного зрения.

Detectron2 использует PyTorch и позволяет быстро обучать данные, а его реальная мощь заключается в предварительно обученных моделях, доступных в GitHub Repository.

Он включает в себя реализации многих алгоритмов обнаружения объектов, таких как Mast R-NN, RetinaNet, Faster R-CNN, TensorMask и т. д.

Настроить модель с помощью Detectron2 очень просто.

Если у вас нет хорошего графического процессора, используйте Google Colab.

Теперь давайте установим некоторые библиотеки, необходимые для Detectron2:

1. Набор данных COCO установлен.

COCO – это большой набор данных изображений, предназначенный для обнаружения объектов,
сегментации, сегментации материалов и создания подписей.

2. Теперь давайте загрузим и установим пакет Detectron2 из репозитория Github.

3. Вам необходимо перезапустить блокнот Jupyter.

4. Импортируйте все важные библиотеки Python.

НАБОР ДАННЫХ ДЛЯ ОБНАРУЖЕНИЯ ЛИЦ

Я загрузил набор данных распознавания лиц с Kaggle и загрузил его на свой Google Диск.

Набор данных был подготовлен DataTurks и содержит 500 изображений с 1100 лицами, помеченными вручную граничной рамкой.

Вы можете скачать то же самое, используя:

ОБРАБОТКА ДАННЫХ

Этот набор данных Kaggle содержит только URL-адреса и аннотации изображений. Следовательно, нам нужно загрузить изображения.

Давайте поместим данные во фрейм данных с помощью Pandas.

У нас есть 409 изображений и 1132 аннотации, и давайте сохраним их на диск.

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

Чтобы преобразовать цвет из BGR в RGB, используйте функцию cv2.cvtColor.

INTER_AREA — повторная выборка с использованием отношения площади пикселя.

Давайте посмотрим на это аннотированное изображение из набора данных.

Посмотрите на другое изображение с комментариями.

РАСПОЗНАВАНИЕ ЛИЦ С ПОМОЩЬЮ DETECTRON 2

1. Сохраним 10% данных для обучения.

2. Следующие части написаны более общим языком. Очевидно, у нас есть единственный класс — face. Но добавить больше должно быть так же просто, как добавить больше аннотаций во фрейм данных:

3. Далее мы напишем функцию, которая преобразует наш набор данных в формат, используемый Detectron2:

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

5. К сожалению, оценщик для набора тестов не включен по умолчанию. Мы можем легко это исправить, написав собственный трейнер:

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

Мы будем использовать модель Mask R-CNN X101-FPN. Он предварительно обучен на наборе данных COCO и достигает очень хорошей производительности. Недостатком является медленное обучение, но высокая точность.

MASK R-CNN

  • Метод называется Mask R-CNN, расширяет Faster R-CNN, добавляя ветвь для предсказания маски объекта параллельно с существующей ветвью для распознавания ограничивающей рамки.
  • Mask R-CNN — это глубокая нейронная сеть, используемая для решения задач с изображениями в машинном обучении.
  • Модель создает ограничивающие рамки и маски сегментации для каждого экземпляра видео или изображения.
  • Mask R-CNN прост в обучении и добавляет лишь небольшие накладные расходы к Faster R-CNN, работая со скоростью 5 кадров в секунду.
  • Модель обучается на наборе данных COCO, включая сегментацию экземпляров, обнаружение ограничивающей рамки и другие важные функции.

Хотите глубже погрузиться в Mask R-CNN?

Проверьте репозиторий GitHub Исходный код.

Давайте загрузим файл конфигурации и веса предварительно обученной модели:

7. Определите наборы данных, которые будут использоваться для обучения и оценки:

8. Это тонкая настройка нашей модели с помощью Hyper Parameter Tuning.

Мы знакомы с этими параметрами (размер пакета, максимальное количество итераций и скорость обучения). У нас есть пара новых интересных параметров:

  • WARMUP_ITERS — Итерация прогрева гарантирует, что система придет в устойчивое состояние перед проведением измерений.
  • ШАГИ — контрольные точки (количество итераций), при которых скорость обучения будет снижена на ГАММА.
  • ГАММА. Это помогает снизить скорость обучения после каждой итерации нашей модели.

9. Теперь мы должны указать нашу модель о классах и периоде, за который мы будем оценивать тестовый набор. Мы создали batch_size из 64 изображений.

10. Мы будем обучать нашу модель с помощью созданного нами тренера:

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

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

11. Давайте запустим оценщик с обученной моделью:

Поиск лиц на изображениях

12. Теперь мы создадим папку и сохраним все предсказанные аннотации в тестовом наборе данных.

Давайте посмотрим на некоторые результаты нашей модели ниже:

Я применил эту модель, используя изображение ниже

Неплохо. Совсем неплохо. Я предлагаю вам изучить больше изображений самостоятельно!

Вывод

Поздравляем! Теперь вы знаете основы Detectron2 для обнаружения объектов! Вы можете быть удивлены результатами, учитывая небольшой набор данных, который у нас есть. В этом сила предварительно обученных моделей:

Вы научились:

  • Подготовьте пользовательский набор данных для обнаружения лиц с помощью Detectron2.
  • Используйте (близкие к) современные модели обнаружения объектов, чтобы находить лица на изображениях.
  • Вы можете расширить эту работу для распознавания лиц и обнаружения объектов.

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