博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我有个大胆的想法,用风格迁移玩《绝地》版的《堡垒之夜》
阅读量:6448 次
发布时间:2019-06-23

本文共 2047 字,大约阅读时间需要 6 分钟。

吃鸡的小伙伴们不会不知道,目前全球最火的两款吃鸡游戏要数《绝地求生》和《堡垒之夜》了。前者是写实画风,后者是卡通画风。有个《堡垒之夜》玩家爱上《绝地》的写实风格后,突发奇想要把这种风格应用到《堡垒之夜》中……

本文旨在了解如何将 CycleGAN 用于风格迁移并探索其在游戏图形模型中的应用。

我有个大胆的想法,用风格迁移玩《绝地》版的《堡垒之夜》

用神经网络尝试在《堡垒之夜》中重现《绝地求生》的画面风格。

如果你是一名游戏玩家,肯定听说过如今最火的两款「吃鸡」游戏:《堡垒之夜》(Fortnite)和《绝地求生》。这两个游戏很相似,都是 100 名玩家降落在一个小岛上,然后淘汰至最后一人「吃鸡」。作者之前比较喜欢《堡垒之夜》的游戏风格,但现在更喜欢《绝地求生》的写实画面。于是他不禁开始思考,是否有可能创建一个图形模式,让我们选择喜欢的画面风格而不必依赖于开发者给我们提供的画面选择?如果有个图形模式能够将《绝地求生》的画风渲染至《堡垒之夜》呢?于是作者决定用深度学习来探索这一模式,然后发现了一种叫 CycleGAN 的神经网络。该网络非常擅长图像风格迁移。在本文中,作者将介绍 CycleGAN 的工作原理,然后训练它们将《堡垒之夜》可视化地转为《绝地求生》。

我有个大胆的想法,用风格迁移玩《绝地》版的《堡垒之夜》

卡通风格的《堡垒之夜》(左)和写实风格的《绝地求生》(右)

CycleGAN 是什么?

CycleGAN 是一种用于跨域图像风格迁移的生成对抗网络,它能将图像从一个域迁移到另一个域,例如从《堡垒之夜》到《绝地求生》的迁移。任务是以无监督方式执行的,即两个域的图像没有一一映射的关系。

我有个大胆的想法,用风格迁移玩《绝地》版的《堡垒之夜》

Github 实现及其结果:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

该网络能够理解原始域图像中的对象,并对目标域图像中相同对象的外观做相应的变换。该网络的算法实现经训练后,可以将马转化为斑马,将苹果转化为橙子,将照片转化为漂亮的油画等等。

如何实现?

我们简单分析一下如何使用 CycleGAN 将《堡垒之夜》和《绝地求生》分别作为输入域和目标域进行风格迁移。

首先,我们通过截屏的方式分别获得两个游戏的大量图像作为数据集。

其次,我们训练一对 GAN,一个用来学习《堡垒之夜》的画风,另一个学习《绝地求生》的画风。这两个网络通过循环的方式同时训练,从而在两个游戏中学到相同对象之间的关系,以进行恰当的画风变换。

下图是 CycleGAN 的基本架构:

我有个大胆的想法,用风格迁移玩《绝地》版的《堡垒之夜》

从「Real Fortnite」到「Fake PUBG」,再到「Reconstructed Fortnite」的循环。

我们从《堡垒之夜》的原始图像开始整个训练过程。训练包括两个深度网络,一个是生成器,一个是鉴别器。鉴别器将随着时间推移而学习到区分「Real Fortnite」和「Fake Fortnite」。生成器将使用从训练数据集中随机取出的《绝地求生》截图进行训练,从而学习如何将原始域图像迁移到目标域图像。

为了确保这种迁移是有意义的,我们同时训练了另一组生成器和鉴别器(即生成器 P2F 和鉴别器 P),它们的作用是从伪域重建原始域的图像。另外,我们通过最小化训练过程中的循环损失(Cycle loss),使重建后的图像与原始图像相似。这个过程类似自动编码,只是我们不在中间步骤的潜在空间中寻找编码,而是在目标域中寻找整个图像。

我有个大胆的想法,用风格迁移玩《绝地》版的《堡垒之夜》

F2P 框架

这里使用的生成器网络(F2P)由三个主要的卷积模块组成:第一个模块在较低维度的潜在空间中找到《堡垒之夜》截屏的编码;然后,第二个模块将该编码转换成在相同潜在空间中表示《绝地求生》的编码;在第三个模块中,解码器根据转换的编码构建出输出图像,于是便得到了《绝地求生》版的《堡垒之夜》图像。

在训练过程中,由于 GPU 内存限制,所以只能处理大小为 256x256 的图像,这很影响最终结果。如果你有超过 8GB 的视频内存,可以尝试生成大小为 512x512 的图像。

结果

经过 12 小时的训练之后,CycleGAN 生成的图像看起来很有前景。该网络能够成功地将《堡垒之夜》中天空、树和草地的颜色转换成《绝地求生》中的画风。《堡垒之夜》中过度渲染的颜色被转换成了《绝地求生》中那种更真实的颜色。

我有个大胆的想法,用风格迁移玩《绝地》版的《堡垒之夜》

天空看起来没那么蓝了,卡通风格的草地和树看起来也更接近《绝地求生》了。它甚至学会了把底部的 health meter 替换成了《绝地求生》中的枪支和弹药指标了!amazing!两个域中无法联系起来的是玩家的外表,这也是为什么它周围的像素有点模糊。总体来看,网络在两个域中识别目标并转换它们的外观方面做得还不错。

如果想看更长的结果,请戳以下视频:

在游戏中应用图形模式

虽然结果看起来很好,但要真正实现《绝地求生》画面风格的《堡垒之夜》,还有很长的路要走。一旦我们能够用这些网络实时生成更高分辨率的图像,那将来为游戏构建图形模式引擎而不必依赖开发者不是没有可能的。

我们可以把自己喜欢的游戏画风应用到任何其它游戏上!

转载地址:http://volwo.baihongyu.com/

你可能感兴趣的文章
当javaScript从入门到提高前需要注意的细节:变量部分
查看>>
个性导航栏制作
查看>>
HTML标签(一)
查看>>
php写shell脚本
查看>>
nfs服务器在centos6.7 64Bit下的搭建
查看>>
实力为王 八年DBA经验谈
查看>>
Redis SDS
查看>>
date -d "-1 days "
查看>>
表关系配置
查看>>
AWK 工具介绍
查看>>
我的友情链接
查看>>
锐捷7716、7708抓流表(抓包)
查看>>
java 内部类详解
查看>>
websocket实战(2) 信息处理发送、接收和编码
查看>>
node.js开发环境搭配&请求响应实现原理
查看>>
linux文本处理命令
查看>>
iptables在企业网中的应用
查看>>
日志组件logback的介绍及配置使用方法
查看>>
关于一些由于apache配置不而导致的错误和其它
查看>>
js分解字符串
查看>>