利用神经网络编辑图片的调研

作者介绍:郑宇,高级工程师, 曾在东方梦工厂担任软件工程师。目前就职于腾讯上海NEXT Studio,目前主要专注于强化学习和图像方面。

今年GDC大会上,Google演示了基于当下热门的神经网络技术GAN(生成式对抗网络)来做图片编辑的技术,用户可以在图片库中选择一张人脸的照片,对其进行局部的更改,神经网络会自动在更改区域以外的部分进行适配性修改。

比如,在额头中间部分涂黑,那么神经网络会自动在整个额头部分添加头发,再比如,在紧闭的嘴中间涂白,那么会自动变成露牙齿嘴张开的模样。理论上可以极大的提升美术编辑的速度,因为修改图片不再是在像素层面,而是根据用户的修改进行整体的调整,只需简单几笔就可以完成。

但是该技术还存在一些不成熟的地方,所以目前实际应用价值有限(参见本文后面的缺陷部分)。

效果展示1

左侧图为原始图片,中间图片为在嘴唇处涂白后的效果,右侧图片为在额头中间区域涂黑的效果。

效果展示2

左上图为原始图片,右上图为点击Col按钮选取涂抹的颜色(白色),下左图为涂白后去除胡须的效果。

原理

作者结合两种生成式神经网络模型,VAE和GAN,构建了一种新的网络IAN(Introspective Adversarial Network),基本原理是VAE训练模型比较稳定,但是会丢失低频信号,GAN模型训练中不稳定,但是细节保持较好,所以作者用GAN中的discriminator(辨别网络)来提取特征,然后输入VAE模型的Encoder部分,最后将编码(latent space)输入GAN模型中的generator(生成网络)。如下图所示。

安装和运行

sudo pip install https://github.com/Lasagne/Lasagne/archive/master.zip
sudo pip install path.py
sudo apt-get install python-tk python-pil python-scipy python-numpy 
git clone https://github.com/ajbrock/Neural-Photo-Editor

然后下载IAN_simple.npz( https://drive.google.com/open?id=0B3_iVBZsC4GGck5WWWc0R0dvT1U ),替换掉 Neural-Photo-Editor中的同名文件。

将 layers.py 中第15行代码从

import lasagne.layers

改为

from lasagne.layers import *

执行操作:

THEANO_FLAGS='floatX=float32' python NPE.py

常用操作:在打开的窗口,在左下角输入数字来选取原始的图片,点击infer按钮可以恢复到原始图片,点击col按钮选择涂抹的颜色,滑动最下方的slider,可以涂抹影响的范围。主要修改是在图片上完成,尽量不要在图片下方的latent space上修改,否则结果是无法预期的。

缺陷

  1. 没法对细节进行修改。使用上和传统的图片编辑不同,可能会有不适应的地方,比如要修掉图片上的一个噪点,那么涂白会影响到图片的其他部分,造成较大的修改。
  2. 修改存在路径或历史依赖。因为VAE的特点,比如在修改时如果不先把脸部模型变宽就直接在眼睛周围涂黑,实际上会生成头发,而不是画出墨镜。
  3. 目前处理的脸部照片还是分辨率较低的模型,比如google技术演示时使用的是64*64分辨率的照片,这是因为训练时使用的数据库中的照片分辨率就不高(提高分辨率会造成训练时间和难度增大)。
  4. 理论上用户可以对任意输入的图片进行修改,但是对于特定的照片,可能效果不明显,因为相对用户添加的个性化照片,之前的数据库太庞大了,不会针对用户输入的图片进行特定的优化处理。

参考

  1. Neural Photo Editing with Introspective Adversarial Networks
  2. http://ijdykeman.github.io/ml/2016/12/21/cvae.html

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

郑宇的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

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

【新智元导读】近期,Kaggle发布了新的数据分析及可视化工具——Kaggle Kerneler bot,用户只需上传数据集,便可用Python为用户自动获取相...

1033
来自专栏生信小驿站

Python数据处理从零开始----第四章(可视化)背景:Matplotlib

我们现在将深入研究Matplotlib包,以便在Python中进行可视化。 Matplotlib是一个基于NumPy阵列的多平台数据可视化库,旨在与更广泛的Sc...

631
来自专栏生信技能树

点点鼠标就能完成的NMR代谢组学实战

代谢组学几乎完全不涉及生物信息学最核心的序列比对,包括武汉中科院数物所波谱国重实验室等主流科研机构都是利用化学计量学和多元统计分析方法,对通过核磁共振(NMR)...

1043
来自专栏机器学习人工学weekly

机器学习人工学weekly-2018/6/3

1. Judea Pearl上次在NIPS有一张令人唏嘘的照片,不过现在他又回来了,发了新书也给了一个访谈,说深度学习就像是curve fitting(我觉得没...

824
来自专栏每日一篇技术文章

SceneKit - 让模型自适应真实环境光照的正确姿势

1.如何检测到真实环境中光照的亮度值 2.如何让游戏场景中的光照匹配这个真实光照

581
来自专栏玉树芝兰

如何用Python处理自然语言?(Spacy与Word Embedding)

本文教你用简单易学的工业级Python自然语言处理软件包Spacy,对自然语言文本做词性分析、命名实体识别、依赖关系刻画,以及词嵌入向量的计算和可视化。

771
来自专栏生信宝典

Graphpad,经典绘图工具初学初探

大多数科研文章都离不开图表,尤其是图,熟悉一些绘图软件,并将图在文章和PPT中展示出来,是科研训练的重要内容。漂亮的文章配图能给自己的工作加不少分,生信宝典推出...

671
来自专栏人工智能头条

6月Python热文Top10,精选自1000篇文章

943
来自专栏iOSDevLog

quickdraw_datasetQuick Draw!数据集

https://console.cloud.google.com/storage/browser/quickdraw_dataset

882
来自专栏玉树芝兰

如何用Python和深度神经网络寻找近似图片?

给你10万张图片,让你从中找出与某张图片最为近似的10张,你会怎么做?不要轻言放弃,也不用一张张浏览。使用Python,你也可以轻松搞定这个任务。

821

扫码关注云+社区