이전부터 쓰려고 했는데 생각보다 바빠서 쓰는게 늦어졌음...

내가 틀린 내용이 있을 수도 있음 그런건 댓글로 부탁해 요즘 시간이 없어서 반영은 좀 오래걸릴지도...


이미 알려질대로 알려진 내용이지만 한번에 정리하고자 쓰게됐음

말 그대로 UI 하나하나씩 자세히 살펴보면서 어떤 작용을 하는지 정리할거


이쪽에 대해서 잘 아는건 아닌지라 원리보다는 결과의 경향성에 대해서 서술함

NAI를 기준으로 썼지만 본질은 같기 때문에 WEBUI 유저들에게도 도움이 될지도?


자신이 NAI 안쓰거나 많이 써봐서 안다 싶으면 접힌 탭은 넘겨도 됨



순서는 위 이미지 순서대로 살펴볼거고, 위 짤은 내가 일부러 설명하려고 실제로는 없어져야하는데 있거나 하는 부분이 있음


NAI 입문자를 위한 기초 설명

1. 상단


1. Novel AI 로고

 NAI 홈페이지로 가는 버튼, 구독 관리를 하고 싶으면 이 버튼을 누르고 홈페이지로 가서 Account Status의 manage 버튼을 누르면 됨. 소설 기능을 사용하는 사람이 아니면 보통 쓰지 않는 버튼


2. Image to Image 기능 두 가지

 Paint New Image와 Upload 두 가지 기능이 있는데, 보통 전자는 간단한 그림에 프롬프트를 삽입해서 사용하는 경우가 많고 Upload 기능은 다양하게 사용할 수 있음. paint new image의 경우 edit 그림판이 나타나면서 그림을 그리는고 upload는 이미지를 업로드하는거. 만약 exif 데이터가 있는 이미지라면 이미지를 삽입할지, 아니면 설정들을 적용할지 물어봄. 자세한 설명은 5번으로


3. Anlas/충전/공식 매뉴얼

 Anlas 잔여량을 표시해주는 칸과 Anlas 추가(+), 공식 매뉴얼(?)로 가는 버튼이 있는 박스. Anlas는 구독으로 얻은 것은 매달 초기화 되며, 유료로 산 Anlas는 초기화 되지 않는 다고함.


4. Generate 버튼과 필요 Anlas 표시창

 이미지 생성시에 필요한 Anlas가 표시됨. Opus 기준으로 노멀 이하의 사이즈, step 28이하, image to image 사용 X 라면 0 Anlas로 이미지를 생성할 수 있음. 설정에 따라 필요한 Anlas가 계속 변함.


5. Image to Image 사용시 삽입한 이미지 표기

edit 기능을 사용할때도 활성화됨


6. 프롬프트 입력칸

 프롬프트는 내가 원하는 이미지를 모델에게 자연어로 입력하는 곳임. 문장으로도, 단어형태의 태그로도 입력해도 모두 이해하지만 공식 문서에서는 병행해서 사용하면 좀더 좋은 결과를 얻을 수 있다고 설명함. 그리고 길이는 무제한이 아니라 제한이 있음


2. 히스토리

지금까지 생성한 이미지들이 나열되는 박스. 이미지에 커서를 올리면 X를 눌러 히스토리에서 이미지를 지울 수 있음. download zip을 클릭하면 히스토리에 있는 모든 이미지를 한번에 압축의 형태로 다운로드 받을 수 있음. 그리고 컨트롤 + 이미지 클릭하면 해당 이미지의 설정(프롬프트 부터 자잘한 설정까지)으로 자동으로 바뀜



3. 세팅



1. 모델 선택

 3가지 모델이 있지만 보통 두 가지만 씀. curated는 야짤이 생성 불가능한 대신 비교적 퀄리티가 좋게 나온다고함. full은 제한이 없는 모델.

젖꼭지 왜 안생겨요?야짤이 왜 안만들어져요? 하면 보통 이거임


2. 이미지 해상도

 위에서 말했듯이 opus는 노멀 이하의 크기라면 공짜로 이미지를 생성할 수 있음.
이미지 비율에 따라 특정 프롬프트가 더 잘 먹힐수도 있다거나 잘 안먹히거나 한다고 함. 거기에 같은 조건이어도 이미지 크기에 따라 생성되는 결과도  다름. 경험적인거지만 상대적으로 세로 비율이 높은게 더 잘 나오는 편. 다만 가로로 잘 뽑히면 더 보기 좋다.


3. 이미지 생성 수

 opus는 이미지 1개를 생성하는 경우에만 공짜. 갯수를 늘리면 현재 설정(기본 5) * n 만큼의 Anlas를 소모함. 이렇게 추가 생성된 이미지는 랜덤한 시드를 부여받음. 뒤에 설명하겠지만 이게 바리에이션임.


4. 모델별 설정


1. 원하지 않는 내용 (undesired contents)

 보통 네거티브나 필터라고 말하는 거. 원하지 않는 내용을 걸러주는 기능을 함. 기본 설정으로 몇몇개의 태그가 지정되어 있지만, 퀄리티와 상관없이 개성있거나 다양한 그림들을 보고 싶다면 None을 골라 끌 수도 있음.
입력한다고 절대적으로 기능하는건 아니지만, 중국쪽 자료에 의하면 네거티브를 잘 활용하는게 고퀄리티를 뽑는 비결이라 생각됨.


2. 품질 태그 자동 삽입

업데이트로 추가된 건데, 프롬프트 맨 앞에 masterpiece, best quality를 자동으로 추가해줌. 보통 NAI로 만든 짤 exif를 보면 맨 앞에 이 둘이 있는걸 확인할 수 있음.물론 추가적으로 품질 향상 태그를 더 삽입해줘도 상관없음.


3. steps 와 (CFG) scale


오늘의 기준 그림


1.step

step은 공식 문서에 따르면 하나의 그림을 그릴때 몇번 반복할지 결정한 요소라고함. 그렇기 때문에 step이 낮으면 그려지다만 느낌이 들고, 높을수록 상대적으로 이미지가 선명해진다. 다만 스텝이 어느 정도 수준이 되면 올려도 극적인 변화는 없다고 함.


스텝 역시 낮을수록 프롬프트에 낮은 집중도를 보이고 높을 수록 높은 집중도를 보인다고. 여러번에 걸쳐서 생성된거면 당연히 프롬프트가 더 많이 적용되지 않았을까 생각됨.


step 5 10 15 20

step 35 40 45 50


2. scale

모델이 프롬프트를 반영하는 정도. 높을 수록 프롬프트로 부터 균일한 이미지 형태가, 낮을 수록 자유로운 이미지 형태가 생성된다고함. 프롬프트와 시드를 고정한 동일 조건의 경우에서는 scale이 보통은 낮을수록 어둡고 흐릿해지고, 높을수록 밝고 선명해지는데 너무 높아지면 색이 타버리는 느낌이 나버린다거나 형상이 사라지는 부작용이 있음. 


공식 설명의 표현을 빌리면, 낮을수록 몽환적이고 회화적이고 부드러우며 높을 수록 선명하고 세밀하고 디테일하다캄.

-> 원소법전에서 scale을 낮게 설정하는 이유는 이러한 느낌을 부각시키려고 하는거라 판단됨.


scale : 15 17 19 21

scale : 9 7 5 3


image to image 기능을 사용하면 step이 50으로 고정되는데, 아래에서 설명할 strength를 낮추다보면 색이 너무 튀는 경우가 있다.

이럴 경우 방법 중 하나가 step을 낮춰서 조절하면 상대적으로 색이 안정된다.

step 50 scale 11/5


4. seed 값은 AI가 이미지를 생성하는 노이즈를 특정하는 수임. 따라서 같은 시드라면 어느정도 그림의 경향성이 비슷해짐(같은 노이즈에서 나온거니까)

갑자기 노이즈가 뭔데라고 생각된다면 #여기글 을 읽어보기


5. sampling은 이미지를 생성하는 방식.

여러가지가 있지만  k_euler_ancestral 가 가장 안정적인 결과를 뽑아냈기에 디폴트라고 함. 다른 샘플링을 골라보면서 다양한 변화를 살펴보는 것도 좋은 방법. 샘플링 방식에 따른 경향성은 잘 모르겠지만, 아래 결과처럼 비슷하게 나올수도 있고 모델별로 천지차이가 날수도 있기에 일일히 확인해봐야됨.


euler lms plms ddim 순


요약하면

seed= 어떤 노이즈를 사용하여 이미지를 생성할 건지?

undisired contents = 이미지를 생성 할때 어떤 요소를 배제하고 싶은지?

step = 이미지를 생성할때 몇번에 걸쳐 완성할건지?

scale = 프롬프트는 얼마나 적용하고 싶은지? (부가기능으로 이미지 선명도에 영향)

sampling = 이미지는 어떤 방식으로 뽑고 싶은지?


5. 이미지 삽입시 셋팅

이전에 내가 썼던 글에서 대부분 설명했지만, 또 써보기로함. 그리고 위에서도 말했지만 I2I 쓰면 step 50으로 고정됨.


1. (Denoising) strength

스트렝스는 공식 문서에서 모델이 얼마나 이미지를 변형 할 수 있는지의 자유도라고 함.
따라서 스트렝스가 높을수록 기존 이미지와 크게 달라지고 낮을수록 기존 이미지를 따름.
일례로 스트렝스0 노이즈 0 이면 원본이 나타남. 


이전글에 썼던 스트렝스 수치를 다시 써보자면(상대적인 수치임)

~0.3는 원본에 가깝고
0.3~0.5 정도는 적당히 타협한 정도
0.5 이상은 원본이 무시되기 시작하는 정도
0.7 를 넘어가면 원본 이미지의 형태는 거의 찾아볼 수 없음


2. noise 

webui에는 있는지 잘 모르겠는 수치인데, 아마 이미지 왜곡과 관련이 있을거라 생각됨.

공식 설명에서는 기존 이미지에 없는 걸 생성하는 정도라고 함(=기존 이미지에서 형태가 변형되는 정도).
다만 이러한 변화는 어떻게 일어날지 모르기 때문에 확인해보지 않으면 모름.
주의할 건 노이즈가 스트렝스에 가까울수록 이미지가 손상이 심해지기 때문에 적어도 노이즈는 스트렝스보다 낮아야됨.


여기서 공식문서는 내가 이전에 결론 내린거 처럼 이미지에 큰 변화를 끼치지 않을거면 노이즈를 0로 두고 스트렝스를 낮게 하라고 했는데

거기에 scale까지 조절해보면서 다양한 그림을 만들어보라고 권장하고 있음. 그래서 이번에는 scale 까지 건들여볼거



이전 글에 썼던 스케치 이미지를 이번에는 확실한 변화를 관찰하기 위해 배경까지 잘라서 해볼거고, 프롬프트는 아래와 같음

{{{masterpiece portrait}}}, blue hair, yellow eyes,school uniform, vest, hair bow, guitar case, bag. 으로만


scale 11/ noise 0/strength 0.1~ 0.8 


확실히 수치를 높여갈 수록 원본 이미지에서 벗어나는 걸 확인할 수 있음.



scale 11/ strength 0.6 / noise 0.1~0.6


노이즈를 높일 수록 임의대로 이미지가 변형되는 것과 이미지가 손상되는 것을 확인 할 수 있음.


strength 0.6 / noise 0.2/scale 5~21


스케일을 높일 수록 이미지가 선명해지는 것을 확인할 수 있음.



같은 프롬프트에서 다른 이미지로 scale만 조절했을 때(이미지는 금발 파란눈인데 프롬프트는 파란머리 노란눈)

scale 7~30


역시 이미지가 선명해지는 것과 동시에 프롬프트의 조건이 이미지에 반영되는 걸 확인할 수 있음.


응용 : 밑색하고 i2i로 채색 시키기

대충 밑색을 칠하고, 스트렝스 노이즈 스케일 세팅은 적절하게 구성하고, 내가 원하는 구성들을 프롬프트에 담았음.

{{{masterpiece portrait}}}, ,school uniform, vest, hair bow, guitar case, bag

(일부러 색 관련은 프롬프트는 지웠는데, 실제로 사용할 때는 명시해줘도 상관없음)


noise 0 scale 25

strength 0.6/0.5/0.4/0.3/0.2



noise 0 scale 11

strength 0.6/0.5/0.4/0.3/0.2



위 그림처럼 strength와 scale을 잘 조절해서 사용자가 원하는 정도로 채색을 해줄 수 있음.
여기에 노이즈까지 넣어준다면 랜덤한 변형까지 추가됨.



요약하면 I2I(image to image)에서


strength = 이미지 형태를 얼마나 보존하고 싶은지?

noise = 이미지에 형태 변화를 얼마나 주고 싶은지?

scale = 이미지에 프롬프트를 얼마나 강조하고 싶은지? (부가적으로 높을수록 이미지가 선명해짐)



6. 이미지 생성창

정확히는 edit image랑 variation, enhance가 뭔지 알아볼거


1. edit image


이미지에 간단한 그림판 기능을 사용할 수 있음


브러쉬,지우기,일부 선택 + 이동, 이미지의 색 선택(스포이드), 브러쉬 색 선택, 브러쉬 크기

저 맨끝에 브러쉬 체크된건 감압 민감이라고 되어있는데 마우스로 해서 그런진 몰라도 별로 좋진 않았음..

아래 짤처럼 나옴


오른쪽 메뉴에서 별 볼건 없고, edit한 이미지를 적용하려면 save 누르고

굳이 이전버튼 다음버튼 누를 필요 없이 ctrl + z, ctrl + y 하면 이전으로, 다음으로가 적용됨. 

레이어 기능은 그냥 브러쉬랑 지우기 할때 편한 정도?한번 이미지를 쪄내면 레이어들이 싹 병합되어 있음


마지막으로 주의 해야할점은 edit image를 쓸때 스트렝스를 낮추는건 별로 효과 없다는점?


내가 이렇게 캔버스를 했다치면


strength가 각각 0.4/0.5 일때 edit한 부분이 적절히 처리되지 않았고 선이랑 색만 찐해진 느낌이 나옴

따라서 아래 그림처럼 아예 높혀서 하는게 적절함(아니면 위에서 말한거처럼 scale을 낮추보던가)


strength 0.7


마찬가지로 새로운 요소를 넣는다 쳐도, 낮은 쪽은 그냥 선과 색이만 찐해지는 정도인데 높은 쪽은 적절히 변형됨
여기서는 내가 heart를 프롬프트에 넣어주지 않아서 임의대로 변형이 되긴 했지만,
내 생각에는 edit 기능을 쓸때 낮은 스트렝스는 그렇게 큰 도움 안되는 것 같음.


2. 그리고 말도 많고 탈도 많은 바리에이션


이건 그냥 Number of Images 를 4로 하고 생성한거에 불가함.  number of images로 인해 임의의 시드값 고른 후 +1씩 증가시켜 (아래 시드값에 주목) 4장을 동시에 생성하는것이라, 시드값만 임의로 지정하는 조건으로 anlas 쓰는거나 마찬가진데 다양한 경우를 보고 싶은거 아니면 좀 생각해볼듯.



3. enhance



show individual settings를 눌러보면 이게 무슨 뜻인지 나오는데

magnitude 1 = strength 0.2/noise 0.0

magnitude 2 = strength 0.4/noise 0.0

magnitude 3 = strength 0.5/noise 0.0

magnitude 4 = strength 0.6/noise 0.0

magnitude 5 = strength 0.7/noise 0.1

=> 즉 현재의 이미지를 스트렝스와 노이즈를 조정하여 i2i로 사용하면서 덤으로 업스케일 해주는게 enhance임


그 외에도

shift + enter 누르면 프롬프트 창이 확장된다던가

ctrl + shift + enter 하면 프롬프트 믹싱을 위한 프롬프트가 하나 더 생성되고 추가 프롬프트에 ~를 붙이면 위의 프롬프트를 반복한다는데,
아마 위의 프롬프트의 설정을 그대로 이어간다는 의미가 아닐까 생각함

또 프롬프트에서 |를 이용해서 프롬프트 믹싱을 할 수 있다는데 이건 쓸수록 잘 모르겠어서 넘어가기로...


이 정도면 NAI 쓰는데 웬만해선 무리가 없을듯?


참고한 곳:

https://docs.novelai.net/

공식 문서 번역

AI 그림 생성 원리