Contents
前言
除了”上篇”中介绍的Diffusion Bee之外,还有另一个同样是免费的、适合在M系列mac上运行的本地AI图像生成工具:Draw Things。
Draw Things介绍及安装
软件简介
Draw Things是一款专为 macOS 和 Apple M 系列芯片优化的本地图像生成工具,同样支持 Stable Diffusion、ControlNet 和 LoRA 等多种模型。它功能丰富,包括文本生成图像、图像修复、参数调整等,适合需要自定义生成细节的用户。同时,它提供简洁的界面和内置模型管理功能,兼顾易用性与灵活性,是一款集高级功能与高性能于一体的多功能图像生成工具。
本文中涉及很多选项(如LoRA、ControlNet、强度、种子、步数、文本指导、采样器等)都是扩散模型(如Stable Diffusion)里的基本概念,简单解释如下:
- LoRA(Low-Rank Adaptation):一种轻量化模型微调方法,用于特定风格或任务的优化。
- ControlNet:扩散模型的扩展工具,可通过输入图像或其他条件(如边缘图)来控制生成结果。
- 强度(Strength):用于图像-图像生成,控制输入图像对最终生成结果的影响程度。
- 种子(Seed):控制随机性,固定种子可以重现相同结果。
- 步数(Steps):模型生成图像时迭代的次数,影响图像质量与生成时间。
- 文本指导(Text Guidance):通过文本提示影响生成结果。
- 采样器(Sampler):决定扩散过程的采样策略,如 Euler、DDIM 等,影响生成质量与风格。
详细的解释以及设置效果可以参考上篇的内容:家庭数据中心系列 Mac上免费的入门级本地AI图像生成工具(上篇):Diffusion Bee设置参数详解与实操演示。
Draw Things vs Diffusion Bee
以下从功能、易用性、性能、使用场景这几个方面对Draw Things和Diffusion Bee进行一个简单的对比:
- 功能比较
特性 | Draw Things | Diffusion Bee |
---|---|---|
支持模型 | 支持多种 SD 模型 | 支持多种 SD 模型 |
多模型切换 | 支持基础模型和扩展模型(ControlNet,LoRA),切换基础模型版本时无需重新加载 | 支持加载多达 3 个 LoRA 模型组合,改变基础模型版本需重新加载 |
工具扩展性 | 支持多种插件 | 无插件支持 |
生成模式 | 支持 txt2img, img2img 等生成模式 | 支持 txt2img, img2img 等生成模式 |
- 易用性比较
特性 | Draw Things | Diffusion Bee |
---|---|---|
界面设计 | 直观简洁 | 简洁但功能少 |
上手难度 | 灵活配置,稍需熟悉 | 简单配置,开箱即用 |
操作难度 | 较低 | 低 |
社区支持 | 活跃 | 有限 |
- 性能比较
特性 | Draw Things | Diffusion Bee |
---|---|---|
硬件需求 | 支持M系列芯片 | 支持M系列芯片 |
生成速度 | 快速 | 中等 |
内存占用 | 适中 | 低 |
稳定性 | 高 | 高 |
- 使用场景比较
特性 | Draw Things | Diffusion Bee |
---|---|---|
适合新手 | 是 | 是 |
适合深度用户 | 是 | 否 |
推荐场景 | 高需求的生成任务 | 基础生成任务 |
对比总结: Diffusion Bee更强调一键生成体验,但灵活性较低,适合完全没有技术基础的新手用户;Draw Things的默认配置更适合有一定技术基础的新手和进阶用户,保留了一定的灵活性。因此,作为”入门级本地AI图像生成工具”的下篇,Draw Things可以视为Diffusion Bee的进阶版。
安装
Draw Things的官网地址如下:https://drawthings.ai/,要安装APP直接在Mac的App Store里搜索”Draw Thing”进行安装即可(也可以直接从以下链接进行安装:App Store链接)。同时,Draw Things相比Diffusion Bee有另一个优势,就是除了Mac版之外,还有Iphone版和Ipad版(这也是下文中会讲到的Draw Things为什么会有”服务器协助”这个功能的一个原因):
Draw Things实操
初始化
和Diffusion Bee类似,开始正式使用Draw Things之前的第一步,都是需要下载一个基础模型,不同的是,Diffusion Bee有一个默认推荐的基础模型:”Default_SDB_0.1″(对应Stable Diffusion的核心版本是”Stable Diffusion v1.5″),而Draw Things需要自行选择:
开始下载模型(有4个ckpt格式的文件,总大小接近5G):
设置
Draw Things的设置部分是生成图像的核心,如果只是生成类需求,设置中”基本”模式下的选项就能覆盖:
然后看看使用”基本”模式”下的默认参数+默认提示词的效果的生成效果:
右下方的画布区域下方是工具栏,各个按钮的说明如下:
在插入图片的图标上点右键有更多的选项:
注1:上面的这些图片里左侧红框中出现的选项,都是在””基本”模式时出现的选项,如果选择”高级”,选项会变成一些高级功能的开关(比如图像生成图像、放大器等);如果选择”全部”,就是同时包含了”基本”和”高级”中的所有选项(类似于Diffusion Bee中的”高级选项”)。不过一来,这些选项基本都在上篇中详细解释过,二来,在Draw Things中这些选项都有中文解释,有一定基础的朋友其实看看也能明白是什么意思,所以我在本文中就不浪费口水来解释了(Diffusion Bee中的选项说明都是英文~)。
注2:在Diffusion Bee中,各个功能是分开,比如”文字生成图像”、”图像生成图像”、”修复”、”放大器”等,而在Draw Things中,这些功能都是以选项的方式出现,比如图像生成图像是在强度选项中:
放大器(提升照片分辨率)功能是在”高级”模式中的放大器选项:
从这些差异可以看出,Draw Things和Draw Things这两个软件在使用理念上还是有差别的,Diffusion Bee更适合零基础的新人(各个功能分开,一目了然),而Draw Things就适合对扩散模型有一定了解的朋友。对我而言,我明显更喜欢Draw Things。
注3:Diffusion Bee和Draw Things,理论上都可以支持中文提示词,只不过嘛,需要你下载的模型经过中文内容的训练,所以具体能不能支持要看你下载的基础模型了,我反正下载的都是不支持中文提示词的,需要翻译成英文。
注4:本文主要是介绍Draw Things的界面及功能以及相对Diffusion Bee来说的较大的差异,至于针对不同参数设置而导致生成图片的效果的影响本文中就不涉及了,大家有需要可以自行尝试,或者可以参考上篇中Diffusion Bee类似操作的示例。
脚本
在Draw Things中,脚本部分主要用于扩展和自定义生成过程(Diffusion Bee没有这个功能)。它为用户提供了一种除了调整设置选项之外的另一种的方式来调整生成细节、添加额外效果或实现高级的生成任务。
以预设的脚本为例:
其实和”设置”-“基本”-“强度”-“图像到图像”选项效果是一样的:
这时候用哪种方式效果都一样。但是更多的时候,一个脚本里就包含了多种选项联合设置的效果,例如社区脚本提供的功能:
以第一个”Flux Auto Workflow”为例:
从上图脚本开头的注释可以看出,该脚本集成了文字生成图像、批量处理、随机提示词生成、扩展画布等多种功能,优化了 Flux 和其他流行模型的参数使用,同时提供了灵活的性能和模式选择,自动化程度很高,具体来说,主要包括以下几点:
1. 支持多种生成任务
• 文字生成图像(Text-to-Image):基础生成任务。
• 批量图像优化(Batch Image Refine):可以对一组图像进行批量优化和细化处理。
• 扩展画布(Outpainting):支持对已有图像进行外延扩展,生成更大的画布内容。
• 批量提示词处理(Batch Prompts):可以同时处理多个提示词,生成对应的多张图片。
• 随机提示词(Random Prompt):内置随机提示词引擎,可自动生成高质量的提示词,还支持根据用户偏好进行定制。
2. 支持多模型及自动化优化
• 专为 Flux 模型设计:需要同时使用两个模型(Flux Dev 8-bit 和 Dev to Schnell LoRA),并会根据精度优先级自动选择最适合的模型。
• 兼容其他流行模型:支持自动设置参数,适配包括 DreamShaper Turbo、Kolors、SDXL、SD3、Schnell 等在内的常见模型。
3. 性能优化与多模式选择
• 提供三种不同的性能模式,包含优化参数,适合不同需求(例如性能优先、效果优先等)。
• 尤其适合初学者,简化了生成过程中的参数调整。
4. 灵活的工作流与模式切换
• 支持多种工作流和生成模式,可实现不同的图像生成效果。
• 允许用户在不同模式之间自由切换,以满足具体的创作需求。
从上面这些描述可以看出,通过脚本能够提供更高的灵活性,能实现动态调整、批量处理和多阶段生成等自动化操作,适合复杂或高效需求,仅仅靠自己手动调整选项很难实现这些功能。
对于初级用户而言,可以通过脚本快速实现组合设置多个功能选项的效果:如果任务需要反复调整多个参数或执行多步操作(例如逐步调整噪声强度),手动操作会变得非常繁琐;对于高级用户而言,如果Draw Things引入了新的算法或模型功能,但默认界面不支持时,脚本可以提供接口来调用这些功能,让用户能尝试新特性。
所以,不管是对于初级用户还是高级用户,脚本功能都可以大大提升工作效率,该功能也是Draw Things相比Diffusion Bee来说是”进阶版”的主要原因之一。
PEFT
PEFT(Parameter-Efficient Fine-Tuning) 模块是Draw Things中专门用于管理和应用轻量化微调模型的功能模块,其主要作用是通过高效加载和动态调整 LoRA(Low-Rank Adaptation)等微调技术,帮助用户实现风格定制、领域迁移等高级生成效果(下图红框中选项很多,我就不一一截屏了):
与”设置”-“基础”中的 LoRA 配置相比,PEFT 提供了更深入的管理能力,包括自动优化模型兼容性、多 LoRA 模型叠加、动态参数调整,以及对其他 PEFT 技术(如 P-Tuning 或 Adapter)扩展的支持。它还能与脚本和批量生成功能深度集成,为复杂创作流程提供更大的灵活性和效率,是用户进行个性化图像生成和高级操作的核心工具。
在 Draw Things 中,”设置”选项中的 “LoRA 配置” 和 “PEFT 模块”, 虽然都涉及 LoRA 的加载和使用,但它们的用途和功能范围有所不同,主要体现在”管理深度”和”灵活性”。以下是两者的区别和联系:
1. 设置中的 LoRA 配置
• 作用范围:设置中的 LoRA 配置主要用于快速加载和调整一个或多个 LoRA 模型,以便在生成过程中直接应用。
• 使用方式:在“基本”选项中,可以手动选择多个 LoRA 模型并指定它们的权重(影响程度);适合简单场景,例如叠加多个 LoRA 模型生成特定风格的图像。
• 灵活性:参数调整相对基础,主要关注强度(权重)和模型加载顺序,适合不需要复杂操作的用户。
2. PEFT 模块的功能
PEFT 模块提供了更高级和精细的 LoRA 管理功能,与“设置”中的 LoRA 配置相比,它的侧重点和能力更强大:
• 高级管理功能:自动优化加载:PEFT 模块会针对不同 LoRA 模型执行适配性优化,确保模型间的兼容性和性能;模型动态调整:可以在生成过程中动态切换、叠加、甚至对 LoRA 的不同参数层进行单独控制。
• 支持更多 PEFT 技术:PEFT 不仅限于 LoRA,还可能支持其他轻量化微调技术(如 P-Tuning、Adapter 等),扩展了用户可用的工具集。
• 工作流集成:PEFT 模块可能与脚本或其他模块(如批量生成)更紧密集成,可以在复杂工作流中灵活调用。
3. 核心区别
功能 | 设置中的 LoRA 配置 | PEFT 模块 |
---|---|---|
使用场景 | 快速加载并应用 LoRA | 高级管理、动态调整、多种轻量化模型支持 |
支持技术 | 主要针对 LoRA | 扩展支持 PEFT 的其他技术 |
复杂度 | 基础功能,简单易用 | 更强大的功能,适合高级用户 |
动态控制 | 基本参数调整 | 支持生成过程中的动态切换和优化 |
与工作流集成 | 独立操作,与其他功能关联较少 | 可以与脚本、批量生成等功能深度集成 |
如果你只是需要快速加载一个或几个 LoRA 模型并调整其影响权重,“设置”中的 LoRA 配置已经足够。但如果你需要对 LoRA 进行更精细的管理(如动态切换、参数优化)或者希望探索更广泛的轻量化微调技术,PEFT 模块提供了更高的灵活性和功能性。它更适合需要复杂生成效果和流程控制的用户。
注:关于LoRA的实操我在”上篇”中也用专门的篇幅介绍过,也包括LoRA模型如何下载,感兴趣的朋友可以参看”上篇”中的说明,本文中就不多讲了。
服务器协助
功能简介
Draw Things 的”服务器协助”功能允许用户通过启用”gRPC API”服务,将图像生成任务分配到同一网络中的其他设备(如具有更强算力的计算机)运行,从而加速处理过程,同时降低主设备的资源占用和发热问题。这种方式支持本地与远程计算协同,保持数据隐私的同时显著提升性能,适用于高分辨率图像生成和多任务协作等场景:
什么是gRPC:gRPC 是一种高性能的远程过程调用(Remote Procedure Call, RPC)框架,广泛用于跨语言、跨平台的服务通信。它使用 Protocol Buffers(protobuf)作为接口定义语言和数据序列化协议,具有速度快、效率高的特点。
而在 “Draw Things” 中的 gRPC API 服务,可以理解为通过 gRPC 将计算任务分布到局域网中的其他设备,从而利用其计算资源(如更强大的 GPU),加速图像生成任务。
功能特点与优势
服务器协助功能的特点
- 本地与远程计算结合
• 在主设备(如 iPhone 或 iPad)上运行应用程序时,可以将计算任务部分或全部委托给同一网络中的远程计算机(文章前面提到过,Draw Things可是同时支持MAC、iPhone、iPad部署的)。
• 避免主设备因算力不足而影响性能或发热。
- gRPC API 服务
• 利用 gRPC(远程过程调用框架),与远程计算设备高效通信。
• 远程设备需要运行专门支持 gRPC API 的服务端程序,该程序能够处理图像生成任务并返回结果。
- 跨设备协同
• 支持在局域网内多设备协同工作,例如主设备用于控制界面和部分轻量计算,远程设备专注于重负载任务(如模型推理)。
- 开源与灵活
• Draw Things 使用开放标准,使其能够与社区维护的服务端程序无缝对接。
服务器协助的优势
- 性能提升
• 使用高性能的远程 GPU,加快复杂任务的推理速度。
• 减少主设备的资源消耗。
- 灵活性
• 可以随时切换任务的执行位置,适应不同的使用场景。
- 本地隐私
• 与完全云端解决方案相比,服务器协助功能仍然保持本地运行,不会上传敏感数据到公共云。
可能的使用场景:
• 高分辨率图像生成:手机算力有限,使用桌面级 GPU 加速生成大尺寸图像。
• 多任务协作:同时运行多个任务,将部分任务分配到远程设备。
• 节能与发热管理:降低主设备的负载,避免设备过热。
注意事项:
- 模型兼容性:确保主设备和远程设备使用兼容的 Stable Diffusion 模型版本。
- 网络稳定性:服务器协助功能对网络延迟敏感,建议在高带宽、低延迟的局域网环境中使用。
- 服务器配置要求:远程设备需要具有足够的计算能力(如 NVIDIA GPU 和相应驱动支持)。
如何启用 Draw Things 的服务器协助功能
以下是设置和使用的简要步骤:
1. 在远程设备上启用 gRPC 服务
• 确保远程设备上安装了支持 Stable Diffusion 模型的服务端(如 diffusers 或其他基于 PyTorch 的实现)。
• 安装所需依赖:
pip install grpcio protobuf diffusers
• 启动 gRPC API 服务端。例如,运行一个示例服务程序,用于处理图像生成请求。
2. 配置 Draw Things 客户端
• 在主设备的 Draw Things 设置中,找到 服务器协助 选项。
• 输入远程设备的 IP 地址和端口(确保两台设备处于同一网络中)。
• 测试连接,确保客户端能够正常访问远程服务器。
3. 开始生成任务
• 在 Draw Things 中选择使用服务器协助模式。
• 图像生成任务会被分配到远程设备进行处理,处理结果返回主设备。
4. 网络和防火墙设置
• 确保远程设备的防火墙允许指定端口的通信。
• 如果无法连接,检查网络设置是否支持设备间的直接通信。
注:以上只是简要步骤,实际上可没这么简单,等我以后专门用一篇文章来详细讲述。
附加知识:支持类似”服务器协助”功能的AI应用
这类 AI 应用,主要集中在需要大量计算资源的领域,如深度学习推理、训练任务和生成式 AI 应用,这类应用通常允许用户通过局域网或互联网利用远程设备的算力进行分布式计算。
以下是一些具有类似功能的应用和工具,这些应用和工具与 Draw Things 的“服务器协助”功能类似,都能将高负载计算任务分离到远程设备运行,为用户提供更高效的算力使用方式,同时保留一定的本地控制和数据隐私:
1. Stable Diffusion 相关工具
Automatic1111 WebUI
• 特点:支持通过 Web 界面连接远程服务器,利用服务器的 GPU 运行 Stable Diffusion 推理。
• 实现:用户可以设置 WebUI 的 API 服务,或者通过 SD API 接口调用远程设备资源。
• 使用场景:在轻量设备(如笔记本)上进行模型的推理和控制,但将实际计算转移到远程服务器。
ComfyUI
• 特点:模块化的图像生成界面,支持分布式部署,通过 WebSocket 或 API 控制远程推理节点。
• 实现:可连接多台设备,分配不同任务(如处理、合成等)到远程节点。
2. 文本生成应用
Oobabooga Text Generation WebUI
• 特点:用于运行大型语言模型(如 LLaMA、GPT-J 等),支持设置远程服务器作为推理设备。
• 实现:通过 server.py 启动本地或远程推理服务,用户的前端界面可连接至这些服务。
• 使用场景:用户在普通设备上访问模型,但计算由远程 GPU 或 TPU 执行。
3. 视频生成与编辑
Runway ML
• 特点:支持基于 Stable Diffusion 的视频生成和编辑任务,部分场景下支持连接自定义远程推理服务器。
• 实现:用户可以通过 Runway 提供的 API,将推理部分部署到云端或局域网内的服务器。
• 使用场景:在本地轻量设备上执行视频剪辑和预览,复杂计算(如风格化渲染)交由远程 GPU 完成。
4. AI 辅助绘画与三维建模
Blender (AI 加速插件)
• 特点:通过插件(如 Dream Textures),支持将 Stable Diffusion 集成到 Blender 中进行纹理生成,允许连接远程服务器处理高性能任务。
• 实现:用户可以设置远程计算节点,与本地 Blender 软件协同工作。
• 使用场景:在本地设备上操作建模任务,将复杂的纹理生成或高分辨率渲染交由远程服务器。
5. 分布式深度学习训练
Ray Serve
• 特点:Ray 是一个分布式计算框架,支持将 AI 推理任务部署到多台机器。
• 实现:通过 Ray Serve,可以轻松实现分布式推理或训练任务,自动分配负载。
• 使用场景:需要在多台设备上同时运行 AI 模型,例如实时推荐系统或大规模并行推理。
TensorFlow Serving 和 PyTorch Serve
• 特点:支持将 AI 模型以 API 服务形式部署,允许局域网或互联网中的客户端调用。
• 实现:可配置多实例服务,提供负载均衡和分布式推理能力。
• 使用场景:远程调用 AI 模型执行预测任务,适合开发者和企业级应用。
6. 其他生成式 AI 应用
DeepFaceLab
• 特点:一个用于面部替换的工具,支持将计算密集型任务(如模型训练或视频处理)分布到多台设备。
• 实现:通过设置远程推理节点,加速面部换脸过程。
• 使用场景:在普通电脑上处理视频素材,将重负载计算交给远程服务器。
DreamBooth Training Tools
• 特点:支持将 DreamBooth 模型的训练和生成任务分布到远程设备。
• 实现:通过局域网或云服务调用高性能设备执行自定义模型训练。
7. 云端与本地协同工具
NVIDIA Omniverse
• 特点:一个实时协作的 3D 设计平台,支持通过 NVIDIA GPU 加速 AI 和渲染任务,并支持远程计算协同。
• 实现:用户可以在轻量设备上操作模型设计,利用远程 GPU 进行实时计算和渲染。
Hugging Face Inference API
• 特点:提供云端 AI 推理服务,允许用户通过 API 调用模型,并可以结合本地处理。
• 实现:在本地进行数据预处理和管理,复杂任务发送至云端执行。
后话
本文的重点并不在于详细讲解如何使用 Draw Things 生成 AI 图像,因为像这类 AI 图像生成工具,无论是对初学者友好的 Diffusion Bee,还是功能更全面的 Draw Things,”能用”是一回事,但要想真正的”用好”,需要用户具备一定的知识储备并进行大量实践:从理解扩散模型的基本原理,到熟悉各类参数(如采样步骤、CFG Scale 等),再到选择合适的基础模型、LoRA 等辅助模型,以及探索提示词和参数组合的最佳搭配,这些都需要时间积累和试错过程。这些内容不仅超出了本文的篇幅范围,也需要远比一篇文章更系统的学习和总结(我自己也只是刚刚入门的初学者,很多知识和经验都需要慢慢学习和积累)。
我写这篇文章的真正目的,是希望从”工具特性和使用思路”的角度出发,阐明为什么说 Draw Things 相较于 Diffusion Bee 是一款”进阶版”工具,并通过介绍它的功能特点(如脚本、PEFT、服务器协助等),帮助有一定基础的朋友可以快速上手,从而更快更高效地发挥其能力,省去不少学习摸索的时间。
对于有心深入研究生成式 AI 图像创作的朋友,这篇文章希望能成为你入门Draw Things的第一步,为后续更深入的探索提供一个更高的起点。