我的学习笔记

土猛的员外

Midjourney中标点符号的使用指南

这篇文章研究的是标点符号在prompt中的作用。

Midjourney的prompt可以包含标点符号。我们经常使用它们来制作prompt,而不需要太多思考。毕竟,这是官方的Midjourney用户指南声明:

使用逗号,括号和连字符来帮助组织你的想法,但请记住,MidjourneyBot不会可靠地解释它们。

对于许多用户来说,“不能可靠地解释它们”意味着“不用麻烦了”。然而,标点符号对你的prompt几乎没有影响,这是真的吗?如果他们这样做了怎么办?如果它们有微妙的影响,你可以利用它们来调整你的prompt?

到目前为止我们对标点符号的了解

在我们研究标点符号是否重要之前,让我们来看看Midjourney机器人可以可靠理解的五个主要标点符号:

  1. 双连字符--用于--ar 3:2
  2. 双冒号::用于multiprompt(可以表示::两边字符的权重)和输入weights
  3. 花括号{}表示排列prompt
  4. 反斜杠\用于转义排列中的逗号。例如,/imagine prompt:a photo of {a bird\, cat, a dog\, fish}将创建两个prompts:/imagine prompt:a photo of a bird\, cat/imagine prompt:a photo of a dog, fish
  5. 空格实际上就是分隔单词或tokens的字符

另外两个标点符号是正斜杠 / 和冒号: ——但它们是在命令中使用,而不是在prompt中。

根据Midjourney常见问题解答,上述标点符号列表之外的所有其他标点符号都是“有趣的噪音”。

“有趣的噪音”表明某些事情显然正在发生,即使还没有设计出实验来揭示它。在对prompt进行故障排除时,有必要尝试一下有趣的噪音,因为它可能是打开你想要的东西的钥匙。

Midjourney的编程不支持理解逗号或连字符,但建议在prompts中使用它们,因为人类会使用它们,而且它们在数据集中可能具有很强的相关性。

到目前为止,我们已经讨论了我们所知道的标点符号。现在,让我们来看看这个“有趣的噪音”。

以下是我们将探讨的4个问题:

  1. 如果我们用标点符号超载prompt符会怎样?
  2. 何时使用连字符,何时不使用?
  3. 如果我们用不同的标点符号来区分概念或想法有关系吗?
  4. 机器人能理解由标点符号组成的表情符号吗?

方法

  • 至少重新提示3次
  • 小心使用 /shorten
  • 使用CLIP标记器
  • 使用MidjourneyV5.2进行测试

每个prompt将被重新提示至少三次,以确保一致性和可重复性。结果预计会受到随机化的影响,但目标是在再次提示后找到类似的东西或效果。

/shorten用于测试标点符号对prompt的影响。它用于检测由标点符号引起的单词“相对影响值”的变化。相对影响力的值表示token(或单词)对生成的输出是否具有更大的影响力或影响。

不幸的是, /shorten仍然是一项正在进行的工作,需要更可靠地精确定位生成图像所需的单词。例如,一些重要的单词被 /缩短划掉(划掉),但需要生成所需的图像。

但是,我们仍然可以使用它来验证prompt是否发生了变化,因为单词的相对影响值可能由于标点符号而发生了变化。

CLIP Tokenizer用于确定标点符号是否影响在prompt符中创建的tokens的数量。

Midjourney机器人会在读取prompt时将单词分解成称为“tokens”的片段。然后将tokens与训练数据进行比较以生成图像。

tokens的数量通常等于或超过单词的数量。更多的tokens并不总是好的,因为Midjourney V5.2中的prompt符最多只能容纳大约。60个tokens。

好的,让我们从现在开始寻找新的东西。

(1) 如果我们用标点符号超载prompt符会怎样?

感叹号用于表达强烈的情感。星号*符号强调消息传递应用程序中的单词或短语。如果我们把它们都塞进一个prompt中呢?对形象有影响吗?

Prompt 1 — /imagine prompt: a dog and a cat

Prompt 2 — /imagine prompt: a dog and a !!!!!**cat**!!!!

Prompt 3 — /imagine prompt: a cat and a !!!!!**dog**!!!!

Prompt 1 在没有标点符号时,为图像的外观建立基线。它创建了5个tokens。生成的图像描绘了一只没有表情或情感的狗和一只猫。

  • /shorten 分析只是忽略了猫作为重要关键字,这是令人沮丧的。
  • 为了演示标点符号的效果,我修改了prompt符,以包括短语“一张照片”-生成的图像与没有短语的图像相同(未显示图像)。据报道,狗的相对影响值为1,猫的相对影响值为0.6。

Prompt 2 用感叹号和星号填充了prompt。它生成了10个tokens,是prompt1的两倍!动物们现在表现出兴奋的迹象。令人惊讶的是,虽然“猫”这个词被标点符号包围,但狗比猫更兴奋。但摇了几下之后,这只猫也表现出兴奋的迹象。

  • 因为在prompt中没有使用其他词语来描述情感,很明显,标点符号改变了受试者的行为举止
  • 情绪的表现是随机的。偶尔,网格中的大多数图像都描绘了情感。其他时候,每个网格只有一个图像具有情感表达。

Prompt 3和Prompt 2是一样的,除了猫的位置和狗的位置互换了。因为Prompt 2中的狗狗同样兴奋,所以很难说位置的改变是否会让狗狗更开心。Prompt 3生成10个tokens,与Prompt 2相同。

  • 看到 /shorten如何识别感叹号(!!!!!cat)作为重要的tokens而忽略星号是很有趣的。Cat现在的相对值(0.46)低于没有标点符号的prompt符。

img

img

(上) /imagine prompt: a dog and a cat (下) /imagine prompt: a *dog and a !!!!!**cat**!!!!*

img

img

img

/shorten 分析结果. (上) /imagine prompt: a dog and a cat (中) /imagine prompt: a photo of a dog and a cat (下) /imagine prompt: *a photo of a dog and a !!!!!**cat**!!!!*

目前还不清楚我们是否可以针对一个主题,并在其周围使用多个标点符号来让主题“做某事”。

将prompt改为使用更少的感叹号对动物的表达几乎没有影响(图片未显示)。例如:/imagine prompt:a dog and a !cat!

不管周围有没有标点符号,狗狗们都很兴奋。(我还想在第一个图像网格中突出显示图4的6腿猫!)

img

img

(上) /imagine prompt: *a dog and a !!!!!**cat**!!!!* (下) /imagine prompt: *a cat and a !!!!!**dog**!!!!*

另一件需要注意的事情是,在单词周围加上星号将使它在Discord中斜体化。例如,/imagine prompt:dog将斜体/强调dog这个词。然而,不管有没有星号,都没有任何特殊效果。

摘要:标点符号会影响prompt中单词的相对影响力,产生的tokens数量,甚至受试者的行为举止。

(2) 什么时候用连字符,什么时候不用?

连字符是我最喜欢的连接单词的方便工具之一,它可以增加单词之间的联系和影响力。“影响力”指的是这些词在生成的图像中被表达或出现的能力。

Prompt 4 — /imagine prompt: a photo of an **elephant-like** **monster**

Prompt 5 — /imagine prompt: a photo of an **elephant like monster**

假设我们正在寻找具有某些怪物特征的大象,prompt 4的“elephant-like”链接短语比prompt5的结果更好。

根据“/shorten”分析的结果,“monster” token在prompt4中的影响较小,使主题看起来更像大象。

当prompt5中“monster” token的相对影响值增加时,我们得到一个具有大象特征的怪物。

prompt 4生成8个tokens,而prompt 5生成7个。

img

img

(上) /imagine prompt: a photo of an elephant-like monster (下) /imagine prompt: a photo of an elephant like monster

img

img

/shorten分析结果. (上) /imagine prompt: a photo of an elephant-like monster (下) /imagine prompt: a photo of an elephant like monster

什么时候使用连字符

Midjourney中的许多颜色使用连字符。在Midjourney V5 alpha中记录的一种公认的遗留颜色是带有连字符的“olive-green”。

Prompt 6 — /imagine prompt: a photo of a box **olive green**

Prompt 7 — /imagine prompt: a photo of a box **olive-green**

Prompt 8 — /imagine prompt: a photo of a box**, olive-green**

prompt8产生了最好的结果,假设我们正在寻找一个与橄榄无关的绿色盒子。它用逗号把盒子的概念和颜色分开。

prompt6有问题。如果没有连字符,机器人就会生成带有橄榄色和绿色方框的图像。如果这是你要找的,去掉连字符。

prompt7与prompt8非常相似。然而,它偶尔会生成一些绿色盒子和橄榄的图像。如果这就是你所需要的,那么就不需要加逗号了。

prompts6到8分别产生了7、8和9个tokens。标点符号增加了tokens的数量。

img

img

img

(上) /imagine prompt: a photo of a box olive green (中) /imagine prompt: a photo of a box olive-green (下) /imagine prompt: a photo of a box, olive-green

总结:连字符是用来连接单词,以增加他们的联想和影响力。它影响prompt中单词的相对重要性和生成的tokens的数量。

在对prompt进行故障处理时,请考虑添加或删除连字符,并判断生成的结果是否符合要求。

(3) 如果我们用不同的标点符号来区分概念或想法有关系吗?

Midjourney唯一的“官方”概念分隔符是双冒号::。这意味着机器人必须独立考虑概念或想法,而不是将它们结合起来。

双冒号在多提示符中被广泛使用。如果你是多提示和多提示的新手,看看这些故事:Midjourney:多提示的温和指南Midjourney滑块方法:如何通过多提示微调图像

还有其他很少讨论的概念分隔符。为了简单起见,我们将集中讨论逗号和管道符号。(注意:我将在本文中使用管道符号作为“标点符号”,尽管thesaurus.com说它不是。)

`/shorten据说与多提示符不兼容,但我发现它对短的多提示符有些作用。

Prompt 9 — /imagine prompt: a photo of a **honey bee**

Prompt 10 — /imagine prompt: a photo of a **honey, bee**

Prompt 11 — /imagine prompt: a photo of a **honey | bee**

Prompt 12 — /imagine prompt: a photo of a **honey:: bee::**

假设我们只是在寻找蜜蜂(不是蜂蜜),prompt9(没有标点符号)显然是赢家,表明蜜蜂在努力工作。

令人惊讶的是,逗号(prompt10)巧妙地将单词honey和bee分开。网格中至少有一张图像描绘了蜂巢上的蜜蜂。

  • 我曾经认为逗号对概念分离没有任何影响,但这是不正确的。它确实有微妙的影响。这个新信息使我想知道是否应该删除或添加逗号以排除将来的prompts。

双冒号(prompt12)将蜂蜜和蜜蜂的概念分开。它在合成中生成了蜜蜂和蜂蜜/蜂巢的独立图像。分离的概念是显而易见的。(注意:末尾的最后一个双冒号是可选的,但这是我喜欢的编写多提示符的风格。)

Pipe是一个发现,它证明了它可以分离概念,尽管比双冒号更弱、更模糊。

/shorten分析结果表明,标点符号改变了tokens的相对影响值。它支持这样一种看法,即逗号会微妙地影响概念分离,因为其影响值与没有逗号的prompt相似。

如前所述,生成的tokens数量随着使用标点符号的增加而增加。

从整体上看,标点符号的“概念分离强度”由高到低依次为:逗号(最弱)→管道→双冒号(最强)

img

img

(上) /imagine prompt: a photo of a honey bee (下) /imagine prompt: a photo of a honey, bee

img

img

(上) /imagine prompt: a photo of a honey | bee (下) /imagine prompt: a photo of a honey:: bee::

img

img

/shorten分析结果 (上) /imagine prompt: a photo of a honey bee (下) /imagine prompt: a photo of a honey, bee

img

img

/shorten 分析结果. (上) /imagine prompt: a photo of a honey | bee (下) /imagine prompt: a photo of a honey:: bee::

再次确认

考虑到Midjourney中概念分离的重要性,我将调查扩展到另一个主题上——海狮。

Prompt 13 — /imagine prompt: a photo of a **sea lion**

Prompt 14 — /imagine prompt: a photo of a **sea, lion**

Prompt 15 — /imagine prompt: a photo of a **sea | lion**

Prompt 16 — /imagine prompt: a photo of a **sea:: lion::**

实验结果与以往的蜜蜂实验结果一致。除了 / shorten的结果更难以解释。目前还不清楚为什么逗号会对相对影响值产生如此重大的影响。

img

img

(上) /imagine prompt: a photo of a sea lion (下) /imagine prompt: a photo of a sea, lion

img

img

(上) /imagine prompt: a photo of a sea | lion (下) /imagine prompt: a photo of a sea:: lion::

img

img

Results of /shorten analysis. (Top/Left) /imagine prompt: a photo of a sea lion (Bottom/Right) /imagine prompt: a photo of a sea, lion

img

img

/shorten分析结果. (Top/Left) /imagine prompt: a photo of a sea | lion (Bottom/Right) /imagine prompt: a photo of a sea:: lion::

我还测试了使用连字符和加号+的效果。这里没有显示生成的图像,因为没有什么特别的期望。

不出所料,连字符很好地连接了这些想法。加号对概念分离的影响可以忽略不计,但改变了/shorten 分析中的相对影响值。

摘要:最强的概念分隔符是一个双冒号,后跟一个管道和一个逗号。逗号在分隔prompt中的概念方面有微妙的作用。该管道可能具有用于分离概念的新应用程序,作为多提示符的替代方案。尚不清楚该管道是否受控制多提示符的相同规则的约束。

img

img

/shorten 分析结果. (Top/Left) /imagine prompt: a photo of a sea-lion (Bottom/ Right) /imagine prompt: a photo of a sea + lion

(4) 机器人能理解由标点符号组成的表情符号吗?

最后,让我们看看机器人是否能理解一些完全由标点符号(没有单词)组成的表情符号。

Prompt 17 — /imagine prompt: {:-), :-(, ;-), :-/, :-O, X-(}

以下是经过测试的简单表情符号列表:

:-)
:-(
;-)
:-/
:-O
X-(

你猜怎么着?机器人只能理解 :-( 悲伤的表情符号。其他的表情符号都不起作用。

嘿,Midjourney机器人,你现在不开心吗?是因为我们给你太多工作要做吗?

Images of sad people.

/imagine prompt: :-(

原文:Midjourney: The Ultimate Guide to Punctuation


我们的创业项目已经上线!!!

TorchV AI,帮助企业快速进入AI时代!

具体详情,请点击官网咨询


最新内容,关注“土猛的员外”公众号