尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从“秦良玉-甲骨文”看本地AI绘画完整工作流

从“秦良玉-甲骨文”看本地AI绘画完整工作流 这次我们来看一个很有意思的 AI 创作项目“秦良玉-甲骨文”。它不是一个正式发布的大体积模型而是一个 AI 萌新用 100 天时间围绕秦良玉这个历史人物和甲骨文元素做主题创作的技术实践记录。项目名字里带着“萌新”两个字但里面涉及的链路并不简单本地模型部署、提示词工程、文生图、图生图、API 接口调用、批量生成、显存控制再到结果管理和效果复盘几乎把一套本地 AI 绘画工作流全部串起来了。这篇文章就以这个项目为线索给你梳理一条可以照做的本地 AI 生成工作流读完可以直接在你的电脑上复刻验证。先说结论降低大家的上手成本这个项目本身不要求你写复杂代码主要门槛在本地硬件和模型选择。如果你有一张 NVIDIA 独立显卡显存 8G 以上跑 512 分辨率下的常规开源绘图模型会比较顺畅如果显卡显存只有 4G 到 6G也能跑但建议使用轻量化模型或开启低显存模式并在生成时控制分辨率和批量大小。完全用 CPU 也能出图不过速度会慢很多适合用来验证流程不适合做批量生产。启动方式上推荐从 Stable Diffusion WebUI 或 ComfyUI 入手两个方案都有一键启动脚本并且都提供 HTTP 接口方便后期接脚本做批量任务。从材料看这个项目并没有提供统一的一键整合包所以需要自己准备绘图模型和提示词模板这也是本文要重点解决的部分。如果你正准备做类似的“历史人物古文字元素”主题创作或者只是想把本地 AI 绘画从“能出图”推进到“稳定批量出图”这篇博客可以收藏备用。我会从核心能力、适用边界、环境准备、安装部署、功能测试、API 批量调用、资源占用、问题排查和最佳实践几个方面完整展开这套流程。1. 秦良玉-甲骨文 AI 项目核心能力速览在进入实操前先用一个表格看清这个项目的定位和能力边界。这里的描述基于常见的本地部署方案具体参数需要按你实际拉取的模型和机器配置来验证。能力项说明项目类型个人 AI 创作实践项目历史人物 甲骨文元素主题主要技术方向文生图、图生图、批量生成、API 接口调用模型方向基于开源 Stable Diffusion 系列绘图模型 / ComfyUI 工作流启动方式WebUI 启动、ComfyUI 启动、命令行 API 服务启动推荐硬件NVIDIA 显卡优先显存 8G 以上体验更稳低显存可开 medvramCPU 推理支持但速度慢适合小图测试接口能力通过 /sdapi/v1/* 或 ComfyUI 接口提交任务并取回结果批量任务支持通过脚本循环调用 API 实现输出格式PNG / JPEG 图片批次记录建议用 JSON 或 CSV适合场景历史题材插画、科普配图、个人作品集、AI 绘画入门记录从这张表可以看出来这个项目适合的不是“纯零基础看热闹”而是“有一张普通显卡想把 AI 绘画做稳、做批量、做到可以接脚本”的技术读者。如果你是第一次接触本地绘画模型建议先跑通一个最小流程再慢慢加参数。2. 适用场景与使用边界任何和真实历史人物、真实文物元素相关的 AI 创作项目都不能只谈技术还要先想清楚使用边界。比较理想的适用场景是创作秦良玉主题的概念插画做历史科普文章的配图生成带有甲骨文纹理装饰的海报背景或者作为 AI 绘画 100 天练习项目的题材。这个方向对画面风格要求很统一非常适合用来练习提示词控制因为“水墨国风、青铜纹样、甲骨文纹理”这些视觉要素在开源绘图模型里已经有很强的先验知识提示词写对了出图稳定性会明显提升。不太适合的场景也很明确不能用 AI 生成的结果做严肃的考古或文字学考证。AI 模型并不真的认识甲骨文它只是把“类似甲骨文线条”的视觉纹理拼接出来生成结果里经常会出现字形错误、结构混乱、缺笔多笔的情况。如果项目目标是做甲骨文识别那应该去用 OCR 或视觉理解模型而不是用绘画生成模型。另外在商用之前必须确认素材版权。合法合规方面要特别注意秦良玉是真实历史人物创作时应当尊重历史形象不能恶意丑化或猎奇化如果参考了博物馆公开的甲骨文拓片、青铜器照片需要确认这些素材是否允许二次创作生成的甲骨文文字不能冒充文物真迹不能在拍卖、鉴定等场景中使用。把 AI 作品当作个人学习记录或科普示意风险会小很多。3. 本地部署环境准备在开始部署之前先把系统环境检查一遍。下面的清单是通用检查项具体版本号要以你下载的项目仓库要求为准。3.1 操作系统优先使用 Windows 10/11 或 Ubuntu 20.04/22.04。Windows 上大多数整合包和 WebUI 的 bat 启动脚本最方便Linux 上跑 API 服务和长期批量任务更稳定。这个项目属于图像生成方向建议主环境直接用 Windows 即可。3.2 GPU 与驱动建议使用 NVIDIA 独立显卡并确保显卡驱动更新到较新版本。显存低于 4G 时会比较吃力即使能启动也基本只能跑小分辨率、少步数显存 8G 以上512 分辨率下的常规流程会比较舒服。AMD 显卡不是不能用但在主流开源绘图工具链里需要额外配置不推荐萌新第一台机器用 A 卡入门。要查看显卡信息Windows 任务管理器里“性能- GPU”可以看到型号和显存命令行也可以用nvidia-smi查看驱动版本和显存状态。3.3 Python 与环境管理Stable Diffusion WebUI 这类项目通常会自己创建 Python 虚拟环境不一定需要你手动装依赖。但如果你准备写批量脚本建议本机有 Python 3.10 或 3.11。多个项目共存的机器上推荐安装 Miniconda可以隔离出不同的 Python 环境conda create -n ai100 python3.10 conda activate ai1003.4 磁盘空间一个开源绘图模型一般是 2G 到 7G 不等再加上 VAE、LoRA、ControlNet 模型和临时缓存建议预留至少 40G 磁盘空间。如果你打算做批量生成输出图会很占空间要提前规划输出目录。3.5 端口准备WebUI 默认使用 7860 端口ComfyUI 默认使用 8188 端口。如果你本机有其他的服务占用了这两个端口启动时会报错需要提前查一下端口状态netstat -ano | findstr 7860 netstat -ano | findstr 8188如果有进程占用要么关掉要么在启动参数里改掉端口。4. 安装部署与启动方式下面分别给出 WebUI 和 ComfyUI 两条路线。需要说明的是下面的命令是通用模板实际路径和启动参数请以你仓库里的 README 为准。4.1 路线一Stable Diffusion WebUI适合第一次接触本地 AI 绘画的萌新页面直观扩展多排查简单。git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui python launch.py --xformers --api启动后浏览器访问http://127.0.0.1:7860--api参数非常关键如果之后要用 Python 脚本批量生成必须带上这个参数。低显存机器建议加python launch.py --xformers --medvram --api启动完毕后需要把绘图模型文件放到models/Stable-diffusion/目录下。模型的后缀一般是.safetensors或.ckpt放进去后回到页面左上角刷新模型列表就能看到。4.2 路线二ComfyUI如果你已经有一定基础想追求更高的控制精度和更低显存占用可以用 ComfyUI。它对节点式工作流支持更好适合把“秦良玉-甲骨文”这种特定风格做成可复用的工作流文件。git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI python main.py --port 8188启动后浏览器访问http://127.0.0.1:8188模型文件放到ComfyUI/models/checkpoints/目录下。ComfyUI 的页面以节点图为主第一次用需要花一点时间理解“加载模型-输入提示词-采样器-解码-保存图片”这几块节点。好处是流程完全可视化调好一次后可以导出为workflow.json文件下次直接拖进去复用风格。4.3 模型与提示词准备本项目主题是“秦良玉-甲骨文”建议准备两类素材通用绘图模型例如基于 Stable Diffusion 1.5 的开源模型或是质量更高的新架构模型以你本机显存为准。风格参考图几张水墨国风、青铜器纹样、甲骨文拓片图片用于图生图或 ControlNet 控制风格。提示词层面如果用的是英文提示词为主的模型建议把关键词写成英文描述。比如Qin Liangyu, ancient Chinese female general, Ming dynasty armor, holding spear, ink wash painting style, bronze pattern, oracle bone script texture, rice paper background, historical illustration负面提示词可以写常见的崩坏项watermark, text, blurry, low quality, extra fingers, deformed hands, bad anatomy4.4 启动后的验证启动完成后先在 WebUI 页面手动生成一张 512x768 的测试图确认模型加载正常、输出目录可写。如果页面能正常出图说明基础环境没问题。5. 功能测试与效果验证部署完成只是第一步。下面按功能维度给出测试内容每一步都说明输入、操作、预期结果和失败排查方向。5.1 文生图测试测试目的确认模型能理解“秦良玉 甲骨文元素”的提示词并且输出风格稳定的作品。操作步骤在 WebUI 的 txt2img 页面输入提示词。设置宽度 512高度 768步数 20批次数量 1。点击 Generate。预期结果画面中出现符合中国古代女将形象的人物服装带有明代铠甲特征。背景或纹理中包含类似甲骨文、青铜纹样的装饰性图案。人物结构基本完整没有严重崩坏。判断标准连续生成 4 张至少有 2 张在主题表达上可接受。如果画面完全看不出“甲骨文”元素优先检查提示词里的英文关键词是否写完整。很多模型对中文关键词理解很弱建议全部翻译成英文后再试。5.2 图生图测试测试目的验证已有的参考图能否用于风格迁移。这里可以准备一张甲骨文拓片的线稿或一张水墨人物线稿作为输入素材。操作步骤切到 img2img 页面。上传参考图。提示词保持和文生图一致。Denoising strength 先设置为 0.4 到 0.5。点击 Generate。预期结果输出图保留参考图的构图或纹理结构同时具有“秦良玉-甲骨文”提示词的风格。Denoising strength 太低时画面变化小太高时容易破坏参考结构。失败排查如果参考图被完全忽略检查是否上传成功以及 Denoising strength 是否设置过高。如果输出图糊成一片把 Denoising strength 降到 0.3 左右再试。5.3 风格一致性测试这个项目最大的特点之一是“秦良玉 甲骨文”是一个固定视觉主题。要保持统一风格可以把提示词拆成固定段和变化段固定段Qin Liangyu, ancient Chinese female general, oracle bone script texture, bronze pattern, ink wash style变化段根据构图需要替换例如standing pose、riding horse、reading scroll。操作建议固定一个随机种子分别生成 5 张不同姿态的图。把固定种子取消再批量生成 5 张。对比两组结果的风格一致性。这个测试能帮你判断当前模型对这个主题的“风格锁定能力”是否足够。如果风格漂移明显可以考虑训练 LoRA 或用 ControlNet 固定线稿构图。5.4 高分辨率测试512x768 出图稳定后可以试更高分辨率。但要注意高分辨率直接生成会显著增加显存占用萌新可以先采用“小图生成 高清放大”的方式。推荐流程先生成一张 512x768 的满意图。使用 Hires. fix 或 Extras 里的 Upscale 功能放大 1.5 倍到 2 倍。观察放大后细节是否被破坏。如果显存不足不要强行拉升可以先保持 512后续再用脚本分块放大。6. 接口 API 调用与批量任务当手动生成已经稳定下一步就是接 API把整个 100 天项目的进度从“一张张点按钮”升级成“跑批处理脚本”。6.1 如何确认 API 服务已开启WebUI 启动时带了--api参数后访问http://127.0.0.1:7860/sdapi/v1/txt2img可以用 curl 做一个最简单的测试curl -X POST http://127.0.0.1:7860/sdapi/v1/txt2img \ -H Content-Type: application/json \ -d {prompt:test,steps:10}如果返回 JSON说明接口服务已正常启动。6.2 Python 调用 API 生成单张图下面是一个最小的 Python 调用示例。请按实际项目的端口、模型名和输出路径调整。import requests import base64 import os api_url http://127.0.0.1:7860/sdapi/v1/txt2img payload { prompt: Qin Liangyu, ancient Chinese female general, oracle bone script texture, bronze pattern, ink wash style, rice paper background, negative_prompt: watermark, text, blurry, low quality, extra fingers, steps: 20, width: 512, height: 768, batch_size: 1 } response requests.post(api_url, jsonpayload, timeout180) data response.json() os.makedirs(outputs, exist_okTrue) for i, img_base64 in enumerate(data.get(images, [])): img_bytes base64.b64decode(img_base64) file_path os.path.join(outputs, fqinliangyu_{i}.png) with open(file_path, wb) as f: f.write(img_bytes) print(fsaved: {file_path})这段代码的关键点在于返回值中的images字段是 base64 编码的字符串列表必须解码后才能写入图片。如果返回里没有images说明请求失败需要把data整体打印出来看报错信息。6.3 批量任务脚本思路批量生成的需求会出现在“多姿态、多构图、多风格微调”的场景。建议准备一个 CSV 参数文件比如prompt_list.csvid,prompt,negative_prompt,steps,width,height 001,Qin Liangyu standing,watermark,20,512,768 002,Qin Liangyu riding horse,watermark,20,512,768 003,Qin Liangyu reading scroll,watermark,20,512,768然后写一个循环脚本逐行读取并调用 APIimport csv import requests import base64 import os import time api_url http://127.0.0.1:7860/sdapi/v1/txt2img output_dir outputs os.makedirs(output_dir, exist_okTrue) with open(prompt_list.csv, r, encodingutf-8) as f: reader csv.DictReader(f) for row in reader: payload { prompt: row[prompt], negative_prompt: row[negative_prompt], steps: int(row[steps]), width: int(row[width]), height: int(row[height]), batch_size: 1 } try: resp requests.post(api_url, jsonpayload, timeout300) data resp.json() for i, img_base64 in enumerate(data.get(images, [])): img_bytes base64.b64decode(img_base64) file_name f{row[id]}_{i}.png with open(os.path.join(output_dir, file_name), wb) as out: out.write(img_bytes) print(fsaved: {file_name}) except Exception as e: print(ffailed: {row[id]}, error: {e}) time.sleep(1)批量脚本建议加日志记录。每次生成的参数、结果文件名、耗时都写进一个日志文件方便出问题时回溯。import logging logging.basicConfig( filenamebatch.log, levellogging.INFO, format%(asctime)s %(levelname)s %(message)s ) logging.info(fgenerated: {row[id]})6.4 失败重试机制批量任务最怕中途卡住。稳妥的做法是给每次请求设置 timeout然后对失败任务做简单重试。重试次数建议 2 到 3 次超过后把任务写入failed_ids.txt方便后续补跑。for attempt in range(3): try: resp requests.post(api_url, jsonpayload, timeout300) if resp.status_code 200: # 处理结果 break else: print(fattempt {attempt 1} failed, status: {resp.status_code}) except Exception as e: print(fattempt {attempt 1} error: {e}) time.sleep(5)7. 资源占用与性能观察资源占用是本地部署和批量生成逃不开的问题。这里给出观察方法和常见调优思路具体数字请以你自己机器上的nvidia-smi输出为准。7.1 启动阶段在命令行窗口启动 WebUI 或 ComfyUI 后日志会打印是否成功加载 CUDA。如果日志里出现 CPU 运行字样说明显卡没有被正确识别。检查显卡驱动和 PyTorch 版本是否匹配。启动服务占用的显存不多真正上涨是在加载模型之后。模型加载完成显存会被占用一部分之后生成图片时会继续增加。7.2 生成阶段观察生成图片时在另一个终端执行nvidia-smi重点看Memory-Usage和GPU-Util两列。如果显存占用接近上限说明当前参数偏激进需要降低分辨率、步数或批量大小如果显存占用很低但出图很慢可能是使用了 CPU 推理需要检查环境配置。7.3 参数对性能的影响影响显存和速度的关键参数有分辨率512 相对稳妥1024 会带来明显更高的显存压力。步数20 步和 30 步的主要差异在耗时显存影响相对小。批量大小batch_size设为 2 或更高单张图生成时间会缩短但显存会成倍增加。放大模型二次高分辨率放大时显存占用会比普通生成明显提高。如果显存不足建议把batch_size固定为 1优先靠队列批量处理而不是一次生成多张。7.4 低显存调优方案低显存机器可以尝试以下方式但效果和兼容性需要实测验证WebUI 启动参数加--medvram或--lowvram。使用--xformers优化注意力计算。选择轻量模型或使用量化版本。固定使用 512 分辨率出图后用独立放大脚本处理。7.5 端口冲突和进程残留服务使用完不要直接关浏览器要回到命令行按CtrlC停止进程。如果进程残留导致端口占用可以用下面的命令查找并结束进程netstat -ano | findstr 7860 taskkill /PID 进程号 /F8. 常见问题与排查方法问题现象可能原因排查方式解决方案启动后浏览器打不开端口被占用或服务未启动查看命令行日志检查端口关闭占用进程或换端口重新启动日志报错 CUDA out of memory显存不足查看 nvidia-smi 显存占用降低分辨率、步数、批量大小或加 --medvram显卡未被识别跑得很慢驱动或 PyTorch 版本不匹配检查 nvidia-smi 和 Python 环境更新驱动重装匹配的 PyTorch 版本中文提示词不出效果模型对中文理解弱检查提示词是否被正确编码将提示词翻译成英文关键词生成的甲骨文是乱码形状AI 本身不识别甲骨文观察字形结构是否错乱只当纹理装饰使用不用于学术考证API 请求返回 404 或报错启动时没加 --api检查启动参数重启服务并加上 --api批量脚本卡住不输出单张生成时间过长或网络超时查看日志和 task 状态增加 timeout使用 3 次重试机制图片风格不稳定种子不固定或提示词强度不够多次生成对比固定 seed统一固定段提示词高清放大后崩坏放大算法和重绘幅度不合适对比不同放大参数降低重绘幅度或改用独立放大流程这里补充一个和本项目主题高度相关的常见误区AI 生成的甲骨文字样看起来像但仔细看笔画经常是错误的。如果你准备做历史科普内容建议把 AI 生成图明确标注为“AI 风格创作”不要误导读者认为是真实甲骨文拓片。9. 最佳实践与使用建议根据“秦良玉-甲骨文”这类项目的实践特点我整理了几条工程化建议可以让你少走弯路。第一第一次跑测试不要直接上高分辨率。先把步数控制在 20 步分辨率固定在 512确认模型加载和出图逻辑没问题再逐步提高。这样可以避免把显存不足当成“项目本身有问题”。第二模型文件、输入素材、输出结果分目录管理。推荐的项目目录结构如下ai100-project/ ├── models/ # 绘图模型文件 ├── refs/ # 参考图、线稿、拓片素材 ├── prompts/ # 提示词 CSV / JSON 文件 ├── outputs/ # 生成结果 │ ├── raw/ # 原始输出 │ └── selected/ # 筛选后的可用作品 ├── logs/ # 批量任务日志 └── scripts/ # Python 批量脚本第三批量任务一定要加日志。不要只把图片保存下来就结束每次生成后记录任务 ID、提示词、参数、耗时和结果文件路径。100 天项目跨度很长没有日志后期根本不知道某些“灵光一现”的图是用什么参数生成的。第四固定种子可以极大提升可复现性。在测试提示词阶段固定 seed先调提示词提示词稳定后再取消固定 seed增加随机性。这样能区分“提示词不好”和“随机采样波动”这两种情况。第五接口服务不要随意暴露到公网。API 调用只允许本机局域网使用时WebUI 默认绑定在127.0.0.1已经比较安全。如果在服务器上跑批量任务建议用防火墙限制访问来源设置访问密码或使用反向代理做认证。第六涉及历史人物和文物元素的合规问题要做到位。无论是秦良玉的人物插画还是甲骨文元素的装饰纹理都不要用于不尊重历史、不尊重文物的场景。如果需要商用先确认模型权属、素材授权和生成内容是否存在风险。10. 总结与下一步“秦良玉-甲骨文”这个项目最值得尝试的地方不是它能直接给你一套完整可用的艺术设定而是它能逼着你把本地 AI 绘画的完整工作流走一遍。从装环境、下模型、调提示词到手动出图、接 API、写批量脚本每一步踩的坑都是通用的。你在这个项目里积累的流程换到其他任何主题也一样适用。建议你先验证两件事第一文生图能否稳定输出“秦良玉 甲骨文纹理”这个组合这是主题成立的关键第二API 接口能否成功返回图片这决定了你能不能从手动生成切换到批量任务。最容易踩的坑是两个一是低显存机器强行跑高分辨率导致 CUDA out of memory二是中文提示词不生效导致生成结果完全跑题。这两个问题解决后后续工作会顺利很多。下一步可以继续扩展的方向也比较明确加入 ControlNet 控制线稿构图训练一个固定风格的 LoRA把工作流迁移到 ComfyUI 实现更精细的节点控制或者把生成的系列图片做成短剧分镜、视频脚本的视觉参考。以“秦良玉-甲骨文”为主题真正的玩法空间很大。建议把这套流程收藏备用第一次跑通一个最小模型再慢慢迭代参数最后再接批量任务和接口调用整个过程会比想象中更快。
返回列表