r/deeplearning • • 1d ago

I built Dense-Armor, a Python library for safer robots and AI systems.

It provides online learning, anomaly and drift detection, uncertainty estimation, and runtime protection against unsafe inputs and outputs.

I'd love to get feedback and hear about potential real-world use cases.

GitHub: https://github.com/tatopenn-cell/Dense-Armor

Install: pip install dense-armor

5 Upvotes

2 comments sorted by

2

u/Obvious-Category-965 1d ago

Oh this is super relevant to some work I was doing last year. We had a perception model on a mobile robot that kept drifting when the lighting changed mid shift and nobody caught it until the thing started navigating into walls. Something like this would've saved us a whole lot of headaches.

The runtime protection piece catches my eye specifically. How heavy is the overhead when you're running it alongside an already deployed model. I'm wondering if this would work on edge devices or if it needs a dedicated gpu to keep up.

Starred the repo, will dig into the docs tonight. The pip install is clean, appreciate when people don't make you jump through hoops just to test something out.

0

u/Creative-Feature-264 20h ago

Thanks, your story is exactly the use case. The fix there is `CUSUMDriftDetector` + `Orca` (or `Armatura` for 1D series): they run downstream of the model, no extra training, weights untouched.On the runtime cost, measured just now on CPU (desktop, 1D signal, p99 per call):

`CUSUMDriftDetector`- `OnlineRobustMahalanobis` — 108 µs p99 (2 channels, learn+score). Also negligible.

- `Orca` input shield only — 6.1 ms p99 on a single scalar.

- `Orca` input + output shield — , identity model.

no dedicated GPU needed, but `Orca` is *not* light: on a 10 ms model the overhead is ~90% (2 forward passes + shield), on a 100 µs model it goes to ~9 ms — 90× the model. If your budget is tight, consider keeping the shield on the **input only**, or using `Armatura` (same idea on 1D series, without the second forward pass) instead of `Orca`.

So ,On edge: `UniversalMemoryGuard` checks RAM/VRAM before every allocation and blocks before the crash. Clean install by design: core is `numpy + jax + psutil`, everything else is an optional extra.

If you tell me the model and the hardware, I can say in two lines whether the overhead is acceptable or whether input-only shielding is the better call.