Mask RCNN 实战(二)--像黑镜一样屏蔽图片和视频中的人和物体

Mask RCNN:项目地址

《黑镜:圣诞特别篇》里,出现了“屏蔽”技术。不喜欢一个人,可以屏蔽他。这样,你们就再也看不见对方,也无法打电话、写信。甚至你看到电视机上的她和照片上的她,都只有一团模糊的影子。你的整个世界都会和她绝缘,直至她死掉。


1、项目简介:

你可以采用基于COCO训练集的预训练权重,不需要GPU,不仅可以自动识别图像中的人,还可以识别包括汽车,背包等80多种常见的类别,不同于黑镜中的黑科技但是又很接近。(PS:使用前需要下载maskrcnn预训练权重)

在终端输入命令:

wget https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5
将权重和model.py在同一目录下。

2、安装相应的库和环境


Python 3.4+

TensorFlow 1.3+

Keras 2.0.8+

Numpy, skimage, scipy, Pillow, cython, h5py

matplotlib, imageio

安装指令的话,直接在解压后的person-blocker-master文件中输入:

pip3 install -r requirements.txt

等待一会便可以自动安装,若安装出问题,可以尝试一下采用 sudo命令

3、用法

在项目文件终端输入:

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

这个命令如下有一些参数来控制模型的推断效果:


  • -i/--image:指定输入图像的路径与文件。

  • -m/—model:加载预训练 COCO 模型权重的路径,默认情况下为当前目录。如果没有指定路径,且当前目录下不存在权重文件,那么模型将自动下载预训练权重至当前目录。

  • -c/—color:指定掩码的颜色,它可以是引号内的 16 进制或 RGB 三元素元组的格式,默认为白色。

  • -o/--object:遮掩目标的可用列表或具体目标的 ID,我们可以在文件 classes.py 中看到所有可遮掩的目标,或直接使用-names flag,默认的遮掩目标为「person」。

  • -l/—labeled:通过检测的目标和对应的目标 ID 标注图像并保存。

  • -n/—names:打印目标的类别选项,并退出。


这一份脚本可输出两种图像,即静态的 png 图像和动态的 gif 图像。我们可选的遮掩目标有 80 种,如下 classes.py 文件中给出了所有的目标类别:

def get_class_names():
    return np.array(['BG', 'person', 'bicycle', 'car', 'motorcycle', 'airplane',
                     'bus', 'train', 'truck', 'boat', 'traffic light',
                     'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird',
                     'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear',
                     'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie',
                     'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball',
                     'kite', 'baseball bat', 'baseball glove', 'skateboard',
                     'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup',
                     'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
                     'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',
                     'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed',
                     'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote',
                     'keyboard', 'cell phone', 'microwave', 'oven', 'toaster',
                     'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors',
                     'teddy bear', 'hair drier', 'toothbrush'])

上面那条命令的效果:


例如:
1、python3 person_blocker.py -i images/img1.jpg

屏蔽图片中的人


2、python3 person_blocker.py -i images/img2.jpg -c '#c0392b' -o 'giraffe'

屏蔽图片中的长颈鹿:


遮掩特定的目标需要两个步骤:首先执行推断模型并获取所有的目标 ID,然后再根据 ID 选择性地遮掩这些目标。

python3 person_blocker.py -i images/img4.jpg -l

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

希望大家可以动手尝试一下!

猜你喜欢

转载自blog.csdn.net/ghw15221836342/article/details/80161196