小白的AIGC课(4)— 图像生成

本文以Openai的DALL·E 模型为例,讲解一下如何调用API生成图像。

DALL·E是openai的文生图模型,于2021年一月推出,最新的版本是DALL·E 3,于2023年9月份推出。官方说法是“DALL·E 3比我们以前的系统了解更多的细微差别和细节,使您可以轻松地将您的想法转化为极其准确的图像。”

API 提供了三种与图像交互的方法:

  • 根据文本提示从头开始创建图像(DALL·E 3 和 DALL·E 2)
  • 根据新的文本提示,通过让模型替换预先存在的图像的某些区域来创建图像的编辑版本(仅限 DALL·E 2)
  • 创建现有图像的变体(仅限 DALL·E 2)

图像生成端点允许您根据文本提示创建原始图像。使用 DALL·E 3 时,图像的尺寸可以为 1024×1024、1024×1792 或 1792×1024 像素。

默认情况下,图像以标准质量生成,但使用 DALL·E 3 时,您可以设置质量:“hd”以增强细节。方形、标准质量的图像生成速度最快。

您可以使用 DALL·E 3 一次请求 1 个图像(通过发出并行请求来请求更多图像),或者使用带有 n 参数的 DALL·E 2 一次最多请求 10 个图像。

一、图像生成

示例代码:

import openai
import os

openai.api_key = os.getenv("OPENAI_API_KEY")

from openai import OpenAI
client = OpenAI()

response = client.images.generate(
  model="dall-e-3",
  prompt="Your prompt here",
  size="1024x1024",
  quality="standard",
  n=1,
)

image_url = response.data[0].url
print(image_url)

让我们来试着复现一下安徒生童话《卖火柴的小女孩》的场景(以下提示词由chatgpt生成)。

描绘了贫困女孩的凄美场景,她破旧的衣服几乎无法让她抵御刺骨的冬日寒冷,在只有柔和的煤气灯照亮的荒凉街道上行走。她用颤抖的手划着一根火柴,当她凝视着商店橱窗里迷人的圣诞展示时,微弱的火焰投射出转瞬即逝的光芒。节日气氛的温暖和活力与女孩贫困现实的鲜明对比,她的眼睛在黑暗中闪烁着惊奇,在熙熙攘攘的节日热情中孤独的身影。

程序的输出是一段链接,点开链接即可在网页中打开以下图片,链接有效时间为1小时。

图片

生成效果确实不错,提示词里的细节基本上都被刻画出来了。

二、图像编辑(仅限DALL·E 2)

图像编辑端点也称为“修复”,允许您通过上传图像和指示应替换哪些区域的蒙版来编辑或扩展图像。蒙版的透明区域指示应编辑图像的位置,并且提示应描述完整的新图像,而不仅仅是擦除的区域。此端点可以实现类似于我们 DALL·E 预览应用程序中的编辑器的体验。

上传的图像和蒙版必须都是大小小于4MB的方形PNG图像,并且尺寸必须相同。生成输出时不会使用遮罩的非透明区域,因此它们不一定需要像上面的示例一样与原始图像匹配。

from openai import OpenAI
client = OpenAI()

response = client.images.edit((
  model="dall-e-2",
  image=open("sunlit_lounge.png", "rb"),
  mask=open("mask.png", "rb"),
  prompt="A sunlit indoor lounge area with a pool containing a flamingo",
  n=1,
  size="1024x1024"
)
image_url = response.data[0].url
图片

提示词:阳光明媚的室内休息区,设有包含火烈鸟的游泳池

三、图像变体(仅限DALL·E 2)

与编辑端点类似,输入图像必须是小于 4MB 的方形 PNG 图像。

from openai import OpenAI
client = OpenAI()

response = client.images.create_variation(
  image=open("image_edit_original.png", "rb"),
  n=2,
  size="1024x1024"
)

image_url = response.data[0].url

原图:

图片

变体:

图片

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注