업스케일링은 저해상도 이미지를 고해상도로 변환하는 과정을 말합니다. 예를 들어, 1024x1024 이미지를 두 배로 확대하려면 이미지의 픽셀 수를 2배로 늘려 2048x2048 픽셀로 만들어야 합니다. 이미지의 크기를 늘리려면 앱이나 컴퓨터 프로그램이 이미지에 픽셀을 추가해야 합니다. 이 과정을 이미지 리샘플링이라고 합니다. AI 이전에는 다음과 같은 방법이 일반적이었습니다.
최근접 이웃 보간법(Nearest neighbor interpolation)[각주:1]: 기본 리샘플링이라고도 불립니다. 저해상도 이미지의 픽셀을 복사하여 높은 해상도의 모든 픽셀을 채웁니다. 이 방법으로 생성된 이미지가 좋지 않은 품질을 보이기 때문에, 앱에서 보간 후 필터를 적용하여 생성된 톱니 모양의 가장자리를 완화하는 경우가 있습니다. 궁금하다면 이 글에서 최근접 이웃 보간법을 시각화하는 데 도움이 됩니다.
이중선형 및 이중입방 보간법(Bilinear and bicubic interpolation)[각주:2][각주:3]: 이 방법은 최근접 이웃 픽셀을 더 많이 조사하고 가중 평균을 계산하여 높은 해상도 출력을 생성하는 것으로 기본 리샘플링을 한 단계 발전시킨 것입니다. 이중선형 보간법은 4개의 이웃한 픽셀을 살펴보고이중입방 보간법은 16개의 이웃을 살펴봅니다. 더 많은 이웃을 조사하기 때문에 이들 리샘플링 방법은 업스케일된 이미지에서 더 부드러운 그라데이션과 전환을 만들어냅니다.
란초스필터링(Lanczos filtering) : 란초스 필터링[각주:4]이 어떻게 작동하는지에 대한 수학적 이해는 위키백과를 참조하십시오. 이미지 업스케일링의 목적으로는, 란초스 필터링은 이중입방 보간법과 비슷한 시각적 결과물을 만들어냅니다.
보다시피 결과가 좋지않습니다.그렇다면 AI는 어떻게 이러한 기존의 방법들을 개선할 수 있을까요? 일반적인 리샘플링 방법들은 저해상도 입력 이미지의 데이터만을 사용하여 고해상도 출력을 생성합니다. 그러나 AI는 업스케일링 과정에서 훈련된 이미지 세트의 데이터를 사용하여 누락된 픽셀을 채웁니다. 이 말은 즉, AI는 단순히 저해상도 이미지의 세부 사항을 확대하는 것이 아니라, 고해상도 이미지에 새로운 디테일을 추가할 수 있다는 것입니다.
Stable Diffusion 방법을 이용한 Upscaling 에는 크게 다음 2가지 방법을 사용해 AI 업스케일링을 할 수 있습니다. t2i 에서 Hires fix 옵션을 사용하는 방법과 i2i에서 Tiled Diffusion 및 Tiled VAE를 사용하는 방법에 대해 설명하겠습니다.
Upscaler 선택: Upscaler 풀다운에서 원하는 업스케일러를 선택합니다. R-ESRGAN 4x+, R-ESRGAN 4x+ Anime6B, SwinIR 4x 등이 선호됩니다.
Tiled VAE 활성화 및 생성: Tiled VAE에서 Enable 옵션을 체크하여 활성화한 후 생성 버튼을 눌러 업스케일링을 진행합니다.
t2i vs i2i 업스케일 비교
스테이블 디퓨전의 모델들이 512 해상도에 익숙하게 학습이 되어있어 i2i로 업스케일을 진행하면 아무리 디노이징 팩터를 낮춰 원본과 가깝게 설정하더라도 공간을 채우는 과정에서 의도하지 않았던 제2, 제3의 사람들이 나오게 된다. 이 과정에서 부정 프롬프트로 더이상 사람을 채우지 않도록 시도할 수 있지만 완전히 이를 막지 못하며 모델에 따라서는 프롬프트에 인식되지 않는 사람 형태의 노이즈가 생성된다.
따라서 인공지능을 통해 생성한 이미지의 경우 원프롬프트와 시드값을 알고있다면 Hires를 통해 이미지 생성 시 업스케일을 동시에 진행하는 것이 좋다. 불가피하게 i2i 로 업스케일을 진행하고 이 과정에서 의도하지 않은 이미지가 생성되었을 때는 inpaint 를 사용해 편집을 할 수 밖에 없다. 다음 시간에는 i2i 를 통해 단순히 크기를 늘리는 것 뿐만 아니라 그림의 일부를 수정하거나 확장 할 수 있는 여러가지 방법들에 대해 알아보도록 하겠습니다.
댓글 영역