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.
- Используйте (близкие к) современные модели обнаружения объектов, чтобы находить лица на изображениях.
- Вы можете расширить эту работу для распознавания лиц и обнаружения объектов.