Text Inversion: 比 Lora 更简单地训练人脸【Stable Diffusion 炼丹教程】

Stable Diffusion的最大魅力体现在其DIY的能力上。它不是什么图都能画出来,但是我们可以根据自己的需求,训练它成为我们想要的样子。

其中,Text Inversion 就是一种最简单有效的训练方式。它比 Lora 训练更简单,对数据集的要求比较低,适合入门。 它的训练过程和 Lora 有很多共通的地方,熟练掌握的话对于后期 Lora 训练也是很有帮助的。 和 Lora 一样,它也可以用来训练任何人脸,生成任何人的照片。

其实,早在一年以前,就有很多关于它的教程。然而,那时的 WebUI 跟现在的有所不同,可能会让你感到困惑。而且,之后还出现了一些新的处理数据集的方法。 所以,我觉得有必要写一篇新的文章,让大家从原理层面深入了解 Text Inversion。

在这篇教程中,我会用著名好莱坞女明星 Angelina Jolie 的照片进行训练。有人可能会问,Angelina 是个名人,Stable Diffusion 训练过她的照片。那么我再为她训练 Embedding 有什么意义呢?

如果你喜欢看视频教程,那么我非常欢迎你观看本文所对应的视频(B站同名帐号):

www.bilibili.com/video/BV1sZ...

让我来解释一下。 我们都知道,Stable Diffusion 是用网络上公开的6亿张包含描述的图片训练而成的。 这些图片的质量都不太高,而且未必符合我们心目中的 Angelina 的形象。如果我们要生成自己心目中 Angelina 的样子,就可以筛选出我们喜欢的照片,然后用它们来进行训练。这才是训练的真正意义。

看,下面是训练前后的对比图片。左边这列是原版的Angelina。右边是我训练的Angelina。它们的区别还是挺大的吧。

接下来,我将一步步引导大家通过实例学习Text Inversion的训练过程,包括数据集的准备、图片的预处理、训练过程以及测试训练结果。

数据集的准备

训练开始前,数据集的准备是至关重要的一步,它直接影响到最终生成图像的质量。遵循以下两个原则以确保数据集的质量:

  1. 图片质量优于数量:选择高质量的图片比大量低质量图片更为重要。
  2. 多样化:尽可能选择角度、表情和背景各异的人脸图片,以便AI能全方位学习人物特征。

推荐至少准备10张以上的面部图像,并可以包含一些上半身或全身照片,以学习人物的体型和姿态。注意,图片中不应包含水印,以避免影响最终结果。

看,这是我用不同质量的数据集生成的效果。左边这列的是用质量比较差的数据集,跟右边的效果还是有差距的吧?

图片预处理

图片准备工作完成后,接下来的重要步骤是进行图片的预处理,包括裁剪和打标,以确保所有图片都有统一的分辨率,推荐尺寸为512x512。这一步骤对于提高训练效果和最终图像的质量至关重要。以下是详细的预处理步骤:

1️⃣ 选择合适的工具:由于新版本的WebUI已经移除了"图片预处理"功能,因此需要借助外部工具进行预处理。我在这里推荐一个在线批量处理图片的网站,使用起来非常方便。网址是:

www.birme.net/?target_wid...

2️⃣ 上传图片

  • 访问推荐的在线批量处理图片网站。
  • 点击"BROWSE FROM YOUR COMPUTER"按钮打开文件浏览器。
  • 进入包含要处理图片的文件夹,按Ctrl + A选择所有图片,然后点击"打开"。

3️⃣ 自动裁剪和焦点检测

  • 上传后,网站会自动识别每张图片的焦点,通常是面部,确保裁剪区域的准确性。
  • 确认"Auto detect image focal point"(自动检测图像焦点)选项已勾选。

4️⃣ 手动调整

  • 预览处理效果,对于自动标注不准确的图片,手动调整裁剪区域。例如,如果某张图片的脸部被不当裁剪,可以通过拖动裁剪框来调整。

5️⃣ 保存和下载

  • 调整完成后,点击"SAVE AS ZIP"按钮,将处理后的图片保存为ZIP文件。
  • 选择一个位置保存压缩文件,完成图片的批量裁剪和预处理。

通过上述步骤,我们可以确保数据集中的每张图片都被正确地裁剪和标注,为接下来的训练过程打下良好的基础。这一环节虽然看似简单,但对于提升最终生成图像的质量起到了决定性作用。

精确打标

为了充分利用Stable Diffusion的能力,精确地为图片打标是一个不可忽视的步骤。这一过程通过添加描述性的提示词来为图片内容进行标注,是使用Text Inversion或Lora训练方法的关键环节。下面,我将详细介绍如何高效地完成这一任务。

打标的重要性

Stable Diffusion的训练依赖于大量带有描述的图片,正是这些描述使得我们能够通过提示词来生成特定的图片。因此,为你的训练图片准确打标,能够显著提高生成图像的质量和相关性。

使用WebUI的Tagger插件打标

1️⃣ 安装Tagger插件 :首先,确保你的WebUI中安装了Tagger插件。如果尚未安装,可以去Github上下载(github.com/toriato/sta...)。也或者访问我分享的度盘链接(pan.baidu.com/s/1jvg7A0j2...)。

2️⃣ 批量处理图片:进入WebUI后,切换到Tagger标签页并点击"从目录批量处理",输入你的图片路径。这一路径依据你运行Stable Diffusion的环境而定,可能是本地或服务器。

3️⃣ 选择模型和调整参数

  • 在"反向推导器"下拉列表中选择一个模型。对于处理人像图片,"ViT v2"模型通常是一个不错的选择。
  • 调整权重阈值(Weight threshold)以控制标注的详细程度。记住,阈值设置得越小,生成的标注就越详细,但同时也可能增加无效标注的数量,从而需要更多时间进行手动修正。

4️⃣ 开始打标:设置好参数后,点击"反向推导"按钮开始打标过程。这一过程完成后,你可以在输出目录中看到每张图片对应的文本文件,里面包含了生成的提示词。

审核和调整标注

完成自动打标后,不要忘记检查并调整这些文本文件中的提示词。尽管自动打标可以节省大量时间,但人工审核和精细调整是不可替代的,特别是当你追求最优的训练效果时。

  • 查看并编辑文本文件:转到数据集的文件夹,你会发现许多与图片同名的文本文件。打开任一文件,检查里面的提示词。
  • 精确调整:根据需要编辑或添加提示词,以确保它们尽可能准确地描述图片内容。更精确的标注意味着更优质的Text Inversion训练结果。

批量修改标注

在进行Text Inversion训练前,对图片的标注进行精确调整是关键一步,这不仅关乎训练效果的优化,还涉及到训练过程的高效性。以下是如何利用特定工具来批量修改标注的详细指导。

使用Dataset Tag Editor插件

为了高效管理和修改图片标注,我们将利用一个称为Dataset Tag Editor的插件。这个工具可以大幅简化标注的编辑过程。

  1. 安装插件 :首先,确保安装了Dataset Tag Editor插件。如果尚未安装,可以去Github上下载(github.com/toshiaki172...)。也或者访问我分享的度盘链接(pan.baidu.com/s/1L6_RFnU9...)。
  2. 加载图片和标签:在Dataset Tag Editor的标签页内,填写图片和标签文件所在的路径,然后点击"加载"按钮。加载成功后,页面上将显示文件夹内的所有图片及其标签。

理解标注的重要性

如何处理标注呢?这个过程有一些反直觉。 我们都知道,嘴唇是 Angelia 非常独特的特征。我们要 AI 学习这个特征的话,需要保留"lips"嘴唇这个词吗? 我们的第一反应可能是需要。但实际上是不需要的。

因为我们是无法通过文字准确地描述出Angelia嘴唇的特征的,AI 真正依靠的是图片来学习,而不是文字。这一点跟人类是一样的。我们告诉一个画家Angelina嘴唇的厚度和形状,他就能准确的画出来吗?还是得给参考图片,你说对不对?文字只是用来让人类给 AI 发送指令。 希望我这个解释你能够理解。

批量编辑标注

1️⃣ 选择和删除标签:通过Dataset Tag Editor,你可以轻松查看并选择特定的标签,以便批量删除不需要的标签。例如,"lips"、"breasts"、"nose"等描述可能并不必要,而有关背景的标签如"white background"则可能需要保留。这样AI就不会把白色背景跟Angelina扯上关系。否则最后哪怕提示词里没有白色背景这个词,出来的图也可能是白色背景的。

2️⃣ 执行批量删除:在"批量编辑图片描述"区域,使用"搜索和替换"、"移除"和"高清化"等功能来批量处理标签。选择"移除"选项卡,选择你想要删除的标签,并执行删除操作。

3️⃣ 单个编辑标注:有些出现频率不高的词,我们还可以一个一个删除。然后点击"批量编辑图片描述"右边的"编辑所选图片的描述"按钮。这里出现了选中图片的描述,可以点击"复制并覆盖"按钮,把提示词复制到下方的文本框里进行编辑。

比如说我删掉"eyelashes"这个单词,然后点击"应用变更到所选图像"。

就这样通过批量编辑和单个编辑的功能,我们就可以完成对所有图片描述的编辑。最后再点击"保存所有更改"。

准备训练:基础设置指南

在启动Text Inversion训练之前,正确配置Stable Diffusion的WebUI设置是非常关键的一步。这些设置不仅影响训练的效率,还关系到最终训练结果的质量。下面是如何进行这些基础设置的详细指导。

访问WebUI设置

  1. 在WebUI中,点击"设置"标签页。
  2. 向下滚动,找到"训练"的设置选项并点击。
  3. 进入后,根据需要进行一些基本配置。

基础设置项

  • 训练时将VAE和CLIP从显存(VRAM)释放到内存(RAM) :如果你的设备显存较小,可以勾选第一个选项以优化显存使用。这有助于在显存受限的情况下进行训练,但可能会略微影响训练速度。
  • 启用Dataloader的pin_memory:追求更快的训练速度可以勾选第二个选项,但需注意这会增加内存的使用。
  • 将优化器状态保存为单独的optim文件:勾选第三个选项会在训练文件夹内生成备份文件,使得训练可以在中断后无损恢复,这对长时间的训练尤为重要。
  • 在每次训练开始时将文本倒置和超网络设置保存在文本文件中:第四个选项通常默认勾选,负责自动备份训练过程,可以保持默认。
  • 训练进度保存:"每N步保存一个CSV文件"的选项可以帮助你跟踪训练进度。默认值可能设置为每500步保存一次,根据需要你可以调整为更频繁的保存,比如每50步,这有助于更密切地监控训练过程中的loss变化。

应用设置

设置完成后,别忘了点击"应用设置",随后点击"重新加载WebUI"以确保所有设置生效。这一步是准备训练的最后环节,确保了训练环境根据你的具体需求进行了优化。

启动Text Inversion训练

在完成所有基础设置之后,下一步就是实际开始Text Inversion训练。本节将指导你如何进入训练界面,创建embedding,并选择合适的底模进行训练。

进入训练界面

  1. 在WebUI中,找到并点击"训练"按钮以进入训练界面。
  2. 训练界面是Text Inversion训练的操作中心,在这里你将配置和启动你的训练任务。

创建Embedding

训练的首要步骤是创建一个embedding,这是一个表示你要训练图像特征的向量。正确设置embedding对于训练结果的质量至关重要。

选择合适的底模

底模的选择对训练的成功和最终效果有着重大影响。推荐选择版本为1.5的底模,因为它提供了更好的泛化性,即训练好的模型可以在基于1.5版本的其他模型上表现良好。

  • 避免选择SDXL模型:请注意,选择SDXL模型可能会导致训练过程出错。
  • 下载底模 :如果你还没有1.5版本的底模,可以在Hugging Face上进行下载(huggingface.co/runwayml/st...)。较大的这个模型,可以提供更优秀的训练效果。

其他设置

  • VAE设置: 在设置时,VAE(变分自编码器)最好选择为"无"。
  • 命名你的训练任务: 给你的训练任务起一个名字,这个名字可以是任意的,但最好能反映出训练的内容或目标。例如,在本例中,我们将训练任务命名为"ajaj"。
  • 初始化文本:留空,确保从零开始训练,避免受到底模影响。
  • 每个token的向量数:理论上,数值越高,能表现的特征也越多。实际上,1或2已足够。

参数设置好以后,点击"创建embedding",一个空的embedding就被创建好了。现在,一切准备就绪,你可以启动训练过程,开始创建属于你的定制化模型。

Text Inversion训练的底层逻辑解析

Text Inversion训练的过程和目的是利用Diffusion模型,通过训练使得特定的embedding能够生成与训练图像高度相似的结果。为了帮助大家更好地理解这一过程,下面是对Text Inversion底层逻辑的详细讲解,包括embedding的作用以及训练过程中的关键步骤。

Embedding的角色

  • 什么是Embedding:在AI和机器学习领域,embedding是一种将离散变量(如单词)映射为连续向量的技术。这些向量代表了高维空间中的点,能够捕捉到变量之间的某些关系,如语义相似性。
  • 名称与提示词:在Text Inversion中,我们给定的名称(如"ajaj")实际上是一个提示词,它代表了我们想要生成的特定图像特征的embedding。训练开始时,这个embedding是空的,或者说,它并未包含足够的信息来指导Diffusion模型生成我们期望的图像。

训练过程

  1. 从噪点到图像:训练开始时,Stable Diffusion将使用的训练图(如Angelina Jolie的照片)转换成一堆像素或噪点。这些噪点通过训练逐步组织成有意义的图像,过程中embedding起到了指导作用。
  2. 图像生成与对比:Diffusion模型会尝试根据当前的embedding去除噪点中的随机性,生成图像的初步版本。然后,模型会将这个版本与原训练图进行对比,评估二者之间的差异。
  3. 损失计算(Loss) :通过比较生成图像与训练图之间的差异,模型计算出一个loss值,这个值表示两者之间的差异程度。Loss值越低,意味着生成的图像与训练图越相似。
  4. 迭代优化:根据loss值,Stable Diffusion会不断调整embedding,通过反复的迭代过程,逐步减少生成图像与训练图之间的差异,直到达到一个理想的状态,此时的embedding能够指导模型生成与训练图高度相似的图像。

通过上述讲解,我们可以看到Text Inversion训练实质上是一个不断迭代的过程,旨在优化embedding,以便Diffusion模型能够根据这个优化后的embedding生成与训练图非常接近的图像。这个过程涉及到对训练图的深入理解,以及如何通过不断调整和优化embedding来减少loss值,从而提高生成图像的质量和相似度。

启动Text Inversion训练:深入设置与优化指南

在深入了解Text Inversion的底层逻辑后,是时候将这些理论应用到实践中,启动我们的训练过程了。下面的指南将帮助你进行更精细化的设置,以优化训练效果和效率。

我们点击"训练",进入训练参数的设置界面。Embedding就选择我们刚才创建好的embedding。如果在下拉列表里找不到的话,可以点击右边的刷新按钮。

"超网络"、"超网络学习率"、"梯度裁剪"都不用设置。这几个都是关于训练"超网络"的。比较重要的是"学习率"。

Text Inversion训练中的学习率策略

在Text Inversion训练过程中,合理设置学习率对于达到最佳训练效果至关重要。学习率决定了AI模型学习的速度,太高或太低都可能影响最终结果。下面详细介绍如何在训练中设置和调整学习率。

学习率的重要性

学习率可以被视为训练过程中的"步伐大小"。一个适当的学习率使得模型能够有效地学习,避免过快学习导致的过拟合或学习不足。

  • 高学习率:在训练初期使用较高的学习率可以快速达到一个较好的起始点,类似于快速雕刻出佛像的轮廓。
  • 低学习率:随着训练的进行,逐渐降低学习率可以帮助模型更细致地调整,精确雕刻出细节,防止过度拟合。

学习率策略

一个经验丰富的Reddit用户分享了他们的学习率策略,该策略在多个数据集上都显示出了有效性。策略如下:

  • 初始阶段:从第1步到第10步,使用较高的学习率0.05,快速捕捉基本特征。
  • 中期调整:随后降低学习率,例如,10-20步降至0.02,20-60步降至0.01,逐步细化模型。
  • 后期微调:从第3000步开始,学习率进一步降低至0.0005,进行精细调整直到训练结束。

实际应用

  • 默认学习率:默认的学习率可能是固定的,例如0.05,这对于许多情况已经足够。但是,采用动态调整的学习率策略可能会带来更精细的控制和更好的结果。
  • 个别数据集测试:对于特定的数据集,测试不同的学习率策略,观察效果,选择最适合你项目的设置。

通过采用这种分阶段调整学习率的策略,可以在训练的不同阶段对模型进行不同程度的调整,既保证了快速收敛,又避免了过拟合,最终获得满意的训练效果。记得在实际操作中,根据模型的反应和训练结果灵活调整学习率,以达到最佳的训练效果。

其他参数

Batch Size和梯度累计步数

  • Batch Size:影响训练速度和显存使用。较大的Batch Size可以加快训练速度,但也可能导致显存不足的问题。
  • 梯度累计步数:如果提高了Batch Size,相应地也需要调整梯度累计步数,以保持训练的稳定性和效率。

它们两个的关系比较复杂,如果不是非常追求训练速度的话,建议维持默认就好。

数据集目录和日志目录

  • 数据集目录:指向你的训练数据集所在的路径。正确设置这一路径确保模型能够访问到所有训练用的图片。
  • 日志目录:用于存放训练过程中生成的日志文件。可以使用默认设置,这样训练日志就会被保存在WebUI的根目录下的特定文件夹中。

提示词模板的选择和定制

可以从WebUI自带的模板中选择,或者使用自定义模板。WebUI本身自带了一些模板,对于训练人像的话,可以选择名称为"subject_filewords"的模板。

自带的模板存放在WebUI根目录的'textual_inversion_templates'文件夹。其中,'subject_filewords.txt'模板的内容是这样的。

我觉得很多内容是多余的,可能会影响训练的效果。于是把这个模板复制了一份,然后重命名一下。 删掉大部分内容,最后只保留"[name], [filewords]"。这里的"name"代表了embedding的名称,也就是"ajaj"。"filewords"代表了图像的标注。

假如说,我们在某一阶段的训练图是下面这张。它对应的标注是"looking at camera",看着镜头。

那么,根据模板,提示词就变成了"ajaj, looking at camera"。

于是,Diffusion 模型就根据这个提示词开始了训练。这个就是提示词模板的效果。

下面的宽度和高度不用改。

最大迭代步数

  • 含义:代表训练过程中模型迭代的最大次数。每一次迭代,模型都会尝试减少生成图像与目标图像之间的差异。
  • 设置建议:虽然默认值可能高达10万,但实际上设置为3000步往往就足以获得良好的训练结果。设置过高的迭代步数可能会导致模型过度拟合,例如使特定特征过于夸张。不过,设置的过高也不用担心。因为可以随时终止训练,之前的embedding都会被保存下来。最后选一个效果比较好的embedding就好了。

图像与Embedding的保存设置

  • 每N步保存图像:此参数允许模型每隔N步将生成的图像保存至日志目录,有助于监控训练进度和效果。如果你在训练的过程中,想要频繁的看这个图的效果,可以设置的小一些。
  • 每N步保存Embedding:与图像保存类似,此设置允许定期保存训练过程中的embedding状态,便于后续分析和选择最优模型。如果你追求最佳效果,可以把数值设置的小一些,这样可以多生成一些embedding的版本,从中选择一个最佳的。

训练速度优化选项

  • 使用PNG alpha通道作为损失权重:此选项可以加快训练速度,但可能需要对数据集进行额外的处理,并调整其他相关参数,因此一般不推荐勾选。

额外功能

  • 保存Embedding在PNG图像信息内:启用此功能将在训练过程中生成包含embedding信息的预览图,有助于追踪和管理训练状态。
  • 按逗号随机打乱标签:此选项通过随机打乱提示词中的标签顺序,有助于平衡各个词汇对生成图像的影响,提升模型质量。

采样器选择

  • 随机采样 vs 确定性采样:虽然官方推荐使用随机采样,社区中有提议使用确定性采样("deterministic"),这可能会对模型训练的稳定性和重现性有所帮助。

开始训练

一旦所有参数都设置好,点击"训练embedding"按钮即可开始训练过程。训练可以在任何时候暂停并重新开始,而且这种中断不会影响到训练的质量,因为训练的状态会被定期保存。这样的设计确保了训练的灵活性和可控性,允许研究者在训练过程中进行必要的调整以获得最佳结果。

开始训练以后,向上滚动。通过右边的预览区域,我们可以监测训练过程和进度。

刚开始可能跟Angelina不太像。到后面会越来越像。预览图看上去效果可能不太好,有时候还会出现崩坏的手和脚。这是因为它是用底模生成的,而且提示词里面没有提升质量的词,比如"best quality"等等。也没有负面提示词来减弱诸如手脚崩坏的问题。等我们用训练好的embedding和其他模型,比如realistic vision生成Angelina的图片,效果就会好很多。 当我们暂停训练或者训练已完成,就可以检查生成的embedding的效果了。Stable Diffusion 会在'text_inversion'文件夹内按照日期放置训练产生的数据。

日期文件夹里会按embedding的名称来组织文件。训练好的embedding会放在这个'embeddings'文件夹里面。 我之前设置了每N步生成一个embedding,所以这里可以看到已经生成了很多个embedding。这些embedding的名称里的数字就代表步数。我这里用的是服务器,形式上跟本地电脑不太一样,但文件夹的结构是一样的。

这么多embedding,我们如何得知哪个效果最好呢?可以把测试的embedding拷贝到WebUI根目录下的embeddings文件夹。接着,就可以在WebUI中生成这些embedding的对比图来对比它们的实际效果了。

其实,之前我已经展示了几张对比图,都是用我将要介绍的方法生成的。

如何评估和选择最佳的Embedding

在Text Inversion的训练过程中,可能会生成多个不同步数的embeddings。为了确定哪个embedding的效果最佳,我们可以通过在WebUI中生成和比较这些embeddings的对比图来进行评估。下面是如何执行这个评估过程的详细指南。

准备Embeddings

  1. 将要测试的embeddings拷贝到WebUI根目录下的embeddings文件夹中。
  2. 在WebUI中,选择一个合适的底模进行测试。你可以选择Realistic Vision或1.5的底模,这取决于你的训练配置和目标。

设置提示词进行测试

  1. 在提示词输入框中,输入要开始测试的embedding名称,例如"ajaj-500"。
  2. 其他提示词可根据需要添加,但负面提示词通常可以留空。
  3. 保持下面的设置为默认,这些通常不需要调整。

生成对比图表

  1. 滚动到"脚本"部分,从下拉列表中选择"XYZ图表"脚本。
  2. 对于X轴(横轴),选择"提示词搜索/替换",并在"X轴值"处输入不同步数下的embedding名称,例如"ajaj-500,ajaj-1000,ajaj-1500"等,用以测试不同步数的embedding效果。
  3. 对于Y轴(纵轴),也选择"提示词搜索/替换",并输入不同的发型描述词汇,如波浪卷发,直发等,用逗号分隔。
  4. 确保所有输入的值末尾没有逗号,以避免错误。

评估和选择

  • 生成的图表将展示不同步数的embedding与不同发型提示词组合的效果,使你能够直观地比较它们生成的Angelina的不同发型效果。
  • 通过对比这些图表,你可以评估哪个步数的embedding最接近你的期望效果。

实用提示

  • 测试过程可能需要一些时间,需要耐心等待图表的生成。
  • 除了发型,还可以测试其他维度,如不同的表情、场景等,以全面评估embedding的效果。
  • Text Inversion虽然是一种较为简单的训练方法,但通过细致的评估和选择,仍然可以获得满意的结果。

通过上述步骤,你可以有效地评估不同训练步数下的embeddings,从而选择出最佳的embedding进行进一步的应用。这种方法提供了一种直观的方式来比较不同embeddings的效果,帮助你做出更加明智的选择。

分享完毕,感谢阅读🤗 欢迎点赞,收藏

对AI绘图感兴趣的,欢迎加我微信vito_chat入群交流。

欢迎访问我的免费学习AI网站:

myaiforce.com.cn/

原文地址:

myaiforce.com.cn/text-invers...

相关推荐
AntBlack6 分钟前
Z-Image 发布了 ,赶紧体验了一把(配套 Modal执行脚本)
前端·后端·aigc
多恩Stone4 小时前
【ModelScope-1】数据集稀疏检出(Sparse Checkout)来下载指定目录
人工智能·python·算法·aigc
da_vinci_x7 小时前
Firefly + Sampler:不连节点,光速量产游戏 VFX 特效贴图
游戏·aigc·贴图·建模·游戏策划·游戏美术·pbr
程序员小灰9 小时前
谷歌AI模型Gemini 3.0 Pro,已经杀疯了!
人工智能·aigc·gemini
韩数10 小时前
小白也能看懂! 今年爆火的 MCP 协议究竟是什么?写给普通人的 MCP 指南
后端·aigc·mcp
穷人小水滴1 天前
科幻小说计划 (顾雪) (AIGC)
aigc·午夜话题·科幻
小溪彼岸1 天前
初识Qwen Code CLI
aigc
小溪彼岸1 天前
Gemini CLI可以使用Gemini 3 Pro了
aigc·gemini
小溪彼岸1 天前
Google 发布 Antigravity Agent编辑器
google·aigc
用户5191495848451 天前
Ash框架授权绕过漏洞分析:当绕过策略条件评估为真时
人工智能·aigc