← All projects

EcoLens

Point your laptop camera at anything and see its lifecycle CO₂ cost, computed entirely on the Snapdragon X Elite NPU. Zero network calls.

Problem

Snapdragon: AI Unplugged Hackathon at UL (Qualcomm × Lero × University of Limerick, April 2026). Wanted to see how much of the pipeline you could run on the Snapdragon X Elite's NPU without any frames leaving the laptop.

Role

Four-person team: Raghib Haque, Tom Tully, Arnav Kothari, Liang Chen Yu. Built in a weekend.

How it works

Streamlit UI in app.py grabs webcam frames through a camera_capture.py singleton, since Streamlit's rerun loop tends to hold the camera open otherwise. vision_engine.py runs MobileNetV3-Large ONNX through the QNN Execution Provider on the NPU, with the usual 224x224 preprocess and ImageNet mean/std normalisation.

The top-5 labels feed lookup.py, which does exact-then-fuzzy substring match against an offline 40+ item carbon database (data/carbon_db.json, sourced from DEFRA 2023, EU JRC LCA, EPA Ireland 2023). llm_engine.py then runs TinyLlama-1.1B-Chat, also on the NPU, to turn the match into a three-sentence plain-English recommendation, with a hardcoded fallback table when the model doesn't answer.

verify_npu.py gates any CPU fallback so we never quietly downgrade. Session gets logged and is exportable as CSV or JSON through exporter.py.

Stack
Python 3.12 ONNX Runtime QNN Execution Provider MobileNetV3 TinyLlama OpenCV Streamlit Pillow On-Device AI Hackathon
Result

Working end-to-end. Average vision inference around 12ms per frame on the NPU. MIT licensed. Total model download ~750MB.