资源 | Mask R-CNN神应用:像英剧《黑镜》一样屏蔽人像

选自GitHub

机器之心编译

参与:思源、黄小天

黑镜特别篇《白色圣诞节》中有种名为「屏蔽」的黑科技,每个人安装上智能眼,可以凭意愿屏蔽动态视界中的任何人(及其相关的任何影像和声音),变成一团移动的白色马赛克。被屏蔽者无法解除这种屏蔽,除非死亡。相比之下,朋友圈的屏蔽是不是弱爆了?本文作者给出了一种自动「屏蔽」人像的脚本(不同于黑镜中的视频屏蔽),底层实现是在 MS COCO 数据集上预训练的 Mask R-CNN,但它不需要 GPU!此外,它不仅可屏蔽人像,还可以屏蔽包括长颈鹿和汽车在内的多达 80 种不同类型的物体,向黑镜中的黑科技迈出了第一步。

黑镜之《白色圣诞节》中的黑科技:屏蔽。

用法

Person Blocker 可使用以下命令行调用并输出结果:

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

  • -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'])

使用案例

python3 person_blocker.py -i images/img1.jpg

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

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

最后,如果读者想使用或测试该脚本,那么它需要的依赖库与 Mask R-CNN 基本相同:

  • Python 3.4+
  • TensorFlow 1.3+
  • Keras 2.0.8+
  • Numpy, skimage, scipy, Pillow, cython, h5py
  • matplotlib, imageio

本文为机器之心编译,转载请联系本公众号获得授权。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-03-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏目标检测和深度学习

Kaggle放大招:简单几步实现海量数据分析及可视化

Kaggle Kerneler bot是一个自动生成的kernel,其中包含了演示如何读取数据以及分析工作的starter代码。用户可以进入任意一个已经发布的项...

610
来自专栏WOLFRAM

Mathematica 11.1.1 中文版已发布

1413
来自专栏小詹同学

人脸识别(二)——训练分类器

这是关于人脸的第②篇原创!(源码在第三篇) 上一篇简单整理了下人脸识别的相关基础知识,这一篇将着重介绍利用pencv(2.4.9)已有的模型进行分类器训练。 ...

5399
来自专栏程序员宝库

使用机器学习预测天气(第一部分)

本章是使用机器学习预测天气系列教程的第一部分,使用Python和机器学习来构建模型,根据从Weather Underground收集的数据来预测天气温度。

4435
来自专栏企鹅号快讯

你的深度学习应用可能存在安全风险

360安全实验室(肖奇学 、Deyue Zhang)、佐治亚大学(李康)和弗吉尼亚大学(Weilin Xu)的研究者,他们在论文《Security Risks ...

2255
来自专栏郭耀华‘s Blog

2018年奇虎360春招笔试题--玫瑰花

这道题,第一感觉想用排列组合做,但是想了好久,没想到解决办法(刚刚考试的时候没有答出来)。后来想了一下应该使用动态规划来做。 我们首先分析一下情况: 1.当K>...

2976
来自专栏石瞳禅的互联网实验室

【TensorFlow实战——笔记】第1章:TensorFlow基础

TensorFlow是Google公司开源的分布式机器学习框架。它的前身是DistBelief,在Google大规模内部使用。TensorFlow最早由Goog...

1181
来自专栏SDNLAB

SDN应用路由算法实现工具之Networkx

SDN(Software Defined Networking)是一种新型的网络架构,通过集中式的控制平面管理数据层面的转发等操作。网络的连通性是最基础的需求,...

3259
来自专栏安全领域

在物联网中应用机器学习:使用 Android Things 与 TensorFlow

在本教程中,我们将探索如何使用 Android Things 和 TensorFlow 将机器学习应用到物联网中。

87116
来自专栏生信宝典

2018 升级版Jaspar数据库

R包ggseqlogo 绘制seq logo图和Seq logo 在线绘制工具—Weblogo介绍了如何用R脚本和在线工具绘制seq logo图,用于展现转录因...

3402

扫码关注云+社区