文字的力量
我们在提示中使用的词被称为标记。每个标记都有其自身的力量,这取决于它在用于训练AI的数据集中出现的频率。我们稍后会深入技术细节,但首先我们将关注如何实际思考标记。
让我们看一个例子:我提示“1girl wearing white oversized coat with >< and outstretched arms”。如果每个词都是一个标记,我们就有11个标记。
(当将此提示输入BetterWaifu时,你会注意到标记计数显示13。这是因为<start>和<end>标记是由AI在后台添加的。更多内容将在下一部分中讨论。)
像“with”、“for”、“at”、“in”这样的介词,以及像“and”、“a”、“to”这样的助词也算作标记。因此,它们也有力量,并影响图像。
让我们尝试同样的提示,但不使用任何助词或介词:“1girl, white oversized coat, ><, outstretched arms”。逗号也算作标记,所以我们仍然有11个标记,加上开始和结束标记则是13。结果截然不同:
我更喜欢这个结果,因为它看起来更关注外套。逗号标记用于区分不同的概念。
现在,虽然使用逗号分隔的标签是我推荐的在BetterWaifu上提示的方法,但这并不意味着去掉所有介词和助词总是能使结果更好。有时,使用介词来指示相对位置是很重要的。
以下是一个简单的例子,说明介词如何产生重大影响:
1girl, airplane, white oversized coat, ><, outstretched arms
1girl inside airplane, white oversized coat, ><, outstretched arms
除了标记的固有强度外,它在提示中的位置也很重要。开头的标记比结尾的标记具有更大的权重。理解这一点很重要,因为提示末尾的弱标记可能对图像没有影响。相反,开头的强标记可以完全决定结果。
要控制标记的强度,可以使用构造(token:1.0),其中数字表示标记的强度。0 - 没有影响,1 - 正常权重。我通常不超过1.5。尝试不同的强度值可以帮助你微调对提示中标记的控制程度。
技术解释
标记化是处理AI生成文本数据的常见方法。我们使用它将文本转换为数字,并通过神经网络进行处理。
Stable Diffusion将文本提示标记化为标记序列。例如,它将文本提示“a cute and adorable bunny”拆分为标记a、cute、and、adorable和bunny。然后Stable Diffusion在标记的开头和结尾添加<start>和<end>标记。
上述例子的标记序列将是<start>、a、cute、and、adorable、bunny和<end>(7个标记)。
为了便于计算,Stable Diffusion将任何文本提示的标记序列保持为77的相同长度,通过填充或截断。如果输入提示少于77个标记,后台会在序列末尾添加<end>标记,直到达到77个标记。
77的长度是为了平衡性能和计算效率。如果使用超过77个标记,不同软件会有不同的行为:
- 保留前77个标记,其他的被剪掉。
- 整个提示被分成75个标记的块,添加开始和结束标记,并按顺序处理每个块。这是BetterWaifu使用的方法。