Nooptics (Smart Vision((???))
Alright so Canopticon is a thing now.
The basic idea is you point it at a folder of photos and it figures out how much sky or canopy is visible in each one.
It spits out annotated overlay images with an occlusion percentage.
Useful for field survey work where you’re logging a bunch of shots and need to know how open the sky is at each spot.
Got the ONNX inference pipeline running. Using onnxruntime on CPU so it stays actually portable and it works on Arch x86 and M1 Mac without doing anything dumb!
The model’s doing sky segmentation and we’re slapping an overlay on the output image with the occlusion percentage baked in.
Had to set up the whole uv project structure too since I’ve been wanting to use that instead of the usual venv song and dance.
It’s nice, uv sync just does the thing. Set the python version in .python-version and the lockfile handles the rest.
Shpeed & Shrimplicity:
The CLI is simple: uv run python canopticon.py photos outputs. Dump your images in photos/, it chews through them and writes annotated copies to outputs/. Does a fresh full-folder batch on Pi 4B in about 280 seconds for 46 images.
Roughly 4.6 seconds per image on CPU which ain’t gonna win any races but it’s fine for field work with < 5 users locally.
One thing that was a bit annoying: ONNX Runtime GPU acceleration for the Pi’s VideoCore VI basically doesn’t exist through the normal provider paths.
So CPU it is, just scale inputs down if you need more throughput. That’s a later problem or a different SBC.