Skip to main content

Real-time face recognition library: detection, embedding, tracking and matching.

Project description

FaceHub

🌐 English | 中文

Real-time face recognition library — detection, embedding, tracking, and matching.

Python License: MIT PyPI Docs Tests

Features

  • Detection: insightface RetinaFace with GPU auto-detection (CUDA / DirectML) and CPU fallback.
  • Embedding: ArcFace 512-dim L2-normalized features.
  • Recognition: 1:N cosine-similarity matching with a versioned encoding cache.
  • Tracking: IoU-based multi-face tracker with majority-vote identity smoothing.
  • Camera: cross-platform capture thread (Windows DShow, macOS AVFoundation, Linux V4L2).
  • Protocol: DetectorProtocol lets you plug in your own detector (YOLO, MediaPipe, etc.).

Installation

pip install face-hub

Optional GPU backends:

# Windows DirectML
pip uninstall -y onnxruntime
pip install face-hub[gpu-win]

# Linux NVIDIA CUDA
pip uninstall -y onnxruntime
pip install face-hub[gpu-linux]

Quick Start

from face_hub import (
    FaceHubPipeline, FaceDetector, FaceRecognizer,
    FaceTracker, FaceDatabase, CameraThread,
)

# 1. Initialize components
db = FaceDatabase(db_path="face_db.json")
detector = FaceDetector(device="auto", det_size=640)
recognizer = FaceRecognizer(tolerance=0.45)
tracker = FaceTracker(smooth_frames=5)
camera = CameraThread(camera_id=0, width=640, height=360)

# 2. Assemble the pipeline
pipeline = FaceHubPipeline(camera, detector, recognizer, tracker, db)
pipeline.start()

# 3. Loop
try:
    while True:
        result = pipeline.process_frame()
        if result is None:
            continue
        for face in result.known_faces:
            print(f"{face.name} ({face.confidence:.0%})")
finally:
    pipeline.stop()

Custom Detector

Any object satisfying DetectorProtocol can be plugged into the pipeline:

from face_hub import DetectorProtocol, DetectionWithEmbedding, BBox

class MyYoloDetector:
    def detect_with_embeddings(self, frame):
        boxes = self.yolo_model(frame)
        return [
            DetectionWithEmbedding(
                bbox=BBox(x1=b.x1, y1=b.y1, x2=b.x2, y2=b.y2),
                confidence=b.conf,
                embedding=self.embedder(frame[b.y1:b.y2, b.x1:b.x2]),
                quality_pass=True,
            )
            for b in boxes
        ]

pipeline = FaceHubPipeline(camera, MyYoloDetector(), recognizer, tracker, db)

Documentation

📖 Online Documentation — Full API reference in English & 中文

To preview locally:

pip install -r docs/requirements.txt
mkdocs serve -f docs/mkdocs.yml

Download Quantity

Monthly Downloads

Total Downloads

Acknowledgements

We would like to express our sincere gratitude to Leon Jane for voluntarily providing his facial sample data and fully participating in the verification and testing of all functions of the Face-hub library. Many program bugs were successfully identified through his efforts, making a crucial contribution to feature improvement and stability optimization of this project.

License

The FaceHub code is released under the MIT License.

⚠️ The pre-trained buffalo_l model downloaded automatically by insightface is subject to insightface's own model license and is for non-commercial research use unless separate authorization is obtained. See the documentation for details.


FaceHub(中文)

🌐 English | 中文

实时人脸识别库 — 检测、特征提取、追踪、匹配。

特性

  • 检测:insightface RetinaFace,自动检测 CUDA / DirectML GPU 并回退 CPU。
  • 特征:ArcFace 512 维 L2 归一化特征向量。
  • 识别:1:N 余弦相似度匹配,带版本号缓存。
  • 追踪:基于 IoU 的多目标追踪 + 多数投票身份平滑。
  • 摄像头:跨平台采集线程(Windows DShow、macOS AVFoundation、Linux V4L2)。
  • 协议DetectorProtocol 允许接入自定义检测器(YOLO、MediaPipe 等)。

安装

pip install face-hub

可选 GPU 后端:

# Windows DirectML
pip uninstall -y onnxruntime
pip install face-hub[gpu-win]

# Linux NVIDIA CUDA
pip uninstall -y onnxruntime
pip install face-hub[gpu-linux]

快速开始

from face_hub import (
    FaceHubPipeline, FaceDetector, FaceRecognizer,
    FaceTracker, FaceDatabase, CameraThread,
)

# 1. 初始化组件
db = FaceDatabase(db_path="face_db.json")
detector = FaceDetector(device="auto", det_size=640)
recognizer = FaceRecognizer(tolerance=0.45)
tracker = FaceTracker(smooth_frames=5)
camera = CameraThread(camera_id=0, width=640, height=360)

# 2. 组装流水线
pipeline = FaceHubPipeline(camera, detector, recognizer, tracker, db)
pipeline.start()

# 3. 循环处理
try:
    while True:
        result = pipeline.process_frame()
        if result is None:
            continue
        for face in result.known_faces:
            print(f"{face.name} ({face.confidence:.0%})")
finally:
    pipeline.stop()

自定义检测器

任何满足 DetectorProtocol 的对象都可以接入流水线,示例见上文英文部分。

文档

📖 在线文档 — 完整中英 API 文档

下载量

Monthly Downloads

Total Downloads

致谢

在此特别向 Leon Jane 致以诚挚谢意。其无偿提供其人脸样本数据,并完整参与 Face-hub 库各项功能的验证测试,有效排查多处程序缺陷,为本项目的功能完善与稳定性优化作出关键贡献。

许可

FaceHub 代码 采用 MIT License

⚠️ insightface 自动下载的 buffalo_l 预训练模型受其模型许可约束,默认仅供非商用研究使用;商业使用需单独获取授权。详见文档。

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

face_hub-1.1.0.tar.gz (33.0 kB view details)

Uploaded Source

Built Distribution

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

face_hub-1.1.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file face_hub-1.1.0.tar.gz.

File metadata

  • Download URL: face_hub-1.1.0.tar.gz
  • Upload date:
  • Size: 33.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for face_hub-1.1.0.tar.gz
Algorithm Hash digest
SHA256 ada0d8a1597d7b87f728fbb00279c7dcb141798273d8ffe8281844cdae197828
MD5 2c8b646ba4f6913c52ba449a1acd16ab
BLAKE2b-256 546195c255ab8dcb92740d7f4ab6240bbd0001cc5988cc084bd4f3c4e465c246

See more details on using hashes here.

Provenance

The following attestation bundles were made for face_hub-1.1.0.tar.gz:

Publisher: publish.yml on allen902/face-hub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file face_hub-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: face_hub-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for face_hub-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 69a8e32895d92d8e9650cd9a5a1ccb6629417cc8631ff6ce5ac1bea7f5346204
MD5 620b31bbcbdded97d1e426688ee1170d
BLAKE2b-256 ec62f07e3d63a77c8e661a46715dc1dc56438b78054f96cf19b6f906ca7f1f25

See more details on using hashes here.

Provenance

The following attestation bundles were made for face_hub-1.1.0-py3-none-any.whl:

Publisher: publish.yml on allen902/face-hub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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