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

作者介绍:郑宇,高级工程师, 曾在东方梦工厂担任软件工程师。目前就职于腾讯上海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 条评论
登录 后参与评论

相关文章

来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2810
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

3238
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2886
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4355
来自专栏一个会写诗的程序员的博客

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

2712
来自专栏落花落雨不落叶

canvas画简单电路图

80411
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2767
来自专栏杨龙飞前端

scrollto 到指定位置

2864
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2987
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2955

扫码关注云+社区