SAM 2 : Segment Anything in Image and Videos
SAM2은 2024년 7월 meta ai research에서 공개한 모델로 Segment Anything (5, Apr 2023)의 이미지에서 동영상까지 처리할 수 있는 진화버전이다.
SAM (Segment Anything model)
SAM2를 정리하기 전에 기존 SAM은 어떤 형태를 가지고 있는지 보려고한다.
SAM paper 논문에서 목표는 building a foundation model for image segmentation 이라고 한다. (foundation model: models built on unlabeled data using self-supervision, 다양한 task에 대해서 downstream 작업을 통해 적용할 수 있는 모델을 말한다.)
SAM's three components : Image encoder, Prompt encoder, Mask decoder
- Image encoder: MAE pre-trained Vision Transformer(ViT)
- Prompt encoder: sparse(points, boxes, text)-> CLIP, dense (masks)-> convolutions and summed element-wise with image embedding
- Mask decoder: efficiently(how? End-to-end
object detection with Transformers. ECCV, 2020 & Perpixel classification is not all you need for semantic segmentation.
NeurIPS, 2021) maps image embedding, prompt embedding
Resolving ambiguity: ambiguous prompt에 대해서 model은 여러 valid masks를 average한다고 한다. training에서는 예측한 masks에대해 minimum loss만 backprop을 적용했다고 한다. (각 mask 순위는 IoU score로 측정한다.)
- 여러 mask를 예측하는 것이 SAM2에서도 적용해 추후 다룰 의문점을 해결해주는 것같다.
Segment Anything Model 2
SAM2는 기존 SAM에서 이미지 뿐만 아니라 동영상까지 빠르게 처리할 수 있는 모델로 진화했다. 처음 데모를 보며 근래 본 모델 중에 가장 신기했고 이미지, 동영상을 이용한 다양한 task에 적용하기 좋을 것 같다는 생각을 했었다.
기존 SAM과 대략적으로 비슷한 구조를 가지고 있다. image encoder, prompt encoder를 받고 mask decoder를 통해 mapping 하는 구조를 갖고 있다. 이전과 차이점은 동영상 데이터를 처리하기 위해 memory bank라는 개념이 추가되었다. 이부분은 동영상 데이터 특성상 현재 frame이 이전 frame과의 유사도가 높은 점을 고려해 memory bank를 이용했다고 생각했다.
model components 로는 SAM과 같이 Image encoder, prompt encoder, mask decoder를 가지고 memory bank를 위해 memory attention, memory encoder를 가지고 있다.
- image encoder: MAE pre-trained Hiera(hierarchical)
- prompt encoder: 기존 SAM과 같이 sparse, dense prompt를 처리한다.
- mask decoder: ambiguous prompt와 같은 경우 SAM과 같은 방식으로 multiple masks 예측한다. 비디오 데이터에서 ambiguity가 해소되지 않는다면 모델은 현재 frame에서 highest predicted IoU를 가진 mask만 propagate한다.
- memory bank: memory bank에서는 FIFO queue구조로 N recent frames와 M prompted frames에대한 정보를 저장한다.
- memory attention: memory attention은 현재 frame과 이전frame과의 연관성을 계산하며 더 나은 특징을 뽑아내는 역할을 한다. image encoder에서 입력을 받아와 여러 transformer에 들어가게 되는데, self-attention을 먼저 수행한후 memory bank에서 이전 frame에 대한 값과 cross-attention후 MLP layer을 거쳐 최종 feature를 뽑는다. 논문에서는 self-attention, cross-attention에 vanilla attention operation을 사용하며 효율적인 attention kernel을 이용했다고 한다. (추후 efficient attention kernel를 공부해봐야겠다.)
- memory encoder: 현재 frame에서의 생성된 output mask와 prompt 정보를 결합하여 light-weight convolutional layer를 거쳐 memory bank에 저장할 메모리를 생성하는 역할을 한다. 마스크의 해상도는 downsampling을 통해 줄여서 저장해 효율성을 높이고 있다.
의문점
- SAM2 에서 비디오 데이터를 처리할때 prompt는 보통 첫 frame에 제공하고 같은 prompt 내용을 prompt encoder에 적용하는데, 몇 frame이 지난 후에는 해당 객체가 움직이거나 사라졌을 경우에도 같은 prompt(click, box)가 적용되면 오히려 방해되지 않는지, 해당 prompt가 잘못된 상태인데 왜 넣어주는 것인지 의문이 든다.
- 논문에서도 비슷한 내용을 다루고 있는데, 위 구조에서 볼 수 있듯이 occulusion mlp layer를 통해 target object가 현재 frame에서 사라졌는지, 없어졌는지를 판단하고 skip connection을 통해 attention을 수행하지 않고 mask decoder로 연결하는 내용이 있다.
- ambiguity 한 object 같은 경우 한번에 여러 valid mask를 예측하고 IoU score을 통해 가장 높은 mask를 선택해 해당 문제를 완화하는 듯하다.
- Data engine 측면에서 SAM은 co-develop model with model-in-the-loop dataset annoation을 사용했는데 잘못하면 이상한 방향으로 overfitting 심하지 않을까 생각했다. (이걸 피하기 위해서 어떤 기법을 사용했을까...)
Limitation
동영상 특성을 이용해 이전 frame vector를 memory bank에 저장하고 가져와 현재 frame과의 cross attention을 통해 효율적으로 해당문제를 naive하게 해결한 것으로 보인다.
논문에서도 다루듯이 오랫동안 객체가 사라질때 detection을 못하는 문제와 객체가 너무 빠르게 움직여 이전 frame과의 급격한 변화로 따라가기 힘든문제, 비슷한 객체들이 많을때 잘못 mapping하는 경우가 있다고 한다.
대충 체감할때는 대부분 경우에서 성능은 우수해 보였다. 해당 기술에 대해 잘 모르지만, 기존 동영상 인코딩에서 사용하는 computer science기법을 고려해 모델을 보완한다면 위 문제는 어렵지 않게 해결할 수 있을 것으로 보이긴한다.
Personal thinking
동영상을 segment 할 수 있는것은 상당히 매력적이었다. limitation으로 빠른 객체거나 비슷한 객체 사이 혼동하는 문제들은 추후 해결할 영역이지만, 현실에서 거의 모든 산업에 다양하게 적용하는데 큰 어려움이 있어보이지 않았다. 온라인으로 딜레이를 이보다 줄일 수 있다면 로봇틱스에서도 상당히 큰 도움을 줄 것이고 특히 memory bank 구조가 인상적이었다. 예전부터 있었던 개념이지만 아이디어를 접목하는 것은 쉽게 떠오르지 않고 있었던것 같다. 요새 기술 발전 속도가 공부하고 익히는 속도보다 빨라 지금도, 앞으로도 기술 동향에 대한 빠른 파악과 결합할 수 있는 능력이 중요할 것 같다. 관심있던 로봇틱스 분야에서도 visual encoder 뿐만아니라 trajectory latent 단계에서 memory bank를 적용해보면 좋지 않을까 생각 했다. ( 이미 있는 기술일지도 모른다... )
추후 정리할 리스트?
- QV-VAE Neural Discrete Representation Learning
- Slot attention
- Stein Variational Ergodic Search