{DD} Usefull stuff&scripts I use to make Loras

详情

模型描述

大家好!

关于如何训练网格 LoRA 的问题非常多,所以我来快速介绍一下我的工作流。首先我要说明的是,我和 @Bartuba 正在开发一款应用程序,它将极大地帮助所有想要创建 LoRA 的人(实际上适用于任何类型的 LoRA,不只是网格 LoRA)。一旦我们准备好发布 MVP 并制作更完整的教程(届时会汇总我当前所有的经验),我就会在此处发布链接。

概览

要训练一个网格 LoRA,你需要完成以下步骤:

  • 收集一个一致且具有一定多样性的概念数据集;
  • 为训练准备数据集中的图像;
  • 标注你的数据集;
  • 训练模型;
  • 检查结果,如有需要重复整个流程。

数据收集

首先你需要收集一系列能代表你概念的片段。我建议寻找画质较好的片段(分辨率至少 1280x720)。来自 danbooru 的 GIF 也是可以的——它们通常画质不错,但我建议不要使用,因为 GIF 通常颜色数量较少,这对训练并不理想。

如何操作?

当我们讨论网格 LoRA 时,你需要一组片段。实际上,我们需要从这些片段中提取帧,而获取帧的方式有很多。以下是一些方法:

  • 在逐帧观看片段时手动选择帧(例如 KMPlayer 可以做到,按 "F" 键查看下一帧,按 "Ctrl + A" 保存到电脑)。这个过程耗时且乏味,但能保证图像质量与多样性;
  • 将整个片段(如果约 10 秒左右)拆分为帧,然后从中挑选你喜欢的。例如你可以使用 这个网站。只需将你的 GIF/WebM 文件 放在这里,拆分为帧,然后将全部帧下载为 ZIP 包;
  • 另一种方法是下载 ffmpeg(这是 Windows 安装指南),然后将所有片段放在同一个文件夹中,按 "Windows + R",输入 "cmd",进入目标文件夹路径,再运行我的脚本:
for %i in (*.webm) do ffmpeg -ss 0.5 -i "%i" -fps_mode vfr -frame_pts true -vframes 9 "%iout-%02d.png"

其中:

  • (*.webm) 是文件扩展名;
  • -ss 0.5 是脚本从片段中提取帧的时间点(单位:秒);
  • -vframes 9 是每段视频提取的帧数。

通常能获得相当不错的结果。

*未来我们的 UI 将帮助完成这一部分。

应该选择哪些帧?

这是第一个有挑战性的部分。例如你想创建一个“微笑”网格 LoRA,那么请关注以下几点:

  • 数据集中的帧会较小。物体或概念是否清晰可见?是否足够大(至少占画面的 30%)?
  • 快速浏览时,这些片段是否一致?比如“微笑”是否来自几乎相同的角度?过多的变化可能导致训练结果混乱。
  • “微笑”的动态变化在帧之间是否明显?如果变化太小,你可能会得到 4 张(或 9 张)完全相同的图像。
  • 能否裁剪为正方形而不丢失概念的关键细节?
  • 图像的关键部分是否有 logo?

如果以上任何一个问题是“否”——请三思这个片段是否适合。有些问题可以在 Photoshop 中修复,但会非常耗时。

数据准备

现在我们有了原始图像的数据集。接下来需要完成以下步骤:

  • 去除不良部分(如 logo);
  • 排列顺序;
  • 裁剪为正方形;
  • 调整为 512x512(或 256x256);
  • 合并成网格;
  • 调整网格尺寸。

清理与裁剪

我使用 Photoshop 来完成。比较枯燥,没什么可多说的。

唯一的提示是:将同一段视频的帧集中在一起,一次性全部裁剪,然后“导出图层为文件”。可以节省大量时间。

所有网格中的帧应该保持相同的逻辑顺序。例如“微笑”在每个视频中都应该是逐帧变宽。如果顺序相反,请反过来。否则最终结果会混乱。

*如果你懒得多做这一步,可以过度训练模型。过度训练在某种程度上有帮助——因为最终结果会更贴合数据集中某一张图像。但这样做会严重削弱效果。

*未来我们的 UI 将帮助完成这一部分。

调整大小

我想大家都知道,但 Birme 是一个很好的工具。

合并为网格

合并的方式也有很多,这里列出几种:

  • 使用 Photoshop 手动操作。创建一个 1024x1024(2x2 网格)或 1536x1536(3x3 网格)的空白画布,逐个将图像放上去。然后合并来自同一视频的帧图层,并另存为独立文件;

  • 使用 这个工具这个工具

  • 或使用 @Bartuba 提供的 Python 脚本(见附件):

    • 将脚本放入所有准备好的帧图像所在文件夹(图像文件名应为字母+数字,且分辨率为 512x512);
    • 打开 cmd;
    • 输入命令:python 0sq.py png 3x3 (其中 0sq 是脚本名,png 是图像格式,3x3 是网格类型)。

将 2x2 网格调整为 512x512,3x3 网格调整为 768x768。

好了,目前就到这里啦 :)

我制作这份指南是为了分享我的工具,让想尝试训练网格模型的人能更容易上手。接下来的步骤我还没完全确定,所以暂时先这样。等我们的 UI 准备好后我会再回来更新。

祝大家有美好的一天 :)

标注

待补充

训练

待补充

检查结果并分析

待补充

欢迎在评论区或我的 Discord 频道 中提出任何问题。

此外,我正在制作使用 AI 艺术的游戏。未来这些游戏将免费发布,但如果你想参与开发或提前体验,可以 通过 Patreon 支持我

另外,我的“湿发 LoRA”被这里封禁了,我不太明白原因。你可以在我的 Patreon 上免费下载最新版本。

此模型生成的图像

未找到图像。