1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/luanshiyinyang-facial-expression-recognition

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Распознавание эмоций по выражению лица

Обновление журнала

v0.1

Проект распознавания эмоций по выражению лица на основе TensorFlow 1.x.

v0.2

2020.8.22, перестроен весь код репозитория, для реализации всей системы используется keras API Tensorflow 2. Учитывая, что использование jupyter notebook для обучения не очень удобно, здесь реализован скрипт на Python.

v0.3

2020.12.18, на основе обратной связи, оптимизатор Jaffe был изменён.

v0.4

Добавлен детектор лиц blazeface.

Введение

Используя свёрточную нейронную сеть, построена вся система. На основе традиционных методов извлечения признаков лица, таких как Gabor и LBP, была создана глубокая модель, которая показала значительные результаты. Модель была оценена на трёх наборах данных для распознавания эмоций: FER2013, JAFFE и CK+.

Среда развёртывания

На основе Python 3 и Keras 2 (с использованием TensorFlow в качестве бэкенда), конкретные зависимости для установки следующие (рекомендуется использовать conda для создания виртуальной среды).

git clone https://github.com/luanshiyinyang/FacialExpressionRecognition.git
cd FacialExpressionRecognition
conda create -n FER python=3.6 -y
conda activate FER
conda install cudatoolkit=10.1 -y
conda install cudnn=7.6.5 -y
pip install -r requirements.txt

Если вы пользователь Linux, просто выполните команду bash env.sh в корневом каталоге, чтобы настроить среду одним щелчком мыши.

Подготовка данных

Наборы данных и предварительно обученные модели были загружены на Baidu Cloud, ссылка предоставлена, пароль — 2pmd. После загрузки распакуйте файл model.zip в папку models в корне проекта и распакуйте data.zip в dataset, чтобы получить сжатые файлы, содержащие несколько наборов данных изображений (файлы с расширением rar являются исходными данными из JAFFE, рекомендуется использовать обработанные мной данные).

Описание проекта

Традиционные методы

  • Предварительная обработка данных
    • Снижение шума на изображениях
    • Обнаружение лиц (классификатор HAAR (opencv))
  • Извлечение признаков
    • Признаки лица
      • LBP
      • Gabor
  • Классификатор
    • SVM

Глубокие методы

  • Обнаружение лиц
    • HAAR классификатор
    • MTCNN (более эффективный)
  • Свёрточная нейронная сеть
    • Используется для извлечения признаков + классификации

Дизайн сети

Используется классическая свёрточная нейронная сеть. Структура сети основана на нескольких статьях CVPR 2018 года и дизайне Going Deeper от Google. Входной слой сопровождается добавлением слоя (1,1) свёртки для увеличения нелинейного представления и имеет относительно небольшую глубину и небольшое количество параметров (большая часть параметров сосредоточена в полносвязном слое).

Обучение модели

Обучение проводилось в основном на FER2013, JAFFE и CK+, достигая точности около 67% на FER2013 Pub Test и Pri Test (в этом наборе данных есть проблемы с маркировкой, водяными знаками и анимированными изображениями, собранными пауками). Точность на JAFFE и CK+ составила около 99% при 5-кратной перекрестной проверке (эти наборы данных собраны в лаборатории и считаются более точными).

Выполнив следующую команду, можно обучить модель на указанном наборе данных (fer2013 или jaffe или ck+) в течение указанного количества эпох с указанным размером пакета. Процесс обучения будет генерировать соответствующие графики визуализации процесса обучения.

python src/train.py --dataset fer2013 --epochs 300 --batch_size 32

Применение модели

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

GUI интерфейс

Обратите внимание, что графический интерфейс отображает только наиболее вероятное выражение лица, но все обнаруженные лица будут отмечены на изображении, и эти отмеченные изображения будут сохранены в каталоге output.

Запустите следующую команду, чтобы открыть программу с графическим интерфейсом. Эта программа разработана с использованием PyQT. Тестирование на тестовом изображении (полученном из Интернета) дало следующий результат.

python src/gui.py

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

Обнаружение в реальном времени

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

Следующая команда откроет камеру для обнаружения в реальном времени (нажмите ESC для выхода). Если вы хотите указать видеофайл для тестирования, используйте вторую команду.

python src/recognition_camera.py
python src/recognition_camera.py --source 1 --video_path 视频绝对路径或者相对于该项目的根目录的相对路径

Ниже показано динамическое распознавание на видео с YouTube.

Комментарии ( 0 )

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

Введение

Исходный код системы распознавания эмоций по выражению лица. Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/luanshiyinyang-facial-expression-recognition.git
git@api.gitlife.ru:oschina-mirror/luanshiyinyang-facial-expression-recognition.git
oschina-mirror
luanshiyinyang-facial-expression-recognition
luanshiyinyang-facial-expression-recognition
master