Tutorial Slides
Full deck used in the two 90-minute blocks of the tutorial.
slides.pdfSIBGRAPI 2026 · Tutorial
On provenance, trust and threat robustness
1UFSM 2IMPA 3ISR-UC 4INCM
Face biometric systems are increasingly exposed to manipulated media. This tutorial looks at two sides of that problem along the full recognition pipeline — capture, processing, enrollment and decision: attacks, represented by face morphing, and defenses, represented by invisible watermarking for provenance (SSLWatermarking, RoSteALS). The central question is how to evaluate both jointly: how much a watermark costs in perceptual quality and biometric similarity, how robust it is to benign transformations, and how vulnerable a system is to morphs at its real operating point.
Full deck used in the two 90-minute blocks of the tutorial.
slides.pdfCompanion text with the definitions of every metric used in the hands-on.
manuscript.pdffacetrustPython package (MIT) with verification, identification, morphing-attack, image-quality and watermark metrics.
facetrust.zip 58 KBClean and watermarked face images, laid out as the notebook expects.
data.zip on Google Drive 165 MBFRLL morphs, one morph_<algorithm> folder per method. Imported with scripts/copy_frll_data.py.
20–30 minute Colab activity. Downloads code and data by itself; falls back to manual upload if Drive quota runs out.
facetrust_colab_demo.ipynbHow does increasing watermark strength (α) change, at the same time, visual quality, watermark reliability and biometric similarity?
facetrust.zip, data.zip and morphs.zip, copy the morphs into data/morph/, install the package with the ArcFace extra. Run this before the session.insightface, with a fallback extractor so the notebook never blocks.data/.Watermarked images were generated offline with SSLWatermarking (iterative optimisation per image), so the live session only evaluates them. A GPU runtime speeds up ArcFace; CPU works for the provided data.
unzip facetrust.zip -d src && unzip data.zip
pip install -e "src/facetrust[arcface]" # add ,lpips for LPIPScopy_frll_data.py at the folder that holds the morph_* subfolders. It copies them to data/morph/<algorithm>/<a>+<b>.png:
unzip morphs.zip -d morphs_src
python src/facetrust/scripts/copy_frll_data.py --skip-clean \
--morph-src morphs_src/<folder with morph_*> --datadir data \
-t morph_stylegan2 morph_stylegan3 morph_diffae # the subfolders you have
Add -n for a dry run.python src/facetrust/examples/demo_full_pipeline.pyExpected data layout:
data/clean/<subject_id>/<sample_id>.png
data/watermarked/<subject_id>/<sample_id>__alpha<alpha>.png
data/morph/<algorithm>/<contributor_a>+<contributor_b>.png
| Concept | Metrics | Module |
|---|---|---|
| Verification | FAR, FRR, ROC, DET, EER, TAR@FAR | verification |
| Identification | CMC, rank-N accuracy | identification |
| Representation | Embedding drift 1 − cos(f(I), f(Iw)) | verification |
| Morphing threat | MMPMR, FMMPMR, ProdAvg-MMPMR, RMMR | morphing |
| Perceptual quality | PSNR, SSIM, LPIPS | image_quality |
| Watermark reliability | Detection rate, BER | watermark |
| Robustness | JPEG, resize, blur, crop, rotation | transforms |
@inproceedings{schardong2026biometrics,
title = {Biometrics under attack: On provenance, trust and threat robustness},
author = {Schardong, Guilherme and Novello, Tiago and Schirmer, Luiz and Gonçalves, Nuno},
booktitle = {SIBGRAPI 2026 Tutorials},
year = {2026}
}