Skip to content

Releases: Abdirayimov/multi-stream-face-recognition

v0.1.0 — Initial reference release

Choose a tag to compare

@Abdirayimov Abdirayimov released this 31 Jul 09:34

v0.1.0 — Initial reference release

First public release of the reference implementation.

What works

  • SCRFD detector wrapper: three-stride decoder (8/16/32), NMS, letterboxed
    input, with output tensors resolved by shape so the stock insightface
    buffalo_l export runs directly.
  • ArcFace ResNet50 embedder with batched TensorRT inference.
  • 5-point face aligner using a Umeyama similarity transform.
  • FAISS GPU index with adaptive IVF-Flat / IVF-PQ selection.
  • Probe chain that batches detections across streams before encoding, and a
    multi-source DeepStream pipeline with thread-safe add_source /
    remove_source.
  • Two CLI tools: face_enroll (build an index from a public dataset) and
    face_benchmark (per-stage latency / throughput), plus face_detect.
  • 86 GoogleTest cases over the algorithmic stages — Umeyama transform, SCRFD
    decode, NMS, letterboxing, config validation, match decision — building
    without CUDA or TensorRT.

Known limitations

  • The DeepStream probe parses tensor metadata for the SCRFD head only; a
    different detector needs its own decoder.
  • Recognition is per-frame; there is no per-track confirmation layer.
  • INT8 calibration for either engine is not validated end-to-end; FP16 is the
    documented configuration.
  • The GPU stages (TensorRT wrapper, ArcFace encoder, FAISS searcher,
    DeepStream pipeline) are not unit tested — they need a device and a
    serialized engine.

Requirements

CMake 3.22+, a C++17 compiler, CUDA Toolkit 12.x, TensorRT 8.6+, DeepStream
SDK 7.x or 8.x, OpenCV 4.5+ with CUDA modules, Eigen 3.4+, spdlog, yaml-cpp,
FAISS (GPU build), gstreamer-1.0 headers. The Docker build under docker/
uses the official NVIDIA DeepStream devel image and is the most portable
route.

The unit tests need only CMake, a C++17 compiler, OpenCV, Eigen and yaml-cpp
(-DFACE_PIPELINE_CPU_ONLY=ON -DFACE_PIPELINE_BUILD_TESTS=ON).

This is a reference implementation intended to demonstrate architecture and
engineering patterns. See the README for scope and limitations.