目录
[controlnet 设置](#controlnet 设置)
[canny 边缘](#canny 边缘)
[depth 深度](#depth 深度)
[lineart 线稿](#lineart 线稿)
背景
这段时间不知道为啥小伙伴似乎喜欢制作很符合自己场景的ICON。其实,你如果认真看了本专栏前面几节的内容,应该说这个问题很简单。但是总有小伙伴按照别人的safetensor 或者checkpoint 文件无法做出别人的效果,做出来总是一个很奇怪的图案。如果你也是这种情况,就说明你还没有入门炼丹师行业。Stable Diffusion 作画的机理及使用前面已经讲了很多。AI作画的好处就是天马行空,不管是文生图 还是 图生图,都是一样的。这种灵活性赋予AI作画创造性的同时,也使得AI作画无法被指定的实物约束。这个时候一定要使用 controlnet。controlnet相当于是在赋予AI创造性的同时,告诉AI 作画,你的发挥空间必须遵循我的limitation 约束。本质上,stable diffusion 有很多东西都是在约束AI的 '创造力',使得创造出的东西符合 平时人们的观感。最简单的 正负提示词,随机种子,到你套用的模型,无论是比较小的Lora,还是比较完整的checkpoint 都是如此,训练的本质你可以理解为其实就是约束AI的创造行为,不要让AI天马行空的乱绘制。controlnet 在这里面属于一种比较强的约束,在稍微高级一点的 stable diffsuion,作为炼丹师入门的AI 绘画技能必须要掌握。我就任意选一个AI icon 的例子,看看怎么处理。
controlNet
整体描述
前面讲过他了,为什么别人做出来的icon 不是胡乱的四不像,而你根据同样的配置做出来是乱七八糟?就是因为 controlnet 在大多数时候,炼丹师对 controlnet的操作不会被保存,这需要你自己选择合适的controlNet model。有时候甚至需要多个controlNet 的叠加。controlNet 发展到现在,有近20种了吧,好像还不止。但是万变不离其宗,从功能上划分,有约束形态的openopse,有约束外形的canny,lineart,有控制深浅的 depth,有控制风格及颜色变迁的P2P,还有控制语义分割的seg等等。绘制出来形状不对,多半是没有喂给 stable diffusion 合适的边缘。我就在讲一下这部分吧。
模型,相较于Canny,Lineart提取的线稿更加精细,细节更加丰富。Lineart提供了多种预处理器,如lineart_anime(动漫线稿控制)、lineart_anime_denoise(动漫线稿控制去噪)、lineart_coarse(粗略线提取)、lineart_realistic(写实线提取)和lineart_standard(标准线稿提取)等,以满足不同用户的需求。这些预处理器能够更准确地提取出图像中的线稿信息,进而生成以线稿为框架的新图像。
Canny
Canny是一种边缘检测算法,能够很好地识别出图像内各对象的边缘轮廓。在ControlNet中,Canny模型通过调节低阈值和高阈值来控制边缘检测的精细程度。低阈值越低,线条越复杂;高阈值越高,线条越简单。这种控制方式使得用户可以根据需要,精确控制图像的边缘信息,进而生成与原图构图相似的画面,但可以通过关键词调整颜色、细节等。
Lineart
Lineart是ControlNet 1.1版本中新增的模型,相较于Canny,Lineart提取的线稿更加精细,细节更加丰富。Lineart提供了多种预处理器,如lineart_anime(动漫线稿控制)、lineart_anime_denoise(动漫线稿控制去噪)、lineart_coarse(粗略线提取)、lineart_realistic(写实线提取)和lineart_standard(标准线稿提取)等,以满足不同用户的需求。这些预处理器能够更准确地提取出图像中的线稿信息,进而生成以线稿为框架的新图像。
Depth
Depth是一种深度估计模型,它通过分析输入图像的深度信息,生成具有透视效果的图像。在ControlNet中,Depth模型不仅能够帮助用户固定角色姿势的轮廓,还能起到固定场景透视效果的作用。浅色区域意味着它离用户更近,而深色区域则离用户更远。Depth模型在处理角色图像时,可能会丢失部分内部细节(如面部表情等),但它能够很好地保留物体的轮廓和场景的透视效果。此外,Depth模型还提供了不同的变体,如Depth Leres(++)和Depth Zoe,它们各自具有不同的特点和应用场景。
实际使用
AI绘制需求
假设我们项目需要打一个app icon,是一个搜索图标,正方形,竖排显示搜索两个字。
绘制过程
PS打底
我希望是立体效果,我还是用PS打底,先做一个立体字出来。长这样:
当然如果你搞不定或者没有学过PS,直接用mspaint等绘制一张2D的搜索也还是可以的。但是效果可能没有这样做好。
场景模型选择
我想绘制出来有点金属质感,找一个带有金属质感的lora 。
这个模型比较符合我的预期。看下底膜,没有的话,提前下载或者加入。这里使用的是
设置提示词及绘制参数
hjymechatype,mecha,no humans,science fiction,vehicle focus,shadow,wheel,spacecraft,gradient background,gradient,machinery,robot,grey background,white background,ground vehicle,thrusters,blue led lighting,shining,metal,pip wire on surface,line shape led lighting,chrome,gold trim,
Deep Negative V1.x,EasyNegative,
Lora 权重 我设置的是 0.8
如果只是设置上述的,确实绘制出来什么都不是,因为你没有进一步强制约束Stable diffusion,到底绘制什么东西,图形的直观限制总比那些虚无缥缈的提示词来的直接,我这说法其实不太对,提示词也同样重要。这里我只是为了突出 controlnet 的重要性,你理解就行。
controlnet 设置
canny 边缘
depth 深度
lineart 线稿
你可能会问上了canny为什么还要上 lineart,因为在极度追求细节的环境下,canny 可能控制不住,或者说需要两者叠加比较出效果。因为字体icon 的绘制不像其他类型,不能走形,否则不知道你绘制的是什么。
效果
仔细看下,还是有细微的差别。当然你可以选择其他Lora 模型绘制不一样的icon 效果。
当然你可以适当修改提示词,
water,bubble,air bubble,black background,monochrome,greyscale,
greyscale 突出了其银灰色系
换一个水波的Lora 看看效果:
btw,另一个小技巧,如果只是风格类的转换,你已经用AI完成了一幅作品,当cn 都控制起来有点费劲,除了加高权重,还可以看下随机种子数,将seed 搞过来,有时候会事倍功半。