Skip to main content

🇦🇪 IrisVision - Face Recognition Suite

PyPI version Python 3.8+ License: MIT Made in Emirates

IrisVisionAixL - A high-accuracy face recognition model achieving 98.58% accuracy, designed and trained in Dubai, UAE.

✨ Features

  • 🎯 98.58% Accuracy - Beats Buffalo_L benchmark
  • 📐 512-dimensional embeddings - Compact and efficient
  • 🚀 Easy to use - Simple API for encoding, comparing, and verifying faces
  • ☁️ Auto-download - Model weights automatically downloaded from HuggingFace
  • 🔧 Production-ready - Optimized for real-world deployment
  • 🇦🇪 Made in Emirates - Product of Dubai

📦 Installation

pip install irisvision

🚀 Quick Start

from irisvision import IrisVisionAixL

# Load model (auto-downloads from HuggingFace)
model = IrisVisionAixL.load()

# Encode a face image
embedding = model.encode("face.jpg")  # Returns (512,) numpy array

# Compare two faces
similarity = model.compare(emb1, emb2)  # Returns 0.0 to 1.0

# Verify if same person
is_match, score = model.verify(emb1, emb2, threshold=0.4)

📖 API Reference

IrisVisionAixL.load()

Load the model from HuggingFace Hub.

model = IrisVisionAixL.load(
    repo_id="vCodesUAE/IrisVisionAixL",  # Optional: custom repo
    device="cuda",                        # Optional: "cuda" or "cpu"
    token="hf_xxx"                        # Optional: HuggingFace token for private repos
)

model.encode(image)

Extract face embedding from an image.

# From file path
embedding = model.encode("path/to/face.jpg")

# From PIL Image
from PIL import Image
img = Image.open("face.jpg")
embedding = model.encode(img)

# From numpy array
import numpy as np
img_array = np.array(img)
embedding = model.encode(img_array)

# Batch encoding
embeddings = model.encode([img1, img2, img3])

Returns: numpy.ndarray of shape (512,) or (N, 512) for batch

model.compare(emb1, emb2)

Calculate cosine similarity between two embeddings.

similarity = model.compare(emb1, emb2)
# Returns: float between -1.0 and 1.0 (higher = more similar)

model.verify(emb1, emb2, threshold=0.4)

Verify if two embeddings belong to the same person.

is_match, score = model.verify(emb1, emb2, threshold=0.4)
# Returns: (bool, float)

🏢 Production Example: Attendance System

from irisvision import IrisVisionAixL
import numpy as np

class AttendanceSystem:
    def __init__(self):
        self.model = IrisVisionAixL.load()
        self.employees = {}  # name -> embedding
    
    def register(self, name, face_image):
        """Register a new employee"""
        self.employees[name] = self.model.encode(face_image)
    
    def identify(self, face_image, threshold=0.4):
        """Identify an employee from face"""
        embedding = self.model.encode(face_image)
        
        best_match = None
        best_score = -1
        
        for name, stored_emb in self.employees.items():
            score = self.model.compare(embedding, stored_emb)
            if score > best_score:
                best_score = score
                best_match = name
        
        if best_score >= threshold:
            return best_match, best_score
        return None, best_score

# Usage
system = AttendanceSystem()
system.register("Padam", "padam_face.jpg")
system.register("Ahmed", "ahmed_face.jpg")

name, score = system.identify("unknown_face.jpg")
if name:
    print(f"Identified: {name} (score: {score:.2f})")

🔧 Technical Details

Specification Value
Architecture IResNet-100
Configuration [3, 13, 30, 3]
Embedding Dimension 512
Input Size 112 × 112
Training Loss ArcFace
Accuracy 98.58%
Parameters ~65M

📊 Model Performance

Metric Value
Validation Accuracy 98.58%
Classes 405
Embedding Norm 1.0 (L2 normalized)

🔗 Links

📄 License

MIT License - see LICENSE file.

🙏 Acknowledgments

  • Made with ❤️ in Dubai, UAE 🇦🇪
  • Built by vCodesUAE
  • Powered by PyTorch and HuggingFace

🇦🇪 Made in Emirates | Product of Dubai

Metadata

Release files for irisvision 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for irisvision 0.1.0
File Size Uploaded
irisvision-0.1.0.tar.gz 8.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for irisvision 0.1.0
File Interpreter ABI Platform
irisvision-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.0 kB

Release files / irisvision-0.1.0.tar.gz

Download URL irisvision-0.1.0.tar.gz
Size 8.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d49906e413357a4ee82e20f9865d8a05856e45ebfc411f0c720ab37a5df55b67
BLAKE2b-256 checksum
How to use checksums
527bf07c77c253751b5940fe2da7284a7055b20e6209b3cc8f5a2941b371bbfc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

Release files / irisvision-0.1.0-py3-none-any.whl

Download URL irisvision-0.1.0-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
912e985baba8259c57c4026aa347cf0eb662463518ea52b9dd5a64bd81b11cb0
BLAKE2b-256 checksum
How to use checksums
750768734cfad5dbfd87d379ef39217e323ade7feb95d389bbc420a9ab8ad29f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page