스테이블 디퓨전으로 그림을 생성하다보면 조건을 조금씩 다르게 바꾸면서 비교 분석을 해봐야 하는 경우가 자주 발생합니다. 이럴 때는 WebUI에 내장된 스크립트를 활용하면 자동으로 비교 이미지를 얻을 수 있습니다. 본문에서는 이런 비교를 하기 위한 스크립트인 WebUI XYZ plot 사용법을 설명드리도록 하겠습니다.
WebUI XYZ plot 사용법
스테이블 디퓨전 WebUI에서는 보통 다양한 확장기능(extensions)을 설치해서 기본 기능 외에 다른 기능들을 활용합니다. 그런데 오늘 소개드리는 XYZ plot은 무려 WebUI에 기본 설치된 스크립트로, 따로 설치를 할 필요가 없습니다. T2I 탭에서 가장 하단으로 내리면 아래 그림과 같이 Script 기능이 있습니다. 여기서 X/Y/Z plot을 선택하시면 곧바로 기능을 사용할 수 있습니다.
변수를 모두 사용하기
X/Y/Z plot은 X, Y, Z 이 3가지 변수에 각각 사용자가 원하는 설정값들을 할당한 뒤 이미지 생성을 명령하면 WebUI가 자동으로 모든 그림을 그린 뒤 비교 표를 만들어서 보여줍니다. 예를 들어 위의 예시에서는 X값에 CFG 스케일 값을, Y값에는 샘플링 스탭을, Z값에는 샘플러를 할당했습니다. 할당한 설정의 세부 설정 수치는 우측에서 입력해줄 수 있습니다.
Draw legend는 X, Y, Z 값들에 대한 정보를 결과 이미지에 표현할 것인지 여부를 묻는 것입니다. Keep -1 for seeds는 매 이미지를 생성할 때마다 시드값을 랜덤으로 가져갈 것인지를 묻는 것인데요, 대부분의 경우 정확한 비교를 하기 위해 XYZ plot을 사용하기 때문에 해당 옵션은 비활성화 해줌으로써 시드를 고정시키는 것이 좋습니다. Grid margins는 이미지 그리드 사이 간격을 설정해주는 부분입니다. 위 상태로 세팅하고 그림을 생성하면 아래와 같은 결과를 얻을 수 있습니다.
결과 이미지를 보면 XY table이 3개(Z값에 따라) 생성된 모습입니다. 예시는 X, Y, Z 값을 모두 3개씩만 입력해서 3X3 이미지가 3개 생성되었지만, 실제로는 비교분석해보고 싶으신 만큼 세분화아여 더많은 데이터를 한번에 그려 비교하는 것도 가능합니다.
할당 가능한 변수
WebUI XYZ plot에서 변수 1개에 할당할 수 있는 설정값들을 확인해보면 다음과 같습니다.
Seed값부터 샘플링 스텝, Hires 스텝, CFG Scale, Sampler, Hires sampler 등 생각보다 더 많은 다양한 변수를 할당할 수 있습니다.
변수를 1개만 사용하기
물론 비교하고자 하는 변수가 1개, 또는 2개뿐이라면 굳이 3개를 다 설정하지 않더라도 스크립트는 정상 동작합니다. 예를 들어 변수를 1개를 X에 설정하고 그림을 생성해 비교해보겠습니다. 변수로 9개의 다른 샘플러를 사용하여 동일 모델(체크포인트)에 대해 샘플러에 따른 그림의 변화를 확인할 수 있습니다.
그런데 변수를 꼭 X에만 할당해야 하는 것은 아닙니다. 이번에는 동일한 변수 값을 Y에 할당하여 그림을 생성해보겠습니다. 변수 축을 옮길 때는 직접 수동으로 설정하셔도 되지만, 스크립트 가장 하단에 Swap X/Y axes 버튼을 누르면 간단하게 X축과 Y축 변수를 바꿀 수 있습니다. 현재는 Y, Z 값은 nothing으로 아무 변수가 할당되지 않았기 때문에 해당 버튼을 누르면 X에 설정한 값이 Y로 넘어가고, X축은 nothing으로 바뀌게 됩니다.
위 그림을 보시면 Y값에만 9개의 샘플러 종류가 설정된 결과 이미지를 확인할 수 있습니다. 앞서 X값만 설정했을 때와 비교하면, 같은 결과 이미지 9개이지만, 이를 세로(y축 방향)로 이어붙여 출력하는 것에 차이가 있습니다.
변수를 2개만 사용하기
실질적으로 대부분의 비교 분석은 변수 2개를 할당한 이미지면 충분합니다. Z축 값은 변화를 주더라도 이는 새로운 X-Y 테이블이 추가로 더 생성되는 것일 뿐이기 때문입니다. 예를 들어 X축에는 샘플링 스탭을, Y 축에는 샘플러 종류의 변화를 주고 그림을 생성해보겠습니다.
Y축에는 설정한 3개의 샘플러 이름이 나타나고, X축에는 각 샘플러를 가지고 10~50 스텝으로 그림을 그렸을 때 변화를 보여주고 있습니다. 여기서 우리는 DPM++ 2M SDE Karras 샘플러를 사용했을 때는 스텝 10으로는 부족하다는 것을 확인할 수 있습니다. 또한 DPM++ 2M Karras 샘플러의 경우 스텝 20 이후에는 스텝수가 올라가더라도 이미지의 구도는 물론 디테일 측면에서도 큰 차이가 없다는 것도 알 수 있습니다.
위와 같은 차이점은 샘플러별로 샘플링 방식이 다르기 때문에 나타나는 결과입니다. 샘플러의 이론적인 백그라운드를 모르는 우리같은 일반 유저들은, 새로운 모델(체크포인트)을 제대로 사용하고자 마음 먹었다면 이렇게 직접 XYZ plot으로 테스트 해보고 그 중 좋은 결과를 보여주는 세팅값을 찾는 것이 중요합니다. 모델마다 최적화된 세팅 값이 다 다르기 때문에, 보통은 위에서 살펴본 샘플러와 스텝은 물론, CFG 스케일까지도 확인해 보는 것이 좋습니다.
맺음말
본문에서는 WebUI XYZ plot 사용법에 대해 구체적으로 살펴보았습니다. 아마 본 블로그의 글들에 흥미를 가진 분들이라면, 단순히 호기심에 스테이블 디퓨젼으로 한 두번 그림을 생성해본 분들은 아닐 것으로 예상됩니다. 아마도 조금 더 품질 좋은 이미지, 또는 조금 더 내가 원하는 의도대로 그림을 그리고 싶은 분들일텐데요, 이런 목적이라면 더더욱 WebUI XYZ plot 사용법 숙지가 필수라고 할 수 있습니다.