基于 matterport/Mask_RCNN 的一个自动屏蔽图片中人物的项目.
该项目类似于英剧《黑镜 Black Mirror》 中《白色圣诞节 White Christmas》中出现的场景:
项目特点:
- 不需要 GPU
- 由于是在 COCO 数据集上预训练的模型,因此还可以选择屏蔽处理人物之外的 80 类物体,比如长颈鹿和帆船.
<h2>1.设置</h2>
依赖项与 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
<h2>2. 使用方法</h2>
人物屏蔽:
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 来选择,或者使用-names
flag
.(默认为 person)-l/--labeled
- 保存屏蔽处理后的图片.-n/--names
- 打印物体的类别名,并退出.
运行脚本后,会输出两张图片:静态图片 person_blocked.png
和动态图片 person_blocked.gif
.
<h2>3. 示例</h2>
屏蔽人物:
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