Skip to content

Repository files navigation

Facial Keypoints Detection Model

Собственная обученная модель для обнаружения ключевых точек лица с поддержкой конвертации под Android и инструментами для оценки качества.

image

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

Проект содержит:

  • Обученную модель Keras для предсказания координат ключевых точек лица (landmarks)
  • Конвертер в TensorFlow Lite для развертывания на мобильных устройствах (Android)
  • Preview скрипт для тестирования и визуализации работы модели в реальном времени
  • Jupyter ноутбук для экспериментов и анализа

📁 Структура проекта

facedetection/
├── facial_keypoints_model.keras          # Обученная модель (Keras format)
├── facial_keypoints_model.tflite         # Модель для мобильных устройств (TFLite)
├── convert_to_tflite.py                  # Скрипт конвертации Keras → TFLite
├── preview.py                            # Скрипт для оценки модели на веб-камере
├── main.ipynb                            # Jupyter ноутбук для экспериментов
└── README.md                             # Этот файл

🔧 Требования

tensorflow >= 2.0
opencv-python
numpy

💾 Установка

pip install tensorflow opencv-python numpy

🚀 Использование

1. Оценка модели на веб-камере

Запустите preview скрипт для оценки работы модели в реальном времени:

python preview.py

Что происходит:

  • Захватывается видеопоток с веб-камеры
  • Автоматически обнаруживаются лица (Haar Cascade)
  • Для каждого лица модель предсказывает координаты ключевых точек
  • На видео отображаются:
    • 🔵 Синий прямоугольник - обнаруженное лицо
    • 🔴 Красные точки - предсказанные ключевые точки (landmarks)
  • Для выхода нажмите ESC или Q

2. Конвертация модели для Android

Если необходимо обновить TFLite модель:

python convert_to_tflite.py

После выполнения будет создана/перезаписана модель facial_keypoints_model.tflite, оптимизированная для мобильных устройств.

3. Работа в Jupyter ноутбуке

Откройте main.ipynb для экспериментов и обучения модели:

jupyter notebook main.ipynb

🎯 Как работает preview.py

  1. Инициализация: Загружается обученная модель и Haar Cascade classifier
  2. Захват видео: Получение кадров с веб-камеры
  3. Обнаружение лиц: Быстрое обнаружение лиц в каждом кадре
  4. Предсказание:
    • Нормализация размера лица до 96×96 пикселей
    • Нормализация значений (0-1 диапазон)
    • Предсказание координат ключевых точек моделью
  5. Визуализация: Отрисовка результатов на исходном видеопотоке

📊 Форматы моделей

facial_keypoints_model.keras

  • Полная модель в формате TensorFlow Keras
  • Используется в preview.py
  • Содержит всю архитектуру и веса
  • Больший размер, но полная поддержка всех операций

facial_keypoints_model.tflite

  • Оптимизированный формат для мобильных и встроенных систем
  • Быстрее на мобильных устройствах (Android, iOS)
  • Меньший размер файла
  • Создается автоматически через convert_to_tflite.py

⚙️ Настройка параметров

В preview.py можно изменить параметры обнаружения лиц:

faces = face_cascade.detectMultiScale(
    gray_full,
    scaleFactor=1.2,        # Коэффициент масштабирования (уменьшить = больше точности, медленнее)
    minNeighbors=5,         # Минимум соседей (больше = более надежные обнаружения)
    minSize=(80, 80)        # Минимальный размер лица в пикселях
)

📈 Рекомендации по использованию

  • Для лучших результатов: Обеспечьте хорошее освещение
  • Для скорости: Увеличьте minSize (пропустит маленькие лица, но быстрее)
  • Для точности: Уменьшите minSize и scaleFactor (медленнее, но точнее)
  • Размер модели: 96×96 пикселей - оптимальный размер входа для модели

🔌 Развертывание на Android

  1. Используйте facial_keypoints_model.tflite в вашем Android приложении
  2. Используйте TensorFlow Lite API для загрузки и инференса
  3. Передавайте изображения размером 96×96 пикселей в нормализованном виде (0-1)

📝 Примечания

  • Модель обучена на 96×96 пиксельных изображениях лиц
  • Использует нейронную архитектуру собственного дизайна
  • TFLite версия поддерживает квантизацию для дополнительного ускорения
  • Оптимизирована для работы на мобильных устройствах с ограниченными ресурсами

About

Ai model for detect keypoints of face on 96x96 grayscale picture

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages