친구 여러분, 훌륭한 기능 확장을 소개하고 싶습니다. 이제 같은(유사한 색상) 옷을 입고 다른 장소에 있는 캐릭터를 만들 수 있습니다. 자세한 내용은 다음 링크를 참조하세요. https://github.com/hnmr293/sd-webui-cutoff

작동 원리: https://civitai.com/models/18840/no-more-color-contamination-95percent-result


Cutoff - Cutting Off Prompt Effect

Update Info

What is this?

This is an extension for stable-diffusion-webui which limits the tokens' influence scope.

Usage

  1. Select Enabled checkbox.
  2. Input words which you want to limit scope in Target tokens.
  3. Generate images.

Note

If the generated image was corrupted or something like that, try to change the Weight value or change the interpolation method to SLerp. Interpolation method can be found in Details.

Examples

7th_anime_v3_A-fp16 / kl-f8-anime2 / DPM++ 2M Karras / 15 steps / 512x768
Prompt: a cute girl, white shirt with green tie, red shoes, blue hair, yellow eyes, pink skirt
Negative Prompt: (low quality, worst quality:1.4), nsfw
Target tokens: white, green, red, blue, yellow, pink

Sample 1.

Sample 2. (use SLerp for interpolation)

Sample 3.

How it works

프롬프트를 CLIP를 통해 얻을 수 있는 (77,768) 차원의 임베딩 표현(?정식 용어는 모릅니다)에 대해서, 극히 단순하게는 77개의 행 벡터는 프롬프트 중의 75개의 토큰(+개시 토큰+종료 토큰)에 대응하고 있다고 생각된다.


※위 그림은 작도상, 이 설명과는 행과 열을 바꾸어 그리고 있다.


이 벡터에는 단어 단체의 의미뿐만 아니라 문장 전체의, 예를 들면 관련 매듭 등의 정보를 집약한 것이 들어 있을 것이다.


여기서 a cute girl, pink hair, red shoes 라는 프롬프트를 생각한다. 보통 이런 프롬프트의 의도는


pink는 hair에만 관련되어 있고 shoes에는 관련되어 있지 않다.

마찬가지로 red도 hair와는 관계가 없다.

a cute girl은 전체적으로 관련되어 있으면 좋겠다.hair나 shoes는 여자에게 맞는 것이 나왔으면 좋겠다.

…라는 것일 것이다.


그렇지만 EvViz2등에서 토큰간의 관계를 보면, 그렇게 잘 되어 있지 않은 것이 많다. 즉, shoes 위치의 벡터에 pink의 영향이 나와 버리기도 한다.


한편, 상술한 바와 같이 a cute girl의 영향은 타고 있기를 바라며, 어떻게든 특정 토큰의 영향을 제거할 수 있도록 하고 싶다.


이 확장에서는 지정된 토큰을 padding token으로 고쳐 쓰는 것으로 그것을 실현하고 있다.


예를 들어 red shoes 부분에 대응하여 a cute girl, _hair, red shoes 라는 프롬프트를 생성한다.red 와 shoes 에 대응하는 위치의 벡터를 여기서 생성한 것으로 덮어써줌으로써 pink 의 영향을 제외하고 있다.


이를 pink 쪽에서 보면 자신의 영향이 pink hair 범위 내로 제한되어 있는 것처럼 보인다.What is this? 의 "limits the tokens' influence scope" 는 그런 뜻.


근데 a cute girl 쪽은 pink hair, red shoes의 영향을 받아도 되고 안 받아도 될 것 같아. 그래서 이 확장에서는 이런 어느 쪽이든 좋은 프롬프트에 대해서


a cute girl, pink hair, red shoes

a cute girl, _ hair, _ shoes

의 어느 쪽을 적용할지 선택할 수 있도록 하고 있다.Details의 Cutoff strongly가 그래서 오프일 때 1.을, 온일 때 2.를 각각 선택하도록 되어 있다. 원래 그림에 가까운 게 나오는 건 오프 때.디폴트도 이쪽으로 하고 있다


1단계: 이 확장 프로그램 설치

2단계: 안정적인 확산 다시 시작(닫고 열기)


3단계: 컷오프 활성화(controlnet 또는 추가 네트워크 아래의 txt2img에서)


4단계: 긍정적인 프롬프트 입력: 귀여운 소녀, 녹색 넥타이가 있는 흰색 셔츠, 빨간색 신발, 파란색 머리, 노란색 눈, 분홍색 치마


5단계: 부정적인 프롬프트 입력: (낮은 품질, 최악의 품질:1.4), nsfw



6단계: 대상 토큰(컷오프) 넣기: 흰색, 녹색, 빨간색, 파란색, 노란색, 분홍색

7단계: 가중치 2개를 넣습니다. 나머지는 이미지로 남겨주세요.


팁:

0# 색상에 우선순1위를 두세요. 먼저 색상을 지정한 다음 다른 모든 것, 1girl, 걸작... 너무 과하지 않게 팁 #3을 기억하세요.

1# 대상 토큰의 마지막 토큰은 다음과 같이 ","가 있어야 합니다: 흰색, 녹색, 빨간색, 파란색, 노란색, 분홍색, 👈 주의 : 어떤 사람들에게는 토큰 끝에 쉼표를 넣는 것이 작동하고 다른 오류가 발생합니다. 오류가 있는 경우 삭제하십시오.

2# 색은 항상 옷보다 먼저 와야 한다. 영어를 잘 몰라서 옷이나 눈 뒤에 색을 넣어도 그 변화가 적용되지 않는 일이 있었어요.

3# 75 토큰을 넘지 마세요. 150개나 200개 토큰으로 가면 문제입니다.

4# 부정적인 프롬프트를 넣지 않으면 오류가 발생할 수 있습니다.

5# 1 미만의 토큰 가중치를 사용하지 마십시오. 예: (red hoddie:0.5)

20개의 이미지가 항상 작업되었으며 대부분의 테스트에서 100%였습니다. 예를 들어 녹색 바지를 입으면 청바지(파란색)가 나올 수 있고, 치마와 함께 검은색 치마가 나올 수도 있다. 이러한 "실수"가 발생할 수 있습니다.

그래서 제목에 95%를 넣었습니다. 20개의 이미지 중 1~2개는 이 오류로 나타날 수 있기 때문입니다.