1-13 ControlNet Depth深度图引导生图:深度定空间,房间里透过窗看鲨鱼

2026-09-17 10:39 · 56 阅读
1-13 ControlNet Depth深度图引导生图:深度定空间,房间里透过窗看鲨鱼

准备工作:这篇教程要用到的材料

本教程演示的工作流是「1-13_[图像生成]_ControlNet_Depth深度图引导生图」,位于工作流大合集的 01 图像生成 分类目录下。它的作用一句话概括:上传一张黑白深度图,用远近关系锁死空间布局,再按你的提示词重新画一遍——哪里近哪里远跟深度图走,画什么内容你说了算。

这个工作流要凑齐 3 样东西:

① 写实底模(SD1.5 系):majicmixRealistic_v7.safetensors 或 absolutereality_v181.safetensors → models\checkpoints\。注意工作流默认挂的是 SDXL 的 sd_xl_base_1.0,跟 SD15 的 depth 控制器对不上,打开后第一件事就是换成你手头的 SD1.5 写实底模。AbyssOrangeMix2 是二次元人物模,画写实鲨鱼、写实房间会糊,本篇不用它。

② Depth 控制器:control_v11f1p_sd15_depth 系列 → models\controlnet\。工作流里写的是 .pth 版,你本地是 .fp16 版(control_v11f1p_sd15_depth.fp16.safetensors),下拉选 fp16 那个就行,通用。

③ VAE:vae-ft-mse-840000-ema-pruned.safetensors → models\vae\。

④ 一张黑白深度图:白=近、黑=远。本篇实测用房间照在线转出的深度图。注意工作流里没有深度预处理节点,彩色照片不能直传,必须先转成黑白深度图,方法见第三节。

room-depth-grayscale.png

打开后如果有红色节点或模型下拉是空的,先回看本系列第 1 篇《缺节点模型补全》把环境补齐,再回来跑这篇。

image.png

一、这个工作流能干什么

先想一个创作场景:你有一张房间照片,很喜欢它的空间关系——沙发在近处、窗在中间、窗外是远景,但想换成别的内容——比如窗外原来是楼,现在想让一条大鲨鱼从窗外游过;或者整个房间保留布局,换成另一种装修风格。重画吧,空间关系很难复刻;垫图吧,颜色纹理又会被带过去。

Depth 就是为这种需求生的:它只认“哪里近、哪里远”,把颜色、纹理、具体物体全部丢掉。然后用这张深度关系约束 SD 出图——深度定空间,提示词填内容。

本篇实测就是这样演示的:房间照转出的黑白深度图(LoadImage 节点上传)+ 正向提示词写“人在客厅里、透过窗看鲨鱼”(本篇已换成下面的新版提示词,直接整段替换)→ 出来的就是同空间布局的客厅+窗外鲨鱼,房间是提示词的房间,空间关系是深度图的空间关系。原稿自带的只是 Shark in the water 一句话,主体权重不够,深度一加上鲨鱼直接被淹没,本篇已换掉,原因见第四节。

所以它的用途很明确:

· 空间关系复用:喜欢某张图的纵深、遮挡、前后关系,就拿它的深度当“空间”,批量换主体、换风格;

· 同一空间批量变体:深度图不动,只换提示词,一次出 N 版同空间不同内容的图;

· 跟 1-12 的分工:Canny 锁边缘线稿(骨架最死,姿态必须跟),Depth 锁前后远近(空间定、内容更自由,适合换主体、换场景)。

二、链路结构:深度图是怎么变成约束的

整个工作流只有一条主链,11 个节点,可以分成三段看。先记住总路线:LoadImage(黑白深度图)→ ControlNetApply → KSampler → VAEDecode → SaveImage,底模和控制器在两侧汇入。

第一段“取图”:LoadImage 节点上传黑白深度图(原稿自带 shark_depthmap.png,本篇换成房间深度图)。注意它后面没有任何预处理节点直连 ControlNetApply,所以传进来的必须已经是黑白深度,彩色照片传进来必乱,这是本工作流最重要的检查点。

第二段“约束加载”:ControlNetLoader 节点选择 depth 模型,连到 ControlNetApply。ControlNetApply 一共收三样东西:正向条件(上面来的提示词)、ControlNet 模型、LoadImage 传来的深度图,强度 1.0,输出“被深度约束过的条件”再喂给 KSampler。

image.png

第三段“采样出图”:CheckpointLoaderSimple 挂 SD1.5 写实底模,CLIPTextEncode 进正向提示词和反向提示词,EmptyLatentImage 1920x1080(16:9),KSampler 30 步、cfg 7、采样器 uni_pc_bh2,走完 VAEDecode、SaveImage 出图。

三、操作步骤:从深度图到成图

第一步,把彩色房间照转成黑白深度图。随便找个在线深度估计工具(搜 ZoeDepth、MiDaS、Depth Anything 的在线 demo 都行),把房间照传上去,存下那张黑白图。判断转得对不对就看一条:近处的沙发、灯是白色,窗外的远景是黑色,白近黑远对了就能用。

第二步,打开 1-13 工作流,先换底模。CheckpointLoaderSimple 下拉选 majicmixRealistic_v7 或 absolutereality_v181(两个都是 SD1.5 写实,跟 depth 控制器同代)。ControlNetLoader 选你本地的 control_v11f1p_sd15_depth.fp16 版。

第三步,LoadImage 上传第一步转好的黑白深度图。正向提示词整段替换成下面这段(英文,SD1.5 认英文):

view from inside a modern living room interior, (large window in front:1.2), a huge shark swimming outside the window, (shark clearly visible through window:1.3), room interior with sofa and lamp in foreground, deep blue ocean water outside, sunlight through water, photorealistic, ultra detailed, sharp focus, 8k

反向提示词保持原稿不动(hands、text、worst quality 那一串拉下限的)。潜空间保持 1920x1080,跟深度图一样是 16:9,比例对不齐主体会被拉伸挤掉。

第四步,点队列,出图。实测出图时间不长,普通显卡一次直出。效果就是:视角在客厅里,近处沙发台灯,中间大窗,窗外深蓝海水里一条大鲨鱼游过

image.pngimage.png

四、提示词为什么这样写

原稿 Shark in the water 只有 4 个词,犯了两个错:一是没有主体权重,深度约束一加上,鲨鱼直接被背景淹没,连画都不画;二是跟深度结构对不上,深度图是房间,提示词全是水下,模型两头为难。

新版提示词三处改动:

· 主体前置 + 加权:视角第一句点明 inside living room,鲨鱼句加 (shark clearly visible through window:1.3),强制必须画鲨鱼;

· 按深度结构写:foreground 写沙发台灯(对应白色近景)、window 写中间、outside 写海水鲨鱼(对应黑色远景),提示词和深度图一一对上;

· 尾巴加画质词:photorealistic、ultra detailed、8k 给写实底模足够的作画依据,下限不崩。

记住公式:视角在哪 + 近景是什么 + 远景是什么 + 主体加权 + 画质词,换别的深度图照这个公式改就行。

五、常见报错与排查

· 传彩色照片出图乱:本工作流没有预处理节点,必须传黑白深度图。回去做第一步,先转再传。

· 底模下拉感叹号或跑图中报错:十有八九是 SDXL 底模配了 SD15 的 depth。Checkpoint 换成 SD1.5 写实模,ControlNet 选 depth 的 fp16 版,同代配对。

· 有房间没鲨鱼:主体权重被淹没。检查鲨鱼那句有没有 (shark clearly visible through window:1.3),或者把 ControlNetApply 强度从 1.0 降到 0.75 再跑一张,约束松一点主体更容易出来。

· 鲨鱼糊、质感不对:底模风格错。用 Abyss 这类二次元模画写实鲨鱼必糊,换 majicmixRealistic_v7 或 absolutereality_v181。

· 画面拉伸、主体被挤掉:深度图和潜空间比例不一致。深度图裁成接近 16:9 再传,对齐 1920x1080。

登录后分享可赚邀请积分
评论 (0)

登录后才能发表评论

去登录