项目介绍
DALL·E Flow 是一个交互式工作流,能够从文本提示生成高清图像。用户可以通过该项目,将自己想象中的情景转换成逼真的图片。这个过程不仅利用了 DALL·E-Mega、GLID-3 XL 和 Stable Diffusion 来生成图像候选,还通过 CLIP-as-service 对这些候选图根据提示进行排名。最终,使用 SwinIR 将选中的图像放大到 1024x1024 分辨率。
人机互动
DALL·E Flow 强调人机互动的概念。生成艺术是一项创意活动,而 DALL·E Flow 将这一过程视作迭代式,而非一次性的单输出。通过这种方式,用户可以多次尝试,直到满意为止。
使用方式
DALL·E Flow 采用客户端-服务器架构,支持高可扩展性和现代化的 Python 接口。用户可以通过 gRPC、Websocket 或 HTTP(带 TLS)与服务器进行交互。
客户端使用
用户可以通过在 Google Colab 或 Jupyter Notebook 中运行代码来进行体验。首先,需要安装 DocArray 和 Jina:
pip install "docarray[common]>=0.13.5" jina
然后,定义一个文本提示,例如:
prompt = 'an oil painting of a humanoid robot playing chess in the style of Matisse'
用户可将文本提交至服务器并可视化生成的结果:
from docarray import Document
doc = Document(text=prompt).post('grpcs://dalle-flow.dev.jina.ai', parameters={'num_images': 8})
da = doc.matches
da.plot_image_sprites(fig_size=(10,10), show_index=True)
通过这一过程,用户可以生成来自 DALLE-Mega、GLID3 XL 和 Stable Diffusion 的图像候选。
图片选择及改进
生成的候选会由 CLIP-as-service 排序,用户可以选择其心仪图像,并进行进一步的细化。选定图像后,可以提交至服务器进行扩散:
diffused = fav.post('grpcs://dalle-flow.dev.jina.ai', parameters={'skip_rate': 0.5, 'num_images': 36}, target_executor='diffusion').matches
diffused.plot_image_sprites(fig_size=(10,10), show_index=True)
图像放大
选定的图像最终可提交至服务器进行放大,以改善其细节和分辨率:
fav = fav.post('grpcs://dalle-flow.dev.jina.ai/upscale')
fav.display()
这种三步流程可以多次重复,直到用户对生成结果满意为止。
服务器设置
用户还可以自行搭建服务器以便离线使用。DALL·E Flow 需要一块拥有21GB VRAM的 GPU 以充分运作。对于自动下载模型及其他优化措施,项目提供了详细的安装与部署指南。
Docker 使用
提供了一份预构建的 Docker 镜像,可通过以下命令直接获取:
docker pull jinaai/dalle-flow:latest
在运行 Docker 镜像时,可以通过设置环境变量来启用或禁用某些功能:
docker run -e DISABLE_GLID3XL='1' -p 51005:51005 -it -v $HOME/.cache:/home/dalle/.cache --gpus all jinaai/dalle-flow
自助搭建
使用说明还提供了无需 Docker 的手动搭建指南,适用于希望深度参与或开发与调试的用户。
使用 CLIP-as-service
DALL·E Flow 可以通过 CLIP-as-service 提供的免费服务器来减少自身服务器的显存占用。用户需先生成获取访问令牌并进行相关设置。
总结
DALL·E Flow 是一种创新而实用的工具,支持用户发挥创造力,将想象化为精良的图像。通过人机交互的过程,用户能够获得更优质、更贴合设想的图像作品。使用 DALL·E Flow,艺术创作变得更加便捷与高效。