借助 MediaPipe Image Generator 任务,您可以根据文本提示生成图片。此任务使用文本转图片模型通过扩散技术生成图片。
该任务接受文本提示作为输入,以及模型可以扩充并用作生成参考的可选条件图片。如需详细了解条件文本转图像生成,请参阅用于条件文本转图像生成的设备端扩散插件。
图片生成器还可以根据训练或重新训练期间提供给模型的特定概念生成图片。如需了解详情,请参阅使用 LoRA 进行自定义。
开始使用
请按照以下适用于目标平台的实现指南之一,开始使用此任务。以下特定于平台的指南将引导您完成此任务的基本实现,并提供使用默认模型和建议的配置选项的代码示例:
任务详情
本部分介绍此任务的功能、输入、输出和配置选项。
功能
您可以使用图片生成器实现以下功能:
- 根据文字生成图片 - 根据文字提示生成图片。
- 使用条件图片生成图片 - 使用文本提示和参考图片生成图片。图片生成器使用条件图像的方式与 ControlNet 类似。
- 使用 LoRA 权重生成图片 - 使用自定义模型权重,通过文本提示生成特定人物、物体和风格的图片。
任务输入 | 任务输出 |
---|---|
图片生成器接受以下输入内容:
|
图片生成器会输出以下结果:
|
配置选项
此任务具有以下配置选项:
选项名称 | 说明 | 值范围 |
---|---|---|
imageGeneratorModelDirectory |
存储模型权重的图片生成器模型目录。 | PATH |
loraWeightsFilePath |
设置 LoRA 权重文件的路径。可选,仅在模型通过 LoRA 进行自定义时适用。 | PATH |
errorListener |
设置可选的错误监听器。 | N/A |
该任务还支持插件模型,让用户可以在任务输入中添加条件图片,基础模型可以扩充这些图片并将其用作生成参考。这些条件图片可以是面部地标、边缘轮廓和深度估计值,模型会将其用作额外的上下文和信息来生成图片。
向基础模型添加插件模型时,还要配置插件选项。人脸地标插件使用 faceConditionOptions
,Canny 边缘插件使用 edgeConditionOptions
,深度插件使用 depthConditionOptions
。
Canny 边缘检测选项
在 edgeConditionOptions
中配置以下选项。
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
threshold1 |
滞后过程的第一个阈值。 | Float |
100 |
threshold2 |
滞后过程的第二个阈值。 | Float |
200 |
apertureSize |
Sobel 算子的孔径大小。典型范围为 3-7。 | Integer |
3 |
l2Gradient |
是否使用 L2 范数(而非默认的 L1 范数)来计算图像梯度幅度。 | BOOLEAN |
False |
EdgePluginModelBaseOptions |
用于设置插件模型路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
如需详细了解这些配置选项的运作方式,请参阅 Canny 边缘检测器。
人脸特征点选项
在 faceConditionOptions
中配置以下选项。
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
minFaceDetectionConfidence |
人脸检测被视为成功所需的最低置信度得分。 | Float [0.0,1.0] |
0.5 |
minFacePresenceConfidence |
人脸标志检测中人脸存在置信度分数的最小值。 | Float [0.0,1.0] |
0.5 |
faceModelBaseOptions |
用于设置创建条件图片的模型的路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
FacePluginModelBaseOptions |
用于设置插件模型路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
如需详细了解这些配置选项的运作方式,请参阅 Face Landmarker 任务。
深度选项
在 depthConditionOptions
中配置以下选项。
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
depthModelBaseOptions |
用于设置创建条件图片的模型的路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
depthPluginModelBaseOptions |
用于设置插件模型路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
模型
图片生成器需要一个基础模型,这是一个文本转图片 AI 模型,它使用扩散技术来生成新图片。本部分列出的基础模型是经过优化、可在高端智能手机上运行的轻量级模型。
插件模型是可选的,可作为基础模型的补充,让用户能够提供额外的条件图片以及文本提示,从而生成更具体的图片。使用 LoRA 权重自定义基础模型是一种可行的方案,该方案可让基础模型学习特定概念(例如对象、人物或风格),并将这些概念注入到生成的图片中。
基础模型
基础模型是潜在文本转图片扩散模型,可根据文本提示生成图片。图片生成器要求基础模型与 stable-diffusion-v1-5/stable-diffusion-v1-5 EMA-only
模型格式相匹配,具体基于以下模型:
以下基础模型也与图片生成器兼容:
下载基础模型后,使用 image_generator_converter 将模型转换为适合图片生成器的设备端格式。
安装必要的依赖项:
$ pip install torch typing_extensions numpy Pillow requests pytorch_lightning absl-py
运行 convert.py
脚本:
$ python3 convert.py --ckpt_path <ckpt_path> --output_path <output_path>
插件模型
本部分中的插件模型由 Google 开发,必须与基础模型搭配使用。插件模型使图片生成器能够接受条件图片和文本提示作为输入,从而让您控制生成的图片结构。插件模型提供的功能与 ControlNet 类似,但采用了一种专门用于设备端扩散的新颖架构。
插件模型必须在基本选项中指定,并且可能需要您下载其他模型文件。每个插件对条件图片都有独特的要求,这些图片可由图片生成器生成。
Canny Edge 插件
Canny Edge 插件接受一个条件图片,该图片会勾勒出生成图片的预期边缘。基础模型使用条件图片隐含的边缘,并根据文本提示生成新图片。图片生成器包含用于创建条件图片的内置功能,只需下载插件模型即可。
Canny Edge 插件包含以下配置选项:
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
threshold1 |
滞后过程的第一个阈值。 | Float |
100 |
threshold2 |
滞后过程的第二个阈值。 | Float |
200 |
apertureSize |
Sobel 算子的孔径大小。典型范围为 3-7。 | Integer |
3 |
l2Gradient |
是否使用 L2 范数(而非默认的 L1 范数)来计算图像梯度幅度。 | BOOLEAN |
False |
EdgePluginModelBaseOptions |
用于设置插件模型路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
如需详细了解这些配置选项的运作方式,请参阅 Canny 边缘检测器。
人脸特征点插件
Face Landmark 插件接受 MediaPipe Face Landmarker 的输出作为条件图片。Face Landmarker 可提供单张人脸的详细人脸网格,用于映射面部特征的存在情况和位置。基础模型使用条件图片所隐含的面部映射,并在网格上生成新面孔。
Face landmark 插件还需要 Face Landmarker 模型软件包来创建条件图片。此模型软件包与 Face Landmarker 任务使用的软件包相同。
Face Landmark 插件包含以下配置选项:
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
minFaceDetectionConfidence |
人脸检测被视为成功所需的最低置信度得分。 | Float [0.0,1.0] |
0.5 |
minFacePresenceConfidence |
人脸标志检测中人脸存在置信度分数的最小值。 | Float [0.0,1.0] |
0.5 |
faceModelBaseOptions |
用于设置创建条件图片的模型的路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
FacePluginModelBaseOptions |
用于设置插件模型路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
如需详细了解这些配置选项的运作方式,请参阅 Face Landmarker 任务。
深度插件
深度插件接受指定对象单目深度的条件图片。基础模型使用条件图片来推断要生成的对象的大小和深度,并根据文本提示生成新图片。
深度插件还需要深度估计模型来创建条件图片。
深度插件包含以下配置选项:
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
depthModelBaseOptions |
用于设置创建条件图片的模型的路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
depthPluginModelBaseOptions |
用于设置插件模型路径的 BaseOptions 对象。 |
BaseOptions 对象 |
N/A |
使用 LoRA 进行自定义
使用 LoRA 自定义模型可让图片生成器根据特定概念生成图片,这些概念在训练期间通过唯一令牌进行识别。在训练后获得新的 LoRA 权重后,当文本提示中指定了相应 token 时,模型能够生成新概念的图片。
创建 LoRA 权重需要使用特定对象、人物或风格的图片来训练基础模型,这样模型才能识别新概念并在生成图片时应用该概念。如果您要创建 LoRa 权重来生成特定人物和面孔的图片,请仅输入您自己的脸部信息,如果要输入其他人的脸部信息,则必须先获得对方的许可。
以下是使用 DreamBooth 数据集中茶壶的图片训练的自定义模型的输出,使用的令牌为“monadikos teapot”:
提示:镜子旁边的 monadikos 茶壶
自定义模型在提示中收到了令牌,并注入了它从 LoRA 权重中学会描绘的茶壶,然后按照提示中的要求将其放置在图片中的镜子旁边。
如需了解详情,请参阅自定义指南,该指南使用 Vertex AI 上的 Model Garden 通过将 LoRA 权重应用于基础模型来自定义模型。