보통 처음부터 고해상도 이미지를 생성하는 것을 추천하지 않습니다. 저해상도에서 이미지를 빠르게 생성하고, 업스케일링을 하는 것이 더 효율적이기 때문입니다. 이번 포스팅에서는 스테이블 디퓨전에서 이미지를 업스케일링 하는 방법을 소개하겠습니다.
이미지 업스케일링
이미지 업스케일링 방법은 총 3가지가 있습니다. 각각의 방법을 소개하고 개인적으로 생각하는 가장 효율적인 방법을 소개하겠습니다. 코랩 기준으로 원본 이미지는 (512 x 512), (512 x 768), (768 x 512), 이렇게 3가지 사이즈가 생성 속도도 빠르고 효율적이라고 생각합니다. 다만 이 부분은 개개인의 컴퓨터 사양과 GPU 성능이 다르기 때문에 직접 생성하시면서 결정하시기를 바랍니다.
Extras 메뉴 활용
Scale by (배수) 또는 Scale to(사이즈 입력)로 사이즈를 직접 입력하고, Upscaler1을 선택합니다. Upscaler2는 선택하지 않아도 무방합니다. 현재 4xUltrasharp를 실사 이미지에 많이 사용합니다. R-ESRGAN 4x+ Anime6B는 애니나 2D 이미지에 이용합니다. 이전 포스팅에서 512 x 512로 생성했던 이미지를 2배로 업스케일링 해보겠습니다.
원본 이미지입니다. 프롬프트는 다음과 같습니다.
프롬프트: masterpiece, best quality, (beautiful:1.3), 1 woman, super hero, vivid color clothes, charming, full body shot
네거티브 프롬프트: (worst quality, low quality:1.4), text, watermark, bad fingers, bad anatomy, bad legs, bad arms
2배로 업스케일링한 이미지입니다. 다만 세밀함이 떨어지는 원본 이미지의 근본적인 개선은 어려운 것 같습니다.
Img-2-Img 활용
img-2-img에서 업스케일하는 방법은 다음과 같습니다. 원본 이미지와 동일하게 프롬프트를 작성합니다. 원본 이미지와 동일한 Checkpoint를 설정합니다. 기타 옵션들도 원본 이미지 생성 때와 동일하게 설정합니다. Resize to 또는 Resize by로 이미지의 사이즈를 결정합니다. Generate를 눌러 업스케일링 된 이미지를 생성합니다. 생성된 이미지는 다음과 같습니다.
다음과 같이 이미지가 생성되었습니다. Img-2-img이기 때문에 원본 이미지와 약간 차이가 있습니다.
Text-2-img 활용
Text-2-img에서는 업스케일러만 별도로 사용할 수 없습니다. 상기에서 말한 3가지 저해상도로 이미지를 생성합니다. 원하는 이미지를 생성하기 위해 프롬프트와 옵션을 계속 수정합니다. 원하는 이미지가 생성됐다면, Upscaler를 활용하여 고해상도의 이미지를 생성합니다.
Upscaler를 활성화하려면 Hires.fix를 누릅니다. 평소에는 비활성화 되어있습니다. Upscaler는 extras와 같습니다. 실사는 4xUltrasharp, 2D, 애니 이미지는 R-ESRGAN 4x+ Anime6B를 추천합니다. Hires steps는 15, Denoising strength는 0.5~0.6을 추천합니다. Upscale by 항목은 원하는 해상도 배수를 선택합니다.
다음과 같이 이미지가 생성되었습니다. 이미지의 세밀함 및 품질이 가장 뛰어나다고 생각합니다.
정리
간단히 스테이블 디퓨전의 업스케일링 방법을 정리하였습니다. 개인적으로 추천하는 방법은 Text-2-img입니다. extras는 원본 이미지의 품질이 좋지 않기 때문에, 업스케일링을 해도 이미지의 세밀함이 떨어집니다. Img-2-Img는 원본 이미지에 변형이 생길 수 있습니다. 반면 Text-2-img는 저해상도의 이미지를 생성하면서 충분히 시행착오의 과정을 거치게 됩니다. 마음에 드는 이미지를 얻었다면, 이제부터는 세밀한 고해상도의 이미지를 생성할 수 있습니다.
스테이블 디퓨전: 이미지로 이미지 생성(Img-2-Img)