A script to automatically "block" people in images (like the Black Mirror episode White Christmas) using Mask R-CNN pretrained on the MS COCO dataset. No GPU required!
But you can block more than just people: up to 80 different types of objects can be blocked, including giraffes and busses!
This project relies on a handful of dependencies, use the following command to install your dependencies:
pip3 install -r requirements.txt
Note: Depending on your environment, you may need to use sudo
. You may also want to use virtualenv.
Person Blocker is used from the command line:
python3 person_blocker.py -i images/img3.jpg -c '(128, 128, 128)' -o 'bus' 'truck'
-i/--image
: specifies the image file.-m/--model
: path to the pretrained COCO model weights (default: current directory): if not specified, it will download them automatically to the current directory if not already present (note: the weights are 258 MB!)-c/--color
: color of the mask, in either quote-wrapped hexidecimal or 3-element RGB tuple format. (default: white)-o/--object
: list of types of objects to block (or object IDs of specific objects). You can see the allowable choices of objects to block inclasses.py
or by using the-names
flag. (default: person)-l/--labeled
: saves a labeled image annotated with detected objects and their object ID.-n/--names
: prints the class options for objects, then exits.
The script outputs two images: a static (pun intended) image person_blocked.png
and an animated image person_blocked.gif
like the one at the beginning of this README.
python3 person_blocker.py -i images/kite.jpg
python3 person_blocker.py -i images/giraffe.jpg -c '#c0392b' -o 'zebra'
python3 person_blocker.py -i images/img3.jpg -c '(128, 128, 128)' -o 'bus' 'truck'
Blocking specific object(s) requires 2 steps: running in inference mode to get the object IDs for each object, and then blocking those object IDs.
python3 person_blocker.py -i images/img4.jpg -l
python3 person_blocker.py -i images/img4.jpg -o 1
The same requirements as Mask R-CNN:
- Python 3.4+
- TensorFlow 1.3+
- Keras 2.1.6
- Numpy, skimage, scipy, Pillow, cython, h5py
plus matplotlib and imageio
The credit for this code goes to @minimaxir. I've merely reproduced the results.