Views
No views yet
pip install torch torchvision pillow numpy tqdm1from face_recognition import FaceRecognition
2
3# Initialize model
4model = FaceRecognition('best_model.pth')
5
6# Compare two faces
7similarity = model.verify_faces('face1.jpg', 'face2.jpg')
8print(f"Similarity: {similarity:.3f}")
9
10# Check if same person (threshold=0.5)
11is_same = model.are_same_person('face1.jpg', 'face2.jpg', threshold=0.5)├── README.md # This file
├── best_model.pth # Trained model weights
├── face_recognition.py # Main inference code
├── face_deduplication.py # Find duplicate faces
├── requirements.txt # Python dependencies
├── data/ # Sample images for testing
│ ├── person1/
│ ├── person2/
│ └── ...
└── examples/ # Example scripts
├── verify_faces.py
├── find_duplicates.py
└── build_gallery.pyResNet50 → BatchNorm → Dropout(0.4) → FC(2048→512) → BatchNorm → L2 Normalize1from face_recognition import FaceRecognition
2
3# Load model
4fr = FaceRecognition('best_model.pth')
5
6# Verify if two images are the same person
7result = fr.verify_faces('data/person1/img1.jpg', 'data/person1/img2.jpg')
8print(f"Same person: {result['is_same']}")
9print(f"Similarity: {result['similarity']:.3f}")1from face_deduplication import FaceDeduplication
2
3# Initialize deduplicator
4dedup = FaceDeduplication('best_model.pth')
5
6# Find all duplicate faces in a folder
7duplicates = dedup.find_duplicates('data/', threshold=0.5)
8
9for group in duplicates:
10 print(f"Duplicate group ({len(group)} images):")
11 for img in group:
12 print(f" - {img}")1from face_recognition import FaceRecognition
2
3fr = FaceRecognition('best_model.pth')
4
5# Build gallery from folder
6gallery = fr.build_gallery('data/')
7
8# Search for a face
9results = fr.search_in_gallery('query.jpg', gallery, top_k=5)
10
11for person, similarity in results:
12 print(f"{person}: {similarity:.3f}")| Metric | Value | Description |
|---|---|---|
| Training Accuracy | 97.56% | Top-1 accuracy on 5000 classes |
| Verification TAR@FAR=0.001 | 98.2% | True Accept Rate at 0.1% False Accept |
| ROC-AUC | 1.000 | Perfect discrimination |
| EER | 0.023 | Equal Error Rate |
| Inference Speed | 45ms | Per image on GPU |
| Embedding Extraction | 8ms | Per face on GPU |
1class FaceRecognition:
2 def __init__(self, model_path, device='cuda')
3 def extract_embedding(self, image_path) -> np.ndarray
4 def verify_faces(self, img1, img2, threshold=0.5) -> dict
5 def build_gallery(self, folder_path) -> dict
6 def search_in_gallery(self, query_img, gallery, top_k=5) -> list1class FaceDeduplication:
2 def __init__(self, model_path, device='cuda')
3 def find_duplicates(self, folder_path, threshold=0.5) -> list
4 def remove_duplicates(self, folder_path, keep='best') -> dict1@software{convrec_2024,
2 title = {ConvRec: Progressive Face Recognition Model},
3 author = {ConvAI Innovations},
4 year = {2024},
5 url = {https://huggingface.co/convaiinnovations/convrec-face-recognition}
6}