lab.service — projects
3 loaded
Personal projects across machine learning, security, and the web, reconstructing 3D scenes with Gaussian Splatting, running neural style transfer in the browser, and a shoulder-surfing-resistant graphical authentication system.
systemctl status garage.service
●
garage.service — Hot Wheels collection scanned as 3D Gaussian Splats
Loaded:loaded (/opt/garage/main; enabled)
Main PID:32886 (3d gaussian splatting + colmap + playcanvas + react + vite + cloudflare)
Type:ML
CGroup: /system.slice/garage.service
├─3D Gaussian Splatting
├─COLMAP
├─PlayCanvas
├─React
├─Vite
└─Cloudflare
>An interactive web showcase of die-cast cars reconstructed as 3D Gaussian Splats and rendered in-browser with the PlayCanvas engine (WebGL2), streaming compressed SOG bundles with neighbour preload.
>Built the full capture-to-asset pipeline: video frames → COLMAP pose estimation → monocular-depth background masking → MCMC-based 3DGS training via the open-source brush trainer.
>Custom renderer touches — auto-framed orbit camera from each splat's bounds, plus a mirrored-duplicate ground reflection with a depth-faded alpha shader override.
systemctl status neoauth.service
●
neoauth.service — Web-based graphical authentication system
Loaded:loaded (/opt/neoauth/main; enabled)
Main PID:41186 (react.js + fastapi)
Type:SECURITY
CGroup: /system.slice/neoauth.service
├─React.js
└─FastAPI
>A novel graphical authentication system resistant to shoulder surfing attacks.
>Built on React.js with FastAPI as the backend.
systemctl status picasso.service
●
picasso.service — Neural style transfer that runs in the browser
Loaded:loaded (/opt/picasso/main; enabled)
Main PID:20604 (tensorflow.js + react + vite + fastapi + docker + terraform)
Type:ML
CGroup: /system.slice/picasso.service
├─TensorFlow.js
├─React
├─Vite
├─FastAPI
├─Docker
└─Terraform
>A web demo of Google Magenta's arbitrary image stylization network (Ghiasi et al., 2017) — a feedforward style-transfer net converted to a TF.js GraphModel and run client-side on WebGL.
>Moved inference out of Python entirely: the FastAPI backend is now a ~80 MB static file server with no TensorFlow, while the float16-quantized model (~30 MB) ships from /model/ and runs in the user's browser.
>Honest about its limits — a 2017 architecture that transfers texture, palette and brushwork but not semantics. Inputs resize to 512 px on the long edge (Vite-baked at build time) to keep mobile WebGL inside its memory budget.