스테이블 디퓨전의 설치 및 실행, 모델 적용, 이미지 생성을 설명하였습니다. 추가로 옵션 설정, 프롬프트 작성 규칙에 대한 내용을 추가하였습니다. 이번 포스팅에서는 기존의 이미지를 토대로 이미지를 생성하는 Img-2-img 기능을 설명하겠습니다. 마음에 드는 기존 이미지를 수정할 때 유용한 기능입니다.
이미지로 이미지 생성 (Img-2-Img)
Img-2-Img 기능은 기존의 이미지를 토대로 새로운 이미지를 생성하는 기능입니다. 상단의 메뉴에서 Img-2-Img를 클릭합니다. 이미지를 첨부하는 것을 제외하고는 옵션의 설정은 Text-2-Img와 크게 다르지 않습니다.
원본 이미지 생성
이제 원본이 될 이미지를 생성하겠습니다. 텍스트 프롬프트와 네거티브 프롬프트를 작성하겠습니다. 이미지의 생성 방법은 다음 글을 참조하시길 바랍니다. 스테이블 디퓨전: 이미지의 생성 / 스테이블 디퓨전: 옵션의 설명
프롬프트: masterpiece, best quality, (1 woman), super hero, vivid color clothes, cowboy shot
네거티브 프롬프트: (worst quality, low quality:1.4), text, watermark, bad fingers, bad anatomy, bad legs, bad arms
Img-2-Img
이제 원본 이미지를 기반으로 새로운 이미지를 생성할 수 있습니다. Txt-2-Img에서 생성된 이미지 하단의 Img-2-Img 아이콘을 클릭하여 Img-2-Img로 보내기를 선택합니다.
Img-2-Img 탭에서 원본 이미지를 확인할 수 있습니다. 이제 추가하거나 제외하고 싶은 태그를 텍스트 프롬프트에 반영합니다. 이미지의 사이즈도 Width, Height 항목의 수치를 조정하여 변경할 수 있습니다. Generate를 눌러 이미지를 생성합니다. 그 전에 이미지 하단의 Resize mode를 설명하겠습니다.
- Just resize: 단순히 사이즈를 변경하는 항목입니다. Width, Height에 변경할 수치를 입력합니다.
- Crop & Resize: 원본 이미지와 동일한 사이즈로 이미지를 생성하고, 잘라내서 사이즈를 맞추는 방식
- Resize & Fill: 이미지를 생성하고, 여백 부분을 자동으로 채우는 방식
옵션 설정
Denoising Strength(0~1)라는 항목은 새로운 이미지를 생성할 때 원본 이미지의 반영 강도를 결정합니다. 수치가 낮을수록 원본 이미지에 충실한 새로운 이미지가 생성됩니다. 반대로 수치가 높을수록 프롬프트에 충실한 이미지가 생성됩니다. 0.5를 기준으로 조정해 가면서 이미지를 생성합시다.
CFG는 값이 클수록 프롬프트에 충실한 이미지가 생성됩니다. 수치가 낮을수록 랜덤하고 창의적인 이미지가 생성됩니다. 보통 7~9를 많이 사용합니다.
이미지 수정
이미지의 일부분을 마스킹하여 수정하는 방법이 있습니다. 이미지 하단의 Inpaint라는 버튼을 클릭합니다. 마우스 커서를 이미지 안쪽으로 가지고 가면, 브러시 모양으로 변경됩니다. 이제 수정하고 싶은 영역을 마스킹합니다. 마스킹이 끝났으면 옵션을 수정해야 합니다. 수정할 옵션의 종류는 다음과 같습니다.
- Mask blur: 수치가 낮으면 주변 배경과 대조가 크고, 높으면 대조가 크지 않게 이미지가 생성됩니다.
- Inpaint masked: 마스킹한 영역의 이미지를 수정합니다.
- Inpaint not masked: 마스킹한 영역을 제외한 나머지 부분을 수정합니다.
마스킹한 영역을 채우는 방식은 다음 4가지로 나누어집니다.
- Fill: 주변 사물 및 배경과 유사한 색상으로 마스킹 영역을 채웁니다.
- Original: 원본과 유사한 색상으로 채워 넣습니다.
- Latent noise: 마스킹한 부분이 랜덤하게 채워집니다.
- Latent nothing: 마스킹한 부분에 별도의 처리를 하지 않습니다.
이제 설명한 옵션을 변경하여 이미지를 생성해 보겠습니다. 우선 Inpaint not masked와 Fill을 선택하고 이미지를 수정하겠습니다. 선택한 영역을 제외한 나머지 영역이 기존과 유사하게 변경되었습니다.
다음으로 상술한 4가지 방식으로 마스킹 영역을 채워 넣겠습니다. 이미지에 등장하는 대상 전체를 마스킹했기 때문에 생성한 이미지는 큰 차이를 보입니다. Fill을 사용하면 배경과 유사한 흰색의 대상이 생성됩니다. Original의 경우 원본 대상과 가장 유사합니다. Latent noise를 활용한 이미지 생성은 이미지가 깨지는 현상이 발생합니다. Latent nothing의 경우 별도의 처리를 하지 않은 이미지가 생성됩니다. 이미지를 마스킹하여 수정하는 것은 예시와 같이 넓은 면적에 적용하기 보다는, 좁은 면적을 부분적으로 수정하는 것이 올바른 사용법이라고 생각합니다.
더불어 이미지를 수정할 때, 원하는 표현을 프롬프트에 추가하는 것을 추천합니다. 다음은 벨트 부분을 마스킹하고, green belt라는 텍스트 프롬프트를 추가하였을 때 생성되는 이미지입니다.
정리
Img-2-Img를 이용하여 이미지를 생성하는 방법, 사이즈 변경을 알아보았습니다. 다음으로 옵션 설정과 이미지 수정을 알아보았습니다. 위에서도 언급했지만 원하는 색상/대상/사물을 텍스트 프롬프트로 반영하여 수정하시기를 바랍니다. 다음 포스팅에서는 이미지의 업스케일링에 관해 알아보겠습니다.