Pre-semester progress on the pantry shelf-monitoring prototype: system design, site characterization, baseline training, and initial domain-adaptation experiments. Open decisions are listed at the end.
A fixed camera watches the pantry's dry-goods shelf wall. An NVIDIA Jetson Orin Nano runs a small detection model (YOLO11n, 2.6M parameters) that finds empty shelf regions, not products: an emptying shelf exposes visually distinctive bare board, which turns "how full is this shelf" into simple arithmetic per shelf region instead of a hard product-recognition problem. Occupancy per cubby feeds a debounced state ("low for N hours"), which feeds a morning digest for staff. All inference is on-device: frames are analyzed and immediately discarded, only stock numbers are ever stored. No microphone; no person detection.
flowchart LR A[camera frame] --> B[on-device gap detection\nJetson, ~10 ms class] B --> C[frame destroyed] B --> D[occupancy per cubby ROI] D --> E[persistence filter\nlow for N hours?] E --> F[morning digest to staff] style C stroke-dasharray: 5 5
From the pantry's own promotional video (250 frames analyzed, cross-checked against known-size references: brick coursing, can diameters, the SABA reach-in fridge), we reconstructed a dimensioned floor plan and elevation of the room. Findings with design consequences:
| Finding | Design consequence |
|---|---|
| Galley room ~8-9 x 18-20 ft; cubby openings ~22-24 x 13-14 in, 2 rows x 8-10 columns | Per-cubby ROI grid built; ~300 px per cubby at 1080p, ample resolution |
| Max camera standoff ~7-8 ft; a 78 degree 1080p camera covers ~11-13 ft of a 16-20 ft wall | Camera decision: corner mount, 4K, two cameras, or a 6-column prototype scope |
| Staff-only backstock cabinets below the display shelves | "Empty on camera" does not mean "out of stock" - alerts must be persistence-based restock prompts, not scarcity claims |
| Restocking is continuous through the week, mid-open-hours, with shoppers present | Occupancy dips are normal churn; the camera must tolerate people and hands (frames discarded regardless) |
| Stock is bulk-purchased from donated funds (per the coordinator on camera), not irregular donations | Core stock is more retail-like than the pantry literature assumes - good for model transfer; the irregular stream is the Thu/Fri food rescue |
| Visits grew 131 (2014-15) to 9,367 (2021-22) to 10,100 in Fall 2022 alone; ~$250k annual operating cost | Motivation numbers for the report, from the pantry's own material |
The full survey (floor plan, elevation, camera coverage geometry, annotated frames, and the trainable-feature analysis) is a separate reference: see links at the end.
Training data: six public empty-shelf datasets pooled into one 4,860-image set with a single class, gap (sources and licenses documented in the repo). SKU-110K (11,743 dense retail images) is staged as an optional pretraining comparison for the model-comparison task.
Baseline: YOLO11n fine-tuned from COCO weights, 40 epochs at 960 px on a free Colab T4: mAP50 0.898, mAP50-95 0.639, precision 0.87, recall 0.82 on the retail validation split. Inference is ~80 ms per frame on a laptop CPU alone, well within budget at the intended duty cycle of one frame every few seconds.
Novelty check (evidence-graded): a 2025 systematic review (301 papers screened) found zero camera-based shelf monitoring in pantries or food banks, and no occupancy-annotated pantry imagery exists publicly. Small pantry item-classification datasets do exist, so the defensible claim is scoped to shelf-occupancy deployment and occupancy-labeled data, with citations compiled in the project notes.
We ran the 0.90-mAP50 baseline on real pantry imagery it had never seen. Its single most confident detection anywhere (0.70) was wall decoration: the painted fruit cutouts above the shelves. It also fired on empty counter space and a shopper's dark hair, and missed genuinely bare shelves. The failure has one shape: the model learned "dark flat region = gap" without learning "must be inside a shelf." Notably, every false positive fell outside the per-cubby ROI grid, so per-cubby ROI cropping alone removes the observed false positives.
We hand-labeled 15 frames from the pantry video (7 gap boxes, 8 negatives including the decor wall and frames with people) and fine-tuned for 2 minutes on a laptop, backbone frozen. Same test, held-out images:
Interpretation: site-specific adaptation data, even at n=15, removed all observed false positives and recovered a missed gap class without regression. This is the quantitative case for on-site data collection (proposal task 3).
Limitations: all frames share one video's lighting conditions; confidence on newly detected gaps is modest; EXP-003 repeats this protocol with a larger set from the installed camera in Phase 2.
| Area | State |
|---|---|
| Lit review, 3 legs | Drafted with verified citations: campus food insecurity (prevalence + measurement caveats; the 39.5% figure traced to ACHA-NCHA 2024), Design Justice (with a concrete checklist the project must satisfy: MOU, co-design before hardware, no person detection, data owned by the pantry, exit plan), pantry operations + tech landscape (62% of pantries manage inventory by visual assessment; no incumbent does passive sensing) |
| IRB path | Cal Poly-specific research done: likely exempt category 2 for staff interviews, camera likely exempt or not human-subjects IF no raw frames are ever retained; determination inquiry email to hs-irb@calpoly.edu drafted and ready; CITI training and PI-of-record sit with the PI |
| Runtime safeguards | Designed in: out-of-distribution guard (abnormal frames produce "no reading", never a fabricated number), stale-state fallback on the digest, plausibility bounds |
| Privacy architecture | On-device inference, frames discarded immediately, no audio hardware, only shelf-level numbers stored; the room's own video and frames never leave the local machine |
Site survey (floor plan, elevation, camera geometry, annotated frames, trainable features):
Building 27 Pantry Survey
Code, configs, labels, and experiment scripts: github.com/Asomisetty27/pantry-vision (private; access on request)