Stable Diffusion 기초 사용법 총정리 : txt2img - [SD - 3]
저번에 Checkpoint 설치와 세팅까지 마쳤으니 이번에는 Stable Diffusion 기초 사용법에 대해서 알아보도록 하겠습니다.
아직 체크포인트 설정이 되지 않으신 분들은 아래 링크를 참고해 주세요!
2023.09.12 - [Stable Diffusion] - Stable Diffusion 체크 포인트(Checkpoint) 학습 모델 추가하기 - [SD-2]
Stable Diffusion 체크 포인트(Checkpoint) 학습 모델 추가하기 - [SD-2]
Stable Diffusion을 설치 완료했으니 이젠 프로그램을 잘 써먹어야겠죠! (설치를 못 하신 분들은 아래 링크를 참고해 주세요.) 2023.09.11 - [Stable Diffusion] - Stable Diffusion 윈도우 설치하는 방법 - [SD-1] Stabl
selgyun.tistory.com
목차
프롬프트와 이미지 생성
이번 글에서는 저번에 받은 체크포인트를 가지고 설명을 드리겠습니다. 먼저 txt2img로 이미지를 생성해 볼게요.
첫 번째 프롬프트 창은 긍정 프롬프트로 생성할 이미지에 반영되길 원하는 내용을 입력하시면 됩니다.
두 번째 프롬프트 창은 부정 프롬프트로 생성할 이미지에 반영되지 않길 원하는 내용을 입력하시면 됩니다.
하지만 내용을 입력한다고 해서 100% 반영해주지는 않아요. 말을 잘 들을 때도 있지만 잘 안들을 때도 있습니다. 때문에 원하는 이미지를 얻기 위해서는 많은 노력과 인내심이 필요해요. 프롬프트는 콤마(,)로 구분하고 문장이나 태그 등을 활용해서 적어도 됩니다.
단어 프롬프트는 외모, 상태, 배경 등을 설정할 때 사용하고, 문장 프롬프트는 구도, 상황, 행위 등을 설정할 때 사용합니다.
한 번 이미지를 생성해 보겠습니다. (긍정 프롬프트)
1girl, t-shirt | 1girl, dress | 1girl, dress, street, hat |
각 단어에 알맞은 이미지들이 생성되고 있습니다. 각 프롬프트는 가중치를 부여할 수 있습니다. 기본 가중치는 1입니다.
(키워드: x) | (키워드) | ((키워드)) | [키워드] | [[키워드]] | |
가중치 | x | 1.1 | 1.2 | 0.9 | 0.8 |
()로 한 번 묶을 때마다 가중치가 0.1만큼 증가하고, []로 묶을 때마다 0.1만큼 감소하게 됩니다. 값의 범위는 0.1 ~ 1.4로 할당해 주세요. 너무 높은 값을 할당하면 악영향을 끼칠 수 있습니다. 가중치는 각 키워드가 그림에 반영될 확률을 높이고 낮추는 역할이라고 생각해 주세요.
한 번 체크포인트의 샘플 프롬프트를 활용해 이미지를 생성해 보겠습니다. 샘플 부정 프롬프트에는 임베딩이 추가로 들어가 있는데요. 하지만 아래에는 제외하였습니다. 임베딩은 추후에 알려드리도록 할게요. 지금은 일단 생성해 봅시다.
긍정 | solo, (1girl), portrait, looking at viewer, (masterpiece: 1.2), (best quality), 4k, 8k |
부정 | (worst quality, low quality:1.4), (censored, bar censor), cropped, mature |
좋은 이미지를 생성하기 위해서는 긍정 프롬프트뿐 아니라 부정 프롬프트도 매우 중요한 역할을 하기 때문에 신경을 써주셔야 해요. Stable Diffusion의 고질적인 문제는 손을 잘 생성하지 못한다는 점인데요. 위 이미지에서도 손이 부자연스럽게 나왔습니다. 이런 이미지는 Stable Diffusion의 img2img 기능을 활용해서 해결할 수 있어요. (처음부터 부정 프롬프트에 bad hand를 넣으면 도움이 된답니다.)
그리고 간혹 수위조절이 안 되는 경우도 있어서 부정 프롬프트에 nsfw 키워드를 꼭 넣어주세요. 업무용 이미지를 제작하실 땐 필수입니다.
생성 기능들을 알려주세요!
이제는 프롬프트 창 아래 있는 부분들이 어떤 역할을 하는지 알아보겠습니다.
샘플링 방식은 어떤 샘플링 방식으로 이미지를 생성할 것인지 결정하는 것인데요. 각 방식에 따라서 이미지에 미묘한 차이가 있고, 생성 속도도 다릅니다. 주로 쓰이는 샘플링 기법은 Eular a, DPM++ 2M Karras, DPM++ SDE Karras가 많이 쓰여요. 저는 DPM++ 2M Karras를 많이 씁니다.
샘플링 단계(Step)가 높을수록 고품질의 이미지를 생성할 수 있습니다. 보통은 20 ~ 30으로 사용하고 25 이상부터는 큰 차이는 없는 것 같아요. 수치를 높일수록 더 많은 생성 시간을 필요로 합니다.
그 아래에 있는 고해상도 보정을 눌러보세요. 생성된 이미지를 고해상도로 업 스케일링할 수 있습니다.
'업스케일러'는 샘플링 방식과 비슷하게 어떻게 업스케일링할지 정하는 것이에요. 2D 이미지는 주로 R-ESRGAN 4x+ Anime6B, Latent 등을 많이 사용하고, 실사 이미지는 R-ESRGAN을 많이 사용합니다.
'보정 단계'는 샘플링 단계와 비슷해요. 수치를 높이면 생성 시간이 더 소요됩니다.
'디노이즈 강도'는 값을 높이면 기존 그림에서 변화를 더 많이 주고, 낮으면 기존 그림과 더 유사하도록 생성합니다. 저는 0.5로 고정해 놓고 사용해요.
'업스케일 배율'은 기존 이미지보다 얼마나 해상도를 높일지를 결정합니다. 고해상도 보정 탭 오른쪽 상단을 보시면 512*768에서 1024*1536으로 결과가 나온다는 걸 볼 수 있어요. 한 번에 해상도가 높은 이미지를 생성하기보다 업스케일을 활용하시면 적은 컴퓨팅 자원으로 고해상도 이미지를 생성할 수 있어요.
'너비, 높이'는 해상도를 결정합니다.
'배치 수'는 한 번의 생성으로 몇 개의 이미지를 생성할지를 결정합니다. 10개로 두면 10개의 이미지를 생성해요.
'배치 크기'는 하나의 배치에 들어갈 이미지 수를 결정합니다. 한 이미지가 여러 개의 이미지로 되어있다고 생각하시면 될 거예요. 그래픽 카드의 VRAM 영향을 많이 받기 때문에 크기는 1로 두고 배치 수를 늘려서 여러 장을 만들기를 추천드립니다.
'CFG 스케일'은 이미지를 생성할 때 프롬프트의 영향력을 설정합니다. 수치가 높으면 프롬프트에 적힌 대로 생성될 확률이 높아지고, 수치가 낮으면 AI의 자유도가 올라가요. 너무 낮으면 이미지가 흐려질 수 있고, 너무 높으면 오히려 이미지가 정상적이 않을 수 있기 때문에 중간 정도의 값을 유지해 주세요.
'시드'는 이미지의 고유 아이디예요. 같은 프롬프트, 같은 세팅, 같은 시드를 사용하면 동일한 이미지를 생성할 수 있습니다. 기본값은 -1로 랜덤 시드입니다. (그렇기 때문에 매번 다른 이미지를 생성해요)
이제 텍스트로 이미지 생성하기 어렵지 않습니다. 생성된 이미지는 설치경로 stable-diffusion-webui/outputs/txt2img-images 폴더에 자동으로 저장됩니다. 여기서 결과물들을 확인하실 수 있어요!
다음엔 이미지로 이미지 생성하는 방법(img2img)에 대해서 써보도록 하겠습니다. 프롬프트를 작성하시기 어렵다면 다운로드하신 체크포인트의 샘플 이미지를 참고하셔도 좋습니다. civitai에 가서 체크포인트 샘플 이미지를 클릭하면 아래와 같이 생성 데이터가 있으니 참고해 주세요.
이미지로 이미지 생성하는 방법 보러가기
2023.09.14 - [Stable Diffusion] - Stable Diffusion 기초 사용법 총정리 : img2img - [SD - 4]
Stable Diffusion 기초 사용법 총정리 : img2img - [SD - 4]
txt2img 사용법을 알았으니 이제는 그다음 단계인 이미지로 이미지 생성하는 방법을 알아보겠습니다. 텍스트로 이미지를 생성하는 방법이 궁금하신 분들은 아래 링크로! 2023.09.13 - [Stable Diffusion] -
selgyun.tistory.com