Study/General AI
Non-local Neural Networks
date
Mar 13, 2026
slug
nnn
author
status
Public
tags
AI
General AI
NNN
Non-local Neural Networks
CVPR
summary
Non-local Neural Networks에 대한 내용 정리.
type
Post
thumbnail
updatedAt
Mar 19, 2026 05:33 AM
category
Study/General AI
@inproceedings{wang2018non, title={Non-local neural networks}, author={Wang, Xiaolong and Girshick, Ross and Gupta, Abhinav and He, Kaiming}, booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, pages={7794--7803}, year={2018} }
Introduction
딥러닝에서 장거리 의존성(Long-range Dependencies)을 캡처하기 위한 새로운 빌딩 블록인 Non-local operation을 제안함. 기존의 CNN이나 RNN은 국부적인(Local) 이웃만 처리하기 때문에, 멀리 떨어진 데이터 간의 관계를 파악하려면 해당 연산을 여러 번 반복해야 하는 비효율성이 있음.
CNN의 국부성과 한계
CNN은 기본적으로 커널(Kernel/Filter)이라는 작은 창을 슬라이딩 하면서 연산을 수행함.
- 작동 방식: 보통 이나 크기의 커널을 사용하는데, 이는 한 번의 연산에서 해당 필터 크기만큼의 ‘이웃 영역’ 정보만 참조한다는 의미임.
- 문제점(Receptive Field의 제한): 이미지의 왼쪽 상단에 있는 픽셀과 오른쪽 하단에 있는 픽셀 사이의 관계를 파악하려면, 컨볼루션 층을 아주 깊게 쌓아야 함. 층이 깊어질수록 수용 영역(Receptive Field)이 점진적으로 커지기 때문임.
- 비효율성: 멀리 떨어진 두 정보의 상관관계를 알기 위해 수십 개의 층을 통과해야 하며, 이 과정에서 신호가 희석되거나 계산 비용이 기하급수적으로 늘어남.
RNN의 국부성과 한계
RNN은 시계열 데이터나 문장처럼 순서가 있는 데이터를 처리하며, 이전 시점의 상태를 다음 시점으로 전달함.
- 작동 방식: 현재 시점 의 데이터를 처리하기 위해 바로 직전 시점()의 Hidden State를 입력으로 받음.
- 문제점(장기 의존성 실종): 이론적으로는 첫 번째의 데이터의 정보가 마지막까지 전달되어야 하지만, 실제로는 문장이 길어질 수록 앞 부분의 정보가 소실되거나 변질되는 기울기 소실(Vanishing Gradient) 문제가 발생함.
- 비효율성: 멀리 떨어짐 시점 간의 관계(ex, 문장 맨 앞의 주어와 맨 뒤의 동사의 호응)를 파악하려면 데이터의 모든 중간 단계를 순차적으로 거쳐야만 함. 이는 병렬 처리를 어렵게 만들고 연산 속도를 늦춤.
연산의 비효율성
- 최적화의 어려움: 멀리 떨어진 연결을 학습하기 위해 수많은 레이어를 거쳐야 하므로, 모델이 두 지점 사이의 관계를 직접적으로 학습하기가 매우 어려움.
- 데이터 전달의 손실: 여러 층이나 여러 시점을 거치는 동안, 정작 중요했던 원본 정보의 특징이 변형되거나 사라질 위험이 큼.
- 컴퓨팅 자원 낭비: 단순히 먼 곳의 정보를 보기 위해 불필요하게 많은 파라미터와 연산층을 추가해야 함.
Non-local Neural Networks
The Formulation
- : 응답(response)을 계산하고자 하는 특정 위치 (예: 이미지의 한 픽셀, 비디오의 한 프레임).
- : 와 관계를 맺을 수 있는 모든 가능한 위치 (는 전체 인덱스를 순회함).
- : 와 사이의 연관성(Relationship)을 계산하는 스칼라 함수. 두 위치가 얼마나 밀접한 관련이 있는지(유사도 등)를 결정함.
- : 위치 에서의 입력 특징을 변환한 값.
- : 결과값의 크기를 조절하기 위한 정규화(Normalization) 계수.
→ 특징 지점 의 값은 자기 자신 뿐만 아니라, 전체 영역()의 정보를 가중치()에 따라 합친 결과가 됨.
Non-local Block Architecture

실제로 딥러닝 모델에 적용할 때는 연산 효율을 위해 Self-Attention과 매우 유사한 구조를 가짐.
- Embedding: 입력 를 세 개의 서로 다른 (또는 ) 컨볼루션 층에 통과 시켜, , , 를 만듦. (각각 Query, Key, Value의 역할)
- : 위치 의 특징값을 대표하는 벡터로 변환 (Query 역할)
- : 위치 의 특징값을 대표하는 벡터로 변환 (Key 역할)
- : 위치 의 실제 전달할 정보를 담은 벡터로 변환 (Value 역할)
- 유사도 계산: , 의 내적(Dot product)등을 통해 모든 쌍의 관계 점수를 구함.
- 가중치 적용: 이 점수에 Softmax 등을 적용해 정규화한 뒤, 와 곱하여 더함.
- 잔차 연결(Residual Connection): 계산된 Non-local 결과에 다시 컨볼루션을 적용한 뒤, 원래의 입력 를 더해줌. 이를 통해 기존 모델의 성능을 해치지 않으면서, Non-local 특성을 추가할 수 있음.
의 Instantiations
두 지점의 관계를 정의하는 여러 함수로 실험을 함.

- Gaussian:
- 전통적인 Non-local means 방식.
- Embedded Gaussian:
- 현재 가장 많이 쓰이며, Transformer의 Self-attention과 동일한 방식.
- Dot product:
- 단순 내적.
- Concatenation:
- 두 특징을 이어 붙인 뒤 선형 변환, Relation Networks에서 사용되는 방식
→ 논문에서는 어떤 함수를 선택하느냐보다 'Non-local(전역적)'으로 연산한다는 사실 자체가 성능 향상에 훨씬 더 중요하다는 것을 밝힘.
Non-local의 특징
기존의 Local 연산(CNN)이 “내 주변에 무엇이 있는가?”를 묻는다면, Non-local 연산은 “이 장면 전체에서 나()와 가장 관련 있는 곳은 어디인가?”를 물음.

- In Video: 축구 선수가 공을 차는 장면에서, 선수의 발 위치()는 멀리 떨어져 있는 공의 위치()와 매우 높은 연관성을 가짐. Non-local은 시간과 공간을 가로질러 이 둘을 직접 연결함.
- In Image: 코끼리의 코 부분을 인식할 때, 화면 반대편에 있는 코끼리의 꼬리나 다리 정보를 참고하여 현재 영역이 ‘코끼리’임을 더 확신하게 됨.
→ Non-local Operation은 수용 영역(Receptive Field)을 강제로 전체 데이터 크기로 확장시키는 기술. 이를 통해 딥러닝 모델은 데이터의 국부적인 패턴(질감, 엣지)뿐만 아니라, 전체적인 구조와 장거리 문맥을 동시에 이해할 수 있게 됨.
Non-local Operation의 장점
전역적 문맥 파악 (Capturing Long-range Dependencies)
단 한 층의 레이어만으로도 이미지나 비디오 전체의 정보를 참조할 수 있음.
- 기존 방식: 사물의 일부분(예: 자동차 바퀴)만 보고 판단해야 함.
- Non-local 적용: 자동차 바퀴를 보면서 동시에 멀리 떨어진 신호등, 도로의 차선 등을 한꺼번에 고려하여 "이 장면은 도로 위 주행 상황이다"라는 결론을 훨씬 빠르고 정확하게 내릴 수 있음.
적은 레이어로 높은 성능 달성 (Efficiency in Depth)

기존 CNN이 전역적인 정보를 얻으려면 수십 개의 층을 쌓아 '수용 영역(Receptive Field)'을 넓혀야 했음. 하지만 Non-local 블록은 단 하나만 추가해도 전체 영역을 커버함.
- 모델을 무작정 깊게 만들지 않아도 되므로, 파라미터 수 대비 성능 효율이 매우 좋음. 논문 실험 결과, ResNet-50에 Non-local 블록을 몇 개 추가한 것이 훨씬 더 깊은 ResNet-101보다 더 높은 정확도를 기록하기도 함.
비디오 분석에서의 탁월한 성능 (Spatiotemporal Modeling)

비디오 데이터는 공간(이미지)뿐만 아니라 시간(프레임)축의 정보도 중요함.
- 기존 방식: 프레임 간의 움직임을 파악하기 위해 광류(Optical Flow)를 따로 계산하거나 복잡한 3D CNN을 사용해야 함.
- Non-local 적용: 시간축에 대해서도 Non-local 연산을 수행하면, 수십 프레임 전의 동작과 현재 동작 사이의 연관성을 직접 계산함. 이를 통해 복잡한 액션 인식(Action Recognition)에서 성능이 비약적으로 향상됨.
다양한 작업에서의 범용성 (Generic & Flexible)

이 방식은 특정 문제에만 국한되지 않고, 여러 컴퓨터 비전 작업에서 베이스라인 성능을 일관되게 높여줌.
- 객체 탐지(Object Detection): 물체와 배경, 혹은 물체와 물체 간의 관계를 파악해 더 정확한 박스를 그림.
- 인스턴스 분할(Instance Segmentation): 픽셀 단위의 정밀한 구분 작업에서 주변 맥락을 활용해 경계선을 더 잘 찾음.
- 포즈 추정(Pose Estimation): 가려진 신체 부위가 있더라도, 다른 신체 부위와의 위치 관계를 전역적으로 파악해 정확한 포즈를 예측함.
_1.png%3Ftable%3Dblock%26id%3D322c5054-554c-803c-aa38-c8ee48870158%26cache%3Dv2&w=3840&q=75)