✅ 초기 모델들은 층을 깊게 쌓는 방식으로 성능을 향상
AlexNet (8층) → VGG (16층) → GoogleNet (22층) → ResNet (152층)
✅ 이후, ConvNet 아키텍처의 성능을 강화하기 위해 다양한 혁신적인 기법들 등장
Transformer의 자체-어텐션(Self-Attention)이 NLP 분야에서 뛰어난 성과를 거두면서,
연구 커뮤니티는 이를 컴퓨터 비전(CV)에도 적용하려는 시도를 시작함.
자체-어텐션의 원래 목적: NLP에서 장거리 의존성(Long-Range Dependency)을 학습하는 것.
비전에서의 적용 방식: 이미지의 서로 다른 공간적 위치에 대해 자체-어텐션을 수행.
✅ 초기에는 CNN 기반 모델에 자체-어텐션을 추가하는 방식이 많았음.
✅ 점차적으로 순수 Transformer 기반 모델(ViT, DETR)이 등장하면서 CNN을 대체하는 연구로 발전.
✅ Swin Transformer, Twins Transformer, XCA와 같은 연구들은 연산량 최적화 & 성능 향상을 목표로 개선됨.
✅ 최근에는 CNN 없이 Transformer만으로 강력한 시각적 표현 학습이 가능해지는 방향으로 연구가 진행 중.
우리는 비전 백본(Vision Backbone) 아키텍처 설계를 위해 자체-어텐션(Self-Attention)을 탐구하는 것에 초점을 맞춘다.
대부분의 기존 기술들은 전통적인 자체-어텐션을 직접 활용하지만, 이웃한 키들 간의 풍부한 문맥(Context)을 명확하게 모델링하는 것을 간과한다.
반면, 우리의 Contextual Transformer(CoT) 블록은 키들 간의 문맥 추출(Context Mining)과 피처 맵(Feature Map) 상의 자체-어텐션(Self-Attention) 학습을 하나의 아키텍처로 통합하면서도, 적절한 파라미터 예산(Parameter Budget) 을 유지할 수 있도록 설계되었다.
✅ 기존 3×3 컨볼루션을 CoT 블록으로 대체하여 CNN 구조를 유지하면서도 Transformer의 장점을 활용 가능
✅ 이를 통해 Contextual Transformer Networks(CoTNet & CoTNeXt) 를 제안
CoT 블록에서 확장 가능한 다중 헤드 자체-어텐션(Multi-Head Self-Attention) 을 사용하며, 기존 Transformer와 차별화된 문맥 정보(Contextual Information) 학습 방식을 적용한다.
✅ 기존 Transformer에서 사용되는 전형적인 자체-어텐션(Self-Attention) 방식
✅ 쿼리(Query), 키(Key), 값(Value)를 생성하고, Softmax를 이용하여 어텐션 행렬을 학습
✅ 전역(Global) 관계를 학습할 수 있지만, 키(Key)들 간의 문맥 정보(Context)는 활용하지 않음
(1) 쿼리(Q), 키(K), 값(V) 변환
(2) 지역적 관계 행렬(Local Relation Matrix) 생성
로컬
(3) 위치 정보(Position Information) 추가
(4) 어텐션 가중치(Attention Weights) 계산
(5) 최종 출력 계산
✅ Self-Attention을 개선하여, 키(Key)들 간의 문맥 정보(Context)를 활용할 수 있도록 설계된 블록
✅ 키(Key) 자체를 문맥화(Contextualized)하여 활용하며, Softmax 없이 어텐션 행렬을 학습
✅ CNN과 Transformer의 장점을 결합한 하이브리드 모델
(1) 정적 문맥 표현(Static Context Representation) K1생성
(2) 어텐션 행렬 A 생성
(3) 동적 문맥 표현(Dynamic Context Representation) 𝐾2생성
(4) 최종 출력 𝑌생성
쿼리(Query), 키(Key), 값(Value) 생성 → 1×1 컨볼루션 사용
쿼리-키(Q⋅K^T ) 비교 후 Softmax 적용
값(Value) V 와 어텐션 행렬 곱해서 최종 출력 생성
기존 CNN과 다르게 전역(전체) 관계 학습 가능
하지만 키(Key)들 간의 문맥 정보를 학습하지 않음!
📌 한계:
❌ 각 키(Key)는 독립적으로 사용됨 → 주변 문맥 정보 반영 ❌
❌ Softmax 연산이 필요 → 연산량 증가
❌ CNN처럼 지역적(Local) 관계를 반영하는 능력이 부족
Self-Attention에서는 "Position + Query" 연산을 통해 위치 정보를 보완하지만, 여전히 키(Key)들 간의 문맥 정보(Context)는 학습하지 않음!
쿼리(Query), 키(Key), 값(Value) 생성 → 기존과 다르게 키(Key) 변환 시 k×k 컨볼루션 사용
쿼리(Query)와 키(Key) 결합 (Concat) 후 1×1 컨볼루션을 거쳐 어텐션 행렬 생성
Softmax 없이 문맥 기반 학습을 수행
어텐션 행렬 δ 와 값(Value) V 곱한 후, 원래 키(Key) 정보까지 반영하여 최종 Fusion 수행
📌 개선점:
✅ 키(Key)들 간의 문맥 정보 학습 가능 → 기존 Self-Attention 대비 문맥 반영 O
✅ Softmax 연산 없이 자체 학습 가능 → 연산량 감소
✅ CNN과 유사하게 지역적(Local) 관계를 학습 → 더 자연스러운 특징 표현 가능
✅ CoT 블록은 기존 CNN의 표준 컨볼루션을 대체할 수 있는 Self-Attention 기반의 빌딩 블록
✅ 이를 활용하여 ResNet 및 ResNeXt 같은 기존 CNN 모델을 문맥화된(Self-Attention 기반) 비전 백본으로 강화 가능
✅ CoT 블록을 적용하더라도, 전체적인 파라미터 수와 FLOPs(연산량)를 크게 증가시키지 않도록 설계됨
✅ Table 1 & Table 2에서 ResNet-50과 ResNeXt-50을 기반으로 한 CoTNet-50 및 CoTNeXt-50의 구조를 확인할 수 있음
✅ CoTNet은 ResNet-101과 같은 더 깊은 네트워크에도 확장 가능
✅ 1×1 포인트와이즈 + k×k 깊이별 컨볼루션을 활용하여 채널 축소
✅ CoT 블록과 유사한 구조를 가짐
✅ 채널 공유 전략(Channel Sharing Strategy)을 사용하여 효율성 증가
✅ 1×1 컨볼루션을 사용하여 지역적 특징을 학습
✅ CoT 블록과 유사하게 로컬 어텐션 행렬을 동적으로 생성
✅ 하지만 CoT 블록은 문맥화된 키(Contextualized Key)와 쿼리(Query) 간의 상호작용을 더 적극적으로 활용
✅ ResNet 기반 CNN에서 Self-Attention을 추가하는 구조
✅ 하지만 연산량이 높아, 네트워크 일부(최종 세 개의 3×3 컨볼루션)만 Transformer 블록으로 변경 가능
✅ 반면 CoT 블록은 네트워크 전체에서 3×3 컨볼루션을 대체 가능
✅ CoT 블록은 입력 키(Key) 간의 문맥을 활용하여 Self-Attention 학습을 더욱 강화