写点什么

BeautifulPrompt:PAI 推出自研 Prompt 美化器,赋能 AIGC 一键出美图

  • 2023-06-13
    浙江
  • 本文字数:3208 字

    阅读完需:约 11 分钟

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

作者:曹庭锋、汪诚愚、吴梓恒、黄俊

背景

Stable Diffusion(SD)是一种流行的 AI 生成内容(AI Generated Content,AIGC)模型,能在文字输入的基础上生成各种风格多样的图像。在目前的 AIGC 方向,SD 是开源社区最热门的模型。然而,SD 能够生成高颜值的图像,非常依赖于用户提供的 Prompt。如果没有好的 Prompt,SD 往往无法生成用户预期的图像,极大的影响用户的使用体验。在先前的工作中,阿里云机器学习 PAI 团队在 AIGC 方向做了很多探索,包括 PAI-Diffusion 中文模型的开源、基于 Blade 的推理优化等,并且推出一系列行业解决方案。为了提升 SD 系列模型的易用性、降低使用门槛、释放 AI 模型的创造潜力,我们提出并训练完成面向 SD 自动 Prompt 美化器,使得用户只要输入一个极其简单的 Prompt,就可以得到一系列经过语言模型优化过的、细节满满的 Prompt,帮助您更简单地生成高颜值图像。在下文中,我们详细介绍 PAI 自动 Prompt 生成模型的功能和背后的技术干货。

一键体验 Prompt 自动生成

在详细介绍 PAI 自动 Prompt 生成模型前,我们首先给出体验 Prompt 生成效果。在以下的示例中,我们分别对比了原始 Prompt 和我们生成 Prompt 在 Stable Diffusion v1.5 底座模型上生成图像的效果。对于每个 Prompt,我们随机生成两张图片进行对比。








我们也在 ModelScope 上构建了一个 Demo 以供用户体验(链接)。只要输入一个简单的 Prompt,我们的模型就可以扩写成一个细节描述详细的 Prompt,然后使用 Stable Diffusion 进行文图生成。


Prompt 美化器背后的技术

在本节中,我们详细介绍如何训练一个优秀的 Prompt 美化器。整体架构如下图所示:


底座模型

PAI-Prompt 生成模型底座基于 BLOOM(BigScience Language Open-science Open-access Multilingual),由 BigScience 训练并且开源。BLOOM 具有 Decoder-only 模型架构,和 GPT-3 非常相似,最大具有 1760 亿参数。在我们的模型训练时,我们选择了具有 11 亿参数的 BLOOM 模型进行继续训练,其原因在于它的参数量不大,当它用于线上部署时,推理速度较快,而且训练和推理成本都相当可控,具有很高的实用价值。

无需数据标注的 SFT

由于模型的训练需要高质量和低质量的 Prompt 对,这些数据一般很难直接去做标注。因此我们使用如下方法自动话地搜集训练数据。


1.摘要生成:首先,我们搜集开源的高质量 Prompt 数据集,作为语言模型生成的 Target。在这种场景下,由于缺乏低质量的 Prompt,我们可以使用 ChatGPT 等大模型生成 Summary 作为低质量的 Prompt。以下是一个 Summary 的例子:


Instruction: Summarize this image description in 10 words or less and ignore words like archdaily, wallpaper, highly detailed, 8k, [r/earthporn]. Check English. Ignore modifiers 'by xxx', 'with xxx' or 'in xxx'. Ignore adjective.Input: a beautiful very detailed illustration of abandoned urbex unfinished building city nature industrial architecture architecture building spaceport by caspar david friedrich, scumm bar meadow nature synthwave, archdaily, wallpaper, highly detailed, trending on artstation.Output: of abandoned urban building in nature.
Input: portrait painting of a lost boy by cedric peyravernay and greg ruthkowski, in the style of dishonored concept art, concept design, trending on artstation \nOutput:
复制代码


2.Prompt 扩展:利用低质量的 Prompt,使用 ChatGPT 生成更高质量的 Prompt。以下是一个 Prompt 生成的例子:


Instruction: create a detailed and creative description of the 'input'. Your response should include specific details about the colors, textures, and overall composition of the painting, as well as any unique features or elements that make it stand out.Please provide a clear and concise response that captures the essence of the painting while also encouraging creativity and originality in your description. You may consider describing the setting or environment depicted in the painting.Input: Digital painting of a girl with candy hat.
复制代码


3.图像标题生成:我们搜集了高质量的图文对,对图像进行 image captioning,生成更多可供训练模型的 Prompt。


最终,得到的数据会进行美观值和一致性筛选,我们保留质量较高的数据用于 SFT。

面向 SD 的强化学习优化

RLHF(Reinforcement Learning from Human Feedback)对 ChatGPT 等大模型的效果提升有重要的作用。在我们的应用中,我们设计了面向 Stable Diffusion 的强化学习算法,优化 Prompt 生成模型。


对于 Reward Model,我们在得到图文对数据基础上,使用美学值评分模型来给图片打分,并使用一个语言模型来拟合对应 Pprompt->美学值评分,将此作为我们的打分模型。此外,我们还采用最先进的强化学习算法 PPO 来进一步优化模型,奖励函数使用打分模型和一致性得分加权:


reward = a * score_model(prompt) + b * consistency_model(raw_prompt, prompt)
复制代码


这样可以进一步加强我们生成 Prompt 的美观性和图文一致性。在完成了上述三阶段训练以后,我们的模型在小参数规模下(1.1B)的效果不亚于 ChatGPT 生成 Prompt 的效果,示例如下:






模型调用

如果想快速体验模型效果,可以访问我们在 ModelScope 社区的创空间页面链接。同时,我们也在 huggingface 等开源社区上架了这一模型,使用接口如下:


from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained('alibaba-pai/pai-bloom-1b1-text2prompt-sd')model = AutoModelForCausalLM.from_pretrained('alibaba-pai/pai-bloom-1b1-text2prompt-sd').eval().cuda()
raw_prompt = '1 girl'input = f'Instruction: Give a simple description of the image to generate a drawing prompt.\nInput: {raw_prompt}\nOutput:'input_ids = tokenizer.encode(input, return_tensors='pt').cuda()
outputs = model.generate( input_ids, max_length=384, do_sample=True, temperature=1.0, top_k=50, top_p=0.95, repetition_penalty=1.2, num_return_sequences=5)
prompts = tokenizer.batch_decode(outputs[:, input_ids.size(1):], skip_special_tokens=True)prompts = [p.strip() for p in prompts]print(prompts)
复制代码

未来展望

在这一期的工作中,我们提出并训练完成面向 SD 自动 Prompt 美化器,使得用户只要输入一个极其简单的 Prompt,就可以得到一系列经过语言模型优化过的 Prompt,帮助您更简单地生成高颜值图像。在未来,我们计划增加这一类模型对各种类 SD 模型的适配,丰富 PAI-AIGC 的算法和产品能力。

阿里灵杰回顾


免费领取 交互式建模PAI-DSW、模型训练PAI-DLC 5000CU*H计算资源包,以及价值500元模型在线服务 PAI-EAS 抵扣包。

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2020-10-15 加入

分享阿里云计算平台的大数据和AI方向的技术创新和趋势、实战案例、经验总结。

评论

发布
暂无评论
BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图_人工智能_阿里云大数据AI技术_InfoQ写作社区