How mad-dcoder/sentinel-trace works
Sentinel-Trace is an investigator-driven CCTV loss-prevention tool for locating a person in a starting camera window, then following candidates across cameras through human-confirmed search rounds. Its workflow reads only requested video ranges, detects and tracks people, builds appearance embeddings and tracklets, ranks cross-camera matches, and stores case evidence and decisions. The dashboard supports review and report generation; documented capabilities include a learned camera-transition map and forensic DOCX export. Some links reflect README or SOURCE INDEX references because the corresponding implementation excerpts were not shown.
Main entry points: hunter.py On-demand hunt engine · settings.py Runtime settings · app.py Investigation dashboard · reid.py Appearance embeddings
Components 17
Investigation workflow
- Investigation dashboard
dashboard/app.py - On-demand hunt engine
pipeline/hunter.py - Runtime settings
config/settings.py
Video and vision
- Video archive
core/video.py - Motion sampling
core/motion.py - Person detection
core/detector.py - Tracklet construction
core/tracklet.py - Clothing attributes
core/attributes.py - Appearance embeddings
core/reid.py - OSNet-AIN model
core/models/osnet_ain.py
Cross-camera matching
- Candidate matching
core/matcher.py
Evidence and reporting
- Case evidence store
db/database.py - Learning and transitions
db/database.py - Route inspection
utils/inspector.py - Forensic report export
utils/report_generator.py
Other components
- Investigator
- CCTV video exports
Connections 22
- Investigator → Investigation dashboard: initiates review
README.md - Investigation dashboard → On-demand hunt engine: starts and guides hunts
dashboard/app.py - On-demand hunt engine → Video archive: reads requested windows
pipeline/hunter.py - CCTV video exports → Video archive: provides recordings
README.md - On-demand hunt engine → Motion sampling: checks for motion
pipeline/hunter.py - On-demand hunt engine → Person detection: detects people
pipeline/hunter.py - On-demand hunt engine → Tracklet construction: builds person tracks
pipeline/hunter.py - On-demand hunt engine → Clothing attributes: ranks clothing clues
pipeline/hunter.py - On-demand hunt engine → Appearance embeddings: extracts appearances
pipeline/hunter.py - Appearance embeddings → OSNet-AIN model: runs model
core/reid.py - On-demand hunt engine → Candidate matching: ranks candidates
pipeline/hunter.py - On-demand hunt engine → Case evidence store: stores case evidence
pipeline/hunter.py - On-demand hunt engine → Learning and transitions: learns decisions and transitions
pipeline/hunter.py - Investigation dashboard → Route inspection: requests route review
dashboard/app.py - Investigation dashboard → Forensic report export: generates report
dashboard/app.py - Route inspection → Case evidence store: reads search evidence
utils/inspector.py - Video archive → Runtime settings: loads camera configuration
core/video.py - Person detection → Runtime settings: uses model settings
core/detector.py - Motion sampling → Runtime settings: uses sampling settings
core/motion.py - Tracklet construction → Runtime settings: uses selection settings
core/tracklet.py - Appearance embeddings → Runtime settings: loads model settings
core/reid.py - Candidate matching → Runtime settings: uses search settings
core/matcher.py