If you use software from the ZoneMinder organization please consider sponsoring ZoneMinder. ZoneMinder has been free with a paid support option and paid bounties but, ZoneMinder Org needs help with bringing cash flow in. If you have the means, please consider sponsoring ZoneMinder, Thanks!
To clarify; I do not receive any of the funds, it goes strictly to the main developer of ZM. (I am a sponser as well!)
YOU MUST UPGRADE PIP before attempting to install anything in this repo!
This is a project aiming to update how ZoneMinder Object Detection works. A server and client are supplied to allow for easy integration with ZoneMinder or works of software based on ZM.
# System wide
sudo python3 -m pip install --upgrade pip
# User
python3 -m pip install --upgrade pip
- @pliablepixels for zmNinja, zmeventnotification, mlapi and PyZM.
- @connortechnology for their work on ZoneMinder
- ZoneMinder 1.37.5+ (EventStartCommand is REQUIRED)
- debian based distros can build a .deb package for the 1.37 dev branch
- Python 3.8+ (3.10+ recommended)
- Python packages required by the install script
psutil
requests
tqdm
distro
- OpenCV (Contrib) 4.2.0+ (4.8.0+ recommended) with Python3 bindings.
- OpenCV (
opencv-contrib-python-headless
) is installed by default into the programs venv dir, advanced users can instead uninstall it and link in their CUDA compiled OpenCV
- OpenCV (
- EventStartCommand/EventEndCommand is what runs the object detection script (Push method). Before, SHM was polled (Pull method) every <X> seconds to see if a new event had been triggered.
The client uses the new ZoneMinder EventStartCommand/EventEndCommand option. This means ZM kicks off the ML chain instead of the ML chain scanning SHM looking for an event, more efficient!
The client grabs images, sends the images to a ZoMi ML API server, filters detected responses, post processes images and sends notifications. All the heavy computation of ML models is done by the server.
- Client MUST be installed on same host as ZM server. Multi-server ZM installs (untested) will require a client install on each server.
libgeos-dev
: system package (used for the Shapely python module; Polygons)
The install script will install the client for you. It will also install the required python packages into its own venv. You can supply the script with options to configure the install. Below is a list of the options and their defaults.
--debug
: Enable debug logging