查无此人?!AI也能创作人像了

听说 AI 平台上线公有云环境了,不仅能在家里访问,还有全新的交互体验,更重要的是还带来了更多的 GPU 卡,真是诚意满满呀!

听说 Nvidia 官方开源了 Stylegan2,这个网络结构的神奇之处在于,能够学习已经有的一些人或者物体,充分发挥自己的想像,“创作”出新的类似人或物呢!那还等什么,赶紧一睹为快吧,体验下用建行人的 AI 平台跑起来是什么效果吧!

在使用平台之前,我们要先了解一下 stylegan2 依赖的环境,访问https://github.com/NVlabs/stylegan2,往下翻到 Requirements 部分,我们看到以下描述:

上面大致是说,只能在 Tensorflow1.14+上跑,Tensorflow 2.x 就别想了。然后如果要复现论文,显存必须 16G 起步。TF1.14 就是说,RTX 30XX 的卡就别想了,因为他们只能使用 Cuda 11,而 Cuda 11 不支持 TF1.14;而 16G 显存的门槛,又把一大堆入门级显卡挡在了大门外,基本就只剩下可爱(guì)的 Tesla V100 了。

解决办法远在天边,近在眼前,它就在“天权人工智能平台”这里。登陆平台,点击左下角“个人开发环境设置”,选择带 GPU 卡的环境,点击下一步:

接下来的页面,选择 Tensorflow 1.14 的镜像,然后保存:

静静等待一会,环境就创建好了。

接下来创建一个实验。点击新建实验中的“空白 notebook”,输入实验名称“stylegan”:

然后就可以进入到下面的界面了:

先看看 GPU 卡情况:

然后我们把 stylegan 代码拉下来:

唉?好像有点问题,历经千辛万苦(此处省略 2000 字),我们拿到了 stylegan2 的代码,然后如此操作一番:

然后就有了 stylegan2 的代码了:

我们按照 github 上提供的方法测试一下这个环境:

非常好!看来基本环境没有问题。

接下来需要传模型,我们在 github 上找到了官方提供的预训练镜像,传送门在此https://nvlabs-fi-cdn.nvidia.com/stylegan2/networks/,打开是这个样子:

我们看到官方一共提供了 5 类预训练镜像:car、cat、church、ffhq 和 horse。其中 ffhq 是用来生成人像的模型,而其他的名字,小伙伴们都能顾名思义猜到啦!使用 wget 命令就可以把模型拉来了:

能连互联网,简直是美滋滋呀!

有了模型,赶快来试一试模型的效果怎么样吧~参考 github 上的说明,执行以下命令:

提示没有 numpy,原来是用错了命令,python 是 python2,而我们需要运行的命令是 python3。修改以后再试试,结果报了好长一串错误,我截取了其中一部分:

核心报错信息是“C++ versions less than C++11 are not supported.”,碰到问题当然不能束手无策,赶紧问问“度娘”,结果就找到解决思路了,在帖子https://blog.csdn.net/qq1483661204/article/details/105442426中告诉我们解决方法:

运行stylegan-v2报错:error: #error "C++ versions less than C++11 are not supported.解决方法:打开   dnnlib/tflib/custom_ops.py的 修改第64行:将 cmd = 'nvcc ' + opts.strip()改为:cmd = 'nvcc --std=c++11 -DNDEBUG ' + opts.strip()

复制代码

如此这般操作一下:

修改好要记得 Ctrl+S 保存,然后再执行一下原来的命令,就可以成功执行了!以下节选了一些日志:

生成的图片在 results 文件夹中:

我们把这些图片集中展示一下,执行以下代码:

from PIL import Imageresult = Image.new("RGB", (512*5, 300*5))for i in range(25) :    #因为跑生成的时候输入参数seed是6600-6625,所以生成的文件名也是如此编号    seq = i + 6600     #路径需要自行调整    img = Image.open("results/00008-generate-images/seed{}.png".format(seq))    #汽车模型生成的汽车有黑边,为了展示好看就把黑边裁剪了    img = img.crop(box=(0,100,512,400))    #把每张图片贴到汇总图上    result.paste(img, box=(i//5*512, i%5*300))result.save('car.jpg')

复制代码

最后就可以得到聚合后的各种“神奇”的车了,也可以在平台上直接查看:

大部分车咋一看似乎很正常,不过我们仔细看也会发现有些车还是有问题:

我们如法炮制来试验一下其他的预训练模型效果如何。

以下是教堂的效果:

教堂的效果图总体还不错,不过部分图片的边缘有一些诡异的物件,此外有的教堂图片还“脑补”出了水印,这与训练集有很大关系。

再分别执行

from PIL import Imageresult = Image.new("RGB", (512*5, 512*5))for i in range(25) :    seq = i + 6600     #路径需要自行调整    img = Image.open("results/00009-generate-images/seed{}.png".format(seq))    img = img.resize((512,512))    result.paste(img, box=(i//5*512, i%5*512))result.save('ffhq.jpg')

复制代码

就可以得到人像的生成效果:

需要注意哦,他们真的真的是计算机“脑补”出来的图像,这些人都不存在的!

如果要“欣赏”更多的“脑补图”,我们也给大家分享几个好玩的网站,传送门在此,有兴趣的同学们可以自己试试:

https://thispersondoesnotexist.com/

https://thiscatdoesnotexist.com/

https://thishorsedoesnotexist.com/

还有一个有趣的网站可以考考大家的“眼力”,分辨一下哪些图片是真实的,哪些图片是计算机“虚构”的,传送门在此:https://www.whichfaceisreal.com/

下面是来自上述网站的一个无奖竞猜,请问哪张照片是真实的,哪张照片是虚构的呢?

再偷偷分享一个小技巧:如果人左右不对称(比如耳饰),或者人某些部位有些许非正常扭曲,或者背景、装饰很不和谐,极有可能就是 AI“脑补”的产物了!

好了,说了这么多,大家有没有心动了呢?赶紧登陆 AI 平台,自己动手体验一下有趣的 AI 模型吧!

传送门https://ai.tech.ccb.com/,互联网就可以访问哦~

本文转载自:金科优源汇(ID:jkyyh2020)

原文链接:查无此人?!AI也能创作人像了

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/82ICwefjO3m5XNG7Ng2A
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券