利用神经网络编辑图片的调研
郑宇,腾讯高级工程师, 曾在东方梦工厂担任软件工程师。目前就职于腾讯上海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上修改,否则结果是无法预期的。
缺陷
-
没法对细节进行修改。使用上和传统的图片编辑不同,可能会有不适应的地方,比如要修掉图片上的一个噪点,那么涂白会影响到图片的其他部分,造成较大的修改。
-
修改存在路径或历史依赖。因为VAE的特点,比如在修改时如果不先把脸部模型变宽就直接在眼睛周围涂黑,实际上会生成头发,而不是画出墨镜。
-
目前处理的脸部照片还是分辨率较低的模型,比如google技术演示时使用的是64*64分辨率的照片,这是因为训练时使用的数据库中的照片分辨率就不高(提高分辨率会造成训练时间和难度增大)。
-
理论上用户可以对任意输入的图片进行修改,但是对于特定的照片,可能效果不明显,因为相对用户添加的个性化照片,之前的数据库太庞大了,不会针对用户输入的图片进行特定的优化处理。
参考
-
Neural Photo Editing with Introspective Adversarial Networks
相关推荐
此文已由作者授权腾讯云技术社区发布,转载请注明文章出处,获取更多云计算技术干货,可请前往腾讯云技术社区
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义