-
SAM - Segment Anything ModelComputer Vision & AI/Computer Vision 2023. 10. 17. 21:13
모두연 - 모두팝 세미나에서 했던 SAM 강의를 바탕으로 정리한 글입니다.
SAM
segment anything model
올해 4월 Meta에서 출시한 segment anything
객체 하나뿐만 아니라 한번에 많은 객체를 segment 함.
Motivation
LLM은 사실 다음 단어를 예측하는 것인데
마치 대화하는 것처럼 보여진다.
Foundation Model
downstream task에 대해 높은 zero-shot generalization성능을 보이는 모델
트랜스포머 모델 이후 모델을 깊게 쌓아서 다음 단어를 예측하는 task를 잘 해결했다
segmentation을 잘 하기 위해서는 어떤 task가 정의되어야 할까?
→ 이미지와 어떤 prompt가 주어졌을 때 유효한 mask를 반환하는 것
→ 여기서 말하는 prompt는 이미지에서 분할할 대상을 지정하는 것. Points, b-box, mask 심지어는 text가 될 수도 있다.
유효한 mask?
→ 모호한 prompt가 주어졌을 때에도 합리적인 mask를 출력해야 함
next token prediction task는 웹상에서 텍스트 데이터를 대규모로 얻을 수 있음.
promptable segmentation task학습을 위한 segmentation mask는 구하기 어려움 → 직접 만들었다.
- Assisted-manual stage
- 이미 공개된 데이터셋을 이용해 SAM을 초기 학습
- 초기 학습된 SAM으로 데이터 생성하고 그것으로 점진적 모델 학습 진행
- semi-automation stage
- mask 종류를 다양화 하기 위해 (보통 가운데 크게 object가 있음)
- 외부적인 object를 작업
- fully automatic stage
- 완전 자동화 된 annotation 단계
- 32x32 regular grid point를 입력하여 mask 획득
- IoU값이 높은 mask만 남김
- 중복된 mask제거 등 후처리 작업 수행
최종 1.1B mask를 취득
목표
- promptable segmentation task
- 실시간 가능한 속도
- 유연한 prompt지원
- prompt의 모호함에 대한 대처
- mask를 real-time으로 연산
Model
- 강력한 Image encoder가 image embedding을 계산
- Prompt encoder가 prompt embedding을 계산
- 두 embedding정보를 가지고 계산
Applications: Everything
한번만 누르면 모든 객체가 segment됨
여러번 추론을 함..
threshold로 후처리를 함
각 mask의 hole과 island를 제거
F12를 눌러 보면 이미 everything을 하기 전부터 이미 mask정보가 있다.
사용 예시
with CLIP
prompt를 입력해주면 거기에 맞는 mask만 남김
Grounding DINO와 결합
text들을 넣으면 모든 것을 segment
inpaint anything
SAM-Track
첫번째 프레임의 segmentation수행
DeAOT 로 다음 frame 의 Mask를 예측
gradio를 이용해서 웹에서 애플리케이션 가능
Gradio는 간단하게 사용할 수 있는 웹 기반 인터페이스를 통해 머신러닝 모델을 시각화하고 공유할 수 있도록 도와주는 오픈 소스 라이브러리입니다. Gradio를 사용하면 기계 학습 모델을 웹 애플리케이션으로 변환할 수 있으며, 이를 통해 모델의 입력 및 출력을 시각적으로 표현하고 모델을 사용하는 사용자와 상호작용할 수 있습니다.
🔽 실습으로 segment 결과
'Computer Vision & AI > Computer Vision' 카테고리의 다른 글
[컴퓨터비전] 두 이미지의 유사성을 측정하는 "SSIM" (0) 2023.10.31 classifier prediction을 할 수 있는 웹사이트 (0) 2023.10.17 [TIL] CS231n 3강 - Loss function, Optimization (0) 2023.08.03 [TIL] 생성형 프롬프트 공부, 회의하며 정리한 것들 (0) 2023.07.25 [TIL] CS231n 2강 - Image Classfication 정리 (0) 2023.07.23 - Assisted-manual stage