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

背景

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 \n
Output:

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, AutoModelForCausalLMtokenizer = 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开源中文NLP算法框架EasyNLP,助力NLP大模型落地
  • 阿里灵杰:预训练知识度量比赛夺冠!阿里云PAI发布知识预训练工具
  • 阿里灵杰:EasyNLP带你玩转CLIP图文检索
  • 阿里灵杰:EasyNLP中文文图生成模型带你秒变艺术家
  • 阿里灵杰:EasyNLP集成K-BERT算法,借助知识图谱实现更优Finetune
  • 阿里灵杰:中文稀疏GPT大模型落地 — 通往低成本&高性能多任务通用自然语言理解的关键里程碑
  • 阿里灵杰:EasyNLP玩转文本摘要(新闻标题)生成
  • 阿里灵杰:跨模态学习能力再升级,EasyNLP电商文图检索效果刷新SOTA
  • 阿里灵杰:EasyNLP带你实现中英文机器阅读理解
  • 阿里灵杰:EasyNLP发布融合语言学和事实知识的中文预训练模型CKBERT
  • 阿里灵杰:当大火的文图生成模型遇见知识图谱,AI画像趋近于真实世界
  • 阿里灵杰:PAI-Diffusion模型来了!阿里云机器学习团队带您徜徉中文艺术海洋
  • 阿里灵杰:阿里云PAI-Diffusion功能再升级,全链路支持模型调优,平均推理速度提升75%以上
  • 阿里灵杰:EasyNLP集成K-Global Pointer算法,支持中文信息抽取
  • 阿里灵杰:PAI-Diffusion中文模型全面升级,海量高清艺术大图一键生成

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

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

  1. Ampere 又放大招,推出自研192 核AmpereOne 系列处理器,已投产

    作者 | 伍杏玲 近日,Ampere Computing 发布2023年度战略和产品路线图,并推出全新的AmpereOne系列处理器,拥有多达 192 个单线程 Ampere 核,内核数量为业界最高. ...

  2. 对标Pytorch,清华团队推出自研AI框架“计图”

    「AI技术生态论」 人物访谈栏目是CSDN发起的百万人学AI倡议下的重要组成部分.通过对AI生态专家.创业者.行业KOL的访谈,反映其对于行业的思考.未来趋势的判断.技术的实践,以及成长的经历. 20 ...

  3. 苹果新推出的IPod播放器为三星奏出美妙乐符

    对三星电子(Samsung Electronics Co.)来说,苹果电脑公司(Apple Computer Inc.)新推出的iPod nano奏出的可是一首美妙的乐曲. 虽然这两家公司在数码音乐播 ...

  4. 华为自研5G关键芯片PA:明年量产不再依赖美国;1999元!苹果发布AirPods Pro ;腾讯云勇推自研服务器“星星海”……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周两次,打卡即read   更快.更全了解泛云圈精彩news ...

  5. PL/SQL 美化器不能解析文本

    1.问题:PL/SQL美化器不能解析文本 原始sql语句如下: CREATE OR REPLACE VIEW V_GGXZBM AS SELECT XZBM,XZMC,CASE WHEN PARENT ...

  6. PL/SQL7中的SQL美化器设置

    2019独角兽企业重金招聘Python工程师标准>>> 一.我的环境 1.操作系统版本:Windows 7 旗舰版,Service Pack 1 2.PL/SQL版本:7.0.1.1 ...

  7. 【oracle工具报错】plsqldev客户端中的PL/SQL美化器文件的规则不能用的郁闷事(因注释放错位置)

    plsqldev客户端中的PL/SQL美化器文件的规则不能用的郁闷事 场景: 昨晚把PL/SQL美化器文件的规则已经调整的很好,而且已经可以使用, 但早上起来把文件里的注释调整了一下位置后导致规则文件 ...

  8. PLSQL如何调出sql美化器按钮

    工具-plsql美化器-右键 阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿巴阿 ...

  9. PL/SQL 美化器不能美化代码的解决方法

    刚上手plsql,在用到美化器美化代码的时候 发现有时候可以美化成功,有时候又没任何反应, 有时候选择部分代码又可以美化成功. 于是总结了一下,发现create table/drop table开头的 ...

最新文章

  1. 自我总结(四) ---java web项目完结,j2ee的开始
  2. 这个牛逼技术你可千万别学!
  3. Spring集合 (List,Set,Map,Properties) 实例
  4. Petapoco使用SQLite的异常问题
  5. [html] 怎样禁用页面中的右键、打印、另存为、复制等功能?
  6. java按时间范围过滤_在Java中,如何仅选择或过滤在特定时间段内创建的文件
  7. switch语句小练习
  8. matlab有限体积网格,用Matlab实现简单有限体积求解器
  9. php代码里面的居中,css代码如何居中
  10. hidden field implements session
  11. 笔记︱金融风险之欺诈分类以及银行防控体系简述
  12. 信号量实现环形buff下多生产者多消费者模型
  13. OSChina 周三乱弹 ——祖传的程序员?????
  14. 全方位了解8.0系统下的Handler
  15. 126邮箱如何绑定qq邮箱服务器,126邮箱注册登陆入口(一招教你快速登录QQ/网易邮箱)...
  16. python实现企业微信定时发送文本消息
  17. 查询出生日期到现在的天数
  18. this.dom.getContext is not a function;
  19. Java 数字金额,字符串格式化
  20. Jupyter notebook显示k线图集合

热门文章

  1. 快来解锁小程序蓝牙开发技能
  2. windows cmd http_proxy
  3. 计算机学院学生会招新宣传语,学生会招新宣传标语50句
  4. Md2All使用方法
  5. python初学者笔记——百度搜索关键词提取问题解决
  6. 新华社:房地产要调控到民众满意的“政治水平”(转)
  7. 面试必备——python100题
  8. 史上最全关于苹果开发者账号及上架APPStore总结
  9. 实现Excel表格的读写操作(office,wps)
  10. buuctf-[极客大挑战 2019]BuyFlag-个人理解