스테이블 디퓨전, Segment-Anything 설치 및 사용 방법

이미지에서 특정 부분을 매우 쉽게 설정할 수 있는 Segment-Anything
확장 기능에 대해 설명 드려보겠습니다.

Segement-Anything은 페이스북 (Meta)에서 공개한 기술로
포토샵에서 사용되는 마술봉 도구와 비슷하다고 생각하시면 됩니다.
하지만, 성능은 더 정교하면서 쉽게 사용할 수 있어서 좋습니다.

또, 텍스트 인식 기능도 있어서 이미지에서 원하는 영역을 단순히
텍스트만 입력해도 자동으로 인식되어 그 영역만 마스크를 생성해 주어
매우 간편하게 작업을 할 수 있습니다.

Segment-Anything 설치 방법

1. 아래 링크를 클릭해서 깃 허브로 이동합니다.

Segment-Anything

https://github.com/continue-revolution/sd-webui-segment-anything

위 링크를 클릭해서 segment-anything 깃 허브 메인 페이지로 접속합니다.

2. Code 버튼을 눌러준 다음 사각형 버튼을 눌러 링크를 복사합니다.

Segment-Anything

세그먼트 애니띵 메인 깃 허브 페이지에서 우측을 보면
초록색 버튼으로 된 ‘code’ 버튼이 있습니다.

이걸 클릭한 다음 사각형 두 개가 겹쳐있는 버튼을 눌러
URL 링크를 복사해줍니다.
이 링크가 스테이블 디퓨전에서 설치할 때 필요한 링크입니다.

3. Extensions -> Install from URL 탭 링크 입력 -> Install 클릭

Segment-Anything3

2번에서 설치 링크를 복사 한 다음
스테이블 디퓨전을 실행 시켜 Extensoins -> Install from url 탭으로 이동합니다.
이후, 복사된 링크를 붙여 넣고 Install 버튼을 눌러 설치를 진행합니다.

4. Installed 탭에서 확인 후 Apply and restart UI를 클릭합니다.

Segment-Anything

3번에서 설치가 완료되었다면, Installed 탭으로 이동합니다.
이후, Segment-Anything 확장기능이 설치되었는지? 체크 박스는 이상 없는지?
확인 후 Apply and restart UI를 눌러 스테이블 디퓨전을 재 실행 해줍니다.

5.다시, 깃허브 페이지로 이동 후 모델을 다운 받아줍니다.

Segment-Anything

segment anything은 확장 기능 설치 후
추가적으로 SAM 모델을 직접 다운 받아야 사용할 수 있습니다.

다시 세그먼트 애니띵 깃 허브 페이지로 이동한 다음 아래로 내려
Installation 탭으로 이동하면 Sam from Meta AI로 되어 있는 부분에
링크가 3개 있는데 모두 다운 받아줍니다.

6. 다운 받은 모델 파일을 아래 경로에 넣어줍니다.

Segment Anything

Stable-diffusion-webui -> Extensions -> sd-webui-segment-anything -> models -> sam

5번에서 다운 받은 파일을 위의 폴더 경로에 맞게 넣어줍니다.

7. 스테이블 디퓨전 실행 후 Segment Anything 탭을 확인합니다.

Segment-Anything

이제 스테이블 디퓨전을 재 실행하여 Segment Anything 탭이 생겼는지
먼저 확인합니다.

그 다음 SAM 모델에 6번에서 삽입한 파일들이 잘 들어왔다면
성공적으로 설치가 완료된 것입니다.

Segment Anything 사용 방법

1. Segment Anything 탭을 오픈 -> 이미지 올려놓기 -> 마우스 좌 클릭, 우 클릭으로 영역 지정

Segment-Anything
Segment-Anything

세그먼트 애니띵에 영역을 설정할 이미지를 업로드 합니다.
이후, 첫 번째 사용법은 이미지를 클릭하면 내가 직접 선택할 수 있습니다.

마우스 왼쪽으로 클릭하면 검은색 점이 찍히는데 이는, 이것과 유사한 영역을
선택 해 달라는 의미입니다.

마우스 오른쪽으로 클릭하면 빨간색 점이 찍힙니다. 이는 영역 선택에서
제외 해 달라는 의미입니다.

2. 영역 지정 후, Preview Segmentation를 눌러 결과를 확인합니다.

Segment-Anything

1번에서 설정한 영역대로 inpaint 영역과 해당 부분만
따로 추출된 이미지가 잘 나오는지 확인합니다.

이 때, 중요한 것은 처음에 Sam Model을 선택 할 때 모델 크기가 클 수록
성능이 괜찮아집니다. 하지만, VRAM 용량이 부족하다면 가장 저 사양인
Sam_vit_b 모델을 써도 그럭저럭 나오는 것 같습니다.

3. Enable Grounding DINO를 체크하면 더 쉽게 설정 가능

Segment-Anything

마우스로 클릭해도 영역이 애매하게 설정 된다면
GroundingDino기능을 사용하면 텍스트만 입력해도 자동으로 분석해서
영역을 설정해줍니다.

하지만, 이것도 Model 다운이 필요하니 PC사양에 맞게 사용해주시고
가벼운 모델부터 사용해보는 것을 추천 드립니다.

위 이미지처럼, Enable 버튼에 체크해주고
Model은 가장 가벼운 모델로 선택 후, Detection Prompt에
내가 설정하고 싶은 부분을 영어 단어로 입력한 뒤 똑같이
Preview segmentation을 누르면 됩니다.

4. 결과 확인하기

Segment-Anything

Grounding Dino를 사용해서 영역을 설정하면
훨씬 더 간편하게 영역 설정이 가능하다는 것을 확인할 수 있습니다.

하지만, 모델마다 성능 차이가 있을 수 있으니 상황에 맞게 사용하는 것이 좋습니다.
Segment-anything 확장 기능은 영상 작업을 할 때나 이미지를 대량으로 처리할 때는
상당히 유용할 것 같습니다.

또, 바로 inpaint나 컨트롤 넷으로 옮겨지지 않으니 직접 해당 이미지를 재 가공하여
다시 작업해야 하는 단점이 있습니다.