SW/인공지능

EOMT란 무엇인가? ViT 기반 이미지 세그멘테이션을 단순화한 최신 모델 정리

얇은생각 2026. 1. 16. 07:30
반응형

프로젝터에서 은근하게 울리는 팬 소리, 따뜻해진 전자기기 특유의 냄새—이상하게도 그런 순간이 오면 긴장과 기대가 동시에 올라옵니다. 이 글은 바로 그 분위기에서 출발했습니다. 하나의 연구 발표 스크립트를 바탕으로, **EOMT(Encoder-Only Mask Transformer)**라는 모델이 왜 등장했는지, 어떻게 작동하는지, 그리고 왜 우리가 당연하게 여겨왔던 복잡한 구조들에 물음표를 던지는지까지 전부 풀어낸 긴 이야기입니다.

혹시 이런 생각, 해본 적 있으신가요?
“세그멘테이션을 잘하려면… 정말 저렇게까지 복잡해야 할까?”

그 질문에 대한 꽤 설득력 있는 대답이 바로 여기 있습니다.

 

EOMT란 무엇인가? ViT 기반 이미지 세그멘테이션을 단순화한 최신 모델 정리

 


한 줄 요약부터 (진짜로)

먼저 이 문장 하나만 기억하셔도 충분합니다.

충분히 잘 pretraining된, 충분히 큰 ViT라면 세그멘테이션은 굳이 복잡할 필요가 없다.

EOMT는 ViT 기반 segmentation 모델에서 흔히 쓰이던 Adapter, Pixel Decoder, Transformer Decoder 같은 task-specific 구성 요소들을 과감하게 덜어내면서도, 정확도는 거의 유지하고 속도와 효율은 크게 끌어올린 아키텍처입니다.

이게 왜 중요하냐면요. 이제 계산 자원을 어디에 써야 하는지 방향이 조금 달라지거든요. 구조를 덧붙이는 데 쓰기보다, backbone을 키우고 pretraining 품질을 높이는 쪽이 더 낫다는 신호이기도 합니다.

 

 


배경 이야기: ViT + Segmentation이 왜 이렇게 복잡해졌을까

Vision Transformer(ViT)는 이제 컴퓨터 비전에서 너무 익숙한 존재죠. 이미지를 patch로 나누고, embedding한 다음, Transformer Encoder에 넣는다—깔끔합니다. 전역적인 representation도 잘 뽑아내고요.

문제는 segmentation입니다.

Semantic, Instance, Panoptic segmentation에서 SOTA를 찍으려면, ViT 위에 이런 것들이 하나둘씩 얹히기 시작합니다.

  • ViT Adapter (spatial / multi-scale inductive bias 보완)
  • Pixel Decoder (multi-scale feature fusion)
  • Transformer Decoder (MaskFormer, Mask2Former 계열)
  • Masked Attention 같은 추가 메커니즘

성능은 좋습니다. 하지만 모델은 점점 무거워지고, 느려지고, 복잡해집니다.

그래서 자연스럽게 이런 질문이 나오죠.

“이 모든 게… 정말 다 필요할까?”

 

 


EOMT가 출발한 두 가지 가설

이 논문이 흥미로운 이유는, 새로운 블록을 하나 더 만들지 않았다는 점입니다. 대신, 기존 전제를 의심합니다.

 

가설 1: Large-scale Pretraining이 판을 바꾼다

DINOv2 같은 self-supervised 방식이나 masked image modeling을 보면, ViT가 segmentation label 없이도 굉장히 조밀하고 semantic한 정보를 학습한다는 게 이미 관찰됐습니다.

즉, 잘 학습된 ViT라면 객체 경계나 의미 정보를 이미 내부에 가지고 있을 가능성이 크다는 거죠.

그렇다면 Adapter나 Pixel Decoder는… 정보를 “추가”한다기보다는, pretraining이 약할 때 생기는 빈틈을 메워주는 역할일 수도 있습니다.

 

가설 2: 모델이 커질수록, 보조 장치는 덜 필요해진다

ViT의 depth와 parameter 수가 늘어나면,

  • local pattern
  • spatial 관계
  • multi-scale 특성

같은 것들을 굳이 구조적으로 강제하지 않아도 스스로 학습해냅니다.

작은 모델에겐 지팡이가 필요하지만, 큰 모델은 스스로 걷는 법을 배운다는 느낌에 가깝죠.

 

 


실험 전략: 하나씩, 정말 하나씩 없애보자

EOMT는 단번에 단순한 구조로 점프하지 않습니다. 기존 segmentation 파이프라인을 기준으로, 구성 요소를 단계적으로 제거하면서 성능을 확인합니다.

이 흐름을 그대로 따라가 보겠습니다.

 

 


1단계: ViT Adapter 제거

원래 Adapter는 무슨 역할을 하나요?

ViT Adapter는 ViT의 약점—local 정보와 multi-scale 표현 부족—을 보완하기 위해 만들어졌습니다.

구조를 보면:

  • CNN 기반 Spatial Prior Module로 1/8, 1/16, 1/32 feature 추출
  • 이 feature를 token 형태로 flatten
  • ViT token과 cross-attention으로 결합
  • 이후 FFN 기반 multi-scale feature extractor 적용

결국 CNN의 inductive bias를 ViT에 다시 주입하는 장치입니다.

 

그런데 이걸 없애면?

당연히 걱정이 됩니다. CNN도 없어지고, multi-scale도 사라지니까요.

하지만 strong pretraining이 된 ViT의 F16 output을 보면, 이미 꽤 많은 spatial / semantic 정보가 들어 있습니다.

그래서 EOMT는 이렇게 합니다.

  • F16을 transposed convolution으로 F8, F4로 upscaling
  • 일반 convolution으로 F32 downscaling
  • 이 과정을 반복해 필요한 해상도 확보

복잡한 attention 없이도요.

처음엔 “이게 되나?” 싶지만… 됩니다.

 

 


2단계: Pixel Decoder 제거

Mask2Former 계열의 Pixel Decoder는 multi-scale deformable attention을 사용해 feature를 정교하게 정렬합니다. 강력하지만 비용이 큽니다.

EOMT의 관점은 이렇습니다.

“어차피 다 같은 backbone output에서 나온 feature라면, 굳이 다시 정렬할 필요가 있을까?”

Adapter가 사라진 시점에서는 feature 간 불일치 자체가 크지 않습니다.

그래서 Pixel Decoder를 통째로 제거하고, 단순화된 feature pyramid를 바로 다음 단계로 넘깁니다.

 

 


3단계: Multi-scale 자체를 써야 할까?

여기서 한 번 더 나아갑니다.

모든 multi-scale feature는 결국 ViT의 단일 output에서 파생됩니다. 그렇다면 여러 scale을 만들 이유가 있을까요?

EOMT는 과감하게:

  • **단일 scale(F16)**만 사용
  • mask prediction 직전에만 F4로 upscaling

pyramid도, fusion도 없습니다.

 

 


4단계: Transformer Decoder까지 제거

보통 segmentation에서는 heavy Transformer Decoder가 핵심입니다.

  • query 간 self-attention
  • query–image cross-attention
  • masked attention

EOMT는 이걸 완전히 다른 방식으로 해결합니다.

 

아이디어: Decoder를 없애고, Encoder 안에 Query를 넣자

절차는 이렇습니다.

  1. 처음 L₁개의 ViT Encoder block으로 image patch 처리
  2. K개의 learnable query token을 추가
  3. 나머지 L₂개의 Encoder block에서 patch token + query token을 함께 처리

즉, ViT Encoder가 Encoder이자 Decoder 역할을 동시에 수행합니다.

특별한 layer 없이, standard multi-head self-attention만 사용합니다.

구조를 새로 짓는 대신, 방 배치를 바꾼 셈이죠.

 

 


Mask Prediction은 어떻게 하나요?

이 부분은 익숙합니다.

  • Query token → Linear layer → class logits
  • Query token → 3-layer MLP → mask embedding
  • mask embedding ⊙ upscaled F4 feature → mask logits

MaskFormer 계열과 개념은 같고, 구조만 가벼워졌습니다.

 

 


Mask Annealing: 학습과 추론을 동시에 잡는 트릭

여기서 개인적으로 가장 인상 깊었던 포인트입니다.

Masked attention은 학습에 도움이 되지만, inference에서는 비효율적입니다.

EOMT는 Mask Annealing이라는 전략을 씁니다.

  • 각 block에서 masked attention을 쓸 확률 p_mask 설정
  • p_mask는 1.0에서 시작해서 layer가 깊어질수록 0.0으로 감소

초반에는 강하게 guide하고,
후반에는 마스크 없이도 동작하도록 학습시키는 방식입니다.

결과적으로 inference 시에는:

  • masked attention 없음
  • 추가 연산 없음
  • 순수한 ViT 구조만 사용

깔끔합니다.

 

 


실험 결과 요약: 그래서 성능은?

결론부터 말하면, 꽤 잘 나옵니다.

구성 요소 제거 실험

  • 속도: 약 4.4× 향상
  • 정확도: 약 1.1 PQ 감소

트레이드오프 치고는 상당히 좋습니다.

 

Pretraining 영향

  • DINOv2 같은 large-scale pretraining: 성능 손실 거의 없음
  • ImageNet pretraining: 손실 증가

첫 번째 가설이 그대로 검증됩니다.

 

모델 크기

  • Giant ViT: 추가 모듈 없이도 매우 안정적
  • Small ViT: 여전히 구조적 보완이 도움 됨

모델이 클수록 단순화에 유리합니다.

 

다양한 Dataset

COCO 등 여러 benchmark에서:

  • SOTA 대비 PQ 차이 ~1 이내
  • inference 속도 2–3배 개선
  • FLOPs, parameter 감소

일반화 성능도 충분히 확인됩니다.

 

 


이 논문이 던지는 메시지

EOMT는 단순히 “가벼운 segmentation 모델”에 대한 얘기가 아닙니다.

어디에 계산 자원을 써야 하는가,에 대한 방향 제시입니다.

  • task head를 키우기보다
  • backbone을 키우고
  • pretraining을 강화하자

 

한 문장으로 줄이면 이렇습니다.

복잡한 구조보다, 잘 학습된 모델이 더 강하다.

발표 자료를 덮으면서 이 문장이 오래 남았습니다.

 

 


자주 묻는 질문 (2025 기준)

Q1. EOMT를 한 문장으로 설명하면?
A. Encoder-only ViT로 segmentation을 수행하는 단순화된 모델입니다.

Q2. 정말 Adapter, Decoder가 다 없어도 되나요?
A. large-scale pretraining과 충분한 모델 크기라면 가능합니다.

Q3. 정확도 손실은 어느 정도인가요?
A. 약 1 PQ 내외로 매우 제한적입니다.

Q4. Mask Annealing의 핵심은?
A. 학습에는 마스크, 추론에는 자유.

Q5. 실시간 응용에도 적합한가요?
A. 기존 MaskFormer 계열보다 훨씬 유리합니다.

Q6. 작은 모델에도 적용할 수 있나요?
A. 가능하지만 효과는 제한적입니다.

Q7. 어떤 pretraining이 가장 중요하나요?
A. DINOv2처럼 dense representation을 학습하는 방식이 핵심입니다.

Q8. Panoptic segmentation도 되나요?
A. COCO benchmark에서 검증되었습니다.

 

 


마무리하며

EOMT는 요란하지 않습니다. 새로운 attention도, 새로운 block도 없습니다.

다만 이렇게 묻습니다.

“우리가 붙여온 것들, 정말 다 필요했을까?”

때로는 더하는 것보다, 잘 빼는 게 더 큰 진전이 됩니다.

읽어주셔서 감사합니다.

반응형