This repository contains protocols and source code to reproduce the following paper:
@inproceedings{george2026driveface,
title={DriveFace: A Cross-Spectral Through-Glass Face Dataset for On-the-Move Vehicular Border Control},
author={George, Anjith and Luevano, Luis and Komaty, Alain and Al Amine, Zeina and Vidit, Vidit and Marcel, S\'ebastien},
booktitle={IEEE International Joint Conference on Biometrics (IJCB)},
year={2026},
}Project page: https://www.idiap.ch/paper/driveface/
| Folder | Experiments |
|---|---|
FR/ |
Face recognition baselines — paper Table 4 |
PAD/ |
Presentation attack detection — paper Table 7 |
The experiments need Bob (for scoring and metrics) plus PyTorch. Create the
driveface environment from the provided file:
conda env create -f environment.yml
conda activate drivefaceThis pulls Bob from the Idiap conda channel and installs PyTorch, timm,
transformers, onnxruntime-gpu and gdown. If you have mamba, use
mamba env create -f environment.yml — it solves considerably faster.
For CPU-only machines, replace onnxruntime-gpu with onnxruntime in
environment.yml before creating the environment.
Download DriveFace from https://www.idiap.ch/en/scientific-research/data/driveface
The protocol CSVs in this repository reference images by a path relative to the
dataset root, so you pass that root as --data-root (FR) or --data_root (PAD).
Both tracks expect preprocessed images: faces are detected and aligned with
SCRFD, cropped to 112×112 (FR) and 224×224 (PAD).
cd FR
python download_models.py --model all --model-dir ./models
python evaluate_fr.py \
--model edgeface_base --protocol outdoor \
--data-root /path/to/DriveFace_preprocessed \
--model-dir ./models --output-root ./experiments_fr
python hface_metrics.py \
-sf ./experiments_fr/edgeface_base/outdoor/scores.csv \
-s performance.yaml -u edgeface_base_outdoorModels: adaface_ir101_webface12m, lvface_vit_l, edgeface_base.
Protocols: outdoor, simulation, indoor_car (plus *_mp multi-pose
enrollment variants). Reports AUC / EER / VR@FAR=1% / Rank-1.
The xEdgeFace rows of Table 4 come from a separate codebase: https://gitlab.idiap.ch/bob/bob.paper.ijcb2025_xedgeface
See FR/README.md for details.
cd PAD
python pad_train_eval.py \
--architecture CLIPViTB32 --protocol grandtest \
--epochs 100 --batch_size 64 --lr 1e-4 --weight_decay 1e-6 \
--data_root /path/to/DriveFace_preprocessed \
--balance_trainProtocols: grandtest, unseen_print, unseen_mask. Trains the model, scores
dev/eval, and reports APCER / BPCER / ACER via bob pad metrics.
See PAD/README.md for the full list of benchmarked
architectures and their flags.
