Releases: Abdirayimov/multi-stream-face-recognition
Releases · Abdirayimov/multi-stream-face-recognition
Release list
v0.1.0 — Initial reference release
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_lexport 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-safeadd_source/
remove_source. - Two CLI tools:
face_enroll(build an index from a public dataset) and
face_benchmark(per-stage latency / throughput), plusface_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.