Smart Home Journal: June 29th 2020 - MotionEye is back in!

OK, I'm silly. Or at least I would wager it looks that way.

What changed? I switched over to a new computer and it only has non-NVidia integrated graphics. So, no CUDA. I may still write something of my own. Motion detection vs object is crap. But, for now I just wanted everything back up and running.

Basically, my previous server was a gaming PC. And for whatever reason, even when it was more or less idling it was pumping out heat like mad. Didn't matter whether it was Windows or Linux. Whether I was gaming or it was sitting in the background. And it is a reasonably powerful 8 core machine, so, when I wasn't actively using it, even with all of my services running the background is was averaging probably 5% CPU usage and 40% RAM usage. In short, it should have been running reasonably cool.

On top of all of that, I had wanted to add a NAS into the equation and this seemed like the best chance to kill 2 birds with one stone. Buy a lower power PC strong enough to handle both so I could turn off my heat generating beast when I didn't need it. 

I'm very happy BTW.

Even with the other PC in my office the temperature was much more stable and comfortable. I moved it out anyway to reduce the odds that I would tinker.

As for the build, it is a Ryzen 3200G micro-ATX box with 8GB of RAM and cobbled together a bunch of old drives, threw Open Media Vault on it, and then SSH'd into and threw all of my other stuff in Docker at the same time.

But, the lack of an NVidia GPU also meant I couldn't use my own app any more. It explicitly required CUDA and the libraries and models I was using would thrash the CPU. But, I can now build something more generic and CPU based I guess and it will use a smaller image too which will be nice. 

My beef with a lot of the solutions out there was that they were all either CPU bound object detection, or simple motion detection and weren't that refined.

I think motion detection itself requires a multi-pass approach. Basically, most motion detection relies on number of pixels changing, but there are simply so many reasons why any number of pixels might change by any particular amount. And this leads to too many false positives or too many false negatives. And trying to run object detection on every frame just leads to too much CPU usage. 

So, what I really want is a VERY quick motion detection layer, then a slightly more involved one as a second pass, and then lastly pass that off to a more expensive objection detection. Once motion AND object detection all detect something, we then can fallback to the simplest/quickest motion detection plus some fudge factor (like wait until X clear frames) to determine when to stop recording.

But, for the moment, MomentEye is the best of a bad lot.

Comments

Popular Posts