该内容已被发布者删除 该内容被自由微信恢复
文章于 2020年3月7日 被检测为删除。
查看原文
被用户删除
其他

开源神器:想秒变二次元?行,满足你!

GitHubDaily 2019-11-14

公众号关注 “GitHubDaily

设为 “星标”,每天带你逛 GitHub!


转自量子位,作者栗子

如何能让一个小姐姐属于你?

把她变成二次元的人类,就可以解锁一个老婆了。

韩国游戏公司 NCSOFT,曾经开源过一只技艺精湛的 AI。

只要任意输入小姐姐的自拍,就能得到她在二次元的样子了:

对比原图,感觉小姐姐还是那个小姐姐。

一个眼神,一个围笑,都是三次元时的样子没变。

当然,如果你有喜欢的二次元老婆,想看她穿越到现实会是什么样子,也没有问题。只要输入一张她的头像:

就生成了逼真的小姐姐。

这个算法叫 U-GAT-IT,名字也令人神往。重要的是,它是用无监督方法训练的,连成对的数据都不需要。

现在,团队已经把 TensorFlow 实现和 PyTorch 实现,都放上了 GitHub。两个项目曾一起登上了趋势榜,且 TF 项目一度冲到第一

在食用之前,不妨来看看究竟是怎样的 AI,能给你这般丰盛的福利:

这只 GAN 的注意力,与众不同

U-GAT-IT,是一个图到图翻译算法,由两只 GAN 组成的

一只 GAN,要把妹子的自拍,变成二次元小姐姐。这是从源领域到目标领域的翻译。

另一只 GAN,要把二次元小姐姐,再变回三次元自拍。这是从目标领域到源领域的翻译。

这样,就有两套生成器 & 判别器的组合。

生成器负责生成逼真的假图,欺骗判别器;而判别器负责识破假图。相生相长。

而为了生成更加逼真的图像,团队给这两只四个部件,加入了不同的注意力

具体的方法,受到了周博磊团队 2016 年 CAM 研究的启发。

CAM,是 类激活图的简称。它能找出对于判断一张图的真假,最重要的区域,然后 AI 就能把注意力集中在那里。

只不过在上采样部分,CAM 用的是全局平均池化。而 U-GAT-IT 为了更好的效果,结合了全局的平均池化和最大池化。

这里,用第一只 GAN,就是生成二次元小姐姐的 GAN 来举例。先看判别器:

它要判断一张图片,是不是和数据集里的二次元妹子属于一个类别。假如不是同类,那就判定是生成器的作品。

判别器有一个辅助分类器 (CAM) ,会找出对类别判断更重要的区域。

这也会引导生成器,把注意力集中在重要的区域。

再看生成器:

它的辅助分类器,会找出属于三次元妹子的重要区域。然后,把两个领域的重要区域作比对,注意力模块就知道,生成器的注意力该集中在哪了。

第二只 GAN,只是生成方向相反,道理也是一样的。

而要把两只 GAN 结合在一起,损失函数也是精心设计过的:

损失函数有四部分

一是对抗损失,不多解释,每只 GAN 都有。

二是循环损失,这是为了避免生成器和判别器找到某种平衡之后相互和解、停滞不前 (Mode Collapse) 。

要保证为目标领域生成的图像,还要能回到源领域被认可,就给生成器用了个循环一致性 (Cycle Consistency) 的约束。

三是身份损失,为了保证输入图像和输出图像的色彩分布类似,给生成器用了个身份一致性的约束。

具体说来,从目标领域挑一张图,如果给它做一个从源领域到目标领域的翻译,应该不发生任何变化才对。

四是 CAM 损失,给出一张图激活图,生成器和判别器会知道它们需要提升哪里。或者说,知道两个领域之间,当前最大的区别在哪里。

除此之外,U-GAT-IT 还有一个重要的贡献:

AdaLIN 可选归一化方法

通常来说,Instance Normalization (IN) 是比较常用的方法,把图像的特征统计直接归一化,就能消除风格变化 (Style Variation) 。

相比之下,批量归一化 (BN) 和层归一化 (LN**) 没有那么常用。

而给图片做归一化的时候,更多见的是自适应的 IN,简称 AdaIN

但在这里,团队提出了 AdaLIN,它可以在 IN 和 LN 之间动态选择。

有了它,AI 就能灵活控制形状与质地的变化多大了。

从前基于注意力的模型,没办法解决不同领域之间的几何变化;

但 U-GAT-IT,既可以做需要整体变化 (Holistic Changes) 的翻译,也可以做需要大幅形状变化 (Large Shape Changes. ) 的翻译。

最后再来讲一下数据集。

无监督,不成对

selfie2anime,有两个数据集。

一个是自拍数据集,一个是二次元数据集,都是只选了妹子。

各自是训练集里 3400 张,测试集里 100 张。没有配对。

其实也不止这些,还有马变斑马,猫变狗,照片变梵高画风等等,训练了各种功能。

来看看成果如何:

效果远胜前辈

U-GAT-IT (b) 和许多厉害的前辈比了一场,它们是:

CycleGAN (c) 、UNIT (d) 、MUNIT (e) 、DRIT (f) 。

 第四行,是照片变成肖像画作;第五行是变梵高画风

反向生成,比如二次元变三次元,斑马变马之类,也都可以:

(b) 列是本文主角,在穿越次元的任务上,表现明显优于各路前辈。在其他任务上,生成效果也总体超过前辈。

然后,再来看一下注意力模块 (CAM) 到底有没有作用。

右边两列,差别尽显。(e) 是有注意力,(f) 是没有注意力

最后,观察可以动态选择归一化方式的 AdaLIN,比起无法选择,效果如何。

(b) 是 AdaLIN,右边四列是陪跑的归一化方法 (以及各种归一化的结合) :

AdaLIN 的生成结果,更加完整,瑕疵比较少见。

如此一来,U-GAT-IT 从各个角度看,都成功了。

令人内心一阵狂喜,快来领取开源代码吧。

这是 TensorFlow 版本,曾经登上趋势榜第一:
https://github.com/taki0112/UGATIT

这是 PyTorch 版本:
https://github.com/znxlwm/UGATIT-pytorch

这是论文:
https://arxiv.org/abs/1907.10830

---
以上,便是今日分享,觉得不错,还请点个在看,谢谢。
推荐阅读:
开源神器!答应我,别再用 abc 做变量名了好么!
牛逼!有人在 GitHub 上把 Windows 95 做成了一款软件,可玩扫雷和纸牌!
GitHub 标星破万,超全 Chrome 插件汇总整理!
微软开源的这款可视化工具也太酷炫了吧!
「GitHub 交流群」已开放
想入群的可在公众号后台回复「入群」

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存