你是否已经厌倦了传统的室内设计方式,想探索新方法来增强作品设计感?本期小编就同大家分享一个新武器,用Stable Diffusion的ControlNet来打造一个室内设计全新工作流。无论你是经验丰富的室内设计师还是初学小白,都将使你的日常工作如虎添翼、告别爆肝,焕发出令甲方爸爸们赞叹的设计感。
ControlNet将毛坯房照片转换为高清室内装饰效果图
ControlNet介绍
ControlNet是一种通过添加额外条件来控制扩散模型的AI神经网络结构,它提供了一种增强稳定扩散的方法。在文本生成图像的过程中,使用诸如涂鸦、边缘映射、分割映射、pose关键点等条件输入,可使生成图像更接近输入图像,对比传统图像到图像的生成方式有大幅的改进。
对初识Stable Diffusion的小伙伴们来说,看到ControlNet有这么多预处理器选项,一定很抓狂。
是的,随着ControlNet插件的不断更新,在v1.1.227版本,已经内置了15种预处理器。但没关系,为了方便大家使用,小编对每种预处理器的功能给出了简单的描述,并会在后续的分享中结合实例,演示具体的使用方法:
○ **Canny 硬边缘:**黑色背景带有白色边缘的单色图像;
○ **Depth 深度:**灰度图像,黑色代表深区域,白色代表浅区域;
○ **Normal 常规:**法线图,表示物体的凹凸纹理,常用在3D模型的绘制上;
○ OpenPose 姿态**:**生成角色动作姿态的骨架图;
○ **MLSD 直线:**黑色背景上带有白色直线的单色图像;
○ **Lineart 线稿:**黑色背景上带有白色线稿单色图像;
○ **SoftEdge 软边缘:**黑色背景上带有白色软边缘的单色图像;
○ Scribble 涂鸦**:**黑色背景上带有白色轮廓的手绘单色涂鸦图像;
○ **Seg 语义分割:**根据原图中不同素材以相应颜色进行区分的彩色图像;
○ **Shuffle 随机洗牌:**通过使用随机流的方式来洗牌原图像,在控制稳定扩散的前提下重构出新图;
○ **Tile 分块:**将原图分割为一块一块的小区域(Tile/瓦块),然后分别对每个瓦块进行图生图放大,最后集合所有放大后的瓦块,拼成完整的大图;
○ **Inpaint 局部重绘:**用于蒙版部分重绘,能在统一整体效果的前提下,补全蒙版部分的内容;
○ **IP2P 像素对像素指令:**该模型会自动识别像素对应提示词与新输入提示词的关系,并选择性的向新提示词迁移;比如把图片的光照调暗,让白天变为夜晚,在正向提示词中加入(make it night:1.3)、(night:1.3)即可;
○ **Reference 参考:**根据给定的参考图,画同一张图,但是有一定的变化,常用来保持人物角色的一致性;
○ **T2IA 自适应:**提取图片色彩或边缘,用于风格迁移;
到这里小编感觉一定有很多小伙伴们要开始抱怨了,这么多的预处理器,用哪个啊。别担心,本篇中的演示只会运用到两种最具代表性的预处理器,MLSD(直线)和Seg(语义分割),选择它们两个,并按照小编的步骤,即便你只有一张随手拍摄的毛胚房照片,也能完成一副有高级既视感的室内装饰效果图。光看文字有点晦涩,让我们先来看下这两种预处理器的实际效果。
可以看到两种预处理器的处理方式完全不同,接下来就告诉大家具体的使用步骤。
MLSD的使用方法
在日常设计流程中,根据不同的需求,可选择不同的预处理器,也可将几种预处理器组合在一起使用。比如,只想保留原图中屋子的结构线,不需要地毯、家具装饰等细节,而是让AI去自由发挥这些,那么MLSD预处理器就很适合。
-
首先用手机拍摄一张毛胚房照片,并将照片文件导入ControlNet中;
-
控制类型选择MLSD(直线),系统会自动把预处理器和模型都设置为MLSD对应的选项;
-
然后点击启用(让ControlNet生效)、低显存优化(GPU显存8G以下推荐开启)、完美像素****模式(Pixel Perfect),允许预览(Allow Preview),最后点击中间的“爆炸”按钮,就可以预览预处理器生成的线稿图。
勾选“完美像素模式”系统将会自动检测底图像素。相较未开启,生成的预处理图线条会更加细致,这边推荐大家开启哦!
- 最后我们也可以调整**“MLSD Value Threshold”和“MLSD Distance Threshold”**来改变图片线条的细节程度,这两个参数大家可以理解为调整线条的细节程度。
到这里ControlNet的参数我们已基本设定好了。接下来便是调整Stable Diffusion的基础参数。Stable Diffusion的基础参数设定并不是固定的,更多是靠各位设计师通过尝试各种创意,绘制出最适合的风格。这里小编就手把手教大家如何设置Stable Diffusion的基础参数。
首先设置Stable Diffusion模型,模型风格有很多种,比如二次元、写实风、插画、中国风等,小编推荐采用以下四个写实类风格的常用模型:
○ anything-v4.5
○ realisticVisionV20
○ PrimeMix_V2.1
○ chilloutmix_NiPrunedFp32Fix;
接下来是输入正向提示词和反向提示词:
○ **正向提示词包括:**best quality, ultra high res, 8K, Interior Design, Warm, simple, High-rise landscape;
○ **反向提示词包括:**low quality,worst quality,bad anatomy,bad composition;
接着我们设置采样迭代步数Ste****ps,默认为20,视不同图片尺寸和Stable Diffusion模型而定,通常设置在15-40左右,小编用10、15、20、25四个参数做演示。
最后设置采样方法Sa****mpler,从界面中可选择的采样方法类型有很多,不同的采样方法生成图片的过程各不相同,这里小编列举了四个常用的采样方法:Eulera、DPM++ 2S a Karras、DPM++ 2M Karras、DPM++ SDE Karras。
到这里设计师们可能会问,上面列了那么多组参数,生成的图片都有啥区别呢?
要回答这样的问题,少不了各种模型间的对比测评。如果使用中低阶GPU卡来完成这类对比测评任务,可能要花好几个小时。但作为LoveGPU的小编,当然要好好利用一下平台的资源优势,给大家带福利咯。使用地表最强出图卡Nvidia GeForce RTX 4090,短短十几分钟,小编就完成了这组测试。下面就给大家看一下anything-v4.5、realisticVisionV20、PrimeMix_V2.1、chilloutmix_NiPrunedFp32Fix四种模型的对比效果。
anything-v4.5
通过对比可以看出,不管是哪个参数都对出图的效果和质量有一定程度的影响。有了完整的测试效果支持,最终小编推荐选择下面这组Stable Diffusion参数设置:
○ **StableDiffusion模型:**majicMIX_realistic_麦橘写实_v7 ;
○ **正向提示词:**best quality, ultra high res, 8K, Interior Design, Warm, simple, High-rise landscape;
○ **反向提示词:**low quality,worst quality,bad anatomy,bad composition;
○ **采样迭代步数(Steps):**25;
○ **采样方法(Sampler):**DPM++ SDE Karras;
最后一步是调整图像分辨率,点击预处理图下方最右边的箭头符号。
可以看到Stable Diffusion基础参数里的宽度和高度已经和ControlNet中放入的图片尺寸同步了。
现在所有的参数都调好了,让我们来看一下出图效果吧!
realisticVisionV20
majicMIX_realistic_麦橘写实_v7
哇!甲方爸爸梦想中的大平层出现了,还不错是吧!但房间有点空哦,能放些家具进去就更好了。那么如何添加家具呢?这就与下面要介绍的控制权重(Control Weight)和关键词填写有关。
先解释一下**控制权重(Control Weight)的作用,权重越高则代表被原图约束越强。如果我们需要AI帮我们自由发挥一下,通常会适当地减低权重值,当然如果权重太小了,则会距离原图效果越远。通过以下的几组图例,大家可参考一下控制权重(Control Weight)**对出图效果的影响。
通过对比,我们更能直观感受到当权重设置越低,AI的创造力更强。上图权重为0.1时,生成的图片与原图基本无关;当权重逐渐提升,生成的图片与原图越来越接近。小编我希望AI为我们在图中添加沙发和地毯,因此我们适当的降低权重到0.7。
接下来我们看下关键词对出图的影响。在正向提示词中添加sofa****(沙发),carpet**(地毯)。点击生成后,我们可以看到地毯已经生成出来了,但是沙发并没有生成出来。看来关键词sofa被忽略了,我们需要提高关键词sofa的权重值。鼠标选择sofa关键词,按住ctrl键+方向键上,就可以提高关键词的权重值。现在将关键词sofa权重提升到1.3**,沙发就生成出来了。
然而,单靠关键词帮我们添加家具,最后摆放的位置往往是随机的。如果我们要在指定的位置安放家具,可用Photoshop甚至手绘的方式来先自行修改**MLSD(直线)**图,这样就能按照自己的想法来设计房间布置了!是不是已经迫不及待地想要给房间添加新家具了?小编来为大家简单演示一下。
右键保存**MLSD(直线)**图,将保存的图片导入Photoshop。然后在需要的位置简单勾勒出床的轮廓,大家也可以根据自己的喜好画,并不需要画的非常细致,只要大致描绘出轮廓就行了。
将绘制好的图片重新拖到ControlNet中,把关键词sofa改为bed,因为这已经是预处理好的图片了,所以预处理器选择none。这次,我希望生成图片的布局和我修改过的MLSD(直线)图一致,所以我把控制权重调高至1。
现在设置完毕啦,点击生成让我们来看一下设计效果吧!
可以看床已经放到我们想要的位置,而且生成图片的内容和结构都遵循了手动修改过后的线稿图。看到这里,我相信大家已经理解了ControlNet中**MLSD(直线)**的用途和使用方法了!但到这里还仅仅是本篇的一半内容,后面更精彩哦。
Seg语义分割的使用方法
我们知道MLSD是通过线条去识别物体的。大家有没有想过,当两件物体的外形是一样的,比如一个衣柜和一个冰箱,它们都是长方体,仅仅通过线条来识别,并不能很好的区分它们。显然,此时仅有MLSD已经无法胜任了,这时就需要用到Seg(语义分割), Seg可分割并用颜色标记原图物体,通过颜色对应物体的方式来引导Stable Diffusion生成希望获得的物体。以下小编就为大家介绍Seg的具体使用方法。
1.保存刚才生成的效果图,将它重新导入ControlNet中;
2.控制类型选择Seg(语义分割),在预处理器栏中我们可以看到有**seg_**ofade20k、seg_ofcoco、seg_ufade20k三种预处理器可供选择。
seg_ofade20k和seg_ufade20k都使用了ADE20k协议,所以这两种预处理器识别图片中素材所用标记颜色是相同的。区别在于它们采用了不同的算法:OneFormer算法会在颜色不同处使用白线分割;而UniFormer算法没有分割线。
seg_ofcoco则采用了COCO协议,所以它的标记颜色和ADE20k协议有所区别。另外它采用了OneFormer算法,因此在颜色不同处也会有白线分割。
光看文字比较抽象,小编直接上效果图:
从三种预处理器的效果来看,都可以很好地分割原图中的各类素材区域。
-
这里小编选择预处理器seg_ufade20k,点击启用、低显存模式(GPU显存8G以下推荐开启)、完美像素模式(Pixel Perfect)、允许预览(Allow Preview),点击“爆炸”按钮,我们可以看到图片中各素材已用不同的颜色标记出来了;
-
这里小编分享一个ADE20k协议的色号表,里面记录了不同的颜色所对应的材质或物件,大家也可以到LoveGPU官网内下载并使用。
-
现在我们想在床边添加一张桌子,先保存S****eg预处理效果图,并将其导入Photoshop,简单画出桌子的轮廓,颜色参考ADE20k色号表,选择将第34行“desk桌子”,将它的色号**#0AFF47**复制出来,填充进轮廓中。
- 回到Stable Diffusion,在正向提示词里添加desk,然后将Photoshop处理过的图片放入ControlNet中,预处理器选择none, 其他参数保持不变;
7.点击生成,让我们品鉴一下最终的设计效果吧!
太棒啦!已经顺利将桌子添加到预设位置。
文章使用的AI工具SD整合包、各种模型插件、提示词、AI人工智能学习资料都已经打包好放在网盘中了,无需自行查找,有需要的小伙伴文末扫码自行获取。