Skip to main content

Ultra-fast face matching (OpenCV YuNet + SFace + FAISS).

Project description

moca-face-matcher

PyPI version License: MIT Python 3.9+

Ultra-fast face matching library using OpenCV's YuNet for detection, SFace for recognition, and FAISS for high-performance vector search. Designed as both a production-grade SDK and a powerful CLI tool.


Features

  • Blazing Fast: Integrated with FAISS for near-instant search in large databases.
  • State-of-the-Art Models: Uses YuNet (fastest detection) and SFace (robust recognition).
  • GPU Ready: Hardware acceleration support via OpenCV DNN/CUDA.
  • Developer First: Clean SDK interface with strict type hinting (Mypy) and JSON-based secure cache.
  • Secure by Design: Automatic SHA-256 model verification and no insecure serialization (no pickle).
  • Portable Cache: Uses relative paths in the JSON cache, making it portable across different machines.

Requirements

  • Python 3.9 or superior.
  • Internet connection for the first run (downloads ~40 MB of ONNX models from OpenCV Zoo).

Installation

pip install moca-face-matcher

For local development:

git clone https://github.com/Moca9801/face-match.git
cd face-match
pip install -e ".[dev]"

Usage

Command Line Interface (CLI)

Search for a face in a gallery folder:

face-match path/to/query.jpg --db path/to/gallery/

Library Usage (SDK)

The core function is find_matches. It returns a structured dictionary and does not print to the console, making it ideal for integration into other systems.

from pathlib import Path
from face_match import find_matches

results = find_matches(
    query=Path("query.jpg"),
    db=Path("./gallery"),
    top=3,
    threshold=0.4
)

print(f"Scanned {results['total_scanned']} images.")
for match in results['results']:
    print(f"Match found: {match['path']} (Distance: {match['distance']})")

CLI vs SDK Mapping

CLI Option SDK Parameter (find_matches) Description
query query (Path) Path to the query image.
--db db (Path) Path to the gallery/database folder.
--top top (int) Number of results to return.
--metric distance (int) 0 for Cosine (default), 1 for L2.
--threshold threshold (float) Similarity threshold.
--device device (str) cpu (default) or gpu.
--rebuild rebuild_cache (bool) Force rescan of all images.

Technical Details

Metrics and Thresholds

The library uses predefined thresholds based on the SFace model's official recommendations:

  • Cosine Similarity (--metric coseno): Matches range from -1 to 1. Higher is better. Recommended threshold: 0.363.
  • L2 Distance (--metric l2): Matches start from 0. Lower is better. Recommended threshold: 1.128.

Development and Testing

Contributors are welcome! To run quality checks locally:

# Run Linting
ruff check src tests

# Run Type Checking
mypy src/face_match

# Run Tests
pytest

Security and Data Privacy

[!CAUTION] Biometric Data on Disk: The .face_embeddings_cache.json file generated in your database folder contains mathematical representations (embeddings) and relative file paths.

  • Do not share this file.
  • Treat it as sensitive personal data.
  • Access to the file should be restricted using system-level permissions.

Disclaimer

  • This software is not a certified biometric identification system.
  • It is intended for research and low-risk identification tasks.
  • The author is not responsible for misuse or legal implications of using biometric data.

Versión en Español (Resumen)

moca-face-matcher es una librería de búsqueda de coincidencias faciales ultra rápida.

Instalación rápida

pip install moca-face-matcher

Características

  • Búsqueda vectorial con FAISS.
  • Modelos YuNet + SFace.
  • Soporte para GPU.
  • Caché segura en JSON con rutas relativas.

Seguridad

Este software maneja datos biométricos. El archivo de caché .face_embeddings_cache.json es sensible y no debe ser compartido.


License

Distributed under the MIT License. See LICENSE for more information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

moca_face_matcher-0.2.2.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

moca_face_matcher-0.2.2-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file moca_face_matcher-0.2.2.tar.gz.

File metadata

  • Download URL: moca_face_matcher-0.2.2.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for moca_face_matcher-0.2.2.tar.gz
Algorithm Hash digest
SHA256 5719f9c811ab3e101f3dee2e2dbc9cf819a379b8fa86790c75523897a510b06e
MD5 ca79a30d6cd8aa5d871cc391fe747a90
BLAKE2b-256 25c5d24993520565500ca24941d9cc5b1e1e83d6ea332a2a56fb53e3117b90c5

See more details on using hashes here.

File details

Details for the file moca_face_matcher-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for moca_face_matcher-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b7a33538aa3564a65f795c12a6a5c7aac648f6867e2af1aa1439c10b9f108c03
MD5 66f493a187f5776ce900f5887522a469
BLAKE2b-256 28ba9d88a6414fb23b292078b1bfd5eaf7fdfb0bf5574f13e11c722898b59915

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page