This is worth mentioning but a GPU or TPU is not required if you have a small number of cameras and set up your detection zones right. I use a low resolution/framerate MJPEG substream for detection to reduce the amount of decoder effort and use h264 only for recording and viewing. Openvino is the recommended choice for CPU recognition and it's much faster than the default Tensorflow detector.
It only uses around 20% CPU on a 6 core VM (running on a Ivy Bridge Xeon) with two cameras.
It only uses around 20% CPU on a 6 core VM (running on a Ivy Bridge Xeon) with two cameras.