NAI 공식 기능중에 하나면서도 사람들이 거의 버리다시 한 문법중에 A | B 라는 문법이 있죠.

(NAI에서는 Prompt Mixing 이라고 부름)


기능 자체는 "텍스트 벡터를 가중평균내주는 기능" 이라, 단순히 생각해보면 두 텍스트 프롬프트를 섞어주는 역할처럼 보일 수 있지만... 생각해보면 저 가중평균의 효과가 생각처럼 직관적이지 않다는 큰 문제가 있습니다.



예컨대 파란 재킷을 입은 핑크 포니테일 소녀를 그리고 싶다고 합시다.

아래는 나머지 셋팅이 동일한 상태에서, 이를 최소한으로 구현해 본 것입니다.

(두 프롬프트는 pink ponytail 과 blue jacket 의 순서만 다릅니다.)


프롬프트: 1girl, pink ponytail, blue jacket프롬프트: 1girl, blue jacket, pink ponytail


이제 이 두 프롬프트를 섞어봅시다.

(여전히 시드를 포함한 나머지 셋팅은 모두 동일한 조건입니다.)


프롬프트: 1girl, pink ponytail, blue jacket | 1girl, blue jacket, pink ponytail


포니테일도, 파란 재킷도 어디론가 사라진, 다소 엉뚱한 그림이 나왔네요.

즉, 섞어야 할 두 프롬프트의 태그 순서에 민감하게 반응할 정도로 A | B 문법은 예측하기 힘든 면이 있습니다.


심지어 이는 순서를 바꾼 각각의 결과물이 비슷한 경우에도 마찬가지입니다.


1girl, large breasts, skirt
1girl, skirt, large breasts
1girl, large breasts, skirt | 1girl, skirt, large breasts


아래는 large breasts 와 small breasts 를 다양한 비율로 섞으면 어떤 효과가 나는지 테스트해본 것입니다.

(동영상의 캡션 a% : b% 는 해당 이미지가 large breast 와 small breasts 를 a : b 의 비율로 섞은 결과임을 뜻합니다.)


프롬프트 1: 1girl, large breasts프롬프트 2: 1girl, small breasts
[프롬프트 1] : [프롬프트 2] 를 섞음


가슴 사이즈가 점진적으로 줄어드는 것도 아니고 (다만 급격하긴 해도 중간에 사이즈가 줄어드는 구간이 보이긴 하죠),

이상한 오브젝트가 나오거나 그림체가 일그러지거나 하는 의도치 않은 효과들도 보이네요.


아마도 이 문법은 잠재공간에 있는 두 텍스트 벡터 사이의 선형결합을 계산해줄 뿐이라서, 두 프롬프트의 의미를 섞는다고 보기엔 너무나 예측불가능한 행동을 보이는 게 아닌가 싶습니다.



결론: A | B 문법은 '섞는다'는 말이 무색하게, 의미 수준에서 무슨 효과인지 알 수 없다. 따라서 안 쓰는 게 정신건강에 좋은 듯하다...?