Caution
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.
This repo is not associated with the ZoneMinder organization or any of its members.
- @pliablepixels for zmNinja, zmeventnotification, mlapi and PyZM.
- 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.