txt to img

ddetailer를 사용한 txt2img에서의 얼굴교정

Ai 공장 2023. 3. 19. 14:03
728x90

inpaint에서의 교정은 ddetailer나 그냥 inpaint를 사용한거나 크게 차이가 느껴지진 않았다.

하지만 ddetailer의 진면목은 txt2img에 있지않나 싶다.

보통 txt2img로 그림을 뽑을때 기본 사이즈를 너무 크게하면 vram의 과부하로 에러가 나거나 시간이 상당히 오래걸리기 마련이다.

이를 해결하기 위해 기본 사이즈는 작게 두고 hires. fix 기능을 사용해 그림 사이즈를 키운다.

그림의 사이즈가 작으면 그림의 묘사 또한 상당히 뭉개지기 때문에 이러한 사이즈 조정은 필수적이나 hires. fix 기능은 시간이 상당히 걸리고 vram 부하 또한 낮지 않다는점에 있다.

다만 이때 ddetailer extension을 사용한다면 hires.fix를 사용하지 않고도 얼굴의 묘사력 밀도를 높일 수 있다.

아래 예시를 보자.

txt2img 원본파일 크기는 원본크기는 800x512
txt2img에서 ddetailer를 사용한 그림 마찬가지로 원본크기는 800x512이다.
hires.fix를 이용한 그림 크기는 2배인 1600x1024이다.

그림의 전반적인 퀄리티는 (손삐꾸는 그렇다치고) hires.fix가 좋은 편이나 그림을 뽑는 시간에서 아주 큰 차이가 난다.

아래의 예시를 확인해보자.

Time taken: 23.11sTorch active/reserved: 3884/4816 MiB, Sys VRAM: 7033/10240 MiB (68.68%)
Time taken: 35.69s Torch active/reserved: 3877/4966 MiB, Sys VRAM: 8059/10240 MiB (78.7%)
Time taken: 3m 31.23s Torch active/reserved: 6361/8358 MiB, Sys VRAM: 10240/10240 MiB (100.0%)

이 3개의 이미지를 만드는데 걸린 시간을 본다면 단순 txt2img만 사용했을때는 23초, ddetailer를 이용할경우 35초, hires.fix를 이용할경우 3분 31초가 걸린다. 이런 시간 차이만 생각한다면 ddetailer를 사용하지 않을 이유는 딱히 없어보인다.

Time taken: 3m 59.61s Torch active/reserved: 6388/8358 MiB, Sys VRAM: 10240/10240 MiB (100.0%)

물론 hires.fix에 ddetailer를 사용한다면 더 좋은 결과를 얻을 수 있을 것이다.

또 다른 방법으로는 txt2img로 이미지를 뽑은 후 img2img에서 resize를 이용해 크기를 키운 뒤 inpaint를 통해 수정하는 방법도 있다.

Time taken: 38.43sTorch active/reserved: 7938/8090 MiB, Sys VRAM: 10240/10240 MiB (100.0%)

원본 그림을 img 2 img에 denoising strength를 0.5로 두고 뽑은것이다. size는 램 오버가 나지 않는 수준에서 최대한으로 크게 뽑았으며 걸리는 시간은 약 38초.

이후에 send inpaint를 누른 후 ddetailer를 사용해 얼굴을 교정하면 다음과 같은 그림이 얻어진다

Time taken: 50.32s Torch active/reserved: 7944/8100 MiB, Sys VRAM: 10240/10240 MiB (100.0%)

inpaint의 경우 50초 가량의 시간이 걸렸다. 이후에 extra 기능을 이용해 이미지 자체의 해상도를 높여준다면 완성이다.

Time taken: 11.83s Torch active/reserved: 2676/3202 MiB, Sys VRAM: 5419/10240 MiB (52.92%)

이렇게 한다면 다소 귀찮을 수 있지만 처음 txt2img에서 23초, resize에서 38초 inpaint에서 50초, extra에서 11초로 hires.fix에 ddetailer를 사용했을때보다 1~2분가량 시간의 차이가 나게된다.그냥 시간이 좀 더 걸려도 귀찮다면 hires.fix를, 다소 손이 가더라도 좀 더 빨리 끝내고 싶다면 ddetailer를 사용하는것도 나쁘지 않을 것 같다.

728x90
300x250