Собственная обученная модель для обнаружения ключевых точек лица с поддержкой конвертации под Android и инструментами для оценки качества.
Проект содержит:
- Обученную модель 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Запустите preview скрипт для оценки работы модели в реальном времени:
python preview.pyЧто происходит:
- Захватывается видеопоток с веб-камеры
- Автоматически обнаруживаются лица (Haar Cascade)
- Для каждого лица модель предсказывает координаты ключевых точек
- На видео отображаются:
- 🔵 Синий прямоугольник - обнаруженное лицо
- 🔴 Красные точки - предсказанные ключевые точки (landmarks)
- Для выхода нажмите
ESCилиQ
Если необходимо обновить TFLite модель:
python convert_to_tflite.pyПосле выполнения будет создана/перезаписана модель facial_keypoints_model.tflite, оптимизированная для мобильных устройств.
Откройте main.ipynb для экспериментов и обучения модели:
jupyter notebook main.ipynb- Инициализация: Загружается обученная модель и Haar Cascade classifier
- Захват видео: Получение кадров с веб-камеры
- Обнаружение лиц: Быстрое обнаружение лиц в каждом кадре
- Предсказание:
- Нормализация размера лица до 96×96 пикселей
- Нормализация значений (0-1 диапазон)
- Предсказание координат ключевых точек моделью
- Визуализация: Отрисовка результатов на исходном видеопотоке
- Полная модель в формате TensorFlow Keras
- Используется в
preview.py - Содержит всю архитектуру и веса
- Больший размер, но полная поддержка всех операций
- Оптимизированный формат для мобильных и встроенных систем
- Быстрее на мобильных устройствах (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 пикселей - оптимальный размер входа для модели
- Используйте
facial_keypoints_model.tfliteв вашем Android приложении - Используйте TensorFlow Lite API для загрузки и инференса
- Передавайте изображения размером 96×96 пикселей в нормализованном виде (0-1)
- Модель обучена на 96×96 пиксельных изображениях лиц
- Использует нейронную архитектуру собственного дизайна
- TFLite версия поддерживает квантизацию для дополнительного ускорения
- Оптимизирована для работы на мобильных устройствах с ограниченными ресурсами
