Search
Duplicate

AI/ SAM 2

SAM 2

SAM 2는 segmentation을 수행하는 이전 모델 SAM을 video task로 확장한 모델이다. SAM이 segmentation task를 통해 vision의 foundation model을 구축한 것처럼 SAM 2 역시 다양한 vision task에 적용 가능한 foundation model이라 할 수 있고, SAM과 마찬가지로 실시간으로 interactive한 사용자 경험을 제공한다.

Architecture

원래의 SAM의 아키텍쳐는 Image Encoder, Prompt Encoder, Mask Decoder로 구성되었는데, SAM 2에서는 비디오 데이터를 처리하기 위해 Memory Attention, Memory Encoder, Memory Bank가 추가되었다.
Image Encoder는 SAM과 동일하게 현재 프레임의 이미지를 Embedding하는 역할을 수행한다. SAM과 다른 점은 SAM의 Image Encoder는 ViT로 pre-trained인 MAE를 backbone으로 사용했지만, SAM 2에서는 계층 구조를 활용하기 위해 MAE로 pre-trained인 Hiera를 사용했다는 것이다.
원래의 SAM에서는 Image Encoder의 결과를 Mask Decoder에서 처리했지만 SAM 2에서는 Memory Attention이라는 모듈을 추가해서 현재 프레임 정보 뿐만 아니라 이전 프레임 정보(object pointer와 memory bank)를 활용할 수 있게 한다. Memory Attention 모듈에서는 우선 Image Encoder의 결과에 대해 self-attention을 수행하고, 이전 프레임의 object pointer와 memory bank에 대해 cross attention을 수행하여 결과를 생성한다.
Prompt Encoder는 SAM과 동일하며 주어진 프레임의 prompt를 encoding하는 역할을 수행한다.
Mask Decoder는 SAM과 유사하지만 Video 데이터를 처리하기 위해 수정되었다. memory attention의 결과와 prompt encoder의 prompt 정보를 받아 mask에 대한 high-level semantic을 갖는 mask token과 최종 mask 출력을 계산한다. mask token은 이후 object pointer로 투영된다.
Memory Encoder는 Mask Decoder의 mask 데이터를 받아 downsampling하고 positional encoding 등의 몇 가지 처리를 한 다음 memory bank에 저장한다.
Memory Bank는 최대 NN개의 최근 프레임의 메모리로 구성된 FIFO queue 형태로 과거 데이터를 저장한다. 이 데이터는 object pointer와 함께 Memory Attention에서 cross-attention 된다.
더 자세한 사항은 참고의 논문 페이지 참조.

Data Engine

SAM 2도 SAM과 마찬가지로 supervise learning 형식이기 때문에 video에 대한 mask 데이터를 확보하기 위해 Data Engine을 구축해서 학습 데이터를 생성한다. SAM 2의 데이터 엔진도 SAM 1과 유사하게 3단계로 처리되지만, 내용은 조금 다르다.
일단 SAM 2는 SAM이라는 모델이 있는 상태이기 때문에, 1단계에서 인간 주석자가 SAM을 이용해서 mask 주석처리한다.
2단계에서는 SAM 2 모델을 추가해서, SAM이 첫 프레임에 대해 mask를 생성하면, SAM 2로 해당 mask를 전체 프레임에 전파하고, 인간 주석자가 그것을 편집하고, 그걸 바탕으로 SAM 2 모델을 업데이트하는 방식으로 진행한다.
마지막 3단계는 SAM의 마지막 단계와 마찬가지로 SAM 2 모델만 이용해서 video의 전체 mask를 생성하고, 인간 주석자가 잘못 처리된 것을 수정하여 모델을 업데이트하는 단계를 거친다.

Sample Code

코드가 상당히 방대하고 복잡하므로 소스는 생략. 공식 git hub 소스 참조. (기본 아키텍쳐는 sam2_base.py 참조)
segment-anything-2
facebookresearch

참고