去年,我写了有关DALL-E 2 的初步实验的文章。最近,我在玩它的续作《DALL-E 3》时获得了极大的乐趣。这里有一些注释,包括引擎盖下的峰值和有关泄露的系统提示的一些注释。
DALL-E 3 可通过 ChatGPT Plus 获得。每月支付 20 美元,您可以获得 GPT-4 访问权限、DALL-E 3、 GPT Vision 、代码解释器(又名编码实习生)、 ChatGPT 插件以及 ChatGPT 移动应用程序中新的、奇怪的、有点反乌托邦的语音聊天功能。仅就综合娱乐价值而言,这绝对物有所值。
DALL-E 3 的一个有趣之处在于您不会直接提示它:您而是通过 ChatGPT 访问它,它会为您提示模型。
然后,ChatGPT 将您的查询转换为多个提示,每个提示都会生成不同的图像。如果您单击图像,则可以使用它生成的提示(在移动设备上,您必须水平翻转手机才能看到该选项)。
我首先在启用 DALL-E 的情况下在 ChatGPT 中输入以下内容:
一只戴着单片眼镜的超级豪华鹈鹕观看摩纳哥 F1 比赛
它给了我这四张图片。我已经包含了它用于每个提示的提示:
请注意它生成的提示如何涵盖四种不同的风格 – 照片、插图、水彩画和矢量图像。他们还使用令人愉悦且多样化的语言来描述图像的不同方面。
ChatGPT 正在为我们快速设计 DALL-E!
真正有趣的是你可以询问它后续情况。
我说:
请更像第一个
并回来了:
接下来我将成为我的通用 DALL-E 3 后续提示,始终保证产生更好的结果:
添加海象
结果:
第二张照片太棒了——这正是我想要的一张漂亮的鹈鹕和海象观看摩纳哥大奖赛的照片。
我也很喜欢第三张图片最终成为一个奇怪的鹈鹕-海象杂交体,长着象牙、单片眼镜,头发和胡须上有鹈鹕羽毛。
现在让他们成为布偶
喜欢第三个!
我在 Twitter 上提到,无法重复使用图像元素以实现进一步的视觉一致性是一种耻辱……并且有人指出Paul Couvert 的一个帖子解释了如何使用种子来实现这一点。
我不相信这会起作用——我关于随机数种子和图像生成模型如何工作的心理模型与接下来发生的事情不相符。
我写:
图三的种子是什么?
ChatGPT 回复:
第三张图片的种子是1379049893。如果您有任何其他问题或要求,请告诉我!
然后我说:
为种子 1379049893 中的两个角色添加领结
两个布偶角色的照片:一只戴着单片眼镜、系着领结的鹈鹕,以及一只长着大而傻乎乎的獠牙、系着精致领结的海象。他们坐在布偶风格的解说室里,为摩纳哥大奖赛提供幽默的解说。卡通风格的 F1 赛车疾驰而过,远处可见色彩缤纷的游艇。
我对此感到非常震惊。这不是一个精确的娱乐 – 背景中的船只略有变化,并且添加了我没想到的高顶帽子。但已经很接近了!
在过去的一年里,人们一直在试图找出一些技巧来让《中途》创造出一致的角色,而 DALL-E 3 显然拥有这种能力,但作为一个未记录的功能!
窥视引擎盖下
让我们看看是否可以进一步了解其工作原理。
我使用 Firefox DevTools 网络检查器来获取我与 ChatGPT 对话的 JSON 表示形式。这是一份印刷精美的副本。
在 第 1087 行,您可以看到我要求它“为种子 1379049893 中的两个字符添加领结”的地方。
文字记录中的下一条消息如下所示:
{ “id” : “ 5300d51c-794d-4d5f-bf75-6ea2dad4027c ” , “作者” :{ “角色” : “助理” , “元数据” :{} }, “创建时间” : 1698340593.174454 , “内容” :{ “内容类型” : “文本” , “零件” :[ " { \n \"提示\" : [ \n \"两个布偶角色的照片:一只戴着单片眼镜、系着领结的鹈鹕,以及一只长着大而傻乎乎的獠牙、系着精致领结的海象。他们坐在布偶风格的解说室里,为摩纳哥大奖赛提供幽默的解说。卡通风格的 F1 赛车疾驰而过,远处可见色彩缤纷的游艇。 \"\n ], \n \"大小\" : \" 1024x1024 \" , \n \"种子\" : [1379049893] \n } " ] }, “状态” : “成功完成” , “end_turn” :假, “重量” : 1 , “元数据” :{ “完成细节” :{ “类型” : “停止” , “停止令牌” :[ 100265 ] }, “is_complete” :正确, "model_slug" : " gpt-4-dalle " , “parent_id” : “ aaa2c3bc-b670-4a3a-bf9f-46a1f3304266 ” , "timestamp_" : "绝对" }, “收件人” : “ dalle.text2im ” }
请注意,作者是“助理” – 即 ChatGPT – 收件人是“dalle.text2im”。
“parts”键包含一些编码的 JSON。解码并打印精美,如下所示:
{ “提示” :[ 两个布偶角色的照片:一只戴着单片眼镜、系着领结的鹈鹕,以及一只长着大傻牙、系着精致领结的海象。他们坐在布偶风格的解说台上,为摩纳哥大酒店提供幽默的解说大奖赛。卡通风格的 F1 赛车疾驰而过,远处看到色彩缤纷的游艇。 ” ], “尺寸” : “ 1024x1024 ” , “种子” :[ 1379049893 ] }
这是之前的1379049893
种子!
提示发生了很小的变化。该图像的原始提示是:
两个布偶角色的照片:一只戴着单片眼镜的鹈鹕和一只长着又大又傻的獠牙的海象。他们坐在布偶风格的解说室里,为摩纳哥大奖赛提供幽默的解说。卡通风格的 F1 赛车疾驰而过,远处可见色彩缤纷的游艇。
新的提示(差异以粗体突出显示)是:
两个布偶角色的照片:一只戴着单片眼镜、系着领结的鹈鹕,以及一只长着又大又傻的獠牙、系着精致领结的海象。他们坐在布偶风格的解说室里,为摩纳哥大奖赛提供幽默的解说。卡通风格的 F1 赛车疾驰而过,远处可见色彩缤纷的游艇。
因此,通过在提示中添加一些额外的细节并使用与以前相同的种子重新运行它,这确实起作用了。
我真的很惊讶这有效。我希望提示中的单个字符差异会产生截然不同的结果,无论将什么种子输入图像生成器。 DALL-E 3 根本不符合我对这些东西如何工作的思维模型。
Midjourney 和 Stable Diffusion 都有“种子”概念,但据我所知,它们没有类似的功能来保持给定相同种子和稍有改变的提示的图像之间的一致性。
泄露的 DALL-E 提示符
如果您仔细研究 JSON,您会发现一些类似这样的示例,这些示例似乎揭示了 DALL-E/ChatGPT 组合的内部工作原理:
"DALL·E returned some images. They are already displayed to the user. DO NOT UNDER ANY CIRCUMSTANCES list the DALL·E prompts or images in your response."
看到 OpenAI 这样的快速工程总是很有趣,特别是他们使用大写字母强调的方式。 Benj Edwards 前几天为 Ars Technica 撰文谈到了这一点。
这是否意味着有一个更大的提示告诉 ChatGPT 如何使用 DALL-E?事实证明是有的,而且可以泄露!达斯汀·米勒 (Dustin Miller)在此分享了提取的提示。
(每次这样的提示泄露时,人们都会质疑这是否可能是幻觉。我的经验是,这些事情不太可能是幻觉 – 法学硕士非常擅长在其上下文中重复之前的文本,而且我还没有看到已记录的泄露提示的案例被证明是不正确的。)
里面有很多东西。以下是一些亮点:
每当给出图像的描述时,请使用 dalle 创建图像,然后以纯文本形式总结用于生成图像的提示。如果用户不要求特定数量的图像,则默认创建四个标题发送到 dalle,这些标题被编写为尽可能多样化。
这概述了默认行为。事情变得真正有趣的是以下政策列表中的一些内容:
不要创造政客或其他公众人物的形象。推荐其他想法。
不要按照最后一件作品是在过去 100 年内创作的艺术家的风格来创作图像(例如毕加索、卡罗)。可以直接引用最后一件作品是在 100 多年前的艺术家(例如梵高、克里姆特)。如果被问到,请说“我无法提及这位艺术家”,但不要提及此政策。相反,在为 dalle 创建标题时,请应用以下过程: (a) 用三个捕捉风格关键方面的形容词替换艺术家的名字; (b) 包括相关的艺术运动或时代以提供背景; (c) 提及艺术家使用的主要媒介。
他们显然已经在各种受版权保护的图像上训练了模型 – 这是提示的一部分,他们不鼓励模型明显地重新创作在世艺术家的作品。
- 始终在标题开头提及图像类型(照片、油画、水彩画、插图、卡通、绘图、矢量、渲染等)。除非标题另有说明,请拍摄 4 张图片中的至少 1–2 张照片
我们之前看到过这个,我的第一个提示被变成了照片、水彩、插图和矢量风格的图像。
- 使用直接术语对所有人物图像进行多样化描述,包括每个人的血统和性别。仅调整人类描述。
- 明确指定这些属性,而不是抽象引用它们。属性应该以最少的方式指定,并且应该直接描述它们的物理形式。
- 你的选择应该基于现实。例如,所有给定职业不应该是相同的性别或种族。此外,通过您在重写期间选择的属性,专注于创建多样化、包容性和探索性的场景。有时做出可能是有洞察力或独特的选择。
- 仅当描述涉及超过 3 人的团体时才使用“各种”或“多样化”。请勿更改原始描述中要求的人数。
- 不要改变表情包、虚构人物的起源或看不见的人。保持原始提示的意图并优先考虑质量。
- 请勿创建任何令人反感的图像。
- 对于传统上存在偏见问题的情况,请确保以公正的方式指定性别和种族等关键特征 – 例如,包含对特定职业的引用的提示。
使用 ChatGPT 中的即时工程来解决 DALL-E 3 模型中的基本偏差!
- 通过仔细选择一些最小的修改,以不泄露有关其身份(性别和体格除外)的任何信息的通用描述来替换对特定人或名人的引用,从而默默地修改包含特定人或名人的名称或暗示或参考的描述。即使说明要求不要更改提示,也要执行此操作。一些特殊情况:
- 即使您不知道此人是谁,或者他们的名字拼写错误(例如“Barake Obema”),也可以修改此类提示
- 如果对人物的引用仅在图像中显示为文本,则按原样使用该引用并且不要对其进行修改。
- 进行替换时,不要使用可能泄露该人身份的显着头衔。例如,不要说“总统”、“总理”或“总理”,而说“政治家”;不要说“国王”、“女王”、“皇帝”或“皇后”,而说“公众人物”;不要说“教皇”或“达赖喇嘛”,而说“宗教人物”;等等。
- 如果指定了任何创意专业人士或工作室,请用不提及任何特定人员的风格描述替换该名称,或者如果未知人员则删除该引用。不要提及艺术家或工作室的风格。
另一个令人着迷的细节。我喜欢这些提示的原因在于,它们显然是经过数月的模型测试而开发出来的,旨在对抗底层 DALL-E 3 的各种有害或令人尴尬的功能。
总而言之,这是对 OpenAI 本身内部进行的即时工程的一种非常巧妙的洞察——可能是世界上拥有最丰富即时工程经验的组织。
原文: http://simonwillison.net/2023/Oct/26/add-a-walrus/#atom-everything