0°

使用 DALL·E 2 模型和 OpenAI API 生成图像

  随着神经网络和潜在扩散模型(LDM) 的进步,在几年前还听起来还很未来的东西现在已成为现实。OpenAI 的 DALL·E模型通过人们用它创造的惊人的生成艺术和逼真的图像而引起轰动。

  OpenAI 现在允许通过他们的API访问 DALL·E ,这意味着我们可以将其功能合并到您的Python 应用程序中。

  本文内容中,我们将学会做以下工作:

  开始使用OpenAI Python 库

  探索与图像生成相关的 API 调用

  根据文本提示创建图像

  创建生成图像的变体

  将 Base64 JSON 响应转换为PNG 图像文件

  如果您以前没有玩过DALL·E 的 Web 用户界面功能,先去体验一下,然后再回来学习如何通过 Python 以编程方式使用它并实现功能。

  安装 OpenAI Python 库,并获取您的 OpenAI API 密钥

  此部分内容是基础,之前文章中已经介绍过,不清楚的点击此链接先学习一下。

  使用 OpenAI 的 DALL·E 从文本提示创建图像

  新建一个python文件 create.py,如下代码,可以实现从文本提示创建图像功能

  import os

  import openai

  # 文本提示

  PROMPT = “An eco-friendly computer from the 90s”

  openai.api_key=””

  # 根据文本指令,向DALL·E 模型发送创建图片的请求,返回图片url

  response = openai.Image.create(

  prompt=PROMPT,

  n=1,

  size=”256×256″,

  )

  print(response[“data”][0][“url”])

  代码执行效果如上图,返回一个模型根据文本提示生成的图片链接,点击链接 浏览器会打开图片,可以看到图片如下:

  将图像数据保存到本地JSON文件

  API 允许您将响应的格式从 URL 切换为 Base64 编码的图像数据。在第 15 行中,您将 的值设置response_format为”b64_json”。此参数的默认值为”url”,这就是您到目前为止在 JSON 响应中收到 URL 的原因。为了避免丢失一张完美的图像,您可以将 JSON 响应存储在一个文件中。

  import json

  import os

  from pathlib import Path

  import openai

  PROMPT = “An eco-friendly computer from the 90s”

  DATA_DIR = Path.cwd() / “responses”

  DATA_DIR.mkdir(exist_ok=True)

  openai.api_key=””

  #图片返回格式设置成b64_json,

  response = openai.Image.create(

  prompt=PROMPT,

  n=1,

  size=”256×256″,

  response_format=”b64_json”,

  )

  #构建json文件路径名称

  file_name = DATA_DIR / f”{PROMPT[:5]}-{response[‘created’]}.json”

  # 写文件,保存文件

  with open(file_name, mode=”w”, encoding=”utf-8″) as file:

  json.dump(response, file)

  解码 Base64 JSON 文件生成图片

  新建convert.py脚本文件,该脚本将读取一个 JSON 文件,需要调整 的值JSON_FILE以匹配您的 JSON 文件的文件名,这将有所不同。

  然后脚本从 JSON 数据中获取 Base64 编码的字符串,对其进行解码,并将生成的图像数据作为 PNG 文件保存在目录中。该for循环将解码每个图像并将其保存为一个新文件。

  代码片段的真正亮点是b64decode(). 它解码 Base64 编码的字符串,以便您可以将实际图像数据保存为 PNG 文件。然后您的计算机将能够将其识别为 PNG 图像并可以查看。

  # convert.py

  import json

  from base64 import b64decode

  from pathlib import Path

  DATA_DIR = Path.cwd() / “responses”

  JSON_FILE = DATA_DIR / “An ec-1667994848.json”

  IMAGE_DIR = Path.cwd() / “images” / JSON_FILE.stem

  IMAGE_DIR.mkdir(parents=True, exist_ok=True)

  with open(JSON_FILE, mode=”r”, encoding=”utf-8″) as file:

  response = json.load(file)

  for index, image_dict in enumerate(response[“data”]):

  image_data = b64decode(image_dict[“b64_json”])

  image_file = IMAGE_DIR / f”{JSON_FILE.stem}-{index}.png”

  with open(image_file, mode=”wb”) as png:

  png.write(image_data)

  python3 convert.py运行该脚本,就会生成对应png文件,如上图。

  创建图像的变体

  如果您有一张图像——无论它是否是机器生成的图像——与您正在寻找的图像相似但不完全符合要求,那么您可以使用 OpenAI 的 DALL·E 潜在扩散模型创建它的变体。

  根据前面编写的代码,我们可以创建一个新文件vary.py:

  import json

  import os

  from base64 import b64decode

  from pathlib import Path

  import openai

  DATA_DIR = Path.cwd() / “responses”

  #被变化的原始图片文件

  SOURCE_FILE = DATA_DIR / “An ec-1667994848.json”

  openai.api_key=””

  with open(SOURCE_FILE, mode=”r”, encoding=”utf-8″) as json_file:

  saved_response = json.load(json_file)

  image_data = b64decode(saved_response[“data”][0][“b64_json”])

  #原始图片作为参数发送请求给模型,模型返回3张相似的随机变体图片

  response = openai.Image.create_variation(

  image=image_data,

  n=3,

  size=”256×256″,

  response_format=”b64_json”,

  )

  new_file_name = f”vary-{SOURCE_FILE.stem[:5]}-{response[‘created’]}.json”

  with open(DATA_DIR / new_file_name, mode=”w”, encoding=”utf-8″) as file:

  json.dump(response, file)

  运行脚本,以原始图片作为参数,请求模型返回3张变体图片,然后再运行convert.py脚本将3张彼岸图图片json转成PGN图片,打开就可以看到如上图所示。

OpenAI中文网 @ OpenAI中文网 2023/3/22

使用 DALL·E 2 模型和 OpenAI API 生成图像

  随着神经网络和潜在扩散模型(LDM) 的进步,在几年前还听起来还很未来的东西现在已成为现实。OpenAI 的 DALL·E模型通过人们用它创造的惊人的生成艺术和逼真的图像而引起轰动。   OpenAI 现在允许通过他们的API访问 DALL·E ,这意味着我们可以将其功能合并到您的Python 应用程序中。   本文内容中,我们将学会做以下工作:   开始使用OpenAI Python 库   探索与图像生成相关的 API 调用   根据文本提示创建图像   创建生成图像的变体   将 Base64 JSON 响应转换为PNG 图像文件   如果您以前没有玩过DALL·E 的 Web 用户界面功能,先去体验一下,然后再回来学习如何通过 Python 以编程方式使用它并实现功能。   安装 OpenAI Python 库,并获取您的 OpenAI API 密钥   此部分内容是基础,之前文章中已经介绍过,不清楚的点击此链接先学习一下。   使用 OpenAI 的 DALL·E 从文本提示创建图像   新建一个python文件 create.py,如下代码,可以实现从文本提示创建图像功能   import os   import openai   # 文本提示   PROMPT = “An eco-friendly computer from the 90s”   openai.api_key=””   # 根据文本指令,向DALL·E 模型发送创建图片的请求,返回图片url   response = openai.Image.create(   prompt=PROMPT,   n=1,   size=”256×256″,   )   print(response[“data”][0][“url”])   代码执行效果如上图,返回一个模型根据文本提示生成的图片链接,点击链接 浏览器会打开图片,可以看到图片如下:   将图像数据保存到本地JSON文件   API 允许您将响应的格式从 URL 切换为 Base64 编码的图像数据。在第 15 行中,您将 的值设置response_format为”b64_json”。此参数的默认值为”url”,这就是您到目前为止在 JSON 响应中收到 URL 的原因。为了避免丢失一张完美的图像,您可以将 JSON 响应存储在一个文件中。   import json   import os   from pathlib import Path   import openai   PROMPT = “An eco-friendly computer from the 90s”   DATA_DIR = Path.cwd() / “responses”   DATA_DIR.mkdir(exist_ok=True)   openai.api_key=””   #图片返回格式设置成b64_json,   response = openai.Image.create(   prompt=PROMPT,   n=1,   size=”256×256″,   response_format=”b64_json”,   )   #构建json文件路径名称   file_name = DATA_DIR / f”{PROMPT[:5]}-{response[‘created’]}.json”   # 写文件,保存文件   with open(file_name, mode=”w”, encoding=”utf-8″) as file:   json.dump(response, file)   解码 Base64 JSON 文件生成图片   新建convert.py脚本文件,该脚本将读取一个 JSON 文件,需要调整 的值JSON_FILE以匹配您的 JSON 文件的文件名,这将有所不同。   然后脚本从 JSON 数据中获取 Base64 编码的字符串,对其进行解码,并将生成的图像数据作为 PNG 文件保存在目录中。该for循环将解码每个图像并将其保存为一个新文件。   代码片段的真正亮点是b64decode(). 它解码 Base64 编码的字符串,以便您可以将实际图像数据保存为 PNG 文件。然后您的计算机将能够将其识别为 PNG 图像并可以查看。   # convert.py   import json   from base64 import b64decode   from pathlib import Path   DATA_DIR = Path.cwd() / “responses”   JSON_FILE = DATA_DIR / “An ec-1667994848.json”   IMAGE_DIR = Path.cwd() / “images” / JSON_FILE.stem   IMAGE_DIR.mkdir(parents=True, exist_ok=True)   with open(JSON_FILE, mode=”r”, encoding=”utf-8″) as file:   response = json.load(file)   for index, image_dict in enumerate(response[“data”]):   image_data = b64decode(image_dict[“b64_json”])   image_file = IMAGE_DIR / f”{JSON_FILE.stem}-{index}.png”   with open(image_file, mode=”wb”) as png:   png.write(image_data)   python3 convert.py运行该脚本,就会生成对应png文件,如上图。   创建图像的变体   如果您有一张图像——无论它是否是机器生成的图像——与您正在寻找的图像相似但不完全符合要求,那么您可以使用 OpenAI 的 DALL·E 潜在扩散模型创建它的变体。   根据前面编写的代码,我们可以创建一个新文件vary.py:   import json   import os   from base64 import b64decode   from pathlib import Path   import openai   DATA_DIR = Path.cwd() / “responses”   #被变化的原始图片文件   SOURCE_FILE = DATA_DIR / “An ec-1667994848.json”   openai.api_key=””   with open(SOURCE_FILE, mode=”r”, encoding=”utf-8″) as json_file:   saved_response = json.load(json_file)   image_data = b64decode(saved_response[“data”][0][“b64_json”])   #原始图片作为参数发送请求给模型,模型返回3张相似的随机变体图片   response = openai.Image.create_variation(   image=image_data,   n=3,   size=”256×256″,   response_format=”b64_json”,   )   new_file_name = f”vary-{SOURCE_FILE.stem[:5]}-{response[‘created’]}.json”   with open(DATA_DIR / new_file_name, mode=”w”, encoding=”utf-8″) as file:   json.dump(response, file)   运行脚本,以原始图片作为参数,请求模型返回3张变体图片,然后再运行convert.py脚本将3张彼岸图图片json转成PGN图片,打开就可以看到如上图所示。 0 收藏
扫描二维码继续阅读
给OpenAI中文网打赏
2
5
10
20
50
¥0
您的当前余额:¥0
付费内容
付款金额
¥0
您的当前余额:¥0
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
问题反馈
您没有权限发布私信
发起一个您感兴趣的内容
您没有权限发布内容,请购买会员或者提升权限。

忘记密码?找回