在艺术和AI生成图像的世界中,提示词(Prompt)起着至关重要的作用。特别是在使用Stable Diffusion等模型时,提示词的选择和排列方式可以极大地影响生成图像的质量和特点。
在reddit.com上看到有个帖子,作者在提示词中用了一个我以前没有注意过的关键词“BREAK”。他的提示词是这样的:
absurdres, highres, ultra detailed, (1girl:1.3), kawaii, BREAK, expressive brush strokes, ink wash, gradation, , poetic atmosphere, delicate balance, fluid motion
这是他生成的画面。
“BREAK”在这里有什么用?
我做了一番简单的研究学习,稍稍总结下,和大家分享。
BREAK的基本特性
“BREAK”是一个特殊的关键词,用于分割提示词。一个基础的提示词最多可以有75个令牌(tokens),如果你输入的提示词超过这个长度,SD会根据需要添加其他的75令牌组,并全部使用它们。然而,在每一组内,第一个令牌具有额外的重要性,如果一个多词短语因为在75个令牌处被分割而断开,模型将无法以相同的方式理解它。
“BREAK”用于强制调整Token数至75个。当使用BREAK时,模型会将其视为一个无意义的填充字符,并强制转移到下一个序列。这意味着,如果你的提示词超过了75个Token,BREAK会强制模型将其分割成多个序列,并分别进行处理。
BREAK的应用场景
强制截断: 当你的提示词过长,而你只想关注前75个Token,可以使用BREAK进行截断。
分段处理: 如果你有多个独立但相关的提示词,可以用BREAK将它们分开,以便模型能更精确地理解每个部分。
BREAK的影响
位置与顺序:BREAK的位置在提示词序列中起到关键作用。如果它位于序列的开始,那么前75个Token将被优先处理。如果它位于序列的末尾,那么最后75个Token将被优先处理。
上下文考量:BREAK的效果也受到上下文的影响。即使在75个Token内,也必须在上下文中正确地放置才能获得所需的效果。
多序列处理:如果一个提示词序列超过75个Token,BREAK将强制模型将其分割为多个75-Token的序列,并分别进行处理。
如何运用BREAK
精确控制:如果您希望某一部分的提示词具有更高的优先级,可以通过在该部分前或后插入”BREAK”来实现。
避免混乱:在一个复杂的提示词序列中,使用”BREAK”可以避免模型产生不必要的混乱或误解。
优化性能:对于超过75个Token的长序列,使用”BREAK”可以优化模型的性能和输出质量。
实验与观察
在实验中,无论是将BREAK放在提示词的开始还是末尾,其效果都相同。这表明BREAK的位置并不影响其功能。但值得注意的是,BREAK的使用会影响模型对其他提示词的解释和权重。
下面两张图,分别是用了“BREAK”和没有“BREAK”的效果。
BREAK是一个功能强大的工具,能有效地控制Token的数量和序列的切换。然而,其使用需要谨慎,以免影响模型对其他提示词的解释和权重。