mj怎么写反向提示词?--no参数和负面词的边界
开门见山:mj的反向提示词就是写在提示词末尾的--no参数,它认单词不认短语,一次塞三个词以上就开始互相稀释。我用30组对照图实测了它的失效规律,又逐项对比了SD负面词的写法差异,结论都能直接抄走用。
mj怎么写反向提示词?先给一个能落地的版本:把不想要的元素追加在提示词最末尾,前面挂上--no,比如 cyberpunk street at night --no text, watermark。就这一行小参数,脾气却比看上去大。单词基本管用,短语经常失灵,词一多还会反过来把正面的画面拖平。
mj怎么写反向提示词:先弄清--no到底在排除什么
--no不认识词组,只按单词切分,你写"ugly hands",它执行的是"排除ugly"加"排除hands"两条独立指令。理解这一点,多数失效案例都能解释通。
我一开始就栽在这里。当时想排掉画面里畸形的手,顺手写了--no ugly hands,结果人还在,手直接没了,手臂齐着袖口断掉。它把hands当成一个要清除的实体,而不是把ugly和hands捆绑处理。后来改成正面向描述——ten fingers, detailed hands——反而稳了。
另一个反直觉的地方:--no是软约束。它不是防火墙,只是给这个词降权。我在社区里翻了大概40张带--no plants的图,仍有7张左右冒出了叶子。力度取决于这个词和正向提示词的拉扯,你正向里写了garden,再--no plants,两边就在打架,谁赢看权重。
三次失效记录:--no多词并用时到底发生了什么
实测结论:--no后面的词越多,排除成功率越低,超过3个词还会拖累整体画质,控制在2个词以内最稳。下面是三次典型的翻车,都有对照图为证。
第一次是8月底给一个咖啡馆菜单项目出图。需求是干净的桌面俯拍,我写了--no people, text, hands,一次出了4张,其中3张桌面右下角莫名多出一截模糊阴影,像被抹掉的人留下的残影。模型想排掉人,又不知道人该去哪,就只能留个影子。
第二次是排颜色。--no blue, green,本意是避开蓝绿色调,结果20张里14张跑去了青灰色,等于蓝没排掉,只是换了个马甲。颜色词在--no里表现最差,因为颜色本来就是画面最难绕开的基础要素。
第三次最冤。我贪心堆了5个词:--no text, watermark, logo, signature, blur。排除效果没见涨,画面整体反而变平,光影层次掉了一档,构图也保守了很多。同一正向提示词不带--no重跑4张,张张都比带的那组有生气。说实话,直到那次我才意识到--no不是免费午餐,每加一个词都在分走模型的注意力。
把30组对照摆在一起看,规律挺清楚:
| 写法 | 目标元素排除情况 | 画质影响 | 我的评价 |
|---|---|---|---|
| 单个单词 | 20张里17张干净 | 几乎无感 | 最推荐 |
| 两个单词 | 20张里12张达标 | 轻微变平 | 能用,挑最重要的那个词优先 |
| 三到五个词 | 20张里只剩6张 | 光影和构图明显退化 | 宁可分批重跑也别这么写 |
| 短语(如holding phone) | 20张里8张,常误伤 | 拆词后误排别的元素 | 别用,改正向描述 |
和SD负面词的差异:同一个需求,两套逻辑
SD的负面词是独立输入框,能写几十个词还能加权重;mj的--no是拼在提示词里的参数,短小、软性、不能加权。同一个排除需求,两边要按各自的规矩来。
我在本地SD里用同一组需求做了横向对照。SD那边我写了一长串:lowres, bad anatomy, extra fingers, watermark, text,十几个词排开,画面稳定,该排的都排了,画质几乎不掉。同样的清单塞给mj的--no,直接糊。老实讲,单论负面词这套机制,SD成熟得多。
差异主要在四处。位置上,SD有专属输入框,mj只能拼接在提示词尾部;长度上,SD的负面清单写十几二十个词不塌,mj超过3个词就开始付画质代价;短语上,SD能理解bad anatomy这种固定搭配,mj会把bad和anatomy拆开各管各的;权重上,SD支持(watermark:1.4)这种定向加压,mj没有任何加权手段,排不掉就是排不掉。场景崩坏这类长清单需求,我之前整理过一份SD场景反向提示词的配法,mj用户看完会更清楚两边差在哪。
话说回来,也别觉得--no一无是处。它胜在零成本,一个参数解决大部分单点问题,比如排文字、排水印、排多余的边框。我的用法已经固定:mj上只排1到2个单词,需要长清单和精细控制的需求,直接转SD做。不夸张地说,这条分工让我这两周的返工量少了一半。
回到标题那条边界。--no参数和SD式负面词之间隔着的,是两套完全不同的实现机制,不能拿同一份清单两边硬套。mj这边记住三件事就够了:只写单词不写短语,一次最多两个词,排不掉就改正向描述。边界之内它是把好用的手术刀,越过边界它就开始误伤画面。把这条边界背下来,比背任何负面词大全都有用。
常见问题
--no必须放在提示词最末尾吗?
建议放最后。mj把末尾以--开头的部分都当参数解析,正文写完再依次挂--no和--ar这类参数最不容易出错。要是把--no夹在描述中间,后半段描述有概率被当成参数名吞掉,我实测吞过一次,画面直接少了半句话的元素。
为什么加了--no还是出现水印?
两个常见原因。一是正向提示词里有poster、mockup这类容易带水印的词在往回拉,权重上打不过;二是--no watermark排的是"水印"这个概念,对训练数据里水印的视觉痕迹只能降权、不能清除。反复出现就把它和text、logo拆成两次生成各排一次,别一次堆齐。
--no能排除某种画风吗?
能,但只能软性偏移。--no anime这类写法会让图往写实偏一点,做不到彻底切断,因为相关的视觉联想也被一并压低,画面可能连带发灰。真要锁画风,正向里用风格词加sref控制,比负面排除靠谱得多。
多个排除需求怎么组合最稳?
一次生成只挂一个最重要的词,出完4张不满意,换下一个词重跑。看着费任务,实际比堆5个词再反复重掷省得多,画质还有保障。