728x90
반응형

이번에 읽을 논문은 컴퓨터 비전 분야에서 딥러닝 모델에 적용할 수 있는 Attention 방법에 대한 Survey 논문입니다. 

 

딥러닝에 적용할 수 있는 Attention 방법들을 보기 좋게 정리해둔 사이트는 아래와 같습니다. 최근까지도 업데이트 되는 듯 합니다. 😎

(보통 GitHub에 Research Topic과 "Awesome"이라는 단어를 조합하여 검색하면 누군가 열심히 정리해둔 레포지토리가 나옵니다.)

 

https://github.com/MenghaoGuo/Awesome-Vision-Attentions

 

GitHub - MenghaoGuo/Awesome-Vision-Attentions: Summary of related papers on visual attention. Related code will be released base

Summary of related papers on visual attention. Related code will be released based on Jittor gradually. - GitHub - MenghaoGuo/Awesome-Vision-Attentions: Summary of related papers on visual atte...

github.com

 

Attention 방법들을 아래와 같이 6가지로 카테고리화 하여 정리해두었네요. 

  • Channel attention
  • Spatial attention
  • Temporal attention
  • Branch attention
  • Channel & Spatial attention
  • Spatial & Temporal attention

 

컴퓨터 비전 분야에서 Attention 방법은 입력 영상의 feature에 따른 dynamic weight adjustment process라고 볼 수 있습니다. 이는 Image Classification, Object Detection, Semantic Segmentation, Video Understanding, Image Generation, 3D Vision, Multi-modal Tasks, Self-supervised Learning 등의 분야에서 유의미한 성과를 이끌어내고 있습니다. 

 

 

 

 

 

 

지난 10년 동안 Attentioin 방법들은 컴퓨터 비전 분야에서 중요한 역할들을 해왔으며, 처음에는 Deep Neural Networks와 Attention 방법을 결합한 RAM 방법에서 시작합니다. Important Region을 반복적으로 예측하고 Policy Gradient를 통해 End-to-End 방식으로 전체 신경망을 업데이트 하는 방식으로 진행했습니다. 또한 RNN 계열에서도 Attention은 필요했으며, 입력에서 중요한 영역을 선택하는데 사용되는 Affine Transformation을 예측하기 위해 Sub-network를 둔 STN을 제시했으며 DCN 등도 있습니다. 그 다음에는 SENet, CBAM, ECANet 등이 등장했습니다. 마지막으로 Self-Attention 개념이 등장하면서 자연어 처리 분야에 적용되었고, 그 뒤로 컴퓨터 비전 분야에도 적용되기 시작했습니다. 그 뒤에는 EMANet, CCNet, HamNet, Stand-Alone Network와 같은 작업들이 수행되어 성능 향상이 있어 왔습니다. 

 

Attention 방법은 데이터 도메인에 따라 분류할 수 있으며, 아래 그림과 같이 기본적으로 Channel Attention, Spatial Attention, Temporal Attention, Branch Attention 4가지로 분류하고, 이들을 결합한 하이브리드 카테고리가 존재합니다. 당연하겠지만 공집합 표시는 아직 방법이 존재하지 않음을 의미하게 됩니다.

 

이와 같은 방법들을 도식화 하면 아래와 같습니다. 

 

 

보통 Attention 방법은 아래와 같이 수식으로 나타낼 수 있습니다. 

\여기서 g(x)는 discriminative region에 attention을 생성하는 것이며, f(g(x), x)는 critical region을 처리하고 정보를 얻어내는 g(x)을 기반으로 입력 값 x를 처리하게 됩니다. 일례로 Squeeze-and-Excitation(SE) 모듈도 아래와 같이 나타낼 수 있습니다. 

 

 

Channel Attention

본 논문에서 설명하고 있는 Channel Attention 목록은 다음과 같습니다. Attention 방법 종류를 파악하는 목적으로 논문을 리뷰하는 것이기 때문에 아주 자세한 설명은 생략합니다. (간단히 쓴답시고 쓰다보니까 설명이 점점 길어지는 듯한 느낌...)

 

 

SENet(Squeeze-and-Excitation Network)

feature를 Squeeze 및 Excitation 모듈로 나눠 계산하며, 계산 리소스가 적은 대신 global average pooling은 복잡한 정보를 캡쳐하기에는 너무나 simple 하다는 단점 존재 

 

GSoP-Net(Global Second-order Pooling Network)

SENet에서 high-order statistics 기능을 제한하는 global average pooling 문제를 해결하기 위해 global 정보를 수집하면서 high-order statistic을 모델링하는 Global Second-order Pooling을 제안, 하지만 추가 계산 비용이 발생함

 

SRM(Style-based Recalibration Module)

Style Transfer에 영감을 받아 Style-based Recalibration Module을 제안, input feature의 mean, std를 이용하여 global information을 capture 하는데 성능을 향상 시킴

 

GCT(Gated Channel Transformation)

각 Conv Layer 다음에 SE block을 사용하는 것은 매개변수 및 계산 측면에서 비실용적이기 때문에 채널 별 관계를 명시적으로 모델링하면서 정보를 효율적으로 수집하기 위한 Gated Channel Transformation 제안, 각 채널의 L2-norm을 계산하여 Global Information을 수집하며, 학습 가능한 벡터를 적용하여 feature를 scaling 함. 이는 SE block 보다 매개변수가 적고 가벼움! 

 

ECANet(Efficient Channel Attention)

SENet은 모델 복잡성을 피하기 위해 channel 수를 조정했으나 이는 가중치 벡터와 입력 간의 correspondence를 직접 모델링하지 못한다는 문제가 있기 때문에 좋지 않은 결과를 달성, 이러한 점을 극복하기 위해 차원을 축소하는 대신 1D Conv를 사용하여 채널 간의 상호작용을 결정하는 Efficient Channel Attention 제안, SENet 식과 비슷하며 다양한 CNN에 쉽게 적용 가능 

 

FcaNet

Squeeze module에서 global pooling 만 사용하면 representation 능력이 떨어지기 때문에 강건한 representation을 얻기 위해 compression 관점에서 얻은 global information을 재고하고 frequency domain에서 global average pooling을 분석, DCT(discrete cosine transform)에 기반한 이 방법은 classification에서 우수한 성능을 달성 

 

EncNet

context와 object categories의 확률 간의 관계를 모델링하기 위해 Semantic Encoding Loss(SE-loss)를 통합하는 Context Encoding Module 제안, class-dependent feature map을 향상 시킬 뿐만 아니라 SE-loss를 통합하여 네트워크가 크고 작은 객체를 동등하게 고려하도록 하며, 이러한 CEM은 낮은 계산 오버헤드로 다양한 백본에 적용 가능 

 

Bilinear Attention 

GSoP-Net 방법에 이어 이전에는 1차원 정보만을 이용하였지만, 이후에 공간 정보를 보존하면서 각 채널 내에서 local pairwise feature interactions을 포착하기 위해 new bilinear attention block(bi-attention) 제안 이는 AiA(Attention-in-Attention) 메커니즘을 사용하여 second-order statistical information을 계산

 

 

 

 

Spatial Attention

 

RAM(Recurrent  Attention  Model)

Recurrent  Attention  Model은 important region에 제한된 컴퓨팅 리소스를 attention 시키기 위해 제안, RAM은 glimpse sensor(엿보기 센서), glimpse network(엿보기 네트워크), RNN 모델의 세 가지 핵심 요소로 이루어짐, 이는 간단하지만 효과적이며 특히 큰 입력에 대해 네트워크에서 수행하는 계산 수를 줄이고 이미지 분류 결과를 개선 시킴 

 

Glimpse Network

인간이 시각적인 인식을 순차적으로 수행한다는 방법에 영감을 받아 RAM과 유사한 Deep Recurrent Network를 제안, 힐끗 네트워크, 전체 이미지에 대해 작동하는 CNN과는 달리 각 단계에서 힐끗 보는 것만 처리하기 떄문에 다양한 크기의 이미지를 자연스럽게 다루고, 반복적인 Attention 방법에 Robustness가 추가되어 over-fitting 문제도 완화됨, CNN backbone 및 RNN에 통합 가능

 

Hard and Soft Attention

입력 이미지에서 추출한 특징 벡터가 주어지면 모델은 각 time step에서 하나의 단어를 생성하여 caption을 생성하고 LSTM 네트워크를 디코더로 이용, 이러한 방법을 사용하면 모델이 초점을 맞추고 있는 대상과 위치를 사용자가 이해할 수 있으므로 image caption generation process의 interpretability 가 향상되고 network representation이 개선 

 

Attention Gate

MR segmentation에 대한 이전 접근 방식은 일반적으로 특정 영역에서 작동하게 되므로 계산 리소스 및 모델 매개변수를 낭비하게 되었는데, 이러한 문제를 해결하기 위해 관련 없는 영역에서 feature activation을 억제 시키면서 대상 영역에 초점을 맞추는 간단하면서도 효과적인 메커니즘을 제안, 경량 설계로 인해 계산 비용이나 모델 매개변수의 수를 크게 늘리지 않고 model representation을 크게 향상 시킴

 

STN(Spatial Transformer Network)

CNN에는 transformation invariance (scaling, rotation, warp, ...)과 같은 것들이 없고, CNN이 중요한 영역에 초점을 맞추도록 하면서 이러한 속성을 달성하기 위해 translation, scaling, rotation and other more general warps에 대한 불변성을 학습하기 위해 explicit procedure를 사용하는 Spatial Transformer Network를 제안하여 네트워크가 가장 관련 있는 영역에 Attention 되도록 함

 

Deformable Convolutional Networks

STN과 유사한 목적으로 제안한 Deformable ConvNets은 geometric transformation에 invariant 하지만 중요한 영역에 다른 방식으로 Attention 됨, 특히 affine transformation을 학습하지 않음, 이는 중요한 영역을 적응적으로 선택하고 컨볼루션 신경망의 유효한 receptive field를 확장, object detection 및 segmentation에서 중요 

 

Self-attention and variants

Self-attention 개념은 NLP 분야에서 큰 성과를 이끌어냈으며, 컴퓨터 비전 분야에서도 사용될 수 있음을 보여주고 있음, 이는 일반적으로 global information을 capture 하기 위한 spatial attention mechanism으로 사용, CNN은 narrow receptive field를 가지고 있기 때문에 이를 증가 시키기 위해 self-attention을 도입, 이러한 기법은 applicability를 제한하는 몇 가지 단점, quadratic complexity가 있음, 이러한 문제를 완화 시키기 위하여 여러가지 방법이 도입됨 (CCNet, EMANet, ANN, GCNet, A^2Net, GloRe, OCRNet, disentangle non-local, HamNet, EANet, SASA, LR-Net, SAN, Vision Transformers, GENet, PSANet 등이 있음)

 

 

 

 

아래 Temporal Attention, Branch Attention, Channel & Spatial Attention, Spatial & Temporal Attention은 간단히 키워드들만 알아보도록 하겠습니다. 방법이 정말 많네요... Attention의 방법론들과 흐름을 잡고, 키워드를 줍줍 하기에는 좋은 논문인 듯 합니다. 

 

 

Temporal Attention

 

Self-attention and variants

temporal  adaptivemodule(TAM)

 

 

 

 

Branch Attention

 

Highway networks

SKNet(Selective Kernel Network)

CondConv

Dynamic Convolution

 

 

 

 

 

 

Channel & Spatial Attention

 

Residual Attention Network

CBAM(Convolutional Block Attention Module)

BAM(Bottleneck Attention Module)

scSE(spatialand channel SE blocks)

Triplet Attention

SimAM

Coordinate attention

DANet(Dual Attention Network)

RGA(Relation-aware Global Attention)

Self-Calibrated Convolutions

SPNet(Spatial Pooling Network)

SCA-CNN(Spatial and Channel-wise Attention-based CNN)

GALA(Global-and-Local Attention)

 

 

 

Spatial & Temporal Attention

STA-LSTM

RSTAN(Spatiotemporal Attention)

STA(Spatiotemporal Attention)

STGCN(Spatiotemporal Graph Convolutional Network)

 

 

 

 

728x90
반응형