本文作者:原草(李磊)
Fin2.0 是一款由云音乐公共技术部开发的智能设计助手。产品愿景是:通过 AIGC 赋能设计过程,降低设计的门槛和成本,让业务创新变得简单。本文通过商务同学如何通过 Fin 2.0 的文生图功能完成了歌曲推广任务这一案例,为大家介绍如何使用文生图生成自己想要的图片,同时为大家带来 Fin2.0 文生图功能在设计和开发过程中的思考和实践。
一、背景介绍
1.1 什么是 Fin2.0?
Fin2.0 是一款由云音乐公共技术部开发的智能设计助手。产品愿景是:通过 AIGC 赋能设计过程,降低设计的门槛和成本,让业务创新变得简单。
我们利用 AIGC 能力矩阵:「文生图」、「文生 ICON」、「文生稿」,重构了整个设计流程。可以让策划、设计和运营,充分利用 AIGC 的相关能力来赋能设计过程,不仅能提高设计效率,还能降低沟通成本,同时可以避免使用外部服务造成数据安全的风险。
1.2 事件背景
Jersey 是云音乐电波工作室的一位商务同学,负责站内的歌曲推广。这天临时需要设计资源对新歌做推广,可是设计师大大们的档期已经约不到了。这种情况下,商务同学大多数时候会选择请求外部资源。
还好, Jersey 同学之前通过设计师室友了解到过 Fin2.0 产品,加上自己有过美术相关的设计功底,因此选择通过 Fin2.0 文生图,来生成设计原画,自己来做文字的排版和布局。
最终,Jersey 同学通过半天时间的文生图尝试,完成了两张高质量的 banner 位图片资源,很好完成了站内的歌曲推广工作。
1.3 落地成果
通过 Fin2.0 文生图功能,可以快速生成大量高质量的图片,大大节省了生产内容的时间和成本。不同类型的场景可以生成不同类型的内容,满足不同的设计和业务需求,扩大内容生产的覆盖面。
本次文生图案例,帮助 Jersey 同学完成了临时设计资源的需求,助力歌曲很好的进行站内流量转化,歌曲实现了日飙升榜「第 2 名」的好成绩。
二、Fin2.0 文生图功能介绍
在 Fin2.0 产品设计之初,我们经过了大量的走查调研,了解设计团队现阶段使用 AIGC 工具的方式,以及在使用 AIGC 生成图片的一些问题。
主要有以下三类问题:
- Dreammaker(公司内部署的 Stable Diffusion 服务)使用门槛较高,生图过程需要完成复杂的配置,比如:大模型、Lora、提示词、负向提示词、controlnet、采样器、VAE 等;
- Midjourney 工具需要自费使用,每个团队都有大量生图资源和多账号需求,一般会选择采购多个账号,这对团队开销形成了一定压力;
- 对于保密项目,使用外部生图工具(例如:Midjourney)又会担心项目数据安全的问题;
我们选择与 Dreammaker 合作, 使用其底层计算能力,这样所有的生图数据都会存在公司内部,不必要再担心使用外部设计工具存在的数据泄露问题。同时,Dreammaker 丰富的计算资源,也为 Fin2.0 的服务稳定和生图效率提供了保障。
2.1 三步生成图片
使用 Stable Diffusion 进行创作,一个文生图步骤,最少需要 30 多个配置参数,主要分为三大类:
- 必须类型:
参数名称 | 参数说明 |
---|---|
model_name | 模型名称,底模 |
prompt | 正向提示词 |
- 基础类型:
参数名称 | 参数说明 |
---|---|
negative_prompt | 负向提示词 |
sampler_name | 采样方法 |
steps | 采样迭代步数 |
width | 图片宽度 |
height | 图片高度 |
cfg_scale | 提示词相关度 |
n_iter | 迭代次数,图片数量 |
seed | 随机种子 |
- 辅助类型:
参数名称 | 参数说明 |
---|---|
enable_hr | 是否开启高分辨率 |
hr_scale | 高分辨率放大倍率 |
denoising_strength | 重绘幅度 |
hr_upscaler | 高分辨率放大算法 |
hr_resize_x | 将宽度调整到 |
hr_resize_y | 将宽度调整到 |
LoRA:用于完成特定功能、特定风格、特定形象,一般和底模配合使用
参数名称 | 参数说明 |
---|---|
model_name | 模型名称 |
text_encoder_weights | 高分辨率放大倍率 |
denoising_strength | 文本编码权重 |
unet_encode_weights | unet 编码权重 |
ControlNet,用于特殊场景配置
参数名称 | 参数说明 |
---|---|
open | 是否开启 |
processor | 预处理 |
model | 模型名称 |
weight | 权重 |
pixel_perfect | 是否使用 pixel_perfect |
我们总结了一些常用的设计场景:推广和礼物原画的设计场景、游戏图标设计场景、3D 设计场景、赛博朋克设计场景、中国风设计场景、绘画风设计场景等。配合上一个能力强大的基础模型 SDXL,汇合成应用场景下的选项。用于满足在设计和运营日常需求的大部分设计场景。
每个设计场景,都配置了一套上面的生图参数,每个场景的需求不同,使用的模型也不同。像是用于偏向原画生成会选择 nijiv5style 模型,用于人物生成会选择 MeinaMix 模型,用于写真场景会选择 revAnimatedv122 模型等。另外场景会配合用于生成特定功能、特定风格、特定形象 LoRA 进行微调。共同实现该场景下图片生成的工作。
这样,一个看上去复杂的生图工作,就被汇总为简单三步:书写提示词、选择应用场景、点击生成。即刻获得理想的设计素材。
2.2 提示词模版
在上文的三步生图步骤中,第一步就是提示词。提示词关系到了图片生成的内容、风格、角度等。提示词之于文生图,就仿佛剧本分镜之于电影,就仿佛草稿大纲之于小说,就仿佛说明规则方法之于 AutoGPT。是决定了一张图片灵魂与命运的主旋律。
但是,往往越是重要的东西,很多同学在使用的时候越是无从下手。因此,我们总结了一套公式,用于拼装组合成文生图的提示词。有了这套公式,在书写提示词也会知道如何下手,并且如何科学的修改提示词。
提示词万能公式 = 画面主体 + 主体修饰 + 镜头光影 + 风格设定
这套提示词主要包含四部分:
- 画面主体:画面中主体内容,通常是人物、动物、物体。例如:少年、美少女、羊、湖泊、高山、礼物盒、黑胶、唱片机等;
- 主体修饰:接下来就是描述主体状态的词语。例如:五官(大眼睛、红嘴唇)、表情(微笑、困惑、叹息)、头发(长头发、粉色头饰)、服饰(牛仔裤、汉服、圣诞帽),动作(跑、跳、飞),环境(城市、草原、日出、花海、沙漠、戈壁、大海)
- 镜头光影:这部分主要就是成像的角度和光影,有摄影经验的同学会有体会。例如:镜头角度(中景、俯视图、水下拍摄、广角)、光线(氛围光、丁达尔效应、霓虹光)、画面质量(大师质量、高清画质)
- 风格设定:最后就是整体呈现的画面风格,这部分有些情况下也会由模型和 LoRA 来代替。例如:风格(吉卜力风格、皮克斯动画)、画面类型(照片、写实、纹理、中国风)
如此按照上面的结构,就可以完成一个标准的文生图提示词。至于为什么需要这么做,我会在下面章节「如何写好提示词」进行进一步的阐述。
但是,像是 SDXL 这样的模型,已经完全摆脱了这样类似 tag 的描述方式。SDXL 完全支持通过语义化描述画面内容的方式,例如我在一次业务中使用到的描述:
远处是沙漠,近处是胡杨树林,大面积的湖面,戈壁,少量羊,蒙古包,丰富细节,水粉画,远景,风景
2.3 高级设置、历史记录、素材库
对于 Stable Diffusion 的高级玩家,或是对生图需要细致调节的用户,我们也准备了高级设置功能。
- 尺寸-分辨率:常用模型尺寸围绕 512*512 进行配置,SDXL 围绕 1024*1024 进行修改,这是和模型训练时使用的资源相关的;
- 迭代次数:Stable Diffusion 是基于噪点图像生成图片的,每次的迭代会对比提示词和当前迭代结果,默认值即可,某些情况下增加迭代次数可以增加图片细节;
- 提示词强度:迭代过程与提示词的对比强度;
- 随机种子:代表起始生成的噪点图;
我们还支持了生成历史和素材库两个功能。
「生成历史」包含了使用 Fin2.0 生图工具过程中生产的所有图片,收藏功能便于用户查找精品图片。
「素材库」是 Fin2.0 内部画廊,优秀作品的展出舞台。想要生成同款素材可以使用一键同款功能,复制提示词和参数,生成自己的素材。
三、Fin2.0 生图经验分享
在推广 Fin2.0 生图工具的过程,有各种各样的使用生图工具的姿势。最典型的一种就是只描述自己的需求,但是没有描述图片的具体内容。例如:
我想要一个盲盒皮肤
想要使用好工具,除了通过定制生图模型参数、科学配比提示词,最好的方式就是了解生图模型是如何运作的。这样,知其然知其所以然,才能更好的使用生图工具。下面我就通过自己的视角,来解释生图模型和提示词在其的作用。以及如何在使用最基本的生图模式的情况下,更好的完成复杂图片的生成。
3.1 如何理解生图模型
Stable Diffusion 的生图原则,就是将文字信息和图片信息通过噪声预测器进行转化。这样在文生图的时候,就可以把文字信息转化为图片信息。图生图同理,把图片信息加上一定的文字信息(作为修改)再转化为图片信息。
因为每张图片像素分布满足一定规律分布,比如人脸有眼睛鼻子嘴巴,汽车是长方体有轮子。因此可以利用文本信息作为指导,把一张纯噪声的图片逐步去噪,生成一张跟文本信息匹配的图片。
整个生图过程是一个组合系统,里面包含了多个模型子模块。
首先,把文本信息转化为数字信息,这里就用到了文本编码器 text encoder(蓝色模块),可以把文字转换成计算机能理解的某种数学表示,它的输入是文字串,输出是一系列具有输入文字信息的语义向量。
接下来,有了这个语义向量,就可以作为后续图片生成器 image generator(粉黄组合框)的一个控制输入,这也是 stable diffusion 的核心模块。图片生成器生成潜在图像(也就是噪声图片),噪声预测器根据语义向量估计噪声图片中的噪声,从噪声图片中减去预测出来的噪声,生成新的潜在图像。多次重复上面的「预测+去除噪声」过程,最终得到生成图片。
想要使用好文生图,理解到这里就够了。因此想要生成一张好的图片,最好的办法就是描述出图片中的信息,也就是描述清楚提示词。
3.2 如何理解提示词
上面提示词模版介绍了如何科学的书写提示词。那么根据上文中图片信息是由文字信息转化来的,这里的文字信息一般用 token 表示(对,就是 ChatGPT 里同样使用的 token)。因此,也就难怪为什么我们描述图片信息的时候,都是一个一个的单词或短语了。当然,最新的 SDXL1.0 模型已经支持用自然语言描述图片内容。
至于为什么这么写提示词,我们还是从训练模型的过程中找找原因。训练一个图片模型,一定会需要图片和文字信息成对存在,也可以称为打标签。接下来,我们来做个测试。下面是是一张我用 Fin2.0 文生图创建的图片,请描述下面的图片:
如果没有经过一定的训练,或是按照一定的标准。我想大家的描述可能会是这样的:
- 戈壁图片,有山、有水、有羊;
- 黄色的草原氛围图;
- 新疆山水+胡杨树+羊;
我实际采用的描述词是这样的:
远处是沙漠,近处是大面积的胡杨树林,大面积的湖面,戈壁,绵羊,蒙古包,丰富细节,近景,风景,儿童水彩画,
可以看到,一张图片在不同人的理解下,所使用的文字描述一定是不同的。但是,在进行模型训练的时候,大多都是采用 tag 的方式,按照画面主体、主体描述、风格设定、镜头光影,这样大致的分类来分层次描述。因此,这也是为什么采用上面的格式书写提示词,才是最高效的。
3.3 如何制作复杂图片
在实际使用文生图的过程中,已经按照提示词模版科学的书写提示词,可是画面还是不受控制,还是没有达到我想要的样子,这是为什么呢?
有一部分原因是对模型理解的不到位。比如:使用了一个擅长生成风景的模型来生成人物;使用了一个擅长生成国风风格的模型来生成漫画风;使用 1024*1024 尺寸来要求模型(训练时采用的 512*512 尺寸图片)生成图片,结果图片崩坏多头多手(SDXL1.0 是支持 1024*1024 尺寸图片生成的)。
因此,对一个新需求最快捷的完成方式是:一方面,查看模型的预览图,查找最合适的模型,按照常规 512*512 尺寸生图;另一方面,可以采用同一批提示词,对不同模型进行尝试,查找最符合自己需求的模型或场景。
选好了模型,再有就是给模型提供更多的信息。按照上文模型生图的原理,除了可以提供文字信息,也可以提供图像信息,通过图生图来生成。
下面,我就介绍下在没有 controlnet 或是其他 Stable Diffusion 插件的情况下,实际生产过程是如何如何生成复杂图片的。比如有这样一个需求:需要生成一个盲盒贴图,画面中有情侣头像、爱心、花朵、问号元素。如果简单把元素输入到提示词当中,那一定是抽盲盒似的,每次生成的内容都是不一样的,而且很少有图片能达到设计需求。
通过图生图生成图像,就好像为图片生成了一部分草稿,让模型按照我们的要求来生成图像。因此我先生成局部头像,然后采用设计工具 mastergo 或 figma 对图像进行拼装,配合上底色和关键元素问号。最后,使用这样一张草图让模型进行重新润色。这样只需几个简单的过程,就可以很快的得到理想的图片。
四、总结
现在 Fin2.0 文生图已经有大量的落地案例。例如:
- 云音乐商务推广运营位图片
- 云音乐商城 H5 头图
- 社交直播盲盒贴图
- 社交直播称号背景图
- ...
想用好一个工具,最好的办法还是多练习。本文只是从很基础的方式介绍了如何使用 Fin2.0 生图工具,如何填写提示词,如何理解模型、理解提示词,如何采用更高效的方式生成更复杂的图片。除此之外,Stable Diffusion 还有很多值得去学习的知识。例如:上面罗列的那么多文生图过程中使用的参数,对生成图像有什么影响?文中提到的 ControlNet 是什么东西?如何生成更高清画质的图像?
回到文章最初,Fin2.0 工具的愿景就是:通过 AIGC 赋能设计过程,降低设计的门槛和成本,让业务创新变得简单。接下来我们会持续收集用户在使用文生图过程中的反馈。持续迭代优化产品,通过 Fin2.0 为用户提供更多便捷易用的功能。
参考链接
- https://huggingface.co/docs/diffusers/api/pipelines/stable_di...
- https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#prompt-matrix
- https://stablediffusionxl.com/
- https://github.com/CompVis/latent-diffusion
- https://zhuanlan.zhihu.com/p/628714183
- https://www.uisdc.com/lora-model
更多岗位,可进入网易招聘官网查看 https://hr.163.com/
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。