生成式人工智能AIGC(Artificial Inteligence Generated Content)是人工智能发展到今天的重要成果。
常见的AIGC技术框架有:
· GAN,由生成器和判别器组成的图像生成模型,已在当前图像生成等领域获得长足进展。
· VAE,可变分自编码器,使得数据可以从图像空间转换到潜在空间中,使得扩散模型性能得到提升。
· NeRF,一种用来渲染三维场景的技术,通过神经网络对场景深度和颜色进行建模,生成高质量的三维模型。
· CLIP,用于建立图像和文本之间的关联,也是奠定文本生成图像方案的基础。它的出现极大推动了文本和图像之间的跨模态交互和应用。
· CodeFormer,这是集成在Stable Diffusion中的一种常见的人脸清晰化模型,通过一键勾选的方式在生成人物图像时为需要进行面部重建的部分提供极大的便利。
下面对上述几个技术框架进行详细介绍。
GAN是一种深度学习模型,由生成器和判别器两个相互对抗的网络组成。GAN的初衷是让生成器能够产生与真实数据相似的新样本。
生成器的任务是接收一个随机噪声向量作为输入,并生成看起来像真实数据的样本。而判别器则被训练来区分生成器生成的样本和真实数据样本。通过生成器和判别器的对抗学习,二者不断优化自身,使得生成器生成的样本更加逼真,而判别器能更加准确地区分真实样本和虚假样本。
GAN的训练过程可以简单概括如下:
步骤01 初始化生成器和判别器的参数。
步骤02 从真实数据中随机选择一批样本作为判别器的真实数据输入。
步骤03 从噪声分布中随机采样一批噪声向量作为生成器的输入,生成一批虚假样本。
步骤04 将判别器分别对真实数据和虚假样本进行分类,并计算它们的损失(通常使用二分类的交叉熵损失)。
步骤05 对判别器进行反向传播和参数更新,以提高对真实和虚假样本的分类准确性。
步骤06 固定判别器的参数,更新生成器的参数,使得生成器生成的样本更容易被判别器误认为真实数据。
步骤07 重复 步骤02 至 步骤06 ,进行多次迭代训练,直到生成器生成的样本质量满足预期。
通过生成器和判别器的对抗学习,GAN能够学习数据的分布特征并生成逼真的新样本。GAN广泛应用于图像生成、图像编辑、生成对抗攻击、数据增强等领域。其重要的分支RealESRGAN和ESRGAN(Enhanced Super-Resolution Generative Adversarial Network)用来进行高分辨率处理,GFPGAN用来进行面部修复。
ESRGAN即增强型超分辨率生成对抗网络,是一种令人惊叹的深度学习模型,专为图像超分辨率而设计。超分辨率意味着通过引入像素级的细节提升,让图像展现出更为清晰和细腻的魅力。
ESRGAN以生成对抗网络为基础,独特而出色地生成出高质量的超分辨率图像。它的目标是令那些低分辨率的图像以一种更高的品质展现于世。这一目标通过生成器网络和判别器网络的相互协作、相互竞争来实现。
在ESRGAN的训练过程中,生成器和判别器相互对抗、相互学习。生成器扮演着一个巧妙的“骗子”,力图让判别器分不清生成的图像与真实高分辨率图像的差异。而判别器则是一位精明的辨别者,努力学习如何分辨真实和生成的图像,并向生成器提供改进建议。这种博弈、对抗的学习过程不断推动着生成器提升生成图像的质量。
人脸修复是指从低分辨率的人脸图像中恢复出高清晰度的人脸图像。目前,GFPGAN是一种开源的人脸修复算法,已经被集成到Stable Diffusion Web UI中,用于重新绘制面部。该算法通过在训练过程中对低质量人脸图像进行预处理来保留面部的基本信息。同时,通过引入具有辨别性的面部损失(Facial Component Loss)来判断哪些细节需要保留,之后通过保留损失(Identity Preserving Loss)来保持面部特征。
VAE是一种与自编码器密切相关的模型。尽管VAE与自编码器在结构上有一定的相似性,但在目标和数学表述上存在显著差异。VAE属于概率生成模型(Probabilistic Generative Model),神经网络是其中的一个组件。根据其功能的不同,VAE可分为编码器和解码器。
编码器的主要功能是将输入变量映射到潜在空间,与变分分布的参数相对应。这样做的结果是可以生成多个遵循同一分布的不同样本。相反,解码器的功能是从潜在空间映射回输入空间,以生成数据点的表示。
在VAE中,我们追求的目标是最大化观察数据的边际对数似然。为了达到这个目标,VAE使用变分推断的方法来近似潜在空间的后验分布。它通过最大化似然下界(ELBO)来进行优化。这个下界是通过对潜在表示进行采样后的期望得到的,并且通常使用重参数化技巧(Reparameterization Trick)进行训练。
总之,VAE是一种概率生成模型,与自编码器密切相关。它通过将输入数据映射到潜在空间并利用变分推断的方法,实现了对数据分布的建模。通过从学习到的分布中进行采样,VAE能够生成新的样本。值得注意的是,重参数化技巧是训练VAE时常使用的技术之一,它可以有效地优化模型。
NeRF(Neural Radiance Fields)是一种基于神经网络的方法,用于对三维场景进行建模和渲染。它使用神经网络来表示场景中每个点的辐射强度和体素颜色。换句话说,NeRF试图从输入图像中学习场景的几何结构和光照属性。通过训练网络,NeRF能够估计场景中任意点的辐射强度和颜色,从而实现高质量的渲染。为了训练NeRF,需要将输入图像与场景中的真实数据进行匹配,以优化网络参数。通常使用光线追踪等技术来生成训练数据。
NeRF的优势在于能够生成高度逼真的三维渲染结果,包括光照、阴影和反射等效果。它已经被广泛应用于计算机图形学、虚拟现实和增强现实等领域。目前可以通过Stable Diffusion来生成同一物体的不同角度的2D照片,并通过NeRF进行3D建模渲染。
CLIP的全称为Contrastive Language-Image Pre-training,是一种文字-图像对的预训练方法。作为一种对比学习的多模态模型,它的训练目标是根据图像和对应的文字描述,通过大量的训练以及提取的文字和图像特征找到文字-图像对的关联关系。CLIP能够将图像和文本映射到共享的潜在空间,并具备理解和推理图像与文本之间联系的能力。这使得CLIP成为处理图像与文本语义关系的重要工具,并在计算机视觉和自然语言处理等领域取得了重要的进展。CLIP的重要应用有图像分类、通过图像生成对应的描述语、通过文字描述生成图像(Stable Diffusion使用CLIP模型从文本中生成对应的高保真图像)。
CodeFormer是一种强大的面部恢复算法,旨在处理旧照片和AI生成的图像面部。
CodeFormer人脸清晰化模型的过程如下:
步骤01 会通过一系列学习过程来训练一个离散的codebook和一个解码器。这样做的目的是通过自重构学习,将面部图像的高质量视觉部分存储起来。通过这个过程,我们能够掌握如何有效地表示和保存面部图像中的关键视觉特征。
步骤02 将使用事先确定好的codebook和解码器。我们引入一个称为Transformer模块的组件用来对低质量输入的全局人脸组成进行建模。这个模块的作用是通过编码序列预测来处理输入数据。通过这种方式,我们可以更好地理解和建模低质量人脸图像的整体结构和组成部分。
步骤03 引入可控特征转换模块。这个模块的作用是控制从低质量编码器(LQ Encoder)到解码器的信息流。通过调整这个信息流,我们可以控制图像重建和转换过程中的特征变化。这样的设计使得我们能够根据需要调整图像的某些特征,例如亮度、对比度和姿态等,以获得更加满意的结果。
综上所述,CodeFormer人脸清晰化模型的过程包括学习codebook和解码器以存储高质量视觉部分,使用Transformer模块对低质量输入的人脸组成进行建模,以及应用可控特征转换模块来控制信息流动。这一模型的设计旨在改善低质量人脸图像,并提供一种灵活的方式来控制图像特征。
CodeFormer用来人脸清晰化的效果如图2-2所示。从图中可以看出,低质量的人脸图像得到重建和改进,细节和纹理变得更加清晰可见,面部轮廓和特征也更加清晰和鲜明。
此外,CodeFormer模型还可以帮助纠正模糊或失真的图像部分,使人脸图像整体上更加自然和真实。
图2-2 CodeFormer人脸清晰化的效果