PyTorchKR
- 양방향의 상태 공간 모델(State Space Model)을 사용하여 시각 데이터로부터 위치 감도와 전역 컨텍스트를 모두 활용하는 Vision Mamba(Vim, 비전 맘바) 모델을 소개합니다. SSM의 효율적 활용을 위해 셀프 어텐션을 제거하여 연산 속도 및 메모리 효율을 높이면서도 다양한 작업에서 우수한 성능을 보인 비전 맘바를 함께 살펴보시죠.
- 이 글은 GPT 모델로 정리한 것으로, 잘못된 부분이 있을 수 있으니 글 아래쪽의 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
Vision Mamba(Vim): 양방향 상태 공간 모델(SSM)을 활용한 효율적 시각 표현 학습 (Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model)
소개
Vision Mamba(Vim, 비전 맘바)는 효율적 시각 표현 학습을 위한 새로운 모델입니다. Vim은 양방향 상태 공간 모델(bidirectional State-Space Model)을 사용하여 시각 데이터로부터 위치 민감도(position sensitivity)와 전역 컨텍스트(global context)를 잘 활용할 수 있습니다. 예를 들어, 영상 데이터를 처리하기 위해 사용한 CNN은 지역적 특성(local feature)은 잘 추출하였지만 이미지 전체로부터의 전역 컨텍스트(global context)는 잘 식별하지 못했으며, 최근 많이 사용하고 있는 비전 트랜스포머(ViT, Vision Transformer)는 셀프 어텐션 기법을 사용하여 전역 컨텍스트 식별은 가능하지만, 연산량이 많고 메모리 효율성이 떨어지는 문제가 있었습니다. Vision Mamba는 이러한 문제들을 해결하면서도 ImageNet 분류 및 COCO 객체 탐지, ADE20K 의미적 분할(semantic segmentation) 등과 같은 벤치마크에서 더 나은 성능을 보였습니다.
Vision Mamba 모델 소개
Vision Mamba 모델은 효율적인 시각적 표현 학습을 위해, 양방향 상태 공간 모델을 활용하는 새로운 접근 방식을 제안하고 있습니다. Vim 모델은 이를 위해 먼저 입력 이미지를 일정 크기의 패치(patch)로 쪼갠 뒤, 각 패치를 선형 변환하여 벡터로 변경합니다. 그 뒤, 해당 벡터를 양방향 맘바 블록(Vision Mamba Encoder)을 통해 처리하는 구조로 되어 있습니다.
이러한 모델 구조는 시각적 표현을 효율적으로 압축하며, 각 패치에 포함된 위치 임베딩을 활용하여 공간 정보를 더 잘 인식할 수 있도록 합니다. 이를 통해 이미지를 세밀하게 분석하고 처리할 수 있으며, 특히 고해상도 이미지 처리에 있어서 ViT나 DeiT와 같은 기존의 방식들보다 더 우수한 성능과 효율성을 보여줍니다.
또한, 양방향 맘바 블록(Vision Mamba Encoder)을 도입함으로써 셀프 어텐션 메커니즘에 의존하지 않으면서도 로컬(local feauter) 및 글로벌 특징(global feature)을 잘 포착할 수 있습니다. 이러한 접근 방식을 통해 Vim 모델은 기존 모델들 대비 효율적으로 데이터를 처리할 수 있게 되어, 연산 부하를 크게 줄이면서도 우수한 성능을 유지할 수 있습니다.
SSM의 긴 컨텍스트 학습(long-range context learning) 덕분에, 이미지 내의 큰 객체 또한 잘 포착할 수 있습니다.
Vision Mamba 모델의 효율성 및 성능
Vision Mamba 모델은 최신 GPU에 친화적인 방법으로 I/O 및 메모리, 연산의 3가지 영역에서의 효율성을 개선하고 있습니다.
먼저, I/O 효율성(I/O-Efficiency) 은 고속 SRAM과 대용량 HBM을 최적화하는 방식으로 달성하고 있습니다. 상대적으로 느리지만 대용량의 HBM 메모리로부터 상대적으로 빠른 SRAM에 일정 크기의 메모리만 읽어서 SSM 연산을 수행 후 HBM에 그 결과를 작성하는 방식으로 메모리 I/O 횟수를 O(BMEN) 에서 O(BME + EN) 으로 줄일 수 있습니다.
메모리 효율성(Memory-Efficiency) 은 Mamba에서 채택한 중간 상태 재계산 방법(recomputation)을 채택하였습니다. 즉, 신경망 역전파 시, 경사도(gradient) 계산을 위해 (B, M, E, N) 크기의 중간 상태(intermediate state)를 다시 연산을 합니다. 활성화 함수(Activation Function)나 합성 곱 연산(Convolution) 같은 경우에는 메모리를 많이 차지하지만 연산하는 속도가 빠르기 때문에, 중간 상태를 저장하기 보다는 매번 다시 계산함으로써 메모리 사용량을 최소화할 수 있습니다.
마지막으로 연산 효율성(Computation-Efficiency) 은 SSM을 통해 달성할 수 있습니다. 시각적 시퀀스 T 와 E 가 각각 T ∈ R^{1 \times M \times D} 과 기본 설정 E = 2D 일 때, 셀프 어텐션과 SSM의 연산 복잡도는 각각 다음과 같습니다.
\Omega(self-attention) = 4MD^2 + 2M^2D
\Omega(SSM) = 3M(2D)N + M(2D)N^2
즉, 셀프 어텐션 방식이 시퀀스 길이 M 에 대해 제곱(quadratic)으로 비례하여 연산이 필요한 반면, Vision Mamba Block의 SSM 연산 시에는 선형적(linear)으로 증가합니다. (자세한 내용은 논문 5 페이지를 참조해주세요. )
정리
Vision Mamba (Vim, 비전 맘바) 모델은 다양한 비전 작업의 정확도 측면에서 기존 CNN 및 ViT를 능가할 뿐만 아니라 효율성 측면에서도 현저한 개선을 보여줍니다. 특히 동급 모델보다 속도가 빠르고 메모리 사용량이 훨씬 적기 때문에 고해상도 이미지 처리에 적합합니다.
더 읽어보기
Mamba(맘바) 모델 소개
Vision Mamba 모델 논문
Vision Mamba 모델 코드 (GitHub 저장소)
Vim 모델 코드 및 학습 스크립트 포함
Vision Mamba Tiny 모델 가중치 (HuggingFace)
Model | #param. | Top-1 Acc. | Top-5 Acc. | Hugginface Repo |
---|---|---|---|---|
Vim-tiny | 7M | 73.1 | 91.1 | hustvl/Vim-tiny · Hugging Face |
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 뉴스 발행에 힘이 됩니다~