A Raspberry Pi
powered, distributed (edge) computing camera setups that runs a Tensorflow
object detection model to determine whether a person is on the camera. The Raspberry Pi
is used for video streaming and triggering actions (such as playing audio, turning on lights, or triggering an Arduino), whereas a server or laptop runs the object detection. With a suitable TFLite
installation, this can happen locally on the Raspberry
as well.
Based on the detection criteria, a plugin model allows to trigger downstream actions.
Based on my blog.
Side note: The setup shown here only fits the use-case of edge
to a degree, as we run local detection on a separate machine; technically, the Raspberry Pi is capable of running Tensorflow on board, e.g. through TFLite
or esp32cam
.
You can change this behavior by relying on a local tensorflor
instance and having the ZMQ
communication run over localhost
.
This project requires:
- A Raspberry Pi + the camera module v2 (the
client
) - Any Linux machine on the same network (the
server
)
A helper script is available:
Use a virtual environment
python3 -m venv env
source env/bin/activate
bash ./sbin/install_tf_vidgear.sh [server/client]
Please see INSTALL.md for details.
Edit the conf/config.ini
with the settings for your Raspberry and server.
For playing audio, please adjust conf/plugins.d/audio.ini
.
[Audio]
Path=../audio_files
For an appropriate path.
If you want to change the model
, please check the Model Zoo. The blog article used the outdated ssd_mobilenet_v1_coco_2017_11_17
.
[Tensorflow]
ModelUrl=ssd_mobilenet_v3_large_coco_2019_08_14
python3 $PROJECT_LOCATION/client/sender.py --input 0 # for picam
python3 $PROJECT_LOCATION/client/sender.py --input '/path/to/video' # for local video
python3 $PROJECT_LOCATION/server/receiver.py
A plugin model allows to trigger downstream actions. These actions are triggered based on the configuration.
Plugins can be enabled by setting the following in config.ini
:
[Plugins]
Enabled=audio
Disabled=
Currently, the following plugins are avaibale:
Plugin | Description | Requirements | Configuration | Base |
---|---|---|---|---|
audio | Plays audio files once a person is detected | Either playsound , pygame , or omxplayer |
conf/plugins.d/audio.ini |
ZMQ |
This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.