Face Anti-Spoofing System — система для детекции атак спуфинга по лицу в реальном времени и на видео/фото. Использует две независимые модели (v1 и v2) для повышения надёжности, а также реализует контроль качества входных данных (размытие, засвет, положение лица в кадре). Поддерживается работа на GPU и CPU.
Основные компоненты:
-
YOLOv5 (src_model_v1/face_detector/YOLO.py):
Детектор лиц на базе ONNX, используется для поиска лиц на изображении/видео. -
MiniFASNet (src_model_v1/antispoof_pretrained.py, src_model_v2/anti_spoof_predict.py):
Две разные реализации антиспуфинг-моделей (v1 и v2), обученные различными способами. -
Обработка изображений (src_model_v2/generate_patches.py):
Обрезка лица по bbox, масштабирование, подготовка к подаче в модель. -
Преобразования данных (src_model_v2/data_io/transform.py):
Аугментации, нормализация, преобразование в тензоры. -
Основной скрипт (video_predict.py):
Управляет видеопотоком, обработкой кадров, применением моделей, визуализацией и логированием. -
API (api.py):
FastAPI REST API для интеграции антиспуфинга в сторонние сервисы.
FAS/
├── saved_models/ # Модели YOLOv5
├── resources/anti_spoof_models/ # Модели MiniFASNet
├── src_model_v1/ # Первая версия модели
│ ├── face_detector/ # YOLOv5 детектор
│ └── antispoof_pretrained.py # MiniFASNetV2SE
├── src_model_v2/ # Вторая версия модели
│ ├── anti_spoof_predict.py # MiniFASNetV1SE
│ ├── generate_patches.py # Обрезка изображений
│ └── data_io/ # Преобразования данных
├── video_predict.py # Основной скрипт для видео
├── api.py # REST API (FastAPI)
└── README.md # Документация
git clone https://github.com/your-repo/Face-AntiSpoofing.git
cd Face-AntiSpoofing
python -m venv venv
venv\Scripts\activate # Windows
# или
source venv/bin/activate # Linux/Mac
pip install -r requirements.txt
- YOLOv5 ONNX:
saved_models/yolov5s-face.onnx
- MiniFASNet:
resources/anti_spoof_models/
python FAS.py --input path/to/video.mp4 --output path/to/result.avi
# или для веб-камеры
python FAS.py
Параметры:
--blur_thresh
— порог для определения размытия лица (по умолчанию 60, больше — строже)--brightness_thresh
— порог яркости для засвета (по умолчанию 200)--percent_thresh
— процент ярких пикселей для засвета (по умолчанию 0.3)
pip install fastapi uvicorn
uvicorn api:app --reload
Swagger UI: http://127.0.0.1:8000/docs
- POST
/predict
— принимает изображение (jpg/png), возвращает результат обеих моделей и итоговое решение. - Пример запроса через curl:
curl -X POST "http://127.0.0.1:8000/predict" -F "file=@test.jpg"
video_predict.py
— основной скрипт для работы с видеопотоком, визуализация, логирование, статистика.api.py
— REST API для интеграции в сторонние сервисы.src_model_v1/face_detector/YOLO.py
— детектор лиц YOLOv5 (ONNX).src_model_v1/antispoof_pretrained.py
— первая версия антиспуфинг-модели.src_model_v2/anti_spoof_predict.py
— вторая версия антиспуфинг-модели.src_model_v2/generate_patches.py
— обрезка лица по bbox.src_model_v2/data_io/transform.py
— преобразования и аугментации изображений.
- Добавить поддержку потоковой обработки RTSP/HTTP.
- Реализовать асинхронную обработку кадров для ускорения.
- Добавить обучение и дообучение моделей на новых датасетах.
- Интеграция с системами контроля доступа.
Автор: zhuying, FROWNING SCC
Поддержка и вопросы: @FROWNINGnrx