在今年的社交媒体上,我们常常能看到人们上传自己现在的照片和经过AI预测30年后模样的照片对比。这一有趣现象的背后,离不开一款名为FaceApp的应用,它在全球范围内迅速走红。在过去,虽然也有过面部年龄变化处理的尝试,但都存在诸多局限,比如需要大量数据、生成的图像有重影不自然,而且无法实现逆向操作(即从老年变回年轻),结果往往不尽人意。不过,随着基于生成对抗网络(GAN)架构的成功应用,如今我们能够生成高分辨率且自然逼真的图像。本文将详细介绍如何训练CycleGAN这一有趣的架构,实现从20多岁到50多岁的正向年龄变化以及从50多岁到20多岁的逆向年龄变化。
生成算法与GAN的工作原理
在深入了解CycleGAN之前,我们先来了解一下生成算法。当我们训练像简单分类网络这样的神经网络时,通常训练的是判别网络,其任务只是区分不同的类别,例如区分狗和猫的分类器,像VGG和ResNet等流行的神经网络架构都属于这一类别。而生成算法则不同,它能完成比简单分类任务更多的事情。它可以生成与模型训练领域相似的数据。比如,如果模型在马的图片上进行训练,生成算法就能创造出看起来真实但又与训练样本不同的新马的图片,就像人类闭上眼睛想象世界中的事物一样。
生成对抗网络(GAN)是最流行的生成算法之一,它有许多有趣的应用。一个GAN由两个神经网络组成:生成器和判别器。生成器网络的任务是创建逼真的图像,而判别器网络则要区分真实图像和生成器创建的假图像。两者在一个极小极大博弈中相互竞争,直到生成器创建的图像非常逼真,判别器无法分辨哪些是真实图像,哪些是人工生成的图像,此时达到平衡,训练停止。在训练过程中,两个网络同时进行训练,直到达到平衡。由于两个网络相互竞争,并且在每次迭代中都试图提升自己,所以损失不会像一般分