본문 바로가기
푸른지성의 이야기/Stable Diffusion

AI 그림 그리기(SD) #3 - 프롬프트의 이해

by 푸른지성 2023. 2. 18.
반응형

AI라고는 하지만, 이미 학습 완료된 데이터베이스에서 이미지를 합성하여 만들어내는 소프트웨어라고 보는 것이 맞겠습니다.

아. 그게 AI인가요? ㅋㅋㅋㅋ 요즘 햇갈리네요.

ChatGTP는 바로바로 터득한 지식을 학습하는 것이 가능하므로, 러닝이 가능한 AI라고 보는게 맞지만,

Stable Diffusion은 만들어놓은 모델을 사용하여 생성하는 소프트웨어죠.

물론 별도의 학습기 또는 Train메뉴가 붙어있어서 AI라고 부르는지는 모르겠지만 말입니다.

 

지금부터 간단한 프롬프트 작성법을 배워봅시다.

 

전제조건으로 Cilloutmix_NI 버전의 모델을 적용하고 시작합니다.

1. 프롬프트 입력

물론, 프롬프트 없이도 생성을 합니다.

그냥 Generate를 누르면 DB에서 랜덤한 위치에서 이미지를 꺼내와서 출력합니다.

누를때마다 변경됩니다만, 이것도 시드를 지정하고 누르면 고정됩니다.

 

Prompt에 girl을 입력해봅시다.

랜덤한 이미지로 소녀와 관련된 이미지가 생성됩니다.

누를때마다 변경되는 것도 확인이 가능합니다.

이제 girl 뒤에 콤마를 찍고 20 years old를 입력해봅시다.

어린이가 아닌 20살 소녀의 얼굴이 나오기 시작합니다. 간단하죠?

인간이 보기에 조금 대담해진 기분이 들기도 합니다.

AI는 이런 이미지를 20살 소녀로 봅니다. (정확히는 모델 제작자가 입력한 이미지입니다)

이번에는 나이를 바꿔서 50대 여자로 만들어봅시다.

prompt : girl, 50 years old

확실히 Cilloutmix 제작자가 50대엔 관심이 없었다는게 느껴집니다.

이제 20대 여자와 30대 남자가 함께 나오게 만들어봅시다.

girl is 20 years old, boy is 30 years old

우리가 AI로 만든 사진과는 좀 많이 다르죠?

당연합니다.

지금은 그냥 AI가 전달받은 프롬프트로 만들라고 해서 만든것이고,

추가적인 옵션으로, 화질을 얼마나 줄것인지, 이게 그림인지 사진인지도 지정하지 않았기 때문입니다.

아래의 프롬프트를 추가하여 추가 옵션을 줘봅시다.

(best quality:1), (ultra high res:1), (photorealistic:1.4), RAW photo

최고의 퀄리티, 울트라 높은 해상도, 리얼한 포토효과, 원본 사진입니다.

오우. 갑자기 화질이 좋아지네요? 우리가 지시한 고화질 사진 모드로 나오기 시작합니다.

음? 그런데 왜 여자만 나오죠? 프롬프트에는 남자도 넣었는데요??

AI가 남자는 무시하나요???

이것때매 고생하시는 분들 많으실겁니다.

왜 안나오느냐.....

 

프롬프트로 명령어를 입력받은 AI는 머리를 굴립니다.

AI : '이 쪼그만 정사각형 박스에 여자 남자를 넣기엔 부족하니깐, 그냥 우선 예쁘게 출력하기 위해 남자를 빼버리자. '

AI : '어차피 내 DB중 베스트 퀄리티는 거의 다 여자잖아! '

 

하지만, 우리는 그 작은 정사각형 박스에 남자도 넣고 싶습니다.

이때 프롬프트로 AI가 알아들을 수 있도록 확률을 지정해줍시다.

1.0은 무조건입니다. 0.1부터 1.0까지 확률을 정합니다.

(((20years old:1.0) 1 girl:1.0) and ((30years old:1.0) 1 boy:1.0)),

풀이

20살(필수)의 여자 1명(필수) 그리고 30살(필수)의 남자 1명(필수)

 

자. 그럼 AI는 또 머리를 싸맵니다.

AI : 아니.. 그 좁은 곳에 어떻게 두명을 넣어요???  아놔....

우리 : 그냥 넣으라면 넣어..... 뭔 말이 많어...

AI : 그럼 구도상 되는대로 넣을테니깐 만족하세요. 안들어가도 책임은 못집니데이.

다행히 우리가 시킨대로 몇장빼고는 두명씩 나왔습니다.

여자DB가 많은 모델이라는 바탕이고, 

AI라는 랜덤산출방식 때문에 프롬프트의 해석이 완벽하지 않아 여자가 2명 나오는 경우도 있습니다.

 

우리 : 오 이제 두명씩은 가끔 나오는군... 근데. 이거 우리가 보던 이미지랑 너무 다른데? 너무 이국적이야 사람들이...

우리 : 그리고 Cilloutmix는 아시아계 아니였어? AI씨. 자기가 갖고 있는 아시아인으로 나오게 해줘봐요.... 

 

Cilloutmix 체크아웃 특성상 퀄리티를 중요시합니다.

이제 네거티브프롬프트를 사용해봅시다. 위의 프롬프트는 동일하게 놓고 네거티브 프롬프트에 아래를 입력합니다.

네가티브에서는 1.1부터 2를 사용합니다. 1은 긍정 <---- >2는 완전 부정

(worst quality:2), (low quality:2), (normal quality:2)

아. 이제야 찾았네요. 우리가 익숙한 AI 이미지들..

Cilloutmix를 제작한 사람이 베스트퀄리티 이미지만 넣었음을 반증하는 내용입니다. 

노멀이나 로우 퀄리티 이미지는 Cilloutmix가 아닌 기존 모델의 데이타를 뽑아 쓰는 것이고,

베스트퀄리티 이미지를 생성할때는 Cilloutmix제작자가 학습시킨 이미지를 바탕으로 쓰는 것입니다.

따라서 남자 DB보다 여자DB가 많기에 여자만 나오거나, 여자 여자가 나오는 케이스가 더욱 더 많이 발생하게 됩니다.

 

엄청 설명할게 많네요.

다음편에서는 좀 더 심화되는 프롬프트도 배워봅시다.

 

반응형

댓글