이미지에서 특정 부분을 매우 쉽게 설정할 수 있는 Segment-Anything
확장 기능에 대해 설명 드려보겠습니다.
Segement-Anything은 페이스북 (Meta)에서 공개한 기술로
포토샵에서 사용되는 마술봉 도구와 비슷하다고 생각하시면 됩니다.
하지만, 성능은 더 정교하면서 쉽게 사용할 수 있어서 좋습니다.
또, 텍스트 인식 기능도 있어서 이미지에서 원하는 영역을 단순히
텍스트만 입력해도 자동으로 인식되어 그 영역만 마스크를 생성해 주어
매우 간편하게 작업을 할 수 있습니다.
Segment-Anything 설치 방법
1. 아래 링크를 클릭해서 깃 허브로 이동합니다.

https://github.com/continue-revolution/sd-webui-segment-anything
위 링크를 클릭해서 segment-anything 깃 허브 메인 페이지로 접속합니다.
2. Code 버튼을 눌러준 다음 사각형 버튼을 눌러 링크를 복사합니다.

세그먼트 애니띵 메인 깃 허브 페이지에서 우측을 보면
초록색 버튼으로 된 ‘code’ 버튼이 있습니다.
이걸 클릭한 다음 사각형 두 개가 겹쳐있는 버튼을 눌러
URL 링크를 복사해줍니다.
이 링크가 스테이블 디퓨전에서 설치할 때 필요한 링크입니다.
3. Extensions -> Install from URL 탭 링크 입력 -> Install 클릭

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

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

segment anything은 확장 기능 설치 후
추가적으로 SAM 모델을 직접 다운 받아야 사용할 수 있습니다.
다시 세그먼트 애니띵 깃 허브 페이지로 이동한 다음 아래로 내려
Installation 탭으로 이동하면 Sam from Meta AI로 되어 있는 부분에
링크가 3개 있는데 모두 다운 받아줍니다.
6. 다운 받은 모델 파일을 아래 경로에 넣어줍니다.

Stable-diffusion-webui -> Extensions -> sd-webui-segment-anything -> models -> sam
5번에서 다운 받은 파일을 위의 폴더 경로에 맞게 넣어줍니다.
7. 스테이블 디퓨전 실행 후 Segment Anything 탭을 확인합니다.

이제 스테이블 디퓨전을 재 실행하여 Segment Anything 탭이 생겼는지
먼저 확인합니다.
그 다음 SAM 모델에 6번에서 삽입한 파일들이 잘 들어왔다면
성공적으로 설치가 완료된 것입니다.
Segment Anything 사용 방법
1. Segment Anything 탭을 오픈 -> 이미지 올려놓기 -> 마우스 좌 클릭, 우 클릭으로 영역 지정


세그먼트 애니띵에 영역을 설정할 이미지를 업로드 합니다.
이후, 첫 번째 사용법은 이미지를 클릭하면 내가 직접 선택할 수 있습니다.
마우스 왼쪽으로 클릭하면 검은색 점이 찍히는데 이는, 이것과 유사한 영역을
선택 해 달라는 의미입니다.
마우스 오른쪽으로 클릭하면 빨간색 점이 찍힙니다. 이는 영역 선택에서
제외 해 달라는 의미입니다.
2. 영역 지정 후, Preview Segmentation를 눌러 결과를 확인합니다.
1번에서 설정한 영역대로 inpaint 영역과 해당 부분만
따로 추출된 이미지가 잘 나오는지 확인합니다.
이 때, 중요한 것은 처음에 Sam Model을 선택 할 때 모델 크기가 클 수록
성능이 괜찮아집니다. 하지만, VRAM 용량이 부족하다면 가장 저 사양인
Sam_vit_b 모델을 써도 그럭저럭 나오는 것 같습니다.
3. Enable Grounding DINO를 체크하면 더 쉽게 설정 가능

마우스로 클릭해도 영역이 애매하게 설정 된다면
GroundingDino기능을 사용하면 텍스트만 입력해도 자동으로 분석해서
영역을 설정해줍니다.
하지만, 이것도 Model 다운이 필요하니 PC사양에 맞게 사용해주시고
가벼운 모델부터 사용해보는 것을 추천 드립니다.
위 이미지처럼, Enable 버튼에 체크해주고
Model은 가장 가벼운 모델로 선택 후, Detection Prompt에
내가 설정하고 싶은 부분을 영어 단어로 입력한 뒤 똑같이
Preview segmentation을 누르면 됩니다.
4. 결과 확인하기

Grounding Dino를 사용해서 영역을 설정하면
훨씬 더 간편하게 영역 설정이 가능하다는 것을 확인할 수 있습니다.
하지만, 모델마다 성능 차이가 있을 수 있으니 상황에 맞게 사용하는 것이 좋습니다.
Segment-anything 확장 기능은 영상 작업을 할 때나 이미지를 대량으로 처리할 때는
상당히 유용할 것 같습니다.
또, 바로 inpaint나 컨트롤 넷으로 옮겨지지 않으니 직접 해당 이미지를 재 가공하여
다시 작업해야 하는 단점이 있습니다.









