지난 포스팅에서 img2img 메뉴의 inpaint까지 진행을 못해서, 이번 포스팅에서는 inpaint 부분을 마저 설명하고 나머지 부분들도 알아보도록 하겠습니다.

Inpaint

우선 지난 포스팅에서 사용했던 프롬프트를 다시 재활용 해보겠습니다.

A beautiful hyperrealistic  female, running, stunning face, silky hair, big clear eyes, smooth skin, healthy lips, scenic background, soft details, cinematic, full body
EasyNegative,  badhandv4, bad-artist, EasynegativeV2, bad_pictures, verybadimagenegative_v1.3, POV

이런 결과물을 얻었는데, 햇살이 너무 부셔서 선그라스를 얼굴에 껴주고 싶습니다.

자 이럴때 할 수 있는 방법이 앞서 설명했던 내용 중에 2가지가 있죠.

  • Seed값을 고정하고 프롬프트를 추가하는 방법
  • 인페인트 적용하기

두가지 방법 모두 해보겠습니다.

소스 이미지 / Seed : 2572882457
Prompt : “wearing sunglass” 추가 / Seed : 2572882457

이렇게 Seed를 동일하게 적용해도.. 기존 이미지와는 다른 결과가 나와버렸습니다.

다음은 inpaint를 적용해보겠습니다.

아까 결과물에서 “Send to inpaint”버튼을 눌러도 되는데, 이미지 결과물이 다른걸로 바뀌어버려서 img2img 탭으로 이동해서 Inpaint 탭으로 가겠습니다.

인페인트 Mask 처리함

잘되다가 갑자기 오류가 발생했습니다.

NansException: A tensor with all NaNs was produced in Unet. This could be either because there's not enough precision to represent the picture, or because your video card does not support half type. Try setting the "Upcast cross attention layer to float32" option in Settings > Stable Diffusion or using the --no-half commandline argument to fix this. Use --disable-nan-check commandline argument to disable this check.

해석하자면 얼굴이 작은게 원인인 것 같은데, 그림을 표현하기에 정밀도가 충분하지 않다. 혹은 비디오 카드가 하프 타입을 지원하지 않기 때문이다. 라는 내용입니다.

제 생각엔 얼굴이 너무 작아서 그런것 같은데, 설정메뉴(Settings>Stable Diffusion)에서 “Upcast cross attention layer to float32” 이걸 설정하거나 실행할때 사용하는 파일인 webui-user.bat 파일을 메모장으로 열어서 아래와 같이 고치고 저장해줍니다. (저장하고 새로 실행해줘야되요.)

이렇게 했는데도 안되면 옵션을 추가로 주세요. 그러면 될겁니다.

set COMMANDLINE_ARGS=--no-half --disable-nan-check 
Stable Diffusion – 인페인트 전
Stable Diffusion – 인페인트 적용후

Inpaint Sketch (인페인트 스케치)

인페인트 스케치는 인페이트와 스케치를 결합한 기능입니다. 스케치 탭과 같이 그림을 그리는데 색칠한 부분만 새로 그려주고, 모양이나 색상 등이 결과에 영향을 미칩니다. Inpaint의 Mask처럼 칠한 부분에만 영향을 줍니다.

위의 인페인트에서 사용한 이미지에 변형을 줘보겠습니다. 옷을 검은색으로 바꾸고, 상의를 배까지 덮도록 해보겠습니다.

source image
inpaint sketch
inpaint sketch 적용후

이런 식으로 결과물을 얻을 수 있습니다. 프롬프트에 정확하게 “black shirts”라고 써주면 더 원하는 결과를 얻기 쉽습니다.

Inpaint Upload (인페인트 업로드)

명칭에서 알수 있듯이 Inpaint 처리할 Mask영역을 직접 그리는게 아니라 파일로 가져와서 더 정교하게 적용시키는 방식입니다. 포토샵에서 Channel 값을 가져와서 섬세하게 영역설정을 할 때 쓰면 좋을 것 같습니다.

결과물의 차이가 없을거라 개념적으로만 설명하고 넘어가겠습니다.

Batch

인페인트 업로드 기능을 자동으로 대량으로 처리할때 사용하는 기능입니다. 영상을 만들때나 사용할 것 같은데, 이후에 대량처리 부분은 기회가 된다면 따로 설명드리도록 하겠습니다.

Interrogate Clip (이미지에서 프롬프트 추출)

어려운 단어가 나왔습니다. Interogate!

사전적인 의미를 살펴보면 데이터를 획득한다. 변환한다라는 의미입니다.

이미지들 보면서 프롬프트가 궁금하다고 생각한 적 많았을 겁니다. 바로 이미지에서 사용했을 법한 prompt를 추출하는 기능입니다. CivitAI 같은 공유 커뮤니티에서는 프롬프트와 기타 설정값들까지 함께 공유하기 때문에 따라서 이미지를 만들어 볼 수 있습니다. 하지만 일반적으로 공유되는 이미지들은 그렇지 않습니다.

우선 이미지를 가져옵니다. AI Labs 에서 가져와보겠습니다. 가져온 이미지를 img2img 탭에서 읽어줍니다. 그리고 generate 버튼 옆에 [Interrogate CLIP] 이라는 버튼을 눌러줍니다. 생각보다 처리하는데 시간이 오래걸립니다.

a man in a futuristic suit with a helmet and lights on his face and chest, standing in a dark room, Eve Ryder, cyborg, cyberpunk art, retrofuturism

위와 같은 프롬프트를 얻어냈습니다. 이걸 사용해서 그대로 다시 Generate 해보겠습니다.

소스이미지 : @Leonid Wolf Ai
Interrogate CLIP 으로 추출한 프롬프트로 만든 이미지

Resize

이미지를 리사이징 하는 기능입니다. 특정 사이즈로 변환하거나 배율로 조정할 수 있습니다.

이렇게 img2img 메뉴는 다 살펴보았습니다.

다음 포스팅에서는 Extras, PNG Info, Checkpoint Merger 에 대해서 살펴보도록 하겠습니다.

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here