三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

本地部署AI绘画去AI感:Stable Diffusion手绘风格工作流实战

本地部署AI绘画去AI感:Stable Diffusion手绘风格工作流实战

这次我们来看一个很有意思的话题:如何让你的AI绘画作品“更像人画”,从而避免被轻易质疑。随着AI绘画工具的普及,生成图像的“AI感”越来越容易被识别,这有时会带来不必要的争议。本文不讨论任何规避版权或欺骗行为,而是从技术角度探讨,如何通过一系列本地部署的、可控的AI工具和工作流程,生成更具“手绘感”、“画质感”和“人性化瑕疵”的图像,以满足特定艺术风格或项目需求。

我们将重点关注几个核心方向:使用特定模型和LoRA来模拟传统绘画笔触;通过ControlNet精确控制构图和线条,减少AI常见的结构模糊;利用高清修复(Hires.fix)和后期处理增加细节和噪点;以及最重要的——建立一套可重复的本地工作流,让你能稳定产出风格统一且“AI痕迹”较弱的作品。整个过程将围绕Stable Diffusion WebUI或ComfyUI这类开源平台展开,强调对生成过程的深度控制。

如果你关心如何在本地显卡上运行这些流程,控制显存占用,并实现批量化风格化处理,那么这篇文章会提供一套完整的思路和实操验证步骤。

1. 核心能力速览:打造“非AI感”图像的技术工具箱

要实现“减少AI感”的目标,不能依赖单一模型,而需要一套组合技。下表梳理了关键的技术组件及其作用:

能力项说明与推荐工具
核心生成模型选择擅长特定艺术风格的Checkpoint,如DreamShaper(通用厚涂)、MajicMix Realistic(真实感)、Counterfeit-V3.0(动漫风格)。避免使用过于“完美”或风格过于突出的模型。
风格控制使用LoRA(低秩适应)模型微调风格。例如,“add_detail”类LoRA可增加细节,“Watercolor_style”等LoRA可模拟水彩、油画等传统媒介笔触。
构图与线条控制必须使用ControlNetcanny(边缘检测)和scribble(涂鸦)用于约束线稿;openpose用于控制人物姿态;depth用于控制景深,避免平面化。
细节与画质增强高清修复(Hires. fix)是核心,配合超分辨率模型如4x-UltraSharp。后期可使用附加功能中的放大脚本,或导入Photoshop进行人工噪点、纹理叠加。
提示词策略加入“traditional painting”, “brush strokes”, “canvas texture”, “imperfect”, “asymmetrical”, “grainy”等关键词。避免“perfect”, “8k”, “CGI”, “trending on artstation”等增强“数字感”的词。
采样与迭代使用Euler aDPM++ 2M Karras等采样器,适当降低采样步数(20-30),并引入一定的噪声强度,让画面有“绘制过程”的随机性。
硬件与部署本地部署Stable Diffusion WebUIComfyUI。显存需求取决于模型分辨率,建议8G及以上显存可流畅运行大部分流程。支持CPU推理但极慢。
批量处理能力WebUI支持文生图/图生图批量处理。ComfyUI可通过队列或自定义脚本实现更复杂的批量工作流,适合生成系列作品。
适合场景概念艺术草图、插画风格定调、需要“手绘感”的商业项目、个人艺术创作避免同质化。

2. 适用场景与使用边界

适合谁用?

  • 数字艺术家/插画师:希望将AI作为灵感辅助或底稿工具,但最终作品需保留强烈个人手绘风格。
  • 独立游戏开发者:需要快速生成大量具有统一手绘风格的角色、场景素材,且预算有限。
  • 内容创作者:为视频、文章制作配图,希望图片风格独特、避免常见的AI生成痕迹。
  • 技术爱好者:对Stable Diffusion等开源模型有研究兴趣,希望深入探索图像生成的可控性。

能解决什么问题?

  1. 风格化输出:将AI的“数字渲染感”转化为模拟传统绘画的“材质感”和“笔触感”。
  2. 构图可控:通过ControlNet锁定线稿和姿态,使生成结果更符合预设构图,减少AI自由发挥带来的结构扭曲。
  3. 批次一致性:生成一个系列的作品时,能保持相对稳定的风格和画质,便于项目应用。
  4. 效率与质量平衡:在获得较高艺术质量的同时,相比纯手绘大幅提升产出效率。

需要警惕的边界:

  • 版权与原创性:即使使用了“去AI感”技术,生成图像的版权归属依然复杂。用于商业用途时,务必了解模型训练数据的版权协议,并考虑进行足够的二次创作。绝不能直接声称AI生成作品为纯手绘原创
  • 技术并非万能:目前技术无法完全模拟顶尖人类画师的笔触逻辑和情感表达。它更适用于风格模仿和效率提升,而非替代创造性思维。
  • 隐私与伦理:生成内容,尤其是涉及真实人物肖像时,必须获得授权。禁止制作虚假、误导或有害内容。

3. 环境准备与前置条件

在开始之前,请确保你的本地环境满足以下基础要求。我们将以Stable Diffusion WebUI (Automatic1111)为主要操作界面进行说明,其原理同样适用于ComfyUI。

  1. 操作系统:Windows 10/11,或 Linux(Ubuntu 20.04+)。macOS(M系列芯片)也可运行,但生态和性能优化略逊于前两者。
  2. Python:版本 3.10.6 到 3.10.11 之间。这是WebUI最兼容的版本范围。
  3. Git:用于克隆WebUI仓库。
  4. 显卡驱动:NVIDIA显卡用户确保已安装最新版CUDA驱动。可通过nvidia-smi命令查看驱动版本和CUDA版本。
  5. 磁盘空间:至少准备20-30GB可用空间。用于存放基础WebUI、模型文件(每个基础模型约2-7GB)、LoRA、ControlNet模型等。
  6. 网络环境:需要能访问GitHub、Hugging Face等网站,以下载代码和模型。

硬件建议:

  • 入门/体验:GTX 1660 6G / RTX 2060 6G。可运行512x512分辨率的基础生成,开启ControlNet或高清修复时会比较吃力。
  • 流畅运行:RTX 3060 12G / RTX 4060 Ti 16G。这是性价比之选,能在768x768分辨率下流畅运行包含1-2个ControlNet的复杂流程。
  • 高效生产:RTX 4070 Ti SUPER 16G / RTX 4080 16G+。可轻松进行1024x1024及以上分辨率的高清修复和批量生成。

4. 安装部署与启动方式

我们将使用最普及的Stable Diffusion WebUI作为操作平台。

步骤一:获取WebUI打开命令行(Windows PowerShell或CMD),导航到你希望安装的目录,执行以下命令:

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui

步骤二:运行启动脚本

  • Windows用户:直接双击目录内的webui-user.bat文件。脚本会自动创建Python虚拟环境并安装依赖。
  • Linux/macOS用户:在终端中执行./webui.sh

首次运行注意事项:

  1. 脚本会下载约2-3GB的依赖包,请保持网络通畅。
  2. 可能会提示安装torchxformers,通常脚本会自动处理。
  3. 一切顺利的话,最后会输出类似Running on local URL: http://127.0.0.1:7860的信息。

步骤三:访问WebUI打开浏览器,访问http://127.0.0.1:7860,你将看到WebUI的主界面。

步骤四:下载必要模型

  1. 基础模型(Checkpoint):前往C站(civitai.com)或Hugging Face,下载一个适合的模型,例如dreamshaper_8.safetensors。将其放入stable-diffusion-webui/models/Stable-diffusion/目录。
  2. ControlNet模型:在WebUI的“Extensions”标签页中,安装“Available”里的sd-webui-controlnet扩展,重启WebUI。然后在stable-diffusion-webui/extensions/sd-webui-controlnet/models/目录下,放入你需要的ControlNet模型文件(如control_v11p_sd15_canny.pth)。
  3. LoRA模型:将下载的.safetensors格式LoRA文件放入stable-diffusion-webui/models/Lora/目录。

重启WebUI后,即可在相应下拉菜单中看到新加入的模型。

5. 功能测试与效果验证:构建“手绘感”工作流

接下来,我们通过一个完整的案例,测试如何生成一张“像手绘”的风景画。

5.1 测试一:基础文生图与风格LoRA

测试目的:验证基础模型结合风格LoRA能否产生笔触感。

  1. 选择模型:在左上角选择dreamshaper_8.safetensors
  2. 输入提示词
    (masterpiece, best quality), 1girl, solo, standing in a sunflower field, wearing a straw hat, summer dress, gentle smile, looking at viewer, traditional painting, oil on canvas, visible brush strokes, textured, grainy, warm sunlight, golden hour Negative prompt: (worst quality, low quality:1.4), signature, watermark, username, text, error, blurry, jpeg artifacts, cropped, 3d, cgi, render, digital art, perfect, smooth
    注意正向提示词中加入了traditional painting,oil on canvas,visible brush strokes,textured,grainy。负向提示词排除了digital art,perfect,smooth等。
  3. 参数设置
    • 采样方法:Euler a
    • 采样步数:25
    • 图片宽度/高度:512x768(竖构图)
    • 提示词引导系数(CFG Scale):7
  4. 启用LoRA:点击生成按钮下方的“Show extra networks”图标(卡片状),切换到Lora标签页。点击一个风格化LoRA,如oil_painting_style(假设已下载),它会以<lora:oil_painting_style:1>的形式加入提示词。
  5. 生成并观察:点击“Generate”。观察输出图像是否具有油画笔触和画布纹理,而非光滑的数字渲染感。

5.2 测试二:引入ControlNet锁定构图

测试目的:避免AI自由构图导致的结构失真,让画面更“刻意”像草图。

  1. 准备线稿:找一张简单的风景素描图,或自己在绘图软件中画一个简单的房子、树、山的线条草图,保存为sketch.jpg
  2. 展开ControlNet:在WebUI中向下滚动,展开“ControlNet”折叠面板。
  3. 上传并设置
    • 在Unit 0中,上传sketch.jpg
    • 勾选“Enable”。
    • 预处理器选择invert(如果线稿是白底黑线)或none(如果已经是黑底白线)。
    • 模型选择control_v11p_sd15_canny
    • 控制权重:0.8(让AI有一定自由度,不完全拘泥于线稿)。
  4. 修改提示词:根据线稿内容调整,例如:
    A rustic wooden house next to a large tree, mountains in the background, watercolor painting, loose brushwork, paper texture, soft colors
  5. 生成:点击生成。对比不使用ControlNet的结果,观察生成图像是否严格遵循了你的线稿构图,从而更像基于草图的上色作品。

5.3 测试三:高清修复与后期噪点

测试目的:增加细节并植入类似传统媒介的噪点。

  1. 启用高清修复:在生成参数区域下方,勾选“Hires. fix”。
  2. 设置参数
    • 放大算法:选择4x-UltraSharpR-ESRGAN 4x+
    • 重绘幅度:0.3-0.5(太低没效果,太高会改变原图)。
    • 放大倍数:2(从512x768放大到1024x1536)。
  3. 生成:使用之前测试中效果最好的图片种子,再次生成。观察放大后的图像是否在细节(如树叶、衣服纹理)上更丰富,同时超分辨率算法可能引入的细微噪点有时能模拟画纸质感和胶片颗粒。
  4. 后期处理(可选):将高清修复后的图片发送到“图生图”标签页。
    • 重绘幅度设为一个很低的值(0.05-0.15)。
    • 在提示词中加入film grain,noise
    • 生成几次,AI会轻微重绘并可能增加噪点层。这比直接使用滤镜添加噪点更自然。

5.4 测试四:批处理生成与筛选

测试目的:模拟艺术创作中的草图迭代过程。

  1. 设置批处理:在文生图页面的“Batch count”输入4,“Batch size”保持为1(显存不足时)。
  2. 使用动态提示词:可以安装Dynamic Prompts扩展,在提示词中使用{A|B|C}语法来随机选择一些元素,例如{cloudy|sunny|rainy} sky,让同一组参数产生更多变体。
  3. 生成与筛选:一次生成4-8张图。从这些结果中,挑选出“AI感”最弱、笔触和构图最满意的一张。这个过程本身就更接近人类画师的创作流程——先出多个草图小样,再选择深化。

6. 接口API与批量任务

对于需要集成到自有工具链或进行大规模生产的用户,WebUI提供了API支持。

启动API服务: 在启动WebUI时,添加--api参数。修改webui-user.bat(Windows)或webui.sh(Linux/macOS)中的COMMANDLINE_ARGS变量:

# 在 webui-user.bat 中设置 set COMMANDLINE_ARGS=--api --listen

--listen参数允许非本地访问(注意安全风险)。重启WebUI。

调用文生图API: 以下是一个Python调用示例,生成一张“手绘感”图像:

import requests import json import io from PIL import Image url = "http://127.0.0.1:7860/sdapi/v1/txt2img" payload = { "prompt": "an old castle on a cliff, watercolor style, rough paper texture, visible brush strokes, masterpiece", "negative_prompt": "digital art, 3d, render, smooth, perfect, signature", "steps": 25, "cfg_scale": 7, "width": 512, "height": 512, "sampler_name": "Euler a", "override_settings": { "sd_model_checkpoint": "dreamshaper_8.safetensors" # 指定模型 }, "alwayson_scripts": { "ControlNet": { "args": [ { "input_image": "", # 这里需要将线稿图转换为base64编码字符串 "module": "canny", "model": "control_v11p_sd15_canny", "weight": 0.8, "enabled": True } ] } } } # 如果需要使用ControlNet,需先读取图片并编码 # with open("sketch.jpg", "rb") as f: # import base64 # img_base64 = base64.b64encode(f.read()).decode('utf-8') # payload["alwayson_scripts"]["ControlNet"]["args"][0]["input_image"] = img_base64 response = requests.post(url, json=payload) r = response.json() # 保存图片 for i, img_data in enumerate(r['images']): image = Image.open(io.BytesIO(base64.b64decode(img_data.split(",",1)[0]))) image.save(f'output_{i}.png')

批量任务设计: 你可以编写脚本,遍历一个包含不同提示词或线稿图片的目录,循环调用上述API,实现自动化批量生成。关键点在于:

  1. 错误处理:在请求中加入try...except,处理网络超时或生成失败。
  2. 资源管理:控制并发请求数量,避免压垮显存。可以设置队列系统。
  3. 结果分类:根据生成参数(如使用的LoRA、随机种子)将输出图片保存到不同的子目录。

7. 资源占用与性能观察

理解资源占用有助于优化流程,避免崩溃。

  • 显存占用观察:在WebUI生成时,关注命令行窗口的日志。通常会显示GPU Memory Usage: ...。也可以使用nvidia-smi命令在另一个终端窗口实时监控。

    • 仅基础模型生成512x512图像:通常占用3-5GB显存。
    • 开启一个ControlNet:增加约1-1.5GB显存。
    • 开启高清修复(Hires.fix):放大过程会显著增加显存占用,尤其是放大倍数高时。1024x1024可能占用7-10GB以上。
    • 组合使用(模型+ControlNet+Hires):在8G显存卡上容易触发CUDA out of memory错误。
  • 降低显存占用的技巧

    1. 使用--medvram--lowvram参数启动:在COMMANDLINE_ARGS中添加。这会降低速度,但能提高大模型或高分辨率下的稳定性。
    2. 使用Tiled VAE:安装Tiled VAE扩展,可以分块处理高分辨率图像,有效降低显存峰值。
    3. 降低批处理大小(Batch Size):始终设为1。
    4. 分步进行:先在不开启高清修复和ControlNet的情况下生成小图,挑选种子;再单独开启高清修复或ControlNet进行精修。
  • 性能影响因素

    • 图片分辨率:影响最大。分辨率翻倍,显存占用和生成时间呈平方级增长。
    • 采样步数(Steps):步数越多,时间越长,但超过一定值(如30)后质量提升不明显。
    • ControlNet数量:启用多个ControlNet单元会线性增加计算量。
    • 模型精度:使用fp16精度的模型比fp32模型更快、显存更省。

8. 常见问题与排查方法

问题现象可能原因排查方式解决方案
启动WebUI时提示Python或torch错误Python版本不兼容,或torch安装失败。查看命令行错误日志,确认Python版本是否为3.10.x。使用WebUI自带的Python环境(推荐)。或手动创建3.10.x的conda虚拟环境。
生成图片全黑或全灰模型文件损坏,或VAE(变分自编码器)不匹配。尝试切换不同的模型。检查控制台是否有VAE相关错误。重新下载模型文件。在“Settings” > “Stable Diffusion”中,尝试切换不同的VAE模型,或设置为“Automatic”。
开启ControlNet后图片崩坏ControlNet模型与基础模型不兼容,或权重过高。检查ControlNet模型是否为SD1.5版本,而基础模型是SD1.5。确保基础模型与ControlNet模型版本匹配。将ControlNet权重从1.0降低到0.5-0.8。
高清修复后图片内容改变重绘幅度(Denoising strength)过高。观察重绘幅度设置,默认0.7可能太高。将重绘幅度降低到0.3-0.5。可以先在低分辨率下找到满意的种子,再固定种子进行高清修复。
显存不足(CUDA OOM)分辨率过高,或同时启用功能太多。使用nvidia-smi观察显存峰值。降低生成分辨率。使用--medvram。分步操作:先文生图,再图生图放大。使用Tiled VAE扩展。
生成的图片“AI感”依然很重提示词、模型或参数设置仍偏向数字艺术。检查提示词是否包含“digital art”, “render”等词。检查模型是否过于现代。强化“traditional painting”, “brush strokes”等提示词。尝试更偏向传统艺术的模型和LoRA。适当降低CFG Scale(如到5-7)。
API调用返回错误请求参数格式错误,或服务未启动。检查API地址和端口是否正确。查看WebUI控制台是否有请求日志和错误信息。确保WebUI以--api参数启动。使用Postman等工具先测试最简单的请求。仔细对照API文档检查JSON结构。

9. 最佳实践与使用建议

  1. 建立你的素材库:系统化地收集和整理:

    • 模型:按风格(写实、动漫、油画、水彩)分类存放。
    • LoRA:按效果(细节增强、特定画风、材质模拟)分类。
    • ControlNet参考图:收集各种构图、姿势、深度的线稿或草图,建立自己的“构图模板库”。
    • 提示词片段:将常用的风格化关键词(如“oil on canvas”, “rough sketch”)保存为文本片段,方便调用。
  2. 工作流标准化:针对常做的风格(如“水彩人物”),在ComfyUI中搭建一个可保存、可加载的工作流。在WebUI中,可以将一套成熟的参数(模型、LoRA、ControlNet设置、高清修复参数)保存为“预设风格”,实现一键应用。

  3. 迭代与筛选:接受AI的随机性。不要指望一次生成完美作品。采用“低分辨率大批量生成 -> 筛选优秀种子 -> 高清修复/精修”的流程,这更接近创作本质。

  4. 合法合规使用

    • 肖像权:生成或使用真人肖像参考图时,务必确保有授权或用于合法合理的艺术创作。
    • 版权:明确你的最终用途。如果用于商业项目,考虑使用完全开源模型或自己训练的模型,并对生成结果进行足够的、可证明的二次创作(如手绘修改、多图合成)。
    • 内容安全:遵守平台和国家法律法规,不生成任何违法违规内容。
  5. 最终输出前:将AI生成的图像导入Photoshop、Krita等专业软件,进行最后的调整。可以:

    • 叠加真实的纸张纹理素材。
    • 用笔刷手动添加一些不规则的笔触或瑕疵。
    • 调整色彩平衡,使其更接近传统媒介的色调。
    • 这一步是让作品“脱离AI感”最有效的一环。

通过结合特定的模型、提示词工程、ControlNet约束以及后期处理,我们可以在本地有效控制AI图像的输出风格,使其更接近传统手绘的质感。这个过程的核心不是欺骗,而是拓展AI作为一种创作工具的表现边界。技术降低了实现某种风格的门槛,但作品的灵魂——构图、叙事、情感——依然来自于创作者的选择与把控。

最值得尝试的起点是:选择一个你喜欢的传统艺术风格(比如水墨画、铅笔素描),找到对应的模型或LoRA,然后用简单的ControlNet线稿约束生成,观察效果。最容易踩的坑是参数堆砌过多导致画面崩坏,记住“少即是多”,从一个ControlNet和一组核心提示词开始逐步增加复杂度。

← 返回列表