如何使用 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 生成图片的一些问题。

主要有以下三类问题:

  1. Dreammaker(公司内部署的 Stable Diffusion 服务)使用门槛较高,生图过程需要完成复杂的配置,比如:大模型、Lora、提示词、负向提示词、controlnet、采样器、VAE 等;

  1. Midjourney 工具需要自费使用,每个团队都有大量生图资源和多账号需求,一般会选择采购多个账号,这对团队开销形成了一定压力;

  1. 对于保密项目,使用外部生图工具(例如:Midjourney)又会担心项目数据安全的问题;

我们选择与 Dreammaker 合作, 使用其底层计算能力,这样所有的生图数据都会存在公司内部,不必要再担心使用外部设计工具存在的数据泄露问题。同时,Dreammaker 丰富的计算资源,也为 Fin2.0 的服务稳定和生图效率提供了保障。

2.1 三步生成图片

使用 Stable Diffusion 进行创作,一个文生图步骤,最少需要 30 多个配置参数,主要分为三大类:

  1. 必须类型:

| 参数名称 | 参数说明 |

| ---------- | -------------- |

| model_name | 模型名称,底模 |

| prompt | 正向提示词 |

  1. 基础类型:

| 参数名称 | 参数说明 |

| --------------- | ------------------ |

| negative_prompt | 负向提示词 |

| sampler_name | 采样方法 |

| steps | 采样迭代步数 |

| width | 图片宽度 |

| height | 图片高度 |

| cfg_scale | 提示词相关度 |

| n_iter | 迭代次数,图片数量 |

| seed | 随机种子 |

  1. 辅助类型:

| 参数名称 | 参数说明 |

| ------------------ | ---------------- |

| 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 为用户提供更多便捷易用的功能。

参考链接

最后:

![{"anchor_href":"","expected_size":"-1,-1","external_info":"","id":"1007","image_margin":2,"image_url":"https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f2617b7ff8c14571af1b2cbd805fb0e2~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1080&h=985&s=101564&e=png&b=fefefe","original_name":"","original_path":"C:/Users/wb.qiujunjie02/AppData/Local/netease/popo/users/wb.qiujunjie02@mesg.corp.netease.com/image/d1cba265d31bca682b7eaa839cfd5943.png","original_size":"-1,-1","press_can_drag":true,"show_in_image_viewer":true}](https://file.jishuzhan.net/article/1724278611818582017/27de0ee6c644b4c4d0a11d6e03006379.png; charset=binary)

更多岗位,可进入网易招聘官网查看 hr.163.com/

相关推荐
前端Hardy7 分钟前
HTML&CSS: 实现可爱的冰墩墩
前端·javascript·css·html·css3
web Rookie37 分钟前
JS类型检测大全:从零基础到高级应用
开发语言·前端·javascript
Au_ust44 分钟前
css:基础
前端·css
帅帅哥的兜兜1 小时前
css基础:底部固定,导航栏浮动在顶部
前端·css·css3
yi碗汤园1 小时前
【一文了解】C#基础-集合
开发语言·前端·unity·c#
就是个名称1 小时前
购物车-多元素组合动画css
前端·css
编程一生1 小时前
回调数据丢了?
运维·服务器·前端
丶21362 小时前
【鉴权】深入了解 Cookie:Web 开发中的客户端存储小数据
前端·安全·web
Missmiaomiao2 小时前
npm install慢
前端·npm·node.js
程序员爱技术4 小时前
Vue 2 + JavaScript + vue-count-to 集成案例
前端·javascript·vue.js