Давайте начнем реализацию этого проекта глубокого обучения

Введение

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

Чтобы просмотреть исходный код, нажмите на следующую ссылку github: https://github.com/Yashkad13/Gender-and-age-Detection.git.

Что такое трансферное обучение?

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

Для получения дополнительной информации о трансферном обучении

Что такое Реснет?

ResNet, сокращение от Residual Network, — это особый тип нейронной сети, который был представлен в 2015 году Каймин Хэ, Сянъюй Чжан, Шаоцин Рен и Цзянь Сунь в их статье «Глубокое остаточное обучение для распознавания изображений».

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

Понимание Resnet в Керасе

Модель Resnet работает по принципу Пропустить подключение.

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

Вот пошаговое описание проекта

  1. Установка и импорт необходимых библиотек

2. Указание пути к файлу Haarcascade и веса

3. Добавляем код Resnet в наш проект

4. Напишите код для определения лица и предсказания пола и возраста.

Установка и импорт библиотек

Установка библиотек python openCV, Numpy, Keras:

import cv2
import os
from time import sleep
import numpy as np
import argparse
from wide_resnet import WideResNet
from keras.utils.data_utils import get_file
import os, random

Указание пути к файлу Haarcascade и веса

Что такое каскады Хаара?

Классификаторы Haa rCascade — эффективный способ обнаружения объектов. Этот метод был предложен Полом Виолой и Майклом Джонсом в их статье Быстрое обнаружение объектов с использованием усиленного каскада простых признаков. Каскад Хаара — это подход, основанный на машинном обучении, в котором для обучения классификатора используется множество положительных и отрицательных изображений.

Веса должны храниться в HDF5 файле для хранения всей модели. HDF5 файл сохраняет полную модель нейронной сети вместе со структурой и весами

CASE_PATH = ".\\pretrained_models\\haarcascade_frontalface_alt.xml"
WRN_WEIGHTS_PATH = ".\\pretrained_models\\weights.18-4.06.hdf5"

Ссылка на папку для обучения предварительно обученных моделей: https://drive.google.com/drive/folders/1fU4fiBPgqET6pQH--qfwyoJUzAQ_MhlL?usp=sharing

Добавляем код Resnet в наш проект

Посмотрите, как быстрее использовать предварительно обученный ResNet в Keras. У Keras есть многие из этих базовых моделей с их весами Imagenet, доступными в его библиотеке. Я часто использую во многих задачах трансферного обучения, связанных с локализацией объектов, сегментацией и т. д.

  • ResNet — это мощная модель, которая очень часто используется во многих задачах компьютерного зрения.
  • ResNet использует пропуск соединения, чтобы добавить вывод с более раннего уровня на более поздний уровень. Это помогает смягчить проблему исчезающего градиента.
  • Вы можете использовать Keras для загрузки их предварительно обученного ResNet или использовать код, которым я поделился, для кодирования ResNet самостоятельно.

Чтобы просмотреть код Resnet, нажмите на ссылку:

Gender-and-age-Detection/wide_resnet.py на главной · Yashkad13/Gender-and-age-Detection (github.com)

Написание кода для определения лица и классификации пола и возраста

Итак, первый шаг — задать путь фронтальной грани Haarcascade предварительно сохраненных моделей и задать путь весов. После этого мы будем вызывать метод Inilization, если бы я загружал все свои веса в свои нейронные сети. Код нейронной сети в основном представляет собой код ResNet, содержащий 2 уровня сверточной нейронной сети, где я использовал как нормализацию, так и средний пул.

Важным методом кода является обнаружение лица. Он обнаруживает лицо с помощью openCV2, также мы подгоняем модель и предсказываем результат. Итак, теперь, чтобы классифицировать пол, если прогнозируемое значение больше 0,5, то человек — женщина, а меньше 0,5 — мужчина. Чтобы классифицировать возраст, мы выбираем случайные файлы из списка, который мы дали в начале.

Ссылка на код: https://github.com/Yashkad13/Gender-and-age-Detection/blob/main/realtime_demo.py