Stable Diffusion/WebUI

[WebUI] Inpaint Anything 사용해보기~!

lucKipyo 2024. 1. 26. 16:19
728x90
반응형

안녕하세요

 

오늘은 Meta의 Segment Anything Model(SAM)을 활용한 Extension 중 하나인 Inpaint Anything  이라는 익스텐션을 사용해보려고 함

 

 

Segment Anything 주소 

https://segment-anything.com/

 

Segment Anything

Meta AI Computer Vision Research

segment-anything.com

위 주소에 Blog를 들어가면 어떻게 사용이 되는지 영상과 짤들이 있어 읽기 힘들면 이미지 참고도 해보면 좋을 것 같음

 

Demo도 해당 페이지에 있음

 

초간단 요약: 이미지에 있는 객체들을 감지해서 분리해준다


그래서 위에서 이렇게 SAM을 사용해서 segment 된 것들을 inpaint 한다고 보면됨

아래 그림을 참고하면됨 

 

관련 설명들을 찾아보니 img2img 에서 inpainting 사용 시 전에 색칠했던 것처럼 마스킹이 필요한데 

SAM 사용으로 색칠을 나눠서 빠르게 해주니 쉽고 편하게 할 수 있다 뭐 그런거 같음

 

하.지.만

아래 해당 주소는 자체적으로 설치해서 사용을 해야한다고해서 나는 그림구경 하고 패스 하였음

Inpaint Anything 공식 깃헙

 

https://github.com/geekyutao/Inpaint-Anything

 

GitHub - geekyutao/Inpaint-Anything: Inpaint anything using Segment Anything and inpainting models.

Inpaint anything using Segment Anything and inpainting models. - GitHub - geekyutao/Inpaint-Anything: Inpaint anything using Segment Anything and inpainting models.

github.com


그래서 WebUI extension으로 사용가능하게 만든게 아래 주소라고 보면됨

Inpaint Anything for WebUI 깃헙

 

https://github.com/Uminosachi/sd-webui-inpaint-anything

 

GitHub - Uminosachi/sd-webui-inpaint-anything: Inpaint Anything extension performs stable diffusion inpainting on a browser UI u

Inpaint Anything extension performs stable diffusion inpainting on a browser UI using masks from Segment Anything. - GitHub - Uminosachi/sd-webui-inpaint-anything: Inpaint Anything extension perfor...

github.com

 

설명이 길었다... 

 

사용방법

1. Inpaint Anything 익스텐션 설치(아래 사진 참고)

과거 글들을 못본 분이 보면 심란 할수도 있으니 간략한 정리 

Extensions → Available → Load from → inpaint Anything 검색 → 설치 → 재시작

 

2. Inpaint Anything 탭 확인

아래 사진처럼Inpaint Anything 탭이 생긴것 확인 가능함

 

3. Segment Anthing Model ID에서 사용할 모델 다운 받기 (위에 이미지 참고)

여러개가 있는데 원하는거 받아서 하나씩 해보면 될듯?

일단 모델 뒤에 h,l, b 가 있는데 아래 같은 의미이니 참고하면 될듯함(파일크기 차이 존재)

h = Huge

l = Large

b = Base

 

받으면 아래 사진처럼 cmd 창으로 받는거 것을 확인할 수 있음

 

4. 진짜 Inpaint Anything 사용해보기

Inpaint Anything  탭에와서 원하는 이미지를 넣어주고

Run Segment Anything 버튼을 누르면

그림의 화살표 끝에 이미지 처럼 세그멘테이션이 되어서 나옴

사용이미지:

 

 

5. 바꾸고 싶은 부분 지정

클릭 하면 점이 찍히는데 이미 나눠져 있기 때문에 점만찍어도됨 

점찍은뒤 Create Mask 버튼을 누르면 2번 이미지 처럼 마스킹한부분이 어딘지 잡혀서 나옴

 

6. 원하는 프롬프트 입력 후 Run Inpainting 누르면 됨

처음에는 모델 다운받느라 좀 걸린다 

아래 Inpainting model도 여러개가 있음

 

7. 1차 결과

ㅇ? 흰색 퍼로 입력했는데 잘못됨을 감지...

바로 inpainting 모델 중 다른 모델들도 해보았는데 결과가 같다...

 

그리하여... img2img 로 념겨서 해보기로 결정

 

8. img2img로 넘겨서 해보기

탭을 보면 Mask only 라는 탭이 있음 여기서

Get mask: inpainting 한부분 이미지 저장

Send to img2img inpaint: img2img로 넘겨줌

 

9.img2img 로 진행해보기

이미 필요한 부분은 다 불러와지기 때문에 사진에는 없지만 위쪽 프롬프트에 변경할 프롬프트 입력을 하고,

필요에 따라 아래 체크한 부분을 입맛에 맞게 변경하면됨

나같은경우 사이즈만 같은 사이즈로 진행하려고 저 삼각형은 누르고 다른 부분은 나중에 조정하였음

 

Denoise 사용을 해보니 0~1사이인데 0이면 원본에 가깝고 1에 가까워 질수록 자유롭게 생성하는듯

 

10. 결과

 

 

11.아래와 같이 하나씩 순차적으로 변형하고 수정된 이미지를 넣어

계속 진행하면 아래와 같이 나오게 할 수 있음

 

다른예

 

위 사진에서도 보이는 문제가 있긴한데 약간 생성하고 빈부분을 채우는게 좀 어색한 부분이 생기긴함

 

그럼 다음에 또 다른글로 찾아오도록 하겠습니다.

 

728x90
반응형