翻车现场:我用pytorch和GAN做了一个天生神奇宝贝的失落败模型

先看当作果,这几个你们都认识吗,它们分别是:蒜头蛤蟆、喷火蜥蜴、呲水王八和黄皮耗子。
不得不说,现在的AI技能真的太强大了

VQGAN+CLIP(Vector Quantised General Adversarial Network + Contrastive Language - Image Pre-training)是最近新兴的“数据艺术”的最新研究之一,现在已被用于创作一些令人惊叹的艺术作品。
它吸收文本输入并返回根据文本描述天生的图像
本篇文章我将看看它是否可以从 Pokédex 的图鉴描述中绘制 Pokémon。

数据来源

https://pokemondb.net/pokedex/,是一个非常完善的神奇宝贝数据库,在里面可以找到险些所有的神奇宝贝图鉴(描述),我们利用这些描述天生妙蛙种子、杰尼龟、小火龙和皮卡丘

运用VQGANCLIP从图鉴文本描述中生成神奇瑰宝

它是如何事情的,我们怎么开始?

我在 Github 上找到了 justinjohn0306 的一个jupyter notebook,我们可以利用它直接从文本天生图像。
地址在文章末了供应。

我不才面天生的图片中已经添加了Pokédex 条款以及随机种子的编号(利用我的设置可以复现结果)。
在获取了 Pokédex 图鉴后,须要用符号将它们分开并将它们添加到notebook中,例如“条款1 |条款 2 |条款 3”,并确保它们保持相同的顺序。
但是须要把稳得是:模型也是确实会更新,利用跟我一样的随机种子并不总是能够返回相同的图像,由于它们每次都会重新创建。

在这个模型中VQGAN 部分基于预演习的语料库天生图像,而 CLIP 部分将图像与标题进行关联,并利用供应的笔墨辅导天生过程。
演习的过程会利用不同的图像集演习不同的模型。
在推理时,通过为其供应大量标题,该模型会将图像稠浊在一起,这样天生的图像看起来就像我们供应的三个标题了。

对付这个实验,我利用了条记本上可用的“imagenet_16384”预演习模型。
对付 GPU,我们可以利用免费的 Colab。

须要把稳的是,Pokédex 描述来自神奇宝贝不同的作品(现在已经到第8代剑/盾了),所以为了探求最得当的描述和种子须要一些试验试错。
在这里我只利用了图鉴描述,没有利用其他短语或赞助工具。
在本篇文章中我决定在描述中留下神奇宝贝的名字。

妙蛙种子(Bulbasaur)

图鉴描述,这里我就不翻译了,前面是作品的名称,后面是英文描述

如果你对神奇宝贝不太熟习,这里我再给出一个官方的图鉴,作为比拟:

红/蓝(第一代): “A strange seed was planted on its back at birth. The plant sprouts and grows with this POKéMON”

黄(皮卡丘版): “It can go for days without eating a single morsel. In the bulb on its back, it stores energy.”

红宝石/蓝宝石/绿宝石(第三代): “BULBASAUR can be seen napping in bright sunlight. There is a seed on its back. By soaking up the sun’s rays, the seed grows progressively larger.”

Bulbasaur — Seed 1

最初它看起来像是得到了一种背上有植物的动物的一样平常觉得。
已经有点蒜头的意思了吧。

Bulbasaur — Seed 2

它开始网络一个小生物的想法,在这种情形下,背上有一些叶子,后面还有个像石头还是水仙(大蒜)萌芽的东西。

Bulbasaur — Seed 13

看起来像一个蓝色生物,背上还有类似阳光,由于在黄(皮卡丘版)的描述中提到了能量(太阳光芒可是妙蛙花的技能啊)。

总的来说,人工智能的表现比我第一次考试测验时的预期要好。

小火龙(Charmander)

红/蓝: “Obviously prefers hot places. When it rains, steam is said to spout from the tip of its tail.

黄: “The flame at the tip of its tail makes a sound as it burns. You can only hear it in quiet places. ”

红宝石/蓝宝石: “The flame that burns at the tip of its tail is an indication of its emotions. The flame wavers when CHARMANDER is happy, and blazes when it is enraged.

剑/盾: “It has a preference for hot things. When it rains, steam is said to spout from the tip of its tail.”

Charmander — seed 4

它立时就能很好地理解它在绘制什么。
这张照片突出显示了 Charmander 是蜥蜴而不是其他爬行动物的样子。

Charmander — seed 7

虽然它不是 Charmander,但它有尾巴、形状和从尾巴出来的烟雾,背景是蓝色的火焰。
有点恐龙的意思了。

Charmander — seed 8

显然有一个带有发光尾巴的火龙的形象。
然而,但是这个不是更像彩虹小马么。

杰尼龟(Squirtle)

红宝石/蓝宝石: “SQUIRTLE’s shell is not merely used for protection. The shell’s rounded shape and the grooves on its surface help minimize resistance in water, enabling this POKéMON to swim at high speeds.

红/蓝: “After birth, its back swells and hardens into a shell. Powerfully sprays foam from its mouth.

黄: “Shoots water at prey while in the water. Withdraws into its shell when in danger.

火红(第三代): “When it retracts its long neck into its shell, it squirts out water with vigorous force.

Squirtle — Seed 7

它已经弄清楚Squirtle是一只乌龟。
并成功地考试测验使泡泡和水枪。

Squirtle — Seed 8

在这张图片中可以更清楚地看到一只海龟和海浪还有泡泡。

Squirtle — Seed 11

在这里,我们在海滩上有一只小乌龟。
但是上面是什么?没太看懂。

皮卡丘(Pikachu)

末了便是我们的皮神

蓝宝石: “This POKéMON has electricity-storing pouches on its cheeks. These appear to become electrically charged during the night while PIKACHU sleeps. It occasionally discharges electricity when it is dozy after waking up.”

魂银: “It raises its tail to check its surroundings. The tail is sometimes struck by lightning in this pose.

钻石:“ It lives in forests with others. It stores electricity in the pouches on its cheeks.

Pikachu — Seed 1

令人印象深刻的是,AI很快就知道了它是一只会放电的老鼠,虽然电流不是从脸颊发出的,但是这个效果是不是很想DC的闪电侠。

Pikachu — Seed 9

它彷佛成功地理解了老鼠在这次考试测验中从脸颊射出电流的想法。
但是黄皮耗子的黄呢?

末了的想法

总的来说,我对结果印象深刻。
根据我的实验,我确实相信在 Pokédex 条款中包含 Pokémon 的名字有助于模型收敛到你在上面看到的图像,但是这意味着有些 Pokémon 可能已经涌如今演习集中(信息透露了)。
下图是上面“Charmander-seed 4”的重复图,在输入的图鉴条款中没有“Charmander”这个词。
结果显示了一只带有长长火焰尾巴的金属的什么东西,而不是上面的橙色图像。

只管结果不是很好,但是VQGAN+CLIP 做出的推理和图像质量比我预期的更令人印象深刻。
期待更多地探索它们。

末了github代码在这里:github/justinjohn0306/VQGAN-CLIP

作者:peter capsalis