Project Overview
Objective
Built a 100% client-side EV connector segmentation app with a Web Worker inference pipeline, model switching, and detection/tracking workspaces, verified for numerical parity against the Python reference implementation.
Stack
Delivery highlights
- Built a fully client-side instance-segmentation web app for five EV connector classes. Images, video files, and live camera frames stay in the visitor's browser because inference runs through onnxruntime-web without an inference server.
- Moved image preprocessing, ONNX execution, output decoding, and optional tracking into a dedicated Web Worker so model work does not block the main interface. WebGPU is used when available, with WASM as the compatibility fallback.
- Implemented camera, still-image, and video input modes with canvas overlays for masks, boxes, class labels, confidence scores, stable tracking IDs, and inference timing. A model picker exposes four YOLO segmentation exports, including an end-to-end NMS-free variant.
- Added progressive model downloads and browser Cache Storage so large model files are fetched once and can be reused. Separate Detection and Detection + Tracking workspaces use a BoT-SORT-style tracker with Kalman filtering to preserve object identity across frames.
- Maintained a Vite development and verification app alongside the deployed Next.js interface, with a hash check keeping shared decode and tracker logic synchronized. Custom verification scripts compare JavaScript outputs with the Ultralytics Python reference, and CI requires those numerical checks before publishing the container image.