AI漫剧制 | 第 15 天:AI漫画上色工作流:从线稿到彩色

第 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 漫画从”能看”走向”耐看”的最后一公里。掌握这套工作流,你的每一页都能又快又稳地拥有专业级的配色与光影。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容