Классификация по возрасту и полу с помощью OpenCV и глубокого обучения на Raspberry Pi


Этот проект посвящен классификации по возрасту и полу с использованием OpenCV и глубокого обучения (в частности, сверточных нейронных сетей или CNN) на одноплатном компьютере Raspberry Pi 4.

Классификация по возрасту и полу с помощью OpenCV и глубокого обучения на Raspberry Pi

С ростом социальных платформ автоматическое определение возраста и пола по изображениям становится все более важным. Однако точность текущих методов на реальных фотографиях не так хороша, как прогресс, который мы наблюдаем в распознавании лиц. В этом исследовании мы демонстрируем, что использование глубоких сверточных нейронных сетей (convolutional neural networks, CNN) может значительно повысить точность классификации возраста и пола. Модель основана на модели Gil Levi & Tal Hassner, опубликованной в 2015 году. Она представляет собой простую конструкцию CNN, которая эффективна даже при небольшом количестве данных для обучения.

В этом руководстве мы узнаем, как использовать OpenCV и Deep Learning (глубокое обучение), чтобы определить возраст и пол человека с помощью Raspberry Pi 4. OpenCV — это инструмент, который помогает компьютерам понимать изображения и видео. Deep Learning — это способ, которым компьютеры обучаются на основе данных, подобно тому, как мы учимся на опыте. Объединив эти два понятия, мы можем заставить компьютер угадывать возраст и пол человека, глядя на его фотографию. К концу этого урока у вас будет полное представление о проекте классификации возраста и пола с OpenCV и Deep Learning на Raspberry Pi.

Ранее на нашем сайте мы уже рассматривали аналогичный проект определения пола и возраста людей с помощью Raspberry Pi и OpenCV, но, возможно, кому то данный проект понравится больше.

Необходимые компоненты

  1. Плата Raspberry Pi 4 Model B (или другая) (купить на AliExpress).
  2. Камера для Raspberry Pi (купить на AliExpress).
  3. SD-карта 16/32 ГБ.
  4. Адаптер постоянного тока 5 В, 3 А для RPi.
  5. ЖК-дисплей (опционально).
  6. Мышь и клавиатура (опционально).

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Подключение камеры Raspberry Pi

Raspberry Pi Camera — периферийное устройство, разработанное Raspberry Pi Foundation для использования с серией одноплатных компьютеров Raspberry Pi. Модуль камеры позволяет добавлять возможности видео/фотосъемки в проекты Raspberry Pi.

Для этого проекта мы можем использовать 5-мегапиксельную камеру Raspberry Pi.

Схема подключения камеры к Raspberry Pi

Просто подключите модуль камеры к плате Raspberry Pi 4 с помощью разъема камеры.

Подключение модуля камеры к плате Raspberry Pi 4 с помощью разъема камеры

Чтобы использовать камеру, вам нужно сначала включить модуль камеры. Откройте Raspberry Pi Configuration Tool, введя sudo raspi-config в терминале. Перейдите к Interfacing OptionsCameraи включите его.

Метод классификации по возрасту и полу

Модель, предложенная Леви и Хасснером в 2015 году, представляет собой сверточную нейронную сеть (CNN). CNN — это категория нейронных сетей, которые доказали свою высокую эффективность в таких областях как распознавание и классификация изображений. Их модель была обучена на наборе данных Adience, который не отфильтрован и не выровнен, что делает его подходящим для реальных изображений без ограничений.

Принцип работы сверточной нейронной сети

Процесс классификации делится на два основных этапа:

  • Шаг 1: Распознавание лиц – первый шаг включает сканирование входного видеопотока для обнаружения лиц. Это имеет решающее значение, поскольку последующая классификация основана на чертах лица.
  • Шаг 2: Прогнозирование возраста и пола – после обнаружения лица следующим шагом является извлечение области интереса (Region of Interest, ROI) лица. Затем эта ROI подается в алгоритм определения возраста и пола. Алгоритм анализирует черты лица и прогнозирует как возраст, так и пол человека.

Прогноз пола классифицирует индивидуума как «Мужчина» или «Женщина». Для прогноза возраста модель классифицирует индивидуума в одну из предопределенных возрастных групп: (0 – 2), (4 – 6), (8 – 12), (15 – 20), (25 – 32), (38 – 43), (48 – 53) или (60 – 100).

Настройка Raspberry Pi, установка библиотек и зависимостей

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

Как установить и настроить OpenCV на Raspberry Pi 4
Следующий шаг — установить picamera. Поэтому устанавливайте его с помощью pip .

Создайте папку в домашнем каталоге вашего Raspberry Pi с любым именем, например «Age_Gender_Classfication».

Создание каталога для нашего проекта

Код ссылается на несколько файлов, используемых для классификации возраста и пола. Загрузите эти файлы по следующим ссылкам:

  1. opencv_face_detector.pbtxt
  2. opencv_face_detector_uint8.pb
  3. age_deploy.prototxt
  4. age_net.caffemodel
  5. gender_deploy.prototxt
  6. gender_net.caffemodel

Добавьте эти файлы в папку, которую вы создали выше.

Добавление необходимых файлов в созданный нами каталог

Настройка завершена. Теперь мы можем перейти к проекту классификации по возрасту и полу с OpenCV и глубоким обучением на Raspberry Pi.

Код Python для Raspberry Pi для классификации по возрасту и полу

Теперь давайте разработаем код Python, который поможет в классификации возраста и пола, используя библиотеку OpenCV и камеру Raspberry Pi.

Код Python

Откройте Thonny IDE и вставьте следующий код в редактор Thonny. Сохраните этот файл с любым именем, например «classification.py» в папке, которую мы создали ранее. Убедитесь, что все загруженные файлы присутствуют в каталоге, указанном в коде (/home/mypi/Age_Gender_Classfication/).

Вот полный код.

Объяснение работы кода

Давайте разберем код и объясним каждый раздел:

Эта строка импортирует библиотеку OpenCV — популярную библиотеку для задач компьютерного зрения.

Эта функция, highlightFace, предназначена для обнаружения и выделения лиц на заданном изображении (frame). Она использует модель глубокого обучения (net) и порог достоверности (conf_threshold). Функция возвращает изображение с выделенными лицами и ограничивающими рамками обнаруженных лиц.

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

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

Это основной цикл, в котором обрабатывается каждый кадр с веб-камеры. Для каждого кадра:

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

В этом разделе проверяется нажатие клавиши. Если нажата клавиша «q», происходит выход из цикла.

После выхода из цикла все окна OpenCV закрываются, и видеозахват прекращается.

Тестирование работы проекта

Запустите код выше. Сразу же появится окно, в котором будет показано изображение с камеры.

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

Тестирование работы проекта (часть 1)

Модель одинаково хорошо подходит как для мужчин, так и для женщин и позволяет точно определить возрастную группу.

Тестирование работы проекта (часть 2)

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

Тестирование работы проекта (часть 3)

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

Заключение

В заключение следует отметить, что наш проект успешно использовал возможности OpenCV и глубокого обучения для классификации возраста и пола по изображениям с использованием Raspberry Pi 4. Черпая вдохновение из модели Джила Леви и Тала Хасснера, мы продемонстрировали, что глубокие сверточные нейронные сети могут значительно повысить точность классификации даже при ограниченных данных для обучения.

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

(Проголосуй первым!)
Загрузка...
11 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *