
标题带着数字 4看起来是某个进阶系列的某一篇但这篇文章可以独立阅读。它讨论的不是某个画图软件的操作题而是本地图像工作流里最核心的一段先用文生图把画面画出来再用图生图和局部重绘把不满意的地方修掉。很多 AI 绘图工具不管界面是网页还是节点式画布底层逻辑都绕不开这条链路所以把这一套流程跑通后换工具的成本会低很多。先给结论只要环境准备好本地绘制和修饰图像的完整流程并不复杂。第一步是选一个能跑通的项目并完成部署第二步是小分辨率、小步数先验证能不能正常出图第三步才是调整模型、提示词、重绘幅度这些细节去追求画面质量。如果你已经有一张图想换背景、补局部细节或者统一风格直接做修饰比重新生成更稳也更省资源。下面按环境准备、启动部署、绘制测试、修饰测试、API 批量、资源占用和问题排查的顺序展开末尾会给出可复用的一组最小验证清单。适合三类读者正在搭本地图像流程的技术人员、需要批量处理视觉素材的开发者、想评估 AI 绘图能不能进入自己生产链路的内容团队。1. 绘制和修饰图像核心能力速览先把绘制和修饰图像涉及的能力罗列出来。很多人以为“AI 画图”只有一个文生图功能实际落到工作流里至少包含这几个环节生成、编辑、局部修复、放大、批量处理和接口调用。下面这张表可以作为你评估工具时的对照清单。能力项说明文生图输入提示词从无到有生成一张图像图生图基于输入图像进行风格迁移、构图修改、细节调整局部重绘涂抹指定区域只对选中范围重新生成内容高清修复把低分辨率图像放大并补充细节让边缘更自然ControlNet 类辅助用线稿、深度、姿态等条件控制画面结构批量任务按目录或队列批量处理多张图片API 服务把绘制和修饰能力封装成 HTTP 接口供外部程序调用部署平台Windows / Linux 均可部分方案支持 macOS但显卡支持有差异适合场景快速出图、素材批处理、设计辅助、自动化内容生成需要说明的是以上是常见本地图像绘制与修饰框架的通用能力集不是某一个具体软件的完整功能列表。实际项目可能只包含其中一部分也可能提供更多扩展。你在读项目文档时应先确认它实现的是哪几个能力再决定是否适合自己。绘图类项目往往安装包大、依赖多不建议没有明确用途就直接下载先用一张表列出你的需求再按表去对照。2. 适用场景与合规使用边界绘制和修饰图像最常用的场景有三个。第一是内容配图比如公众号文章、技术教程、视频封面文生图可以快速产出草图和风格参考第二是设计辅助设计师拿到一张构图不够理想的原图可以用图生图快速切换背景、光影或气氛第三是电商素材批处理把商品图批量放到统一背景、统一色调这时候批量任务和 API 比手动导图高效得多。但这类工具也有限制。AI 生成模型擅长表现“看起来合理”的画面并不擅长工程制图、医学影像、带精确文字的排版成品。只要涉及像素级尺寸、严格文字内容、特定产品结构都不能把最终交付直接交给生成模型只能把它放在初稿和参考阶段。另一个限制是风格和一致性。同一个提示词在不同采样参数、不同分辨率下会产生差异如果企业项目需要严格的品牌色、固定人物形象就必须建立稳定提示词模板和标准测试集每次换模型、换参数都要做对比回归。不要出现“上一张还行这次换了显卡后完全不是同一个风格”的情况。合规边界比功能更重要。使用图像生成与修饰工具时必须注意四件事训练模型的来源是否合法是否允许商用。不同模型的 License 差别很大尤其是从社区下载的 checkpoint 和 LoRA下载页面如果写了非商用或只限个人测试就不能直接进入商业链路。参考图和修饰图的版权授权。图生图和局部重绘如果使用他人拍摄的照片、设计师作品、影视截图等素材需要确认来源和你是否有修改权。文章封面、商家图、商品详情页里的视觉效果都可能涉及版权纠纷。人脸和真实人物肖像问题。对真实人物照片进行生成、修饰、年龄变换或风格化需要获得本人授权并且不能用于误导性内容。不要生成违法、低俗、歧视、仇恨、侵权类内容。有些内容并不是“技术上画不出来”而是从使用边界上就不应该画。3. 本地部署环境准备与前置条件绘制和修饰图像的本地环境没有统一标准但检查的顺序是固定的。建议先去确认操作系统、Python、Git、显卡驱动、磁盘空间而不是直接装项目依赖否则很容易出现“项目装到一半才发现某个底层库装不上”的情况。以下是推荐的前置检查流程# 查看显卡型号、驱动版本和显存 nvidia-smi # 查看 Python 版本一般建议 3.10 及以上但具体看项目要求 python --version # 查看 Git 是否可用 git --version如果你的电脑没有 NVIDIA 显卡有些项目仍然支持 CPU 推理只是速度会明显变慢。一张 512 分辨率的图在 GPU 上通常几十秒内可以完成在 CPU 上可能需要几分钟反复调参时会比较痛苦。如果你只有 CPU 环境建议先确认项目文档是否写了 CPU 模式并尽量使用更小的模型和小尺寸测试图。AMD 显卡和 Intel 显卡在个别项目里有支持方案但问题排查成本更高第一次尝试不建议直接用。磁盘空间方面绘图项目至少需要预留几十 GB因为项目依赖和模型文件都是大头不同体积的 checkpoint 模型从 1GB 到 7GB 不等如果还要下载多个风格模型空间需求会进一步上升。依赖管理是另一个容易踩坑的地方。WebUI 类项目通常自带一套安装脚本会创建虚拟环境并安装 PyTorch、相关依赖源码启动项目则需要你手动创建虚拟环境。无论哪种方式都建议把项目本身和 Python 环境隔离避免污染系统 Python。安装时如果看到 pip 网络报错可能是默认源不稳定换成国内镜像源可以解决但镜像源地址要以你所在网络环境实际情况为准。4. 模型文件与输入输出目录规划本地图像项目最忌讳的是模型文件乱放。很多用户把模型下载到“下载”目录然后找不到文件路径最后在启动时不断报错。建议从第一次部署起就建立固定的目录结构。下面是一个通用规划示例local-image-tools/ ├── models/ │ ├── Stable-diffusion/ │ ├── Lora/ │ ├── VAE/ │ └── ControlNet/ ├── inputs/ │ ├── reference/ │ └── batch/ ├── outputs/ │ ├── txt2img/ │ ├── img2img/ │ └── inpaint/ ├── scripts/ └── logs/模型文件位置一般由项目的启动参数或配置决定。WebUI 类项目在界面上往往有“模型目录”设置项ComfyUI 类项目则通过 models 目录下的子目录自动识别。图生图和局部重绘过程中使用的参考图统一放在 inputs 目录生成结果默认保存到 outputs 目录这样批量任务脚本只需要读取固定目录不需要每次去翻浏览器下载的文件。下载模型时也要看文件格式。许多绘图模型以 safetensors 格式分发它比旧式 ckpt 格式更安全不会在加载时执行额外 Python 代码。如果看到一个模型文件是 exe、bat 或加密压缩包在官方可靠渠道之外通常不建议运行。开源社区里曾有模型仓库用恶意文件诱导下载的事件这个风险不可忽视。选择模型时还要看模型适用的 Stable Diffusion 版本比如 SD1.5 系列、SDXL、SD3 以及各种 faster 类架构它们的提示词习惯、显存占用和支持插件都不一样。把 SD1.5 的 LoRA 强行装到 SDXL 模型上通常不会生效界面也未必会报错只会出图结果异常。5. 启动本地绘制服务与 Web 界面访问启动方式由具体项目决定但大体可以分成三类整合包启动、源码命令启动、Docker 启动。整合包适合第一次体验双击启动脚本即可源码启动适合需要修改源码、调试插件的人Docker 启动适合有 Linux 服务器、希望隔离环境的人。第一轮建议先用最简单的启动方式跑通不要同时装很多插件。启动前先确认端口是否被占用。Linux 和 macOS 上可以用 lsof 检查Windows 上可以用 netstat 检查# 查看 7860 端口是否被占用 lsof -i :7860 # Windows 下查看端口占用 netstat -ano | findstr :7860如果 7860 被占用可以换一个端口。源码启动的常见入口是 launch.py 或 app.py命令模板如下实际路径以你的项目为准python launch.py --listen 127.0.0.1 --port 7860如果你部署的是 WebUI 类整合包通常会有 webui-user.bat 或 start.sh。启动后日志里出现类似 “Running on local URL” 的内容就说明服务已经起来了。之后打开浏览器访问http://127.0.0.1:7860就能看到绘图界面。需要注意如果启动脚本里没有加--listen默认只会监听本机 127.0.0.1这是安全默认值其他设备无法直接访问。如果你想在同一局域网的其他电脑上打开界面才需要显式设置监听地址同时要考虑访问权限问题不要轻易把绘图 API 暴露到公网。即使只在本机使用API 服务也存在未授权调用风险建议通过本机防火墙限制访问范围。启动后的第一件事不是立刻进入高参数绘图而是确认以下几项页面能正常加载、模型下拉框出现了你放的模型、显存占用没有异常飙满。如果页面能打开但模型列表为空大概率是模型目录配置不对或者模型文件没有放到项目要求的位置。6. 绘制图像文生图功能测试与参数调整文生图是绘制图像的第一关。无论你之后要用图生图还是局部重绘文生图都能帮你快速验证模型、提示词和采样参数是否正常。先给出一套低门槛测试建议尺寸用 512x512 或 768x768步数先用 20 左右采样器先选默认项其他参数暂时不动。这样可以把变量控制到最小如果生成失败问题更容易定位。测试流程如下启动服务并打开 WebUI 页面。在模型下拉框中确认已经选择目标主模型。在正向提示词输入框写一段包含主体、环境、光源、画质的描述。点击生成按钮观察日志中的进度和耗时。在输出面板确认生成结果并记录本次的种子、参数和显存占用。为了减少变量可以先使用一段稳定的示例提示词a small cafe on a rainy street, warm window light, people sitting inside, view from outside, photorealistic, high detail生成完成后判断成功的标准不是“图片好不好看”而是输出图与提示词描述基本匹配没有大面积黑块、花屏或结构崩坏生成过程没有报错显存占用保持在正常范围。如果这些条件都满足说明部署链路已经通了。接下来可以调参数。这里需要重点区分两组概念步数与采样器CFG 与种子。步数影响生成质量在低步数区间很明显步数从 10 提到 20细节通常会更充分但超过一定步数后收益会递减。CFG Scale 控制提示词对画面影响的程度太高时颜色过饱和、画面生硬太低时画面容易偏离提示词。种子是随机数起点固定种子可以在相同参数下复现同一张构图这对批量测试和问题定位很有用。绘图参数没有绝对正确在一个项目上表现好的参数换到另一个模型上可能需要重新测试。文生图测试阶段最常见的问题出在提示词写法上。不要以为把一堆“masterpiece, best quality, 8k, ultra detailed”堆在开头就能提升画质。很多现代模型对这种堆叠词越来越不敏感更有用的做法是写清主体、动作、环境、光线、镜头视角和风格。负面提示词也不是越多越好写 “lowres, text, watermark, blurry” 这类常见干扰项就够负面提示词写太长反而可能限制画面表现力。7. 修饰图像图生图、局部重绘与高清修复绘制环节解决“从无到有”修饰环节解决“从有到优”。修饰图像最常用的三个功能是图生图、局部重绘和高清修复它们在很多工具里是独立标签页或者以功能模块形式放在接口里。图像整体重绘适合先选一张底图再描述希望保留和改变的部分核心参数是“重绘幅度”。重绘幅度在界面里通常用 Denoising strength 表示意思是对原始图像的改动程度。如果取值在 0.1 到 0.4画面结构基本保留适合微调和统一风格取值在 0.5 到 0.8 之间构图会明显变化接近 1 时原始画面基本被重画效果接近从提示词重新生成。做修饰第一步要用低重绘幅度把原图和结果对比确认主要结构没有崩掉再逐步提高。局部重绘是修饰图像里使用频率最高的功能适用于修复手指、更换衣服、改背景、消除画面中多余物体等任务。操作逻辑是上传原始图像用蒙版工具把需要改变的区域涂抹出来然后只对这个区域生成新内容。涂抹范围不要太大能覆盖目标区域即可范围过大容易让画面边缘不自然。局部重绘时提示词只描述涂抹区域内希望出现的新内容保持与周边画面的风格一致。如果修复的是脸部或手部建议把小图单独裁切出来放大修复再贴回原图复杂操作不要在整张大图上直接做。高清修复是用来解决小图放大模糊的问题。低分辨率图直接拉伸会损失细节高清修复会先生成一张高分辨率图像或在放大过程中补充细节。使用它的主要场景是文生图的第一步只用了小尺寸快速出图选到满意构图后再开启放大修复得到可商用的大图。需要注意的是由于高清修复消耗显存远高于普通生成如果总是报显存不足可以先关闭修复或者使用分块处理方式。另外放大算法对不同内容类型有偏好有些适合照片有些适合线条插画多试几种再选。修饰阶段的成功判断标准更严格未涂抹区域与原图接近涂抹区域风格、光影和边缘融合自然没有明显的接缝或结构冲突整张图放大到实际使用尺寸后细节仍然可用。如果在黑白照片转彩色、旧照片修复等任务上测试要先确认原图版权归属并且不要把私人照片上传到不可控的云端服务。8. 把绘制和修饰流程接入 API 与批量任务当你确认 UI 操作稳定下一步就是把流程变成服务。很多本地绘图项目启动时开启 API 参数后会提供 HTTP 接口常见路径类似/sdapi/v1/txt2img和/sdapi/v1/img2img。不同工具的项目结构不同接口不一定完全一致所以第一次调用前先看日志和项目文档确认实际可用路径。这里给出一套常见 WebUI 类项目的调用模板用来展示入参和出参结构不能直接套用到所有项目上。启动时先加上 API 参数例如python launch.py --api --listen 127.0.0.1 --port 7860然后用 curl 做连通性测试curl -X POST http://127.0.0.1:7860/sdapi/v1/txt2img \ -H Content-Type: application/json \ -d {prompt:a red apple on white background,steps:20}如果需要更完整的批量处理可以用 Python 调用。下面这段代码从 inputs 目录读取输入图对每张图执行一次图生图修饰并把结果保存到 outputs 目录。实际项目下的 API 地址、参数字段和返回字段可能需要替换。import os import time import requests import base64 API_URL http://127.0.0.1:7860/sdapi/v1/img2img INPUT_DIR ./inputs/batch OUTPUT_DIR ./outputs/img2img LOG_FILE ./logs/img2img.log os.makedirs(OUTPUT_DIR, exist_okTrue) os.makedirs(os.path.dirname(LOG_FILE), exist_okTrue) def log(msg): line time.strftime(%Y-%m-%d %H:%M:%S) msg print(line) with open(LOG_FILE, a, encodingutf-8) as f: f.write(line \n) def process_one(image_path, prompt): with open(image_path, rb) as f: image_data base64.b64encode(f.read()).decode(utf-8) payload { init_images: [image_data], prompt: prompt, negative_prompt: lowres, text, watermark, steps: 20, width: 768, height: 768, denoising_strength: 0.4, } try: response requests.post(API_URL, jsonpayload, timeout180) response.raise_for_status() result response.json() image_b64 result[images][0] output_name os.path.splitext(os.path.basename(image_path))[0] _edited.png output_path os.path.join(OUTPUT_DIR, output_name) with open(output_path, wb) as out_f: out_f.write(base64.b64decode(image_b64)) log(fOK {image_path} - {output_path}) return True except Exception as e: log(fFAIL {image_path} error{e}) return False if __name__ __main__: prompt change background to a clean studio, warm light, same product files [f for f in os.listdir(INPUT_DIR) if f.lower().endswith((.png, .jpg, .jpeg))] for file_name in files: image_path os.path.join(INPUT_DIR, file_name) process_one(image_path, prompt)编写批量脚本时要在早期就加入日志和失败重试机制。不要直接处理百万张图第一轮跑 10 到 20 张确认接口稳定后再扩大规模。如果一张图处理失败脚本应该能记录是哪张图、报了什么错然后继续下一张而不是整个进程崩溃。多次调用后显存不会自动完全释放连续处理几十张图可能会导致后续请求变慢或显存不足必要时可以在脚本里设置固定间隔“休息”或者定时重启服务来释放显存。图片来源需要非常明确。批量处理商品图、人物图或他人提供的素材之前必须取得处理授权。尤其是商品图如果外包给远程 API 处理数据会经过第三方服务还要确认是否符合客户的数据安全要求。本地部署最大的价值是素材不离开你的机器如果因为调用远程服务而破坏这一点就需要重新评估风险。9. 资源占用观察与性能优化思路本地绘图服务的资源占用问题值得单独写一节因为它在真实使用中最能影响体验。这里不提供特定配置下的数值因为显存占用和模型大小、分辨率、采样步数、是否使用 ControlNet 都相关同一段代码在不同硬件上表现差异很大。更稳定的做法是掌握观测方法然后用你的设备测出自己的参考值。在 Windows 上可以直接看任务管理器里的 GPU 显存曲线NVIDIA 显卡可以在命令行里持续观察nvidia-smi -l 1这条命令每一秒刷新一次显存使用情况。开始绘图前先记录闲置显存生成过程中观察峰值显存和 GPU 利用率。如果生成结束后显存占用没有回落说明进程可能有内存泄漏需要重启服务。多数绘图项目日志里也会显示单步耗时单位通常是 it/s 或 s/it通过这个数字可以判断当前设置是快还是慢也能判断换参数后性能是否改善。影响资源占用的因素按重要程度排序大致是这样的分辨率分辨率对显存和计算时间影响最大。从 512 提升到 1024计算量不是翻倍而是面积增加资源消耗会大幅上升。批量大小一次生成多张图能提高吞吐但显存峰值会显著增加。采样步数步数主要增加计算时间对显存峰值影响较低。ControlNet 等辅助模块每增加一个辅助模型都会同时增加固定显存开销和推理时间。高性能放大和修复部分修复流程会把整张大图放进模型显存消耗可能超过普通文生图。如果你的显卡可用显存有限优化顺序推荐是先降分辨率再关掉多余的后处理功能最后再考虑降低批次数。有些项目提供 “medvram” 或 “lowvram” 这类降低显存占用的启动选项它们也会明显降低生成速度。另一些项目支持 Tiled VAE 或分块放大图像会切成块处理再拼回一整张这是一个显存不足时值得尝试的方案。CPU 推理仍然可用但如果图形界面卡顿建议把 WebUI 和实际生成放到不同线程或者直接接受较低分辨率否则反复试参数时整体体验会比较差。10. 常见问题与排查方法在部署和调参过程中报错信息往往比想象中更有价值。很多问题不是显卡不够而是依赖没装对、文件放错位置或服务启动参数不正确。下面这张表覆盖了绘制和修饰图像流程里最常见的故障。问题现象可能原因排查方式解决方案启动时报缺模块或依赖错误Python 环境不干净或依赖未安装完整查看完整报错确认是否在虚拟环境内进入正确的虚拟环境后重新安装 requirementsWeb 页面打不开服务未启动、监听地址或端口错误、端口被占用检查启动日志和端口占用改成--listen 127.0.0.1 --port 7861等可用端口模型列表为空模型文件放错目录或格式不支持检查模型目录路径和扩展名把模型移动到项目指定 models 目录并刷新生成全黑图或花屏VAE 缺失或模型与采样器不匹配查看日志和 VAE 下拉框选择匹配的 VAE 文件或更换采样器显存不足导致请求失败分辨率过高、batch 过大或同时运行过多服务观察 nvidia-smi 峰值显存降低分辨率、调小步数或关闭其他 GPU 程序局部重绘结果边缘生硬蒙版范围过大、边缘羽化不足对比未涂抹区域和生成区域缩小蒙版范围增加边缘羽化或降低重绘幅度API 返回 500 或请求超时参数结构与项目接口不一致或模型未加载检查请求日志和返回内容对照项目接口文档调整参数先完成一次 UI 测试批量任务进行到一半卡住显存占用持续累积或输入图格式异常查看日志和显存占用曲线加日志、加失败重试、定时重启服务排查问题有一个基本顺序先看服务端日志再看浏览器控制台最后检查硬件资源。日志通常会把异常原因写得比较清楚。如果 API 调用失败先用 Postman 或 curl 发一个最小参数请求不要把批量脚本整个跑起来再找问题。局部重绘结果难看很可能是蒙版选得过大而不是模型本身有问题可以先保存一张只重绘极小区域的测试图确认边缘融合正常后再扩展。11. 最佳实践可复用工作流与合规提醒绘制和修饰图像虽然功能眼花缭乱进入生产使用后真正重要的是可重复性。建议从第一次测试时就建立一套“基准请求”固定一张测试图、一组提示词、一个固定种子、固定分辨率和步数。每次更换模型、升级工具版本、增加插件之后先用基准请求跑一遍输出图能维持接近原图的质量和风格再切换其他任务。文件管理要遵守几个简单原则。项目、模型、输入素材、输出结果分开目录存放不要一边下载一边乱放。模型文件建议单独放一个磁盘分区或独立目录因为模型体积大频繁重装项目时如果混在项目目录里很容易被误删。批量处理脚本要为每次任务生成独立的时间戳目录例如outputs/20250115_batch1/避免结果互相覆盖。日志不是可选项。任何批量任务都要记录每一张图的输入路径、请求参数、耗时、结果路径和错误信息。失败的文件名要单独收集起来方便处理完第一轮后重新跑一次失败列表。如果不加日志批量任务出错后你很难判断是整个系统的问题还是某些特殊图片的问题。下面这个目录结构适合大多数自动化流程20250115_batch1/ ├── inputs/ ├── outputs/ ├── logs/ │ ├── success.log │ └── failed.log └── config.json关于技术选型第一次尝试不要追求大而全的整合包。一个允许你直接选择模型、调整参数、把结果保存到指定目录的最小项目比带几十个插件的复杂环境更容易排查问题。插件装得越多启动越慢出现冲突的概率也越大。你需要的先不是“更多功能”而是“稳定复现结果”。等基础链路稳定后再逐步添加 ControlNet、风格化 LoRA 等扩展功能。合规提醒需要放在使用流程里反复强调。团队内部使用时要把素材授权信息记录清楚包括图片来源、人物肖像授权、版权归属、是否允许修改、是否允许商用。生成结果的版权归属与训练模型、参考素材都有关联在商用之前不要只看生成效果就决定上线。很多 AI 绘图项目支持导入 LoRA 来模仿特定画风如果在未经作者允许的情况下用他人作品做训练或风格参考可能涉及侵权。更稳妥的做法是只使用授权素材、开源素材或你自己创作的图像。12. 总结先跑通最小链路再扩展绘制和修饰图像的能力并不神秘但它确实是一个依赖多、参数多、出错点多的工程链路。这篇文章值得保存下来作为对照清单先搭好环境确认文生图能出图再测图生图确认重绘幅度对结果的影响然后练局部重绘把蒙版控制和边缘融合掌握好最后才接 API 和批量任务。顺序不要反一上来就追求复杂功能出了问题很难定位是模型问题、参数问题还是脚本问题。最值得尝试的点是文生图确实能快速出草图图生图和局部重绘能明显降低从零生成的不确定性。最先应该验证的功能是一张最简单的文生图能不能在本机跑通这决定了之后所有功能是否值得继续装。最容易踩的坑有三个显存不足、模型文件放错位置、不加日志直接跑批量前两个会让你误判工具能力第三个会让你在生产任务里追悔莫及。下一步可以扩展的方向是把绘制和修饰能力封装成一个内部服务让它处理你日常固定的“出图、改图、存档”任务配合 ControlNet 或专用模型处理更细分的场景把重绘幅度、种子、分辨率这些参数做成配置文件让非技术同事也能在固定模板下生成效果。最后补一句部署层面的建议很多启动问题不是显卡不够而是路径没放对、端口被占用、依赖没装全。建议新建一个干净的测试目录把模型、输出、脚本分开先跑通最小链路再套到实际生产流程里把这套验证过程作为基准测试保存下来以后换显卡、换模型、换平台都可以用同一组参数快速比较。