Multi-Camera Pedestrian Detection, Tracking & Re-Identification using Joint ConvNeXt V2 Architecture
By Aswanth Raj
EffiPed is a compact video-intelligence system that detects pedestrians, maintains camera-local tracks, and ranks cross-camera identity candidates for human review. Its React investigation console is available as a precomputed browser demo; the same workflow can connect to local FastAPI/CUDA inference when an authorized checkpoint is available.
Important
Ranked matches are reviewable appearance evidence, not proof of identity. The hosted experience is a precomputed, non-commercial research demonstration. Public model weights remain withheld while training-data redistribution terms are unresolved.
The hosted UI mirrors the original PedestrianTracker application layout, with four
P-DESTRE session 12-11-2019_3 clips already attached as though you had uploaded them.
Six panels:
- Single Camera — per-camera tracked output and run summary;
- Cross Camera — four-view association replay plus the per-pair precision table;
- Person Search — the main feature: build the index, pick any detected person, and review their stored appearances and ranked cross-video candidates;
- Image Detection — a single-frame detection pass;
- Model Status and Research Context — runtime and protocol notes.
cd apps/web
npm install
npm run devThe controls are live, but the hosted build performs no inference: each Run replays a precomputed result. Full-frame views are redrawn in the browser by seeking the shipped clip to the appearance's timestamp and stroking its stored box, so no per-appearance scene images ship.
No synthetic browser boxes are drawn over the footage. The boxes baked into the replay videos are the annotations rendered by the original tracking pipeline.
Note
The person-search index was computed offline with the BoxJDE research checkpoint,
because the EffiPed Tier-1 weights are withheld pending dataset rights review. The
Person Search and Model Status panels both state this. Regenerate it with
tools/build_person_search_fixture.py.
One ConvNeXt V2 feature hierarchy supports CenterNet-style detection and a 256-D part-aware identity descriptor. RoIAlign extracts a person feature map, four horizontal body strips retain local appearance, and Coordinate Attention fuses the visible evidence. BoT-SORT combines motion, overlap, and appearance for local temporal association; the gallery then ranks possible cross-camera matches for an analyst.
| Evaluation | Result |
|---|---|
| P-DESTRE validation cross-camera Rank-1 | 62.8% |
| P-DESTRE test cross-camera Rank-1 | 61.3% |
| P-DESTRE validation / test detection mAP@0.5 | 90.74% / 88.4% |
| MOT17 val-half MOTA / IDF1 / HOTA | 64.08 / 74.24 / 61.34 |
| EffiPed Tier-1 footprint | 7.78M · ≈18 full-pipeline FPS |
Each value has a protocol label in RESULTS.md. The interactive replay is an application demonstration, not a benchmark run.
The diagram is also available as an editable PowerPoint.
src/effiped/ installable model, descriptors, tracking, runtime
apps/api/ FastAPI local-GPU service and job lifecycle
apps/web/ React/Vite demo workbench UI and hosted replay
configs/system/ active EffiPed and matched PartJDE configurations
research/results/ single source of truth for published evidence
research/report/ generated technical report
docs/architecture/ editable diagram source and web exports
docs/media/ optimized, attributed demonstration media
tools/ and tests/ validation, regression, and release checks
Python 3.11 and an NVIDIA GPU are recommended.
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -e ".[runtime]"
effiped-appPlace an authorized checkpoint in EFFIPED_WEIGHTS_DIR. When none is present, the API
reports the model as unavailable without exposing a local filesystem path.
effiped-train --config configs/system/effiped-tier1.yaml
effiped-eval --config configs/system/effiped-tier1.yaml
effiped-demo| Variable | Purpose |
|---|---|
EFFIPED_WEIGHTS_DIR |
authorized local model artifacts |
EFFIPED_RUNTIME_DIR |
temporary uploads, crops, and job assets |
EFFIPED_DEVICE |
auto, cpu, cuda, or cuda:N |
EFFIPED_MAX_UPLOAD_MB |
per-video upload limit |
EFFIPED_ALLOWED_ORIGINS |
comma-separated CORS allowlist |
GET /api/healthGET /api/modelsPOST /api/person-search/jobsGET /api/person-search/jobs/{job_id}and/streamGET .../people,/detections,/tracks, and/matchesPOST .../search-by-exampleDELETE /api/person-search/jobs/{job_id}GET /api/assets/{asset_id}
Deleting a job removes uploaded video and generated assets.
The later BoxJDE Person Search repository isolates the full-person descriptor readout and documents its five-fold P-DESTRE ablation. It is linked as related research; its code and report are not duplicated here.
Original software is © 2026 Aswanth Raj and licensed under Apache-2.0. P-DESTRE-derived
media under docs/media/pdestre/ is separately licensed as a CC BY-NC-SA 4.0 adaptation
for this non-commercial showcase. The
asset manifest records the source, transformations,
hash, purpose, and license for every derived asset.
No dataset, source video, person-level benchmark record, checkpoint, or runtime crop is included.
Model card · Data and weight-release audit · Third-party notices · P-DESTRE paper · CC BY-NC-SA 4.0