$ hub install disco_diffusion_cnclip_vitb16==1.0.0
模型名称 | disco_diffusion_cnclip_vitb16 |
---|---|
类别 | 图像-文图生成 |
网络 | dd+cnclip ViTB16 |
数据集 | - |
是否支持Fine-tuning | 否 |
模型大小 | 2.9GB |
最新更新日期 | 2022-08-02 |
数据指标 | - |
输入文本 "在宁静的风景中画一幅美丽的建筑画,由Arthur Adams在artstation上所作"
输出图像
生成过程
disco_diffusion_cnclip_vitb16 是一个文图生成模型,可以通过输入一段文字来生成符合该句子语义的图像。该模型由两部分组成,一部分是扩散模型,是一种生成模型,可以从噪声输入中重建出原始图像。另一部分是多模态预训练模型(CLIP), 可以将文本和图像表示在同一个特征空间,相近语义的文本和图像在该特征空间里距离会更相近。在该文图生成模型中,扩散模型负责从初始噪声或者指定初始图像中来生成目标图像,CLIP负责引导生成图像的语义和输入的文本的语义尽可能接近,随着扩散模型在CLIP的引导下不断的迭代生成新图像,最终能够生成文本所描述内容的图像。该模块中使用的CLIP模型结构为ViTB16。
更多详情请参考论文:Diffusion Models Beat GANs on Image Synthesis 以及 Learning Transferable Visual Models From Natural Language Supervision
paddlepaddle >= 2.0.0
paddlehub >= 2.2.0 | 如何安装PaddleHub
$ hub install disco_diffusion_cnclip_vitb16
$ hub run disco_diffusion_cnclip_vitb16 --text_prompts "孤舟蓑笠翁,独钓寒江雪。风格如齐白石所作。" --output_dir disco_diffusion_cnclip_vitb16_out
import paddlehub as hub
module = hub.Module(name="disco_diffusion_cnclip_vitb16")
text_prompts = ["孤舟蓑笠翁,独钓寒江雪。"]
# 生成图像, 默认会在disco_diffusion_cnclip_vitb16_out目录保存图像
# 返回的da是一个DocumentArray对象,保存了所有的结果,包括最终结果和迭代过程的中间结果
# 可以通过操作DocumentArray对象对生成的图像做后处理,保存或者分析
da = module.generate_image(text_prompts=text_prompts, artist='齐白石', output_dir='./disco_diffusion_cnclip_vitb16_out/')
# 手动将最终生成的图像保存到指定路径
da[0].save_uri_to_file('disco_diffusion_cnclip_vitb16_out-result.png')
# 展示所有的中间结果
da[0].chunks.plot_image_sprites(skip_empty=True, show_index=True, keep_aspect_ratio=True)
# 将整个生成过程保存为一个动态图gif
da[0].chunks.save_gif('disco_diffusion_cnclip_vitb16_out-result.gif', show_index=True, inline_display=True, size_ratio=0.5)
def generate_image(
text_prompts,
style: Optional[str] = None,
artist: Optional[str] = None,
width_height: Optional[List[int]] = [1280, 768],
seed: Optional[int] = None,
output_dir: Optional[str] = 'disco_diffusion_cnclip_vitb16_out'):
文图生成API,生成文本描述内容的图像。
参数
返回
n_batches
个Documents,其中每个Document都保存了迭代过程的所有中间结果。详细可参考DocumentArray使用文档。PaddleHub Serving可以部署一个在线文图生成服务。
$ hub serving start -m disco_diffusion_cnclip_vitb16
这样就完成了一个文图生成的在线服务API的部署,默认端口号为8866。
NOTE: 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。
配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果,返回的预测结果在反序列化后即是上述接口声明中说明的DocumentArray类型,返回后对结果的操作方式和使用generate_image接口完全相同。
import requests
import json
import cv2
import base64
from docarray import DocumentArray
# 发送HTTP请求
data = {'text_prompts': '孤舟蓑笠翁,独钓寒江雪。风格如齐白石所作'}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/disco_diffusion_cnclip_vitb16"
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 获取返回结果
da = DocumentArray.from_base64(r.json()["results"])
# 手动将最终生成的图像保存到指定路径
da[0].save_uri_to_file('disco_diffusion_cnclip_vitb16_out-result.png')
# 将生成过程保存为一个动态图gif
da[0].chunks.save_gif('disco_diffusion_cnclip_vitb16_out-result.gif')
1.0.0
初始发布
$ hub install disco_diffusion_cnclip_vitb16 == 1.0.0