미드저니(Midjourney) 공식 가이드 읽어보기
이미지 생성형 AI는 기계 학습과 인공지능 기술을 활용하여, 주어진 입력에 대응하는 이미지를 생성하는 소프트웨어를 말합니다. 이러한 AI는 많은 분야에서 활용되며, 특히 예술, 디자인, 그래픽 등의 분야에서 강력한 도구로서 활용되고 있습니다.
이미지 생성형 AI의 중요한 요소 중 하나는 "생성적 적대 네트워크"(GANs)라는 기술입니다. GANs는 두 개의 다른 네트워크, 즉 생성 네트워크와 판별 네트워크가 서로 대립하면서 작동합니다. 생성 네트워크는 실제 이미지와 같은 이미지를 생성하려고 노력하고, 판별 네트워크는 생성된 이미지가 실제인지 아니면 생성 네트워크가 만든 가짜인지를 판별하려고 노력합니다. 이 두 네트워크는 서로 경쟁하면서 점차적으로 학습하고, 이 과정을 통해 생성 네트워크는 실제 이미지와 구별이 어려울 정도로 고품질의 이미지를 생성할 수 있게 됩니다.
이와 같이, 이미지 생성형 AI는 사용자가 제공하는 입력을 기반으로 이미지를 생성합니다. 예를 들어, 사용자가 '해질 무렵의 풍경'이라는 설명을 제공하면, AI는 이러한 설명에 해당하는 이미지를 생성할 수 있습니다. 이와 같은 방식으로, 이미지 생성형 AI는 복잡한 그래픽 작업을 수행하거나, 사용자의 아이디어를 시각화하는 데 사용될 수 있습니다.
Midjourney Prompt : Landscape at sunset
미드저니와 같은 서비스는 이러한 이미지 생성형 AI 기술을 활용하여, 사용자가 텍스트 입력을 제공하면 이를 기반으로 아트워크를 생성하도록 설계되었습니다. 이러한 서비스는 예술가들이 새로운 아이디어를 시험하거나, 디자인을 빠르게 프로토타이핑하는데 도움이 될 수 있습니다. 또한, 이러한 기술은 광고, 영화, 게임 디자인 등의 분야에서도 활용되며, 효율적이고 창의적인 콘텐츠 생성을 가능하게 합니다.
미드저니 공식문서에서 밝히고 있는 미드저니 프롬프트와 그 프롬프트의 구조는 다음과 같습니다.
프롬프트
프롬프트는 미드저니 봇이 이미지를 생성하기 위해 해석하는 짧은 텍스트 구문입니다. 미드저니 봇은 프롬프트의 단어와 구문을 토큰이라고 하는 작은 조각으로 분해하여 학습 데이터와 비교한 다음 이미지를 생성하는 데 사용합니다. 잘 만들어진 프롬프트는 독특하고 흥미로운 이미지를 만드는 데 도움이 될 수 있습니다.
기본 프롬프트 (Basic Prompts)
기본 프롬프트는 한 단어, 문구 또는 이모티콘처럼 간단하게 내가 그리고자 하는 결과물을 설명하는 내용을 구성하는 것입니다.
$$프롬프트 TIP!
미드저니 봇은 보고자 하는 내용을 설명하는 간단하고 짧은 문장이 가장 효과적입니다. 긴 요청 목록은 피하세요. 아래 비교 이미지를 통해 2가지 케이스의 차이점을 확인할 수 있습니다.
Case 1. 캘리포니아 양귀비가 많이 피어 있는 사진을 보여주고, 밝고 선명한 주황색으로 만들고, 색연필로 일러스트레이션 스타일로 그려 보세요.
Prompt : Show me a picture of lots of blooming California poppies, make them bright, vibrant orange, and draw them in an illustrated style with colored pencils
Shorten : Show me a picture of lots of blooming California poppies, make them bright, vibrant orange, and draw them in an illustrated style with colored pencils
Case 1. 에서 사용한 프롬프트 중 make them bright, them, style은 미드저니봇이 인식할 때, 불필요한(중요도가 낮은) 프롬프트로 인식하였습니다. 더 짧은 프롬프트로 만들어진 Case 2. 의 결과물을 보면 프롬프트를 길게 쓴다고 해서 더 좋은 결과물이 나오는 것은 아니라는 것을 알 수 있습니다.
$$ 미드저니 TIP!
/shorten 이라는 명령어는 입력한 프롬프트를 미드저니봇에서 인지하는 중요도 분석을 해주고, 더 짧은 프롬프트도 만들어주는 기능입니다. 이 기능을 활용하면 지금 내가 입력한 프롬프트 중 어떤 부분을 미드저니봇이 더 중요하게 인지했기 때문에 현재의 결과물이 나왔는지를 좀 더 명확하게 알 수 있습니다.
Case 2. 색연필로 그린 밝은 주황색 캘리포니아 양귀비 그림 그리기
Prompt : Bright orange California poppies drawn with colored pencils
Shorten : Bright orange California poppies drawn with colored pencils
Case 1. 과 Case 2. 의 결과물이 거의 비슷하게 나온 것 같습니다. Case 1. 의 결과물은 모든 그림에 색연필이 포함되어 있지만, Case 2의 결과물 중 4번째(우측하단) 그림은 '프롬프트의 의도대로' 결과물에 색연필이 포함되어 나오는 것이 아니라 색연필로 그린 그림이 표현되었습니다.
이처럼 프롬프트는 짧고 간결하게 표현해도 그 의도를 충분히 전달할 수 있기 때문에 처음에는 가능한 짧고, 명확하게 쓰고, 점점 프롬프트의 표현을 구체화 하면서 '의도한' 결과물을 만들어가는 방법이 좋습니다.
고급 프롬프트 (Advanced Prompts)
고급 프롬프트에는 하나 이상의 이미지 URL, 여러 텍스트 구문 및 하나 이상의 매개 변수(Parameter)가 포함될 수 있습니다.
이미지 프롬프트 (Image Prompts)
이미지 프롬프트는 작업에 영향을 주기 위해 이미지 URL을 텍스트 프롬프트와 함께 사용하는 기술입니다.
이를 통해 웹 상에 있는 이미지를 링크로 가져와 작업에 활용할 수 있습니다.
사용할 이미지는 .png, .gif, .webp, .jpg, 또는 .jpeg 형식으로 저장되어야 하고, 작업은 이미지 URL을 프롬프트의 맨 앞에 추가한 후, 추가적인 텍스트나 매개변수를 포함하여 완성됩니다. 이러한 방식으로 이미지와 텍스트를 조합하여 다양한 스타일과 색상의 결과물을 얻을 수 있습니다.
갖고 있는 이미지를 Discord에 업로드해 미드저니에서도 image URL을 만들 수 있습니다.
프롬프트에 이미지를 포함하려면 .png, .gif, .webp, .jpg 또는 .jpeg로 끝나는 직접 이미지 링크가 필요합니다. 컴퓨터나 휴대폰에 이미지가 있는 경우, 먼저 미드저니 봇에 메시지로 전송하여 링크를 생성할 수 있습니다.
프롬프트에 이미지 URL 추가하기
프롬프트에 이미지를 추가하려면 평소와 같이 /imagine을 입력합니다. 프롬프트 상자가 나타나면 이미지 파일을 프롬프트 상자로 드래그하여 이미지의 URL을 추가하거나 마우스 오른쪽 버튼을 클릭하여 프롬프트 상자 안에 링크를 붙여넣습니다.
$$ 개인정보 보호 TIP!
다른 서버 사용자에게 이미지가 표시되지 않도록 하려면 미드저니 봇을 사용하여 다이렉트 메시지(Direct Message)에 이미지를 업로드하세요. 사용자가 스텔스 모드를 사용하지 않는 한 이미지 프롬프트는 미드저니 웹사이트에 표시됩니다.
텍스트 프롬프트(Text Prompts)
생성하려는 이미지에 대한 텍스트 설명입니다.
매개변수(Parameter)
매개변수는 이미지 생성 방식을 변경하는 프롬프트에 추가되는 옵션입니다. 매개변수를 통해 이미지의 종횡비를 변경하고, 미드저니 모델 버전을 전환하고, 사용되는 업스케일러를 변경하는 등 다양한 작업을 수행할 수 있습니다.
매개변수는 항상 프롬프트 끝에 '--' 대시 2번을 입력하고 매개변수명을 추가하면 됩니다. 각 프롬프트에 여러 매개변수를 추가할 수 있습니다.
매개변수 사용 예시(Parameters example)
Case Prompt : a vibrant california poppy --aspect 2:3 --stop 95 --no sky
기본 매개변수(Basic Parameter)
고정된 프롬프트에 기본 매개변수를 변경 적용하며, 어떻게 결과물이 달라지는지 사용 예시를 보겠습니다.
화면비(Aspect Ratio)
사용법 : --aspect 또는 --ar <비율>
생성 결과물의 종횡비를 변경합니다. 입력하지 않으면 기본값으로 1:1 이 적용됩니다.
Case 1. Prompt : a bottle of water
Case 2. Prompt : a bottle of water --ar 16:9
Case 3. Prompt : a bottle of water --ar 9:16
다양성(Chaos)
사용법 : --chaos <숫자 0-100>
생성 결과물의 다양성을 의도할 수 있습니다. 값이 100에 가까울수록 더 특이하고 예상치 못한 결과물이 생성될 수 있습니다.
Case 1. Prompt : a bottle of water --chaos 0
Case 2. Prompt : a bottle of water --chaos 100
이미지 가중치(Image Weight)
사용법 : --iw <0~2>
텍스트 가중치에 상대적인 이미지 프롬프트 가중치를 설정합니다. 기본값은 1입니다.
이미지 링크를 프롬프트에 넣은 상태에서 사용할 수 있는 매개변수 입니다.
기본 Image Prompt (미드저니 공식 가이드에서 제공하고 있는 꽃 이미지 사용)
Case 1. Prompt : {예시의 꽃 이미지}, a bottle of water --iw 0.5
Case 2. Prompt : {예시의 꽃 이미지}, a bottle of water --iw 1
Case 3. Prompt : {예시의 꽃 이미지}, a bottle of water --iw 1.5
Case 4. Prompt : {예시의 꽃 이미지}, a bottle of water --iw 2
이미지 가중치를 0.5 ~ 2 까지 순차적으로 높여줬을 때, 기본 이미지로 제시된 꽃의 비중이 그림에서 점점 늘어나는 것을 확인할 수 있었습니다. 그럼 0~2까지의 범위 중 이미지를 약하게 섞고 싶으면 0에 가깝게, 기본 이미지의 비중을 높게 가져가고 싶으면 2에 가깝게 가중치를 설정하면 됩니다.
그런데 가중치를 0으로 설정하면 어떤 결과가 나올지 궁금해서 적용을 해봤더니, 의외로 --iw 0은 실제로는 1정도의 가중치를 갖고 있는 것 같은 결과가 나왔습니다. --iw 0으로 여러 차례 시도를 해봤는데, 비슷한 비중으로 꽃이 등장하는 것으로 봐서는 미드저니 모델은 이미지 가중치 0은 입력이 안 된 것으로 인식해서 기본값인 --iw 1을 적용하는 것 같습니다.
Case 0. Prompt : {예시의 꽃 이미지}, a bottle of water --iw 0
Case 0. Prompt : {예시의 꽃 이미지}, a bottle of water --iw 0.1
이미지 가중치 0.1 을 넣었을 때, 기본 이미지인 꽃이 등장하지 않는 결과물이 생성된 것을 보면, 이미지 가중치는 0.1부터 2까지 범위 중 표현하고 싶은 비중만큼 적절하게 사용하면 될 것 같습니다.
특정항목 배제(No)
사용법 : --no <text>
이 배개변수는 결과물을 생성할 때 특정 항목을 배제하기 위해 사용합니다.
현재 꽃 이미지와 a bottle of water 텍스트 프롬프트의 결과물을 유지하기 위해 --seed 100 이라는 매개변수를 추가하고, --no 로 Case 1의 결과물에서 하나씩 제거를 시도해보겠습니다.
Case 1. Prompt : {예시의 꽃 이미지}, a bottle of water --seed 100
Case 2. Prompt : {예시의 꽃 이미지}, a bottle of water --seed 100 --no flower
꽃을 제거해보려고 하였으나, 이미지 프롬프트로 사용한 이미지에 꽃이 들어있기 때문에 결과물에서 꽃이 제거되지 않은 모습입니다. 다음은 텍스트 프롬프트에 들어있는 bottle 을 제거해보겠습니다.
Case 3. Prompt : {예시의 꽃 이미지}, a bottle of water --seed 100 --no bottle
역시 bottle 도 텍스트 프롬프트에 들어있기 때문에 제거되지 않았습니다. --no 는 제거를 하기 위한 negative 매개변수이기 때문에 이미지나 텍스트 프롬프트에서 언급되지 않은 내용을 적용해야 할 것 같습니다. 다음은 꽃의 상위개념인 식물(plants)을 제거해보겠습니다.
Case 4. Prompt : {예시의 꽃 이미지}, a bottle of water --no plants
앞에 생성된 결과물들에 비해 이끼나 줄기같은 느낌의 녹색이 많이 사라지고, 이미지 프롬프트의 꽃과 텍스트 프롬프트의 물병만 적용되어 있는 느낌이 듭니다.
Case 5. Prompt : {예시의 꽃 이미지}, a bottle of water --no rocks
생성된 결과물 중 바위나 돌같은 걸 배제했더니 출력되지 않는 모습을 확인할 수 있습니다. 다음 케이스에서 식물, 돌 등 자연적 요소들을 배제해보겠습니다.
Case 6. Prompt : {예시의 꽃 이미지}, a bottle of water --no nature elements
자연적 요소를 배제했더니 실내로 장소가 옮겨진 것 같은 결과물들만 생성되었습니다. 이미지나 텍스트 프롬프트 안에 있는 요소들은 배제하기 어렵지만, 생성 과정에서 그려지는 모든 것들은 배제할 수 있을 것 같습니다. 어떤 점을 강조해야 하는지를 프롬프트에 넣는 것도 중요하지만, 배제해야할 요소를 프롬프트에 포함시키지 않는 것도 매우 중요한 프롬프트 디자인 요소라 할 수 있겠습니다.
품질(Qulity)
사용법 : --quality <0.25 ~ 1>, 또는 --q <0.25 ~ 1>
결과물의 품질을 얼마나 좋게 만들지를 결정하는 매개변수 입니다. 기본값은 1입니다. 값이 1에 가까울수록 더 많은 GPU 시간이 사용되지만, 결과물의 퀄리티가 좋아집니다.
Case 1. Prompt : a bottle of water --q 0.25
Case 2. Prompt : a bottle of water --q 0.5
Case 3. Prompt : a bottle of water --q 1
--q 0.25 ~ 1 까지 중 역시 1에 가까울수록 이미지가 선명한 느낌이 납니다. 기본값은 1이니 굳이 이미지 품질을 떨어트리고 싶은 게 아니라면 설정할 필요는 없어보입니다.
반복작업(Repeat)
사용법 : --repeat <1-40>, 또는 --r <1-40>
단일 프롬프트를 여러 번 실행해야할 때 사용할 수 있습니다. 저는 개인적으로 잘 활용하지 않는 기능이지만 일단 여러 번의 생성 결과물을 놓고 비교해보겠다는 의도가 있으면 충분히 유용한 기능입니다.
Case Prompt : a bottle of water --repeat 3
3번 반복하라는 명령을 주면 사용자 확인을 한 번 거치고 Yes 를 선택하면 이미지 생성이 시작됩니다.
원본고정(Seed)
사용법 : --seed <0-4294967295 사이의 정수>
미드저니 봇은 시드 번호를 사용하여 가장 먼저 노이즈 필드(배경 정도의 느낌)를 생성하고, 점차 이미지를 구체화하면서 결과물을 생성합니다. 이때 초기 이미지 그리드를 생성하기 위한 시드 번호는 각 이미지에 대해 무작위로 지정되지만 --seed 또는 --sameseed 매개 변수를 사용하면 초기 생성되는 노이즈 필드를 특정할 수 있습니다. 동일한 시드 번호와 프롬프트를 사용하면 동일한 결과물을 생성할 수 있습니다.
Case 1. Prompt : a bottle of water --seed 12 (생성시간 23시 17분)
Case 2. Prompt : a bottle of water --seed 12 (생성시간 23시 19분)
2분 간격으로 생성한 a bottle of water 라는 이미지의 seed 를 12로 고정했을 때, 완전히 같은 이미지가 생성되었습니다. seed 를 별도로 지정하지 않고 이미지를 생성하면 약 43억개 가량의 노이즈필드가 존재하기 때문에 같은 이미지가 생성될 확률은 매우 희박합니다.
Case 3. Prompt : a glass of wine --seed 12
Case 4. Prompt : a cup of coffee --seed 12
Case 3, Case 4 처럼 같은 seed 번호를 사용하더라도 프롬프트가 달라지면 전혀 다른 느낌의 결과물이 생성되는 것을 확인할 수 있었습니다.
Case 6. Prompt : a bottle of wine --seed 12
Case 7. Prompt : 2 bottles of wine --seed 12
Case 8. Prompt : bottles of wine --seed 12
Case 6, Case 7, Case 8 처럼 동일한 seed, 비슷한 내용의 프롬프트를 사용하더라도 프롬프트 내용이 조금이라도 바뀌면 결과물이 다르게 나오는 것을 알 수 있습니다. 재미있는 건 이렇게 동일한 seed의 결과물이 프롬프트의 변화에 따라 완전히 달라지는 건 숫자의 표기 방식에서도 차이가 있었습니다.
Case 9. Prompt : two bottles of wine --seed 12
Case 9의 프롬프트는 Case 7 과 내용은 같지만 2 와 two의 표기 차이가 있었습니다. 숫자와 문자에서도 차이를 보인다면 단수 복수 차이도 보일 것이라는 생각이 들어서 문법적으로는 맞지 않지만, seed 번호와 프롬프트를 "bottle of wine" 을 고정하고, 앞에 병의 숫자만 바꿔서 넣어보기로 했습니다.
Case 10. Prompt : 1 bottle of wine --seed 12
Case 11. Prompt : 2 bottle of wine --seed 12
Case 12. Prompt : 3 bottle of wine --seed 12
프롬프트를 단수로 고정한 상태에서 앞에 1, 2, 3 숫자만 변경했을 때, 1번(좌측상단)과 4번(우측하단)은 유사한 구성을 보여주고 있고, 앞에서 bottles 로 썼을 때는 제어되지 않던 병의 숫자가 제어되고 있는 것을 확인할 수 있었다. 물론 100% 되는 것은 아니지만 그래도 매번 생성되는 결과물 4개 중 평균 3개 정도가 숫자에 맞는 병의 갯수가 표현되었다.
1~10까지 테스트 해본 결과로는 7을 넘어가면 거의 말을 듣지 않는다. (8~10 제어가 힘든 상황이라 그 이상은 테스트 하지 않음)
생성중단(Stop)
사용법 : --stop <10-100 사이의 정수>
--stop 매개변수를 사용하여 프로세스 도중에 작업을 완료할 수 있습니다. stop 다음에 입력하는 숫자는 완성 % 라고 보시면 됩니다. 작업을 어느 정도 진행했을 때, 생성을 멈출 것인지를 결정하는 것입니다. seed 매개변수를 설명하면서 잠깐 언급했던 것처럼 생성형 이미지는 흐릿한 이미지에서 점차 구체화되면서 이미지가 생성됩니다. 그렇기 때문에 낮은 완성 비율에서 작업을 멈추면 흐릿한 이미지가 보이게 됩니다.
예시 이미지는 stop 비율을 10, 33, 67, 100 으로 설정하여 진행하였고, 결과물이 처음부터 완성까지 생성되는 과정을 보여줘야 하기 때문에 seed 는 10으로 고정하여 진행하였습니다.
Case Prompt : a bottle of water --seed 12 --stop 10 (33, 67, 100 총 4번의 이미지 생성)
--stop 10의 이미지 입니다. 생성이 시작되면 이런 흐릿한 이미지부터 생성을 시작합니다.
이미지 생성이 33% 정도 진행됐을 때의 결과입니다. 10% 보다 좀 더 구체적인 모습이 보이기 시작하지만 여전히 흐릿한 이미지이고 어떻게 완성될지 윤곽은 보이지만 디테일한 건 아직 보이지 않습니다.
67% 정도 생성된 모습입니다. 이제 완성된 모습을 유추해볼 수 있을 정도 이미지가 보입니다. 아직 또렷하지는 않지만 병의 모양이나 배경, 병 안에 들어있는 내용물까지 볼 수 있습니다.
100% 완성된 이미지 입니다. 처음 10%의 이미지와는 완전 다른 모습인 것도 있고, 단순한 형태로 유사한 결과물도 있습니다. 다른 분들은 어떻게 쓰고 계실지 모르겠지만 저같은 경우에는 --stop 변수를 이미지가 어떻게 생성되는지 과정을 보여주는 용도로 쓰고 있을 뿐, 그 외에는 잘 활용하지 못하고 있습니다.
스타일(Style)
사용법 : --style raw (4a, 4b, 4c, cute, expressive, original, scenic)
raw 이외의 스타일을 사용할 때에는 모델이나 버전을 붙여 매개변수에 추가해야 한다.
--style raw : 미드저니 버전 5 (기본값)
--style 4a (4b or 4c) --v 4 (미드저니 버전을 4로 설정해야 한다)
--style cute (expressive, original, scenic) --niji (그림체 생성 버전을 niji 로 설정해야 한다)
Case 1. Prompt : a bottle of water --style raw --seed 12
미드저니 v5 이상에서 생성되는 기본값 입니다.
Case 2. Prompt : a bottle of water --style 4a --v4 --seed 12
미드저니 버전을 v4로 변경하고, 스타일 중 하나인 4a 로 적용해서 생성한 결과물 입니다.
Case 3. Prompt : a bottle of water --style cute --niji --seed 12
미드저니 그림체를 niji로 맞추면 일본 애니메이션풍의 그림체를 얻을 수 있게되고, 그 중에서도 style 변수를 cute 로 설정하면 이렇게 귀여운 그림을 얻을 수 있습니다.
niji = 2D의 일본 발음으로 2D 그림체가 생성된다고 이해하시면 되겠습니다.
동일한 프롬프트, 동일한 seed 를 설정했음에도 미드저니 버전과 스타일에 따라 완성된 결과물이 많은 차이를 보이고 있음을 알 수 있습니다.
스타일화(Stylize)
--stylize <숫자> 또는 --s <숫자>
stylize 매개변수는 미드저니의 기본 미적 스타일이 결과물에 적용되는 영향도를 나타냅니다. 0~1000까지의 범위로 설정할 수 있고, 1000에 가까울수록 예술적인 그림이 됩니다. 별도로 설정하지 않으면 기본값은 100으로 적용됩니다. (사용할 때 Style과 헷갈릴 수 있습니다.)
스타일화 변수에 따른 결과물의 변화를 보기 위해 동일한 seed 로 작업했습니다.
Case 1. Prompt : a bottle of water --s 0 --seed 12
0으로 설정하면 별로 특별해보이는 건 없습니다. 평범한 a bottle of water 이미지를 얻고 싶다면 생성되는 4장 중 2장 이상은 평범한 이미지를 얻을 수 있습니다.
Case 2. Prompt : a bottle of water --s 100 --seed 12
기본값으로 적용되는 s 100 입니다. 이미 100 정도만 되어도 조금은 예술적인 요소가 가미되어 있습니다.
Case 3. Prompt : a bottle of water --s 500 --seed 12
s 500 이 적용된 결과값 입니다. 이쯤되면 광고에서 볼 법한 이미지들이 생성됩니다. 소주나 화장품 광고 이미지가 떠오릅니다.
Case 4. a bottle of water --s 1000 --seed 12
s 1000 이 적용된 결과물 입니다. 500보다는 좀 더 다양한 표현이 담긴 결과물이 생성되었습니다. 500 이상부터는 취향에 따라 호불호가 갈릴 수 있습니다.
타일(Tile)
사용법 : --tile
결과물을 패턴이 있는 타일 형태로 생성합니다. 결과물 이미지를 하나씩 떼서 이어붙이면 타일 이미지처럼 연결되는 그런 이미지가 생성됩니다.
Case Prompt : a bottle of water --tile --seed 12
이상함(Weird)
--weird <숫자 0-3000>
이 매개변수를 사용하면 특이한 미학을 추구할 수 있습니다. 0에 가까울수록 평범하고, 3000에 가까울수록 결과물이 낯선 느낌을 줍니다.
Case 1. Prompt : a bottle of water --weird 0 --seed 12
위에서 계속 봐왔던 그런 유형의 일반적인 결과물입니다.
Case 2. Prompt : a bottle of water --weird 100 --seed 12
확실히 매개변수값이 0일 때 보다는 특이한 점이 보이기 시작합니다.
Case 3. Prompt : a bottle of water --weird 300 --seed 12
Case 4. Prompt : a bottle of water --weird 500 --seed 12
Case 5. Prompt : a bottle of water --weird 1000 --seed 12
500에서 1000으로 변화한 값은 0에서 500으로 오는 동안 변화한 것보다 변화의 폭이 작아보입니다.
500이하의 숫자는 변화의 강도가 강하지만, 500 이후로는 변화의 강도가 상대적으로 덜한 것 같습니다.
Case 6. Prompt : a bottle of water --weird 2000 --seed 12
Case 7. Prompt : a bottle of water --weird 3000 --seed 12
Case 6는 weird 값이 2000이고, Case 7은 3000인데 두 결과의 차이가 거의 없어보입니다. 사실상 1000 이후로 큰 변화가 없어보이고, 구간의 변화 강도 역시 1000에서 2000으로 변화할 때보다 2000에서 3000으로 변화하는 강도가 더 약해보입니다.
미드저니의 가이드 문서 상으로는 3000까지 값이 있지만 사실상 0~1000 정도 사이에서만 조정해도 충분히 변수로 활용할 수 있을 것 같습니다.
프롬프트 참고 사항
프롬프트 길이
프롬프트가 너무 짧으면 미드저니의 기본 스타일에 크게 의존하게 되므로, 독특한 모양을 원한다면 설명이 많은 프롬프트가 더 좋습니다. 하지만 매우 긴 프롬프트가 항상 좋은 것은 아닙니다. 만들고자 하는 주요 개념에 집중하는 것이 좋습니다. 프롬프트를 만들면 /shorten 명령어를 활용해 프롬프트를 점검해보세요.
문법
미드저니 봇은 사람처럼 문법, 문장 구조 또는 단어를 이해하지 못합니다. 단어 선택도 중요합니다. 많은 상황에서 더 구체적인 의미를 가진 단어가 더 효과적입니다. '크다(big)' 대신 거대한(gigantic), 엄청난(enormous 또는 immense)과 같이 좀 더 구체적인 뉘앙스를 갖는 단어를 사용해 보세요.
불필요한 단어는 가능한 제거하는 것이 좋습니다. 단어 수가 적을수록 각 단어가 더 강력한 영향력을 발휘하기 때문에 단어가 많으면 의도한 바를 잘 표현하지 못할 수 있습니다.
쉼표, 괄호, 하이픈을 사용하여 생각을 정리할 수 있지만, 미드저니 봇이 이를 정확하게 해석하지는 못합니다.
$$미드저니 버전 TIP
미드저니 모델 버전 4는 전통적인 문장 구조를 해석하는 데 있어 다른 모델보다 약간 더 우수한 편이라고 합니다. 수식어가 많거나 서술하는 문장으로 프롬프트를 작성하였을 경우에는 매개변수로 --v4 를 이용해보고 결과를 비교해보세요.
원하는 결과물에 집중
원하지 않는 것 대신 원하는 것을 설명하는 것이 좋습니다. '케이크가 없는 생일파티'를 요청하면 이미지에 케이크가 포함될 가능성이 높습니다. 최종 이미지에 케이크가 포함되지 않도록 하려면 --no 매개변수를 활용해서 배제할 수 있도록 프롬프트를 구성해야 합니다. "birthday party --no cake" 이렇게 프롬프트가 구성되면 케이크가 없는 생일파티 결과물을 얻을 수 있는 확률이 높아집니다.
Case 1. Prompt : Birthday party without cake --seed 100
케이크가 프롬프트에 포함되어버려서 without 이라는 표현과는 상관없이 케이크가 상당히 높은 확률로 결과물에 나타나고 있습니다.
Case 2. Prompt : Birthday party --no cake --seed 100
동일한 seed 번호를 사용했음에도 불구하고, 결과물의 분위기가 많이 다르게 생성되었습니다. 케이크가 없는 생일파티 이미지가 생성되었으나, 역시나 기분탓인지 케이크가 없는 생일파티의 분위기는 우울하네요.
Seed 를 고정하지 않고 생성할 경우, 어떤 차이점이 있는지도 확인해보았습니다.
Case 3. Prompt : Birthday party without cake
여전히 케이크가 빠지지 않고 결과물에 등장하고 있습니다. 역시 프롬프트 내에서 문법으로 요소를 제거하는 것은 매우 어려운 일인 것 같습니다.
Case 4. Prompt : Birthday party --no cake
Seed 를 고정하지 않았음에도 "birthday party --no cake" 프롬프트의 결과물은 우울한 분위기네요.
이와중에 갑자기 풍선을 빼보고 싶어졌습니다.
Case 5. Prompt : Birthday party --no cake --no baloon
해석이 매우 어려운 결과물이 나왔습니다. 정당(party)관련된 내용이 포함된 것인지 뭔가 생일과는 거리가 멀어보이는 결과물들이 생성되었습니다. 이런 우울한 분위기를 happy 라는 수식어를 넣어 결과물의 분위기를 바꾸는 시도를 해보겠습니다.
Case 6. Prompt : Happy birthday party --no cake
케이크가 있는 결과물도 있고, 없는 결과물도 생겼습니다. 이미지 속 사람들이 웃고 있긴 하지만 여전히 기괴한 느낌이 나는 건 지울 수가 없습니다.
결론 : 생일파티에는 반드시 케이크를 준비하는 것이 좋겠습니다.
프롬프트의 구성에 관한 이야기로 돌아가면....
어떤 세부 사항이 중요한지 생각하기
프롬프트에 언급하지 않은 내용이 있으면 의외의 결과가 나올 수 있습니다.
언급되지 않은 내용은 무작위로 생성되기 때문에 최소한 원하는 만큼의 구체적인 표현을 사용하는 것이 좋습니다. 때때로 모호한 표현은 다양성을 확보할 수 있는 좋은 방법이지만 원하는 구체적인 세부 정보를 얻지 못할 수도 있습니다.
중요한 상황을 아래 세부 사항을 고려해서 프롬프트로 작성하세요.
1) 주제: 사람, 동물, 캐릭터, 장소, 사물 등
2) 매체: 사진, 그림, 일러스트레이션, 조각, 낙서, 태피스트리 등
3) 환경: 실내, 실외, 달 위, 나니아, 수중, 에메랄드 시티 등
4) 조명: 소프트, 앰비언트, 흐림, 네온, 스튜디오 조명 등
5) 색상: 생생한, 음소거, 밝은, 단색, 다채로운, 흑백, 파스텔 등
6) 분위기: 차분함, 차분함, 시끌벅적함, 활기찬 등.
7) 구도: 인물 사진, 헤드샷, 클로즈업, 조감도 등.
집합 명사 사용
seed 매개변수를 설명하며 언급했던 내용이지만 복수형의 단어는 많은 가능성을 남깁니다.
구체적인 숫자를 사용하는 것이 좋습니다. 고양이들(cats) 보다는 고양이 세마리(three cats)로 표현하는 것이 좋고, 새들(birds) 대신 새떼(flock of birds)와 같은 표현을 사용하는 것이 좋습니다.
Case 1. Prompt : cats --seed 300
Case 2. Prompt : Three cats --seed 300
Case 3. Prompt : birds --seed 200
Case 4. Prompt : Flock of birds --seed 200
생성형 AI에 입력하는 프롬프트는 정답이 없습니다.
각 단어의 뉘앙스나 모델이 이해하는 정도가 모델마다 다르고, 어떤 순서로 사용하느냐에 따라 그 결과가 바뀔 수도 있기 때문입니다.
아직까지는 많이 사용하면서 각 모델과 서비스가 어떻게 단어를 받아들이고 결과물을 생성하는지를 감각적으로 익히는 것 말고는 방법이 없다고 생각합니다. 그렇기 때문에 이런 가이드라도 있으면 미드저니를 비롯한 이미지 생성 AI를 사용하시는데 조금이나마 도움이 되실 것 같아 이 글을 쓰게 되었습니다.
다음 포스트는 이런 기본 기능들을 활용해서 특정 테마에 맞는 이미지들을 어떻게 생성하는지 결과와 과정에 대해 작성해보겠습니다.
이 글은 미드저니(Midjourney) 공식 가이드 문서를 참고하여 쓰여진 것으로 추후 미드저니 버전 업데이트가 되면 언급해 놓은 몇몇 사실들은 변할 수도 있습니다.