背景目标


平时都是在用 AI 工具生成美女写真,审美已经麻木疲劳了,翻来覆去就那么几样,所以我想下定决心自己亲手实现一次模型训练和生成过程,这样一旦我把整个工程的流程走通,我就可以按照自己的兴趣爱好,搜集相应的图片生成自己想要的内容了(嘻嘻懂得评论区打 666 ),所以才有了本文的内容。目标就是:

  • 实现扩散模型,并生成美女写真图片

前期准备


  • stable diffusion webui
  • tensorflow-gpu 2.10
  • anaconda 虚拟环境
  • python 3.10
  • 显卡 4090

数据生成


我手头没有那么多美女图片,怎么办呢?灵机一动,我有 stable diffusion ,可以生成一波。于是进行了一次烧卡行动,选择麦橘写实基础模型,然后填入常见的正向和负面提示词,主要就是“一个美丽的女孩”、“面部特写”、“看着观众”、“微笑”等提示词,每次生成 100 张图片,生成了 10 次,剔除了了吓人的鬼图,剩下了 972 张图片,效果如下,都是美女的写真。用 stable diffusion 生成的美女图来当作我的扩散模型的训练数据,然后用扩散模型再去生成美女图片,这是不是就是武当梯云纵,左脚踩右脚吗?我他娘的真是个天才。

image.png

理论基础


image.png

整个论文中对于模型的数学推导很复杂,涉及到很多高数的内容,但是最后繁重求简之后,得到的结论却是非常简单的,我们可以直接使用结论来复现模型的结构。要实现扩散模型生成数据需要两步:

  1. 训练阶段:使用定义好的超参数不同时间步原图进行添加不同程度的噪声,这些噪声作为我们的标签,然后使用扩散模型生成预测噪声,计算预测噪声原噪声的损失值,最后计算梯度更新扩散模型,不断重复这个过程直到收敛。

  2. 采样阶段:模型训练好,从一个正态分布的全噪声图中,不断使用扩散模型去噪,逐渐生成原图

扩散模型


扩散模型主要使用的是 Unet 的网络结构框架,U-Net 的最初是应用在医学图像分割,但是扩散模型在此基础上进行了些变化,主要有 6 个部分:

  1. 编码器(Encoder)部分:U-Net 的编码器部分由多个卷积层组成,用于从输入图像中提取特征信息。这些卷积层通常包括卷积操作激活函数池化层。编码器的任务是逐渐降低图像分辨率,同时提取高级语义特征。
  2. 中间连接(Bottleneck) :U-Net 的中间连接部分将编码器的输出连接到解码器的输入。这个连接允许网络在不同分辨率上融合低级和高级特征信息,以便更好地还原细节。
  3. 解码器(Decoder)部分:解码器部分由多个卷积层上采样操作组成,用于逐步恢复图像的分辨率,并生成预测噪声结果。
  4. 跳跃连接(Skip Connections) :U-Net 的关键设计特点是跳跃连接,它将编码器的特征图与解码器的特征图相连接。这些跳跃连接有助于传递详细的局部信息,帮助网络准确地预测噪声。
  5. 残差连接(Residual Connections) :残差连接是一种用于解决深度神经网络训练中的梯度消失和梯度爆炸问题的技术。在 U-Net 的解码器、中间连接、解码器中引入残差连接,可以帮助网络更轻松地训练更深层次的模型。残差连接通过将某一层的输入直接添加到该层的输出中。这有助于网络在反向传播中更好地传递梯度,从而加速收敛并提高模型性能。
  6. 注意力机制(Attention Mechanisms) :注意力机制允许神经网络在处理图像时更加关注感兴趣的区域或特征。在 U-Net 的解码器、中间连接、解码器中应用注意力机制,可以提高网络在噪声预测的效果

模型训练


我们的损失函数使用均方误差 MeanSquaredError ,优化器为 Adam,进行 800 个 epoch 的训练,每个 epoch 耗时平均 5 秒。

Epoch 1/800
15/15 [==============================] - 19s 356ms/step - loss: 0.9907
Epoch 2/800
15/15 [==============================] - 5s 357ms/step - loss: 0.9657
...
Epoch 718/800
15/15 [==============================] - 6s 363ms/step - loss: 0.0163
Epoch 719/800
15/15 [==============================] - 6s 364ms/step - loss: 0.0198
...
Epoch 799/800
15/15 [==============================] - 6s 359ms/step - loss: 0.0233
Epoch 800/800
15/15 [==============================] - 6s 360ms/step - loss: 0.0174

效果展示


下图就是使用训练好的模型进行图像的绘制,可以看出来大部分还是比较不错的。从整个模型的训练和测试过程中有可以得出以下结论:

  • 优点:生成效果比较好,灵活的模型架构、不需要对抗训练
  • 缺点:计算复杂度较高,生成速度慢

写在最后

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐