基于 matterport/Mask_RCNN 的一个自动屏蔽图片中人物的项目.
该项目类似于英剧《黑镜 Black Mirror》 中《白色圣诞节 White Christmas》中出现的场景:

项目特点:
- 不需要 GPU
- 由于是在 COCO 数据集上预训练的模型,因此还可以选择屏蔽处理人物之外的 80 类物体,比如长颈鹿和帆船.

1.设置
依赖项与 Mask R-CNN 相同:
- Python 3.4+
- TensorFlow 1.3+
- Keras 2.0.8+
- Numpy, skimage, scipy, Pillow, cython, h5py
- matplotlib, imageio
安装依赖库:
sudo pip3 install -r requirements.txt
2. 使用方法
人物屏蔽:
python3 person_blocker.py -i images/img3.jpg -c '(128, 128, 128)' -o 'bus' 'truck'
其中,
-i/--image- 指定图片文件-m/--model- 预训练的 COCO 模型权重文件所在路径(默认为当前路径). 如果未设置该参数,则自动下载模型权重文件到当前路径(文件大小大概为 258MB).-c/--color- mask 的颜色,quote-wrapped hexidecimal 或者 3-element RGB 元组格式.(默认为 white).-o/--object- 待屏蔽的物体类型列表(或物体的 IDs). 可以根据 classes.py 来选择,或者使用-namesflag.(默认为 person)-l/--labeled- 保存屏蔽处理后的图片.-n/--names- 打印物体的类别名,并退出.
运行脚本后,会输出两张图片:静态图片 person_blocked.png 和动态图片 person_blocked.gif.
3. 示例
屏蔽人物:
python3 person_blocker.py -i images/img1.jpg

屏蔽长颈鹿giraffe:
python3 person_blocker.py -i images/img2.jpg -c '#c0392b' -o 'giraffe'

屏蔽 bus 和 truck:
python3 person_blocker.py -i images/img3.jpg -c '(128, 128, 128)' -o 'bus' 'truck'

特定物体的屏蔽包括 2 步处理:
- 首先,运行推断模式,以获取每个物体的类别 IDs;
- 然后,屏蔽指定的类别 IDs 的物体.
实例分割:
python3 person_blocker.py -i images/img4.jpg -l

人物屏蔽:
python3 person_blocker.py -i images/img4.jpg -o 0

python3 person_blocker.py -i images/img4.jpg -o 1

python3 person_blocker.py -i images/img4.jpg -o 2 3

python3 person_blocker.py -i images/img4.jpg -o 4 5 8
