DALL-E 图像生成器

ChatGPT中文站

Dall-E是一种生成型人工智能模型,可以生成图像。它使用深度学习方法根据自然语言描述来生成图像。

我们可以使用 Dall-E 根据我们的需求生成图像。我在之前的博客中也使用了这些由 Dall-E 生成的图像。作为一个基于神经网络的模型,它试图复制一个人在某个主题上的思维方式,并相应地输出一张图像。

我制作了一个聊天机器人,允许用户使用Dall-E生成图像。用户需要输入图像的描述,ChatGPT API会生成一个提示。如果这个提示与用户需要的图像相符,就会使用Dall-E包装器生成该图像。

ChatGPT中文站

查看此机器人的代码

先决条件

我们将使用Python 3.11与LangChain和ChatGPT API。为此,我们使用命令提示符创建了Anaconda环境。我使用了ChatGPT API:gpt-3.5-turbo-16k-0613。我们为此项目创建了一个诗歌shell。要启动项目,请使用以下命令。

pip install poetry
poetry init
poetry shell
poetry install
poetry build

将创建一个'pyproject.toml'和一个poetry.lock文件,其中包含所有安装的依赖项。

生成图像的提示

首先,生成的第一步是收集用户需求的描述。对于图像生成来说,Dall-E需要深入理解用户需求。由于用户可能不够具体,所以我们通过深入理解用户提供的描述来生成一个提示。

用于此的模板是这样的。

template_image_description = """prompt which desribes {image_desc} in 20 words"""

根据这个模板PromptTemplate生成提示。

def prompt_factory() -> str:
return PromptTemplate(
input_variables=["image_desc"],

template=t.template_image_description,
)

该 PromptTemplate 是通过 LLM 链路传递以发出提示。

async def give_prompt(description: str)-> str:
chain = await image_chain_factory()
prompt_generated = await chain.arun(description)
logger.info(prompt_generated)
return prompt_generated

图像生成

用户应该检查生成的提示,如果可以接受,将会传递给Dall-E封装器进行图像生成。可以使用以下方式安装Dall-E封装器。

from langchain.utilities.dalle_image_generator import DallEAPIWrapper

该图像将使用此函数生成。


def generate_image(prompt: str) -> str:
return DallEAPIWrapper().run(prompt)

聊天机器人

这就是图像生成的聊天机器人的样子。

ChatGPT中文站

机器人告诉我们描述我们希望生成的图像。我举了一个例子:“一片向日葵田”。生成的提示是:

一片辽阔的向日葵田,它们生机勃勃的黄色花瓣朝向太阳延伸,形成了一个令人叹为观止的美丽海洋。

它是一个很好的提示来生成图像,所以我说了是。我们获得了图像的URL。

这个URL会在聊天机器人中读取和打开,用户可以预览图片。如果用户想要以后下载图片,也会为用户提供这个URL。

ChatGPT中文站

对于这个聊天机器人,我使用了标记技术来感知用户所发出的信息的情绪。因此,如果用户对一个问题的回答是“是”,机器人将会感知到一个“积极”的回答,并继续进行后续步骤。同样地,如果回答是“否”,则会记录一个“消极”的回答。如果不是以上两种情况,机器人将退出。

在该项目中使用了一个Pydantic标记链。这是由Dall-E生成的图像。

如果我对图像不满意,将会生成一张新的图像。让我们试试看。

ChatGPT中文站

产生了一张新的图像。

ChatGPT中文站

这是一张更符合我的要求的图片。

我还考虑到了一种情况,即聊天机器人生成的图像可以从机器人本身下载。为此,我使用了以下代码。

def download_image_file(image_url, image_name):
img_data = requests.get(image_url).content
path = cfg.image_path / f"{image_name}.jpg"
with open(path, 'wb') as handler:
handler.write(img_data)

我已提供给用户选择要下载的图像的名称的条款。

ChatGPT中文站

将创建一个名为“ImagesDall-E”的新文件夹,其中包含下载的图像。

ChatGPT中文站

结论

Dall-E 是一个用于生成图像的强大工具。您可以使用这个机器人来了解 Dall-E 的工作原理和人工智能的惊人之处。

ChatGPT中文站

2023-10-20 17:22:12 AI中文站翻译自原文