第 15/60 天
引言
在 AI 漫画制作中,上色往往是决定作品观感的关键一步。一张黑白线稿,如果配色不当,会让整个页面显得廉价;而配色精准、光影统一的上色,则能把作品质感提升一个档次。
很多创作者会遇到这样的痛点:AI 直接生成的”上色图”往往颜色脏、线条乱、角色皮肤发灰;手动一格格上色又耗时巨大,一页 4 格漫画可能要花掉一晚上。上色真的只能二选一吗?
答案是否定的。本文要介绍一套完整的 AI 漫画上色工作流:从线稿准备、底色分离,到 AI 分区上色、最终统一调色,全程可以在几分钟内完成一页漫画。无论你是用 Stable Diffusion WebUI、ComfyUI 还是 Photoshop 加插件,这套流程都能复用。
本文覆盖范围:AI 上色的主流方案对比、线稿预处理、SD 分区上色、anime 风格 LoRA 配合、ComfyUI 节点式上色、以及一套可落地的完整脚本示例。
核心概念
什么是”漫画上色”工作流
漫画上色不是简单地把图片丢给 AI 让它”上色”,而是一条流水线:
线稿 → 线稿预处理 → 底色/蒙版分离 → AI 分区上色 → 光影细化 → 统一调色 → 导出
每一步都有专用的工具和参数。理解这条流水线,才能在不同工具间灵活切换。
上色方案对比
| 方案 | 工具 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 图生图直接上色 | SD WebUI img2img | 简单快速 | 线条易被破坏、颜色易脏 | 快速概念稿 |
| 分区蒙版上色 | img2img + inpaint mask | 颜色分区干净 | 需要手动画蒙版 | 单角色/局部 |
| 线稿条件上色 | ControlNet (Lineart/Canny) | 保留线条结构 | 需要下载专用模型 | 高质量成稿 |
| 节点式上色 | ComfyUI | 可复现、可批量 | 学习曲线陡 | 批量/生产环境 |
| 手动精修 | PS + 上色插件 | 完全可控 | 耗时 | 封面/关键页 |
关键术语
- 线稿(Lineart):只有线条、没有颜色的黑白稿,是上色的输入。
- 底色(Base Color):每个区域的基础色块,不含光影。
- 蒙版(Mask):标记某个区域(如头发、皮肤)的像素选区。
- 重绘幅度(Denoising Strength):图生图时 AI 重画的强度,0.3-0.5 适合上色。
- LoRA:小规模微调模型,用于控制特定风格(如赛璐璐风、厚涂风)。
实战步骤
下面是一套可落地的 AI 漫画上色工作流。假设你已有一张黑白线稿 lineart.png,我们将用 Stable Diffusion WebUI 配合 ControlNet 完成上色。
步骤 1:准备环境与模型
首先确认安装了必要的扩展和模型:
# 进入 SD WebUI 目录(假设在 ~/sd-webui)
cd ~/sd-webui
# 安装 ControlNet 扩展(如未安装)
git clone https://github.com/Mikubill/sd-webui-controlnet extensions/sd-webui-controlnet
# 下载线稿检测模型(放入 models/ControlNet)
# lineart 模型用于保留线稿结构
wget -P models/ControlNet
https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart.pth
步骤 2:线稿预处理(白底 + 清理)
AI 上色前,线稿必须干净、白底、无灰色噪点。用 Python(Pillow)做一次预处理:
from PIL import Image, ImageOps, ImageFilter
img = Image.open("lineart.png").convert("L") # 转灰度
# 反转并增强对比度,确保线条纯黑、背景纯白
img = ImageOps.autocontrast(img, cutoff=2)
# 轻微模糊减少锯齿,再二值化
img = img.filter(ImageFilter.GaussianBlur(radius=0.5))
img = img.point(lambda p: 0 if p < 128 else 255)
img = img.convert("RGB")
# 强制纯白背景
bg = Image.new("RGB", img.size, (255, 255, 255))
bg.paste(img, mask=img.split()[0].point(lambda p: 255 if p < 200 else 0))
bg.save("lineart_clean.png")
print("已生成干净的线稿: lineart_clean.png")
步骤 3:配置 ControlNet 线稿条件
在 WebUI 的 ControlNet 面板中上传 lineart_clean.png,选择 Lineart 预处理器与模型:
{
"controlnet_enabled": true,
"controlnet_module": "lineart_anime",
"controlnet_model": "control_v11p_sd15_lineart [....]",
"controlnet_weight": 1.0,
"controlnet_guidance_start": 0.0,
"controlnet_guidance_end": 0.8
}
同时建议在 Prompt 中加入风格关键词,让 AI 偏向日漫赛璐璐上色:
masterpiece, best quality, cel shading, flat colors, clean lineart,
colorful, soft lighting, anime style, {character description}
步骤 4:图生图上色(img2img)
将干净的线稿作为输入图,设置合理的重绘幅度:
- Denoising strength:0.35 – 0.5(太低颜色贴不上去,太高线条会被重画)
- Sampler:DPM++ 2M Karras
- CFG Scale:7
- Steps:28
如果想让颜色更精准、避免头发和皮肤混色,可以切换到 Inpaint 模式,用蒙版把头发区域、皮肤区域、衣服区域分别涂上不同底色再分别上色。
步骤 5:用 LoRA 锁定风格
为了让每一页配色统一,加载一个漫画风格 LoRA:
<lora:cel_style_v3:0.8>, <lora:lineart_keep:0.5>
LoRA 权重建议 0.6-0.9,过高会出现过拟合的”塑料感”。
步骤 6:ComfyUI 节点式批量上色(进阶)
如果要批量给几十页上色,用 ComfyUI 搭一个可复现的节点图,核心节点如下:
{
"nodes": [
{"id": 1, "type": "LoadImage", "widgets": {"image": "lineart_clean.png"}},
{"id": 2, "type": "ControlNetLoader", "widgets": {"model": "control_v11p_sd15_lineart.pth"}},
{"id": 3, "type": "ControlNetApply", "inputs": [1, 1, 2]},
{"id": 4, "type": "KSampler", "widgets": {"steps": 28, "cfg": 7, "denoise": 0.45}},
{"id": 5, "type": "LoraLoader", "widgets": {"strength_model": 0.8}},
{"id": 6, "type": "VAEDecode"},
{"id": 7, "type": "SaveImage"}
]
}
步骤 7:统一调色与导出
最后用 Pillow 脚本做一次整体色彩统一(色相、饱和度微调),并叠加网点/速度线特效:
from PIL import Image, ImageEnhance
img = Image.open("colored_page.png").convert("RGB")
# 统一饱和度
img = ImageEnhance.Color(img).enhance(1.1)
# 轻微提亮,避免画面发闷
img = ImageEnhance.Brightness(img).enhance(1.05)
# 输出为印刷/发布用 JPG
img.convert("RGB").save("final_page.jpg", quality=92)
print("导出完成: final_page.jpg")
常见问题
Q1:AI 上色后线条总是变得歪歪扭扭怎么办?
降低 denoising strength(0.3 左右),并提高 ControlNet weight(1.0-1.2)。如果仍然破坏线条,改用 Lineart Anime 预处理器或在 Inpaint 模式下只对局部上色。
Q2:颜色发灰、不够鲜艳?
检查是否勾选了”Restore Faces”或某些降质优化项;在 Prompt 中加入 vibrant colors, saturated, cel shading,并把 CFG 提升到 7-8。后期可用 ImageEnhance.Color 统一提饱和。
Q3:头发、皮肤、衣服颜色互相污染?
这是最常见的混色问题。解决:用 Inpaint 蒙版把不同区域分别上色,或先给每个区域手动铺一层底色再交给 AI。也可以拆成多个局部 img2img 再合成。
Q4:几十页漫画怎么保证每页配色一致?
把一张”参考配色图”作为 img2img 的参考输入,或固定同一 LoRA + 同一组 Prompt 种子。生产环境建议用 ComfyUI 节点保存为 workflow,批量跑同一套参数。
Q5:上色后网点/速度线特效丢失了?
AI 上色默认会重绘画面。想要保留特效,把特效层单独抠出来,在 AI 上色完成后用 Photoshop 叠加回去,而不是让 AI 去”画特效”。
总结
- 上色不是单次生成,而是一条流水线:线稿清洗 → 蒙版分区 → 条件上色 → 统一调色,环环相扣。
- ControlNet 线稿条件 + 低 denoising 是保护线条结构、避免”画糊”的核心组合。
- 分区蒙版(Inpaint) 是解决颜色互相污染的关键手段,宁可多花一步也不整页硬上。
- LoRA + 固定种子 + 参考图 能保证多页、多格之间的配色统一。
- 生产级批量上色用 ComfyUI 保存节点工作流,可复现、可批量、可回退。
上色是 AI 漫画从”能看”走向”耐看”的最后一公里。掌握这套工作流,你的每一页都能又快又稳地拥有专业级的配色与光影。















暂无评论内容