feat(engine): HDF5-native galleries with embedded calibration; TensorRT backends; scene detection
Gallery format switches from JSON to HDF5 exclusively (JSON read-only kept for back-compat): save_gallery always writes HDF5, and the fitted Platt-sigmoid calibration (a, b, valid, hash) is now embedded directly in the gallery file instead of a sidecar .calib_cache.json — identity_matcher reads it from the loaded gallery and writes back only when the embeddings actually changed (hash mismatch), skipping the O(n^2) refit otherwise. Also includes: TensorRT inference backend support (ort_backend.cpp, trt_backend.cpp), gemm_backend improvements, TransNetV2-based scene-boundary detection wired through frame_source/face_tracker/main, and CMake build target updates for the new sources. Bumps the KPN submodule to feature/persistent-pipeline-reuse (push_blocking backpressure, node_ptr/node_stats introspection, ObjectVariantNodeWrapper for stateful functors) — needed by the optimizer's sae_kpn Python bindings.
This commit is contained in:
+23
-1
@@ -24,7 +24,20 @@ struct Frame {
|
||||
double timestamp_sec{0.0};
|
||||
int64_t frame_idx{-1};
|
||||
bool eof{false};
|
||||
bool is_cut{false}; // true when a hard scene cut was detected before this frame
|
||||
bool is_cut{false}; // histogram: intra-scene camera-angle change (tracker reset)
|
||||
bool is_scene_boundary{false}; // TransNetV2: true shot/scene boundary (opt-in)
|
||||
float cut_score{0.f}; // histogram cut score = 1 - hist_corr (0=identical, ~1=cut); HUD/debug
|
||||
float bbox_upscale{1.f}; // multiply detector bboxes/landmarks by this to map back to
|
||||
// original video resolution (>1 when dense_scale downscaled the frame)
|
||||
};
|
||||
|
||||
// ── CutEvent ──────────────────────────────────────────────────────────────────
|
||||
// Emitted by SceneDetectorFunc when TransNetV2 localises a shot boundary, keyed
|
||||
// by the boundary frame's timestamp. eof=true is the shutdown sentinel.
|
||||
struct CutEvent {
|
||||
double timestamp_sec{0.0};
|
||||
float probability{0.f}; // sigmoid boundary score at the peak
|
||||
bool eof{false};
|
||||
};
|
||||
|
||||
// ── ArcFace alignment ─────────────────────────────────────────────────────────
|
||||
@@ -122,4 +135,13 @@ struct ActorGallery {
|
||||
std::vector<std::string> source_images;
|
||||
};
|
||||
std::vector<Actor> actors;
|
||||
|
||||
// Cached Platt-sigmoid calibration (see gallery/gallery_calibration.hpp),
|
||||
// stored alongside the gallery in HDF5 so it never needs recomputing
|
||||
// unless the reference embeddings actually change. calib_valid=false and
|
||||
// calib_hash=0 means "not present in this file, compute it."
|
||||
float calib_a{10.f};
|
||||
float calib_b{-5.f};
|
||||
bool calib_valid{false};
|
||||
uint64_t calib_hash{0};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user