How sunyiyou/safas works
This repository implements a research workflow for cross-domain face anti-spoofing: videos from several face-spoofing datasets are preprocessed into face crops and metadata, assembled according to a train/test protocol, and used to train and evaluate a ResNet-based model. The README documents the supported datasets and preprocessing/training entry points. Sampled training, dataset, and model code supports the main wiring; unsampled portions limit detail about evaluation outputs and some preprocessing steps.
Main entry points: train.py Training and testing · preposess.py Video preprocessing · __init__.py Dataset assembly · supcon_dataset.py Face samples
Components 16
Video preprocessing
- Video preprocessing
preposess.py - Face crop utilities
utils/rotate_crop.py - Prepared face data
Data and protocols
- Protocol mapping
utils/__init__.py - Dataset assembly
datasets/__init__.py - Face samples
datasets/supcon_dataset.py - Domain metadata
datasets/meta.py
Model and training
- Training and testing
train.py - Model factory
networks/__init__.py - ResNet classifiers
networks/resnet_lgt.py - Training losses
loss/__init__.py
Evaluation
- Performance metrics
utils/performance.py - Evaluation scores
Other components
- Researcher
- Raw videos
- Pretrained weights
Connections 17
- Researcher → Video preprocessing: runs preprocessing
- Raw videos → Video preprocessing: provides videos
- Video preprocessing → Face crop utilities: uses crop helpers
- Video preprocessing → Prepared face data: writes crops and metadata
- Researcher → Training and testing: runs protocol
- Training and testing → Dataset assembly: requests datasets
- Dataset assembly → Protocol mapping: decodes protocol
- Dataset assembly → Face samples: constructs splits
- Face samples → Prepared face data: reads samples
- Face samples → Domain metadata: uses label patterns
- Training and testing → Model factory: creates model
- Model factory → ResNet classifiers: selects ResNet
- Training and testing → ResNet classifiers: trains and scores
- Training and testing → Training losses: computes feature loss
- Pretrained weights → Training and testing: supplies optional weights
- Training and testing → Performance metrics: evaluates predictions
- Training and testing → Evaluation scores: writes evaluation scores