Skip to content

Vicbrill44/TripletFaceVerification

Repository files navigation

Face Verification with ResNet50 & Triplet Loss

This project explores face verification by:

  • Pretraining a ResNet50 backbone on the FaceScrub dataset for identity classification.
  • Fine‑tuning the backbone with a TripletNet architecture on LFW (Labeled Faces in the Wild) using triplet loss.

Results demonstrate strong verification performance (AUC > 0.93) with optimal hyperparameters.


🛠️ How to Use

This README provides a high‑level overview of the steps taken and findings.

  • Environment: Create a Python environment (e.g., conda, venv) and install the dependencies listed in requirements.txt.
  • GPU Support: Ensure that CUDA‑enabled GPU drivers are available for faster data loading and model training.

📥 Data Preparation

  • FaceScrub: Download and unpack actor/actress photos. Organize into a merged folder of identities.
  • LFW: Download and funnel into a standardized directory structure. Generate and save train/val/test splits in lfw_splits.json.

🚀 Model Training

1. Classification Pretraining

  • Train a ResNet50 classification head on FaceScrub identities.
  • Freeze early layers; finetune the final block.
  • Save best checkpoint (resnet50_facescrub_best.pth).

2. TripletNet Fine‑tuning

  • Wrap the pretrained backbone in a TripletNet.
  • Experiment with different hyperparameters: learning rate, margin, dropout.
  • Track train/val loss and verification metrics (Accuracy, FAR, FRR, AUC).
  • Save best triplet checkpoints for each experiment.

3. Key Plots

Baseline Train vs Validation Loss
**Baseline Train vs Validation Loss**
Baseline Accuracy
**Baseline Accuracy**
Dropout 0.5 Train vs Validation Loss
**Dropout 0.5 Train vs Validation Loss**
Dropout 0.5 Accuracy
**Dropout 0.5 Accuracy**
Learing Rate 1e-5 Train vs Validation Loss
**Learing Rate 1e-5 Train vs Validation Loss**
Learing Rate 1e-5 Accuracy
**Learing Rate 1e-5 Accuracy**
Margin Train vs Validation Loss
**Margin 0.5 Train vs Validation Loss**
Margin Accuracy
**Margin 0.5 Accuracy**

📊 Evaluation & Findings

  • Final LFW Test Results:

    Experiment Accuracy FAR FRR AUC
    baseline 0.8583 0.1481 0.1353 0.9355
    lr=1e‑5 0.7924 0.2005 0.2147 0.8727
    margin=0.5 0.8673 0.1488 0.1166 0.9380
    dropout=0.5 0.8604 0.1813 0.0978 0.9379
  • The margin=0.5 variant achieved the highest AUC and competitive accuracy.

  • Offloading augmentations and data loading to GPU improved training speed significantly.


📜 License

This work uses public datasets (FaceScrub & LFW) under their respective licenses.
© 2025 Victor Vasquez

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors