文生图大模型快速调优手册
目录
文生图(text to image),顾名思义是指输入给定文本提示词(text prompt),模型输出匹配提示词的图像。
文生图具有自动化程度高、精度高、可扩展性强、可定制化等优势,具有广泛的应用前景, 可以为人们提供更便捷高效的绘图解决方案。
以下为Stable-Diffusion-XL文生图大模型的基本信息及推理相关介绍,具体的操作详情可查看平台操作最佳实践。
Stable-Diffusion-XL大模型
千帆ModelBuilder预置的Stable-Diffusion-XL是业内知名的文生图大模型,由StabilityAI研发并开源,其创意图像生成能力处于业内领先;模型对指令理解能力强,支持反向Prompt定义不希望生成的内容。千帆ModelBuilder提供了预置API、私有资源池部署、模型精调(SFT-LoRA)、模型导出等能力;同时对模型的中文理解能力、图像安全能力进行了全面增强。
优势
- 日常物品绘图能力领先,整体能力达到SOTA水平。
几乎能够生成任何艺术风格的高质量图像、并实现逼真效果的最佳开源模型。 - 理解力强、创意十足,可以生成丰富多样的图像细节。
只需几句话就能创建复杂、细致、美观的图像,模型甚至能够区分「The Red Square」(红场,著名景点)和「red square」(红色正方形);模型在色彩的鲜艳度和准确度方面做了很好的调整,对比度、光线和阴影都比上一代更好;可生成图像模型难以渲染的概念,例如手、文本以及空间的排列。 - Prompt指令调整空间大,支持模型定制(LoRA),适合高级开发者使用。
支持更容易地根据自定义数据对模型进行微调。可生成自定义 LoRA 或检查点,减少数据处理的需要。
适用场景
Stable Diffusion XL的优势场景主要围绕创意设计领域,包括艺术插图、营销海报、趣味头像、建筑设计、影视创作等。
SD推理技巧
对于文生图模型的推理过程而言,为了控制模型输出更符合预期的高质量图像,两项关键的可控因素在于Prompt编写和参数调节:
可控因素 | 子项 | 说明 |
Prompt | 正向提示词Prompt | 描述期望模型生成的图像内容、风格、细节属性等 |
反向提示词Negative Prompt | 描述不期望模型生成的内容、风格、细节属性等 | |
参数 | 采样方式 | 即模型的去噪方法,不同的采样方式对图像的稳定性和质量具有不同影响 |
采样步数 | 设置的采样步数越多,图像会迭代更多次,针对提示词生成更精准的输出 | |
图片尺寸(分辨率) | 控制模型输出图像的尺寸,对模型输出风格具有一定影响 | |
风格 | 调整模型输出图像的风格 | |
提示词相关性 | 控制模型遵循和还原Prompt的程度 | |
随机种子 | 控制生成图片时的随机性,随机种子取值相同时,模型生成结果可复现性高 |
Prompt编写技巧
- Prompt不是越长越好,应尽量将关键词控制在75个(100个)以内。
- 越关键的词,越往前放:对于SD模型而言,指令Prompt的位置越靠前,模型遵循要求的比重越大。
- 相似的同类放在一起。
- 只写必要的关键词。
正向提示词Prompt
Prompt组成
Prompt的基本结构由3个部分的描述组成:前缀 + 主体 + 场景及后缀
组成结构 | 说明 | 示例 |
---|---|---|
前缀 | 用于确定图片的总体生成质量与画风等。 基本质量:强调图片质量的词汇,如masterpiece、bestquality等; 画风:用于凸显图片的画风/风格,如illustration(插画)、watercolor_medium(水彩)、impasto(厚涂)、hyperrealistic(印象派)、fantasy(超现实主义)等。 光照效果:用于图像整体环境光效的词汇,如best lighting(最佳光线)、lensflare(炫光)、Depthoffield(景深)等。 |
masterpiece, extremely detailed 8k wallpaper best quality, watercolor_medium |
主体 | 主体为图画想要凸显的主体,可以是人物、建筑、景物等,主体部分要进行丰富的描述才能获得细节丰富的图像。 | a beautiful and powerful mysterious sorceress, smile, sitting on a rock, lightning magic, hat, detailed leather clothing with gemstones, dress, castle background |
场景及后缀 | 主体存在的周围场景,如果没有场景描述,容易生成纯色背景或者是效果tag相关的背景,且主体会显得很大。部分主体会自带场景内容,例如建筑、景物等。 | abandoned amusement park, backlight at dusk |
以下示例可用于对比增加这些组成部分前后模型输出图像的效果:
- 正向提示词Prompt技巧:质量
说明 | Prompt | 输出图片 |
---|---|---|
无基本前缀 | 1 girl, flowers, tree | |
有基本前缀 | (masterpiece, extremely detailed 8k wallpaper best quality), 1 girl, flowers, tree |
- 正向提示词Prompt技巧:画风
说明 | Prompt | 输出图片 |
---|---|---|
水彩风 | (masterpiece, extremely detailed 8k wallpaper, best quality), watercolor_medium, 1 girl, flowers, tree | |
黏土风 | (masterpiece, extremely detailed 8k wallpaper, best quality), claymation_style, 1 girl, flowers, tree | |
电影风 | (masterpiece, extremely detailed 8k wallpaper, best quality), cinematic film still, 1 girl, flowers, tree |
- 正向提示词Prompt技巧:主体描述词
说明 | Prompt | 输出图片 |
---|---|---|
无主体描述 | (masterpiece, best quality), 1 mechanical girl | |
有主体描述 | (masterpiece, best quality), 1 mechanical girl, cg, blue eyes, android, expressionless,gear, metallic skin, future technology, full body |
- 正向提示词Prompt技巧:场景后缀
说明 | Prompt | 输出图片 |
---|---|---|
无场景描述 | (masterpiece, best quality), 1 mechanical girl, cg, blue eyes, android, expressionless,gear, metallic skin, future technology, full body | |
有场景描述 | (masterpiece, best quality), 1 mechanical girl, cg, blue eyes, android, expressionless,gear, metallic skin, future technology, full body, abandoned amusement park, backlight at dusk |
进阶Prompt技巧
技巧1: 关键词权重调节
语法 | 符号及说明 | 备注 |
---|---|---|
括号+数字 | (word: 1.4):表示word的权重提升为1.4倍 (word: 0.8):表示word的权重降低为0.8倍 |
- |
套括号 | (((word))):圆括号,每套一层权重x1.1倍 {{{word}}}:大括号,每套一层权重x1.05倍 [[[word]]]:方括号,每套一层权重x0.9倍 |
嵌套层数不宜过多 |
注意:加上 “\” 表明使用字面意思上的()字符,如 \(word\)。
例如,Prompt "masterpiece, best quality, 1 girl, (flower:2), tree" 和Prompt "masterpiece, best quality, 1 girl, (flower:0.1), tree" 的输出效果对比如下:
技巧2: 关键词融合
主要有三种融合方式:混合、迁移与迭代。
融合方式 | 语法 | 说明 | 示例 |
融合 | attribute1 | attribute2 | subject | 对描述同一对象的多个关键词进行混合 | white | yellow flower 生成黄色和白色混合的花 |
迁移 | [attribute1 | attribute2 | attribute3] subject | 同一对象连续生成多个不同特征,不断迁移 | [white | red | blue] flower 先生成白花,再生成红花,再生成蓝花 |
迭代 | [keyword1: keyword2: factor],factor取值区间为[0,1] | 与采样进程关联,前后生成不同对象 | [white flower: bush: 0.8] 进程80%之前生成白花,80%之后生成灌木 |
可通过提示词调度(Prompt Scheduling),对两个关键词进行混合,其语法结构为 [keyword1: keyword2: factor],其中factor取值区间为[0,1],表示在采样中的哪一步关键字 1切换至关键字 2 。
例如,Prompt "Oil painting portrait of [cat: rabbit: 0.5]",采样步数为30时,表示1-15步Prompt为"Oil painting portrait of cat",16-30步Prompt为"Oil painting portrait of rabbit"。
技巧3:划分提示语块
在语块(prompt chunk)开头的标记可能更有效,而且用户可能期望在语块中组合相关的关键词:可以使用关键字 "BREAK "来开始一个语块。
例如,Prompt使用两个语块来说明帽子是白色的、裙子是蓝色的:photo of a woman in white hat BREAK blue dress。而如果没有使用 BREAK,模型则更有可能将帽子和裙子的颜色进行混合。
反向提示词Negative Prompt
反向提示词是通过输入不期望生成的内容,以引导图像输出的另一种方式。
Prompt组成
反向Prompt的基本结构可分为整体提示词、细节提示词2个模块,内容上可包括不期望生成的对象,以及不期望的样式和属性(如丑陋、变形、人物手指数量缺少等)
种类 | 说明 |
---|---|
整体提示词 | 一般是强调图片质量、整体结构的词汇 如ugly, lowres, bad anatomy, worst quality, low quality, normal quality |
细节提示词 | 通常是Stable Diffusion出图效果中经常出现错误的词汇 如 fused ears, one hand with more than 5 fingers, disfigured, malformed, mutated, multiple breasts, futa, yaoi, three legs, huge breasts, long body, watermark, username, blurry, Missing limbs, mutated hands and fingers |
例如,对于Prompt "1girl, 18 years old, real person, sweater, white background, hands a cup of cafe",加上Negative Prompt "bad hands, missing fingers, one hand with more than 5 fingers" 前后模型输出效果对比如下:
调参技巧
千帆ModelBuilder支持调整采样步数、采样方式、风格、图片比例等参数选项。
采样
SD生成图片的过程,是先在隐层空间(latent space)中生成一张完全的噪声图,噪声预测器会预测图片的噪声,将预测出的噪声从图片中减去,就完成了一步。重复该过程,最终将会得到清晰的图片。
由于SD在每一步都会产生一个新的图像样本,因此去噪的过程被也被称为采样。采样过程所使用的方法被称为采样方法或采样器。
采样方式简介
采样器类别 | 介绍 |
经典ODE采样器 |
|
祖先采样器:命名带字母a (ancestor) | 会在每个采样步骤向图像添加噪声,采样结果具有一定的随机性,不会收敛。
|
DPM和DPM++/DPM2系列 |
|
Karras | 基于Karras噪声时间表。在约8步采样后,噪点更小,有助于提高图片质量。 |
采样方式选取建议
不同的采样方式适合的采样步数不同,且有的采样方式可能会更依赖Prompt。
- 生成简单图像:选用Euler、Euler a或Heun(可减少步长以节省时间);
- 侧重速度、新颖、较高质量、稳定性:选用DPM++ 2M Karras、DPM++ 2M;
-
侧重高质量、多样性:选用DPM++ 2M SDE Karras、DPM++ SDE Karras。
注:若注重图像的稳定性与可复现,应避免祖先采样方式,包括命名带字母a和SDE的采样器。
采样步数
设置的采样步数越多,图像会迭代更多次,对文本描述生成更精准的输出;但步长无需过高:步长过高时,模型仅精修细节,对图像整体质量影响不大。一般步数设定在20-30比较合适,大部分采样器超过50步后意义就不大了。
例如,对于千帆ModelBuilder Prompt模板-照片写实2,调整图像步长后模型输出效果对比如下,可见采样步数越高,模型输出越精细:
图像尺寸
图像尺寸(分辨率)对文生图模型的输出质量也具有一定影响;其原理在于,根据Stable Diffusion XL模型的训练策略,模型在训练阶段将图像尺寸作为信息,输入到模型训练流程中。
分辨率的选取需要兼顾当前设备条件下的计算效率与图像质量。分辨率太小,容易导致输出图像模糊、缺乏细节;分辨率太大,容易出现计算慢、显存不够等情况。
例如,对于Prompt "1 girl, flowers, tree",调整图像尺寸后模型输出效果对比如下,可见图像尺寸设置越大,模型倾向于输出更精细的细节:
风格
SD-XL存在多种预设图像风格可供选择,包括增强、动漫、摄影、数字艺术等风格.
styles.csv文件中具体 tag 内容如下:
"Style: Enhance","breathtaking {prompt} . award-winning, professional, highly detailed","ugly, deformed, noisy, blurry, distorted, grainy"
"Style: Anime","anime artwork {prompt} . anime style, key visual, vibrant, studio anime, highly detailed","photo, deformed, black and white, realism, disfigured, low contrast"
"Style: Photographic","cinematic photo {prompt} . 35mm photograph, film, bokeh, professional, 4k, highly detailed","drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly"
"Style: Digital art","concept art {prompt} . digital artwork, illustrative, painterly, matte painting, highly detailed","photo, photorealistic, realism, ugly"
"Style: Comic book","comic {prompt} . graphic illustration, comic art, graphic novel art, vibrant, highly detailed","photograph, deformed, glitch, noisy, realistic, stock photo"
"Style: Fantasy art","ethereal fantasy concept art of {prompt} . magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy","photographic, realistic, realism, 35mm film, dslr, cropped, frame, text, deformed, glitch, noise, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, sloppy, duplicate, mutated, black and white"
"Style: Analog film","analog film photo {prompt} . faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage","painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured"
"Style: Neonpunk","neonpunk style {prompt} . cyberpunk, vaporwave, neon, vibes, vibrant, stunningly beautiful, crisp, detailed, sleek, ultramodern, magenta highlights, dark purple shadows, high contrast, cinematic, ultra detailed, intricate, professional","painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured"
"Style: Isometric","isometric style {prompt} . vibrant, beautiful, crisp, detailed, ultra detailed, intricate","deformed, mutated, ugly, disfigured, blur, blurry, noise, noisy, realistic, photographic"
"Style: Lowpoly","low-poly style {prompt} . low-poly game art, polygon mesh, jagged, blocky, wireframe edges, centered composition","noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo"
"Style: Origami","origami style {prompt} . paper art, pleated paper, folded, origami art, pleats, cut and fold, centered composition","noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo"
"Style: Line art","line art drawing {prompt} . professional, sleek, modern, minimalist, graphic, line art, vector graphics","anime, photorealistic, 35mm film, deformed, glitch, blurry, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, mutated, realism, realistic, impressionism, expressionism, oil, acrylic"
"Style: Craft clay","play-doh style {prompt} . sculpture, clay art, centered composition, Claymation","sloppy, messy, grainy, highly detailed, ultra textured, photo"
"Style: Cinematic","cinematic film still {prompt} . shallow depth of field, vignette, highly detailed, high budget Hollywood movie, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy","anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured"
"Style: 3d-model","professional 3d model {prompt} . octane render, highly detailed, volumetric, dramatic lighting","ugly, deformed, noisy, low poly, blurry, painting"
"Style: pixel art","pixel-art {prompt} . low-res, blocky, pixel art style, 8-bit graphics","sloppy, messy, blurry, noisy, highly detailed, ultra textured, photo, realistic"
"Style: Texture","texture {prompt} top down close-up","ugly, deformed, noisy, blurry"
千帆ModelBuilder提供支持多种预设风格选项 |
提示词相关性
提示词相关性(CFG Scale),用于控制模型执行提示词Prompt的程度。
CFG Scale 的范围是1-30,默认值为7。Scale取值越大,模型遵循和还原Prompt的程度就越高;但数值太高容易引起图像变形、同时让图像色彩过于饱和,7~12是比较安全的取值范围。
随机种子
在Stable Diffusion中,随机种子(Seed)参数用于控制生成图片时的随机性。理论上,参数(Step、CFG、Seed、prompts等)取值相同时,生成的图片应该是基本相同的,这是因为随机种子初始化了Diffusion算法的起点,从而确保了生成过程的一致性。
Seed参数在生成图片时起到了两个主要的作用:一是确定生成图片的外观,二是确保结果的可重现性。
首先,种子决定了生成图片的外观,不同种子会产生不同随机性,从而导致生成的图片呈现不同的特征和风格,通过调整种子的数值,可以获得各种效果和样式;
其次,种子确保了结果的可重现性,使用相同的种子来运行程序时,生成的图片将是基本一致的,这对于实验、复现和比较不同模型的性能非常重要。
在使用Stable Diffusion进行图像生成时,应该注意以下几个方面:
|