基于 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

Last modification:October 9th, 2018 at 09:31 am