Datawhale X 魔搭 AI夏令营 “AIGC”方向 task3

一、任务要求

task3 主要是在 baseline 代码基础上,进一步实现模型的优化。

这里主要提到了三点:comfyUI工作流、LoRA微调和高质量数据集。LoRA微调在 task1 文章中已经提到相关参数,而关于高质量数据集,我自己建立的数据集当然质量不高,我在魔搭上也没有找到古风相关的数据集,但是大家可以自己建立一些高质量数据集。下面主要简单介绍一下comfyUI工作流。

二、comfyUI工作流

关于comfyUI工作流的介绍,在教程中其实也已经介绍得很详细了,我查找另一些资料作为补充印证。

一是核心模块介绍。主要有以下几种。

1. 输入模块(Input Module)

  • 功能: 输入模块用于加载和预处理输入数据,如图像、文本、音频等。它通常包括数据加载器和数据预处理步骤,如归一化、裁剪、数据增强等操作。
  • 示例: 图像分类任务中的图像加载器,文本生成任务中的文本编码器等。

2. 层模块(Layer Modules)

  • 功能: 这些模块代表神经网络的不同层。用户可以将这些层模块组合起来以构建网络架构。常见的层模块包括全连接层(Dense Layer)、卷积层(Convolutional Layer)、递归层(RNN/LSTM/GRU Layer)等。
  • 示例: 在卷积神经网络(CNN)中使用的卷积层、池化层和全连接层。

3. 激活函数模块(Activation Function Module)

  • 功能: 激活函数模块用于指定每一层之后使用的激活函数,如 ReLU、Sigmoid、Tanh 等。这些模块决定了神经元的非线性变换。
  • 示例: 对于深度网络中的非线性处理,用户可以插入 ReLU、Leaky ReLU 或者 Softmax 激活函数模块。

4. 损失函数模块(Loss Function Module)

  • 功能: 损失函数模块用于定义训练过程中模型的损失计算。它帮助评估模型输出与目标之间的差距。常见的损失函数包括交叉熵损失、均方误差、二分类损失等。
  • 示例: 用于分类任务的交叉熵损失函数或者用于回归任务的均方误差(MSE)函数。

5. 优化器模块(Optimizer Module)

  • 功能: 优化器模块用于配置模型训练中的优化算法。它包括常见的优化器,如 SGD、Adam、RMSprop 等。用户可以调整学习率、动量等参数来影响训练过程。
  • 示例: 在训练时使用 Adam 优化器来更新模型的参数。

6. 数据流控制模块(Data Flow Control Module)

  • 功能: 这些模块用于控制数据在不同模块之间的流动。用户可以使用它们在模型中引入条件、循环、分支等控制流,或者管理批次数据的处理。
  • 示例: 将循环结构(如 RNN)添加到模型中,或者在处理数据时加入条件判断。

7. 模型输出模块(Output Module)

  • 功能: 输出模块负责模型的最终输出。它可以包括模型的预测结果、可视化输出(如图像生成任务中的图像)、日志记录或者保存中间结果。
  • 示例: 在图像生成任务中,生成的图像会通过输出模块保存或显示;在分类任务中,模型的预测类别通过此模块输出。

8. 训练和评估模块(Training & Evaluation Module)

  • 功能: 该模块用于管理模型的训练和评估过程。用户可以设置训练的参数(如 epochs、批次大小、验证数据集等),并实时监控训练和评估的结果。
  • 示例: 配置训练参数并监控训练过程中的损失值和准确率,或者在训练结束后对模型进行评估和测试。

9. 可视化模块(Visualization Module)

  • 功能: 可视化模块用于帮助用户观察和分析数据流、网络架构以及训练过程中的各类信息。这些模块提供实时的图表、日志记录、损失曲线等。
  • 示例: 可视化训练时的损失下降曲线,或者图像生成模型的中间结果。

10. 自定义模块(Custom Module)

  • 功能: 自定义模块允许用户插入自己编写的代码或逻辑。这些模块能够扩展 ComfyUI 的功能,使用户能够实现一些高级功能或特定任务中的特殊需求。
  • 示例: 插入一个自定义的 Python 函数模块来实现特殊的数据处理逻辑。

11. 导入与导出模块(Import & Export Module)

  • 功能: 这些模块允许用户导入已有的模型结构或导出构建的模型,以便在其他工具或环境中使用。它们可以支持各种深度学习框架的模型格式。
  • 示例: 导入预训练的 PyTorch 模型,或将 ComfyUI 中设计的模型导出为 ONNX 格式。

二是图片生成流程。

1. 输入数据准备(Input Data Preparation)

  • 数据输入模块:用户通过 ComfyUI 的输入模块载入图像生成所需的初始数据。这可能是随机噪声(如 GAN 中的噪声向量)或文本描述(如基于文本的图像生成任务)。
  • 示例:在 GAN(生成对抗网络)中,通常输入的是一个随机噪声向量;在文本到图像生成模型中,输入的是文本编码。

2. 模型定义(Model Definition)

  • 模型模块:用户通过 ComfyUI 的层模块和激活函数模块定义图像生成模型的架构。这可以是卷积神经网络(CNN)、生成对抗网络(GAN)、或者扩散模型(Diffusion Model)等。模型架构根据任务不同,可能包含多层卷积、反卷积、归一化等操作。
  • 示例:在 GAN 中定义生成器网络,包含一系列上采样操作,如反卷积层和激活函数;在扩散模型中定义从噪声恢复图像的反向扩散过程。

3. 损失函数定义(Loss Function Definition)

  • 损失函数模块:为训练图像生成模型配置损失函数。例如,在 GAN 中会有生成器和判别器的损失函数;在 VAE(变分自编码器)中则使用重构误差与KL散度之和作为损失。
  • 示例:GAN 中,生成器的目标是欺骗判别器,因此使用生成器损失;判别器的目标是正确区分真实图像和生成图像,使用判别器损失。

4. 优化器选择(Optimizer Selection)

  • 优化器模块:用户需要选择合适的优化器来调整模型的权重参数。常见的选择包括 Adam、RMSprop 等优化器,并根据具体任务调整学习率、动量等超参数。
  • 示例:为生成器和判别器分别选择 Adam 优化器,设置适当的学习率(如 0.0002)。

5. 模型训练(Model Training)

  • 训练模块:在 ComfyUI 中,通过训练模块来执行图像生成模型的训练过程。模型训练时,生成的图像会经过损失函数计算误差,并通过优化器不断更新模型权重。
  • 示例:在 GAN 中,首先输入噪声向量生成图像,然后判别器对生成图像和真实图像进行判别,并根据结果更新生成器和判别器。

6. 生成与输出(Generation and Output)

  • 输出模块:一旦模型训练完成,用户可以通过输出模块生成最终的图像。该模块会根据输入(如噪声向量或文本描述)输出生成的图像,并将结果保存或展示。
  • 示例:使用生成器模型生成高分辨率的图像并通过输出模块保存结果,或直接在 UI 中展示生成的图像。

7. 模型评估与改进(Model Evaluation and Improvement)

  • 评估模块:用户可以通过评估模块对生成图像的质量进行评估。这可以通过主观评估(如视觉检查)或量化指标(如 FID 分数)进行。
  • 示例:计算生成图像与真实图像之间的 FID(Frechet Inception Distance)或 IS(Inception Score)以评估生成质量。

8. 调试与可视化(Debugging and Visualization)

  • 可视化模块:ComfyUI 提供了丰富的可视化功能,允许用户实时查看生成图像的中间结果、损失曲线、模型结构等。这有助于调试模型并快速发现潜在问题。
  • 示例:在模型训练过程中可视化生成器的输出,跟踪训练损失的下降趋势,或者观察不同层的中间特征图。

9. 生成后的处理(Post-Processing)

  • 后处理模块:对于某些生成任务,可能需要对生成图像进行后处理,如去噪、增强、调整对比度等。用户可以将这些后处理步骤嵌入工作流中,以确保生成的图像满足特定要求。
  • 示例:在生成高分辨率图像时,对输出进行去噪或锐化处理。

10. 导出与分享(Export and Share)

  • 导出模块:最终生成的图像或模型可以通过导出模块保存为文件(如 PNG 或 JPG 图像文件),或者导出为可复现的模型文件,以便在其他平台或环境中使用。
  • 示例:将生成的高分辨率图像保存到本地,或导出生成器模型以便在其他环境中复用。

三是ComfyUI的优势。

模块化和灵活性:ComfyUI 提供了一个模块化的系统,用户可以通过拖放不同的模块来构建复杂的工作流程。这种灵活性允许用户根据自己的需求自由组合和调整模型、输入、输出、和其他处理步骤。

可视化界面:ComfyUI 提供了直观的图形界面,使得用户能够更清晰地理解和操作复杂的 AI 模型和数据流。这对没有编程背景的用户特别有帮助,使他们能够轻松构建和管理工作流程。

多模型支持:ComfyUI 支持多个不同的生成模型,用户可以在同一平台上集成和切换使用不同的模型,从而实现更广泛的应用场景。

调试和优化:通过其可视化界面,ComfyUI 使得调试生成过程变得更简单。用户可以轻松地追踪数据流,识别并解决问题,从而优化生成结果。

开放和可扩展:ComfyUI 是一个开源项目,具有高度的可扩展性。开发者可以根据需要编写新的模块或插件,扩展系统功能,并根据项目需求进行定制。

用户友好性:尽管其功能强大,但 ComfyUI 仍然保持了用户友好性,即使对于复杂任务,也能以相对简单的方式完成,使其成为生成式 AI 工作流程管理的有力工具。

关于具体使用comfyUI工作流时出现的各种问题,可以参考站内的文章【comfyUI】疑难 错误问题 解决方案,里面有很多解决方案。

三、新的尝试

没什么干货,说实话 ComfyUI 也没有太多提升。简单将训练轮数改为2,又写了一个小故事,图片如下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值