文字生成图片

时间:2022-09-29 19:54:29

摘要

根据文字生成图像,是近几年大模型领域比较热门的研究。我这篇文章主要记录如何使用百度的文心大模型实现文字生成图像。

PaddleHub能力简介

PaddleHub旨在为开发者提供丰富的、高质量的、直接可用的预训练模型

  • 【模型种类丰富】: 涵盖大模型、CV、NLP、Audio、Video、工业应用主流六大品类的 360+ 预训练模型,全部开源下载,离线可运行
  • 【超低使用门槛】:无需深度学习背景、无需数据与训练过程,可快速使用AI模型
  • 【一键模型快速预测】:通过一行命令行或者极简的Python API实现模型调用,可快速体验模型效果
  • 【一键模型转服务化】:一行命令,搭建深度学习模型API服务化部署能力
  • 【十行代码迁移学习】:十行代码完成图片分类、文本分类的迁移学习任务
  • 【跨平台兼容性】:可运行于Linux、Windows、MacOS等多种操作系统

文心ERNIE-ViLG介绍

文心ERNIE-ViLG参数规模达到100亿,是目前为止全球最大规模中文跨模态生成模型,在文本生成图像、图像描述等跨模态生成任务上效果全球领先,在图文生成领域MS-COCO、COCO-CN、AIC-ICC等数据集上取得最好效果。你可以输入一段文本描述以及生成风格,模型就会根据输入的内容自动创作出符合要求的图像。

目前ERNIE-ViLG的文心大模型API已经登入PaddleHub,只需通过4行代码就能实现强大的图文生成能力! 你可以输入一段文本描述以及生成风格,模型就会根据输入的内容自动创作出符合要求的图像。
例如:
文字生成图片
文字生成图片
文字生成图片

配置环境

1、安装PaddlePaddle
链接:https://www.paddlepaddle.org.cn/
文字生成图片
如果只是为了体验图文生成的功能,可以安装CPU版本。

conda install paddlepaddle==2.3.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/

更详细的安装步骤:https://www.paddlepaddle.org.cn/documentation/docs/zh/install/conda/windows-conda.html#anchor-0
2、安装PaddleHub

pip install --upgrade paddlehub
pip install docarray

模型加载推理

新建个python脚本,插入下面的代码即可生成图像。

import paddlehub as hub
from docarray import DocumentArray,Document

erniv_vilg_module=hub.Module(name='ernie_vilg')

result=erniv_vilg_module.generate_image(text_prompts='香山,天鹅,亭子,古风,枫叶,概念艺术',style='水彩',output_dir='./output')

DocumentArray([Document().load_pil_image_to_datauri(image) for image in result[:6]]).plot_image_sprites()

参数:

  • text_prompts(str): 输入的语句,描述想要生成的图像的内容。
  • style(Optional[str]): 生成图像的风格,当前支持’油画’,‘水彩’,‘粉笔画’,‘卡通’,‘儿童画’,‘蜡笔画’。
    还有一些其他风格也是支持的,比如:
    二次元、浮世绘、蒸汽波艺术、low poly、像素风格、概念艺术、未来主义、赛博朋克、写实风格、洛丽塔风格、巴洛克风格、超现实主义等。
  • topk(Optional[int]): 保存前多少张图,最多保存10张。
  • output_dir(Optional[str]): 保存输出图像的目录,默认为"ernievilg_output"。

返回

  • images(List(PIL.Image)): 返回生成的所有图像列表,PIL的Image格式。

Prompt 设计原则

Prompt:简单原则:清楚地陈述 除了公式之外,也有一些简单的prompt设计原则分享给大家

这里的第一条原则是 要清楚的陈述

例如我们如果是简单的输入 风景的话,往往模型不知道我们想要的风景是什么样子的

我们要去尽量的幻想我们风景的样子,然后变成语言描述

例如我想想的是日落时,海边的风景

那我就构造了prompt

进一步的,我想风格化我的图像,所以我在结尾的部分,增加了 胶片感来让图片的色彩更加好看一些

但是云彩的细节丢失了一些

进一步的我再增加天边巨大云朵这一个细节,让我的图片朝着我想要的样子靠的更进一步
详见:https://wenxin.baidu.com/wenxin/docs#Ol7ece95m
下面举几个例子:

1、火焰,凤凰,少女,未来感,高清,3d, 精致面容,cg感,古风,唯美,毛发细致,全身立绘

result=erniv_vilg_module.generate_image(text_prompts='火焰,凤凰,少女,未来感,高清,3d, 精致面容,cg感,古风,唯美,毛发细致,全身立绘',style='古风',output_dir='./output')

输出结果:
文字生成图片
2、巨狼,飘雪,蓝色大片烟雾,毛发细致,烟雾缭绕,高清,3d,cg感,侧面照

result=erniv_vilg_module.generate_image(text_prompts='巨狼,飘雪,蓝色大片烟雾,毛发细致,烟雾缭绕,高清,3d,cg感,侧面照',style='写实风格',output_dir='./output')

文字生成图片
如果不想安装环境也可以在百度的网站上体验,链接:
https://wenxin.baidu.com/moduleApi/ernieVilg