\section{Experimental Setup}
\label{sec:experiments}

To validate CHURI's generalization across viewpoints and deployment scenarios, we evaluate on three retail surveillance benchmarks with diverse camera geometries and person densities.

\subsection{Datasets}

We test on three retail surveillance benchmarks (Figure~\ref{fig:datasets}): (1) \textbf{WEPDTOF}~\cite{tezcan2022wepdtof} with 16 overhead fisheye videos ($1440\times1080$ @ 12 FPS, 1,687 frames) spanning call centers (27.9 avg people), retail stores (4-7 avg), and offices (11.7 avg), totaling 7.9 average person density with rotated bounding box annotations; (2) \textbf{MERL Shopping} with 106 frontal perspective clips (9,500 frames, 3.2 avg density) capturing checkout queues and aisle navigation; (3) \textbf{Innovatiana Shoplifting Dataset} with behavioral anomaly scenarios (13,200 frames, 1.4 avg density) with perspective cameras monitoring high-value merchandise. These datasets encompass a range of retail deployment scenarios, including overhead fisheye for privacy-preserving monitoring, frontal perspective for queue management, and sparse behavioral monitoring for theft detection.

\subsection{Baselines}

We compare against three representative methods spanning detector-only and background subtraction approaches: (1) \textbf{YOLO standalone} (YOLOv8s, conf=0.2), represents continuous detection without background subtraction, achieving 52.1\% recall on WEPDTOF but saturating CPU at 82\% per camera; (2) \textbf{MOG2}~\cite{zivkovic2004mog2} (OpenCV BackgroundSubtractorMOG2, history=500, varThreshold=16), classical Gaussian mixture model consuming 94 MB per camera with 40.5\% recall due to stationary absorption; (3) \textbf{KNN}~\cite{zivkovic2006knn} (OpenCV BackgroundSubtractorKNN, history=500, dist2Threshold=400), K-nearest neighbors background subtraction consuming 70 MB per camera with 54.8\% recall. All methods utilize identical YOLO weights (YOLOv8s) and tracking parameters (IoU threshold = 0.3, track timeout = 30 frames) to isolate the impact of the background subtraction architecture.

\subsection{Implementation Details}

Hardware: Raspberry Pi 5 (quad-core ARM Cortex-A76 @ 2.4 GHz, 8GB LPDDR4X RAM). Processing rate: 2 FPS per camera (fixed via TRACKING\_FPS to ensure fair comparison). Zone grid: $16\times16$ (configurable via ZONE\_ROWS, ZONE\_COLS---we tested $5\times5$, $8\times8$, $16\times16$ and found $16\times16$ optimal for $1440\times1080$ resolution). Metrics: Recall (detected tracks / ground truth tracks), Precision (true positive tracks / detected tracks), memory per camera (background model only, excluding shared YOLO weights), multi-camera scalability (maximum cameras at 2 FPS before CPU/memory saturation).

Table~\ref{tab:wepdtof_breakdown} breaks down performance by scenario.

\begin{table}[t]
\centering
\caption{WEPDTOF per-video breakdown. \textit{CHURI} achieves strongest improvements in sparse and occluded scenarios through sticky tracking.}
\label{tab:wepdtof_breakdown}
\small
\resizebox{\columnwidth}{!}{%
\begin{tabular}{@{}lccccccc@{}}
\toprule
Video & Frames & GT & YOLO & \textit{CHURI} & YOLO\% & \textit{CHURI}\% & $\Delta$ \\
\midrule
call\_center & 96 & 27.9 & 15.6 & 21.4 & 55.9 & 76.7 & +37.2 \\
empty\_store & 56 & 1.0 & 0.2 & 1.0 & 25.0 & 100.0 & +300 \\
it\_office & 82 & 11.7 & 4.0 & 6.9 & 34.2 & 59.3 & +73.2 \\
jewelry\_store & 71 & 4.1 & 1.5 & 4.2 & 37.9 & 102.4 & +170 \\
exhibition & 110 & 14.4 & 6.5 & 8.9 & 44.9 & 61.8 & +37.7 \\
\midrule
WEIGHTED AVG & 1,687 & 7.9 & 4.1 & 6.2 & 52.1 & 78.2 & +50.1 \\
\bottomrule
\end{tabular}%
}
\end{table}

\begin{figure*}[t]
\centering
\includegraphics[width=\textwidth]{figures/better}
\caption{\textit{CHURI} tracking robustness on MERL Shopping Dataset under varying challenges: (left) clean detections with precise bounding boxes and trajectory tracking, (center) difficult object shapes (crouching pose) successfully tracked via zone-BGS persistence despite shape deformation, (right) partial occlusions handled through sticky tracking with blue trajectory continuation across detection gaps.}
\label{fig:tracking_robustness}
\end{figure*}

Our recall metric measures track count accuracy rather than identity preservation. A person whose trajectory fragments into multiple separate tracks (due to occlusion or tracking gaps) contributes multiple tracks to the detected count. This can yield recall $>$100\% when fragmentation produces more detected tracks than ground truth people, as seen in Table~\ref{tab:wepdtof_breakdown} jewelry\_store scenario (102.4\% recall = 4.2 detected tracks / 4.1 ground truth people, where 0.1 extra tracks arise from reflective surface false positives).

