Skip to content

FROWNINGdev/FAS

Repository files navigation

Face Anti-Spoofing System (FAS)

Описание

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                    # Документация

Быстрый старт

1. Установка

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

2. Модели

  • YOLOv5 ONNX: saved_models/yolov5s-face.onnx
  • MiniFASNet: resources/anti_spoof_models/

3. Запуск видеоверсии

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)

4. Запуск API

pip install fastapi uvicorn
uvicorn api:app --reload

Swagger UI: http://127.0.0.1:8000/docs


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

  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published