컴퓨터 비전

ResNet의 구조

kdjames0930 2026. 1. 30. 14:29

 VGGNet, GoogLeNet 등 레이어를 깊게 쌓아 성능을 향상시킨 CNN 모델들이 나온 이후로 모델의 레이어를 더 깊게 쌓아 정확한모델을 만드려는 노력들이 이어졌다. 하지만 레이어 수의 증가가 곧대로 성능의 향상으로 이어지지 않았다. 

 

출처) Deep Residual Learning for Image Recognition 논문

 

 위는 CNN 레이어를 20개, 56개씩 단순히 쌓았을 떄 각 모델의 CIFAR-10 이미지셋 분류 성능이다. 56개의 레이어를 쌓은 모델이 20개의 레이어를 쌓은 모델보다 에러가 높게 나온다. 이는 단순히 Gradient Vanishing/Exploding 혹은 Overfitting으로 설명할 수 없는 문제였다. Gradient Vanishing 문제를 Normalization layer 과 ReLU 사용 등으로 어느정도 해결했음에도 깊게 쌓은 모델들이 상대적으로 얕은 모델들보다 정확도가 떨어진 것이다. 이를 논문에서는 Degradation Problem 이라 부른다. 

 

 ResNet 모델의 핵심 아이디어는 아래와 같이 CNN 네트워크 중간중간에 위치한 Building block 들에서 Input 으로 들어온 값을 레이어를 통과한 뒤에 다시 더해주는 것이다. 

출처) Deep Residual Learning for Image Recognition 논문

 원래 이러한 Building Block 에서 만들어주고 싶은 이상적인 변환을 H(x) 라고 하자. 기존 방식이라면 (input x 를 다시 더해주지 않으면) 블록은 y=H(x) 에 근사해야 할 것이다. 하지만 ResNet 에서는 Stacked Unlinear Layer 들이 F(x): H(x)-x 에 근사하도록 한다. 즉, y=F(x)+x 이 되는 것이다.

 실제 특징 추출에서 많은 Building Block 들은 "완전한 새 변환" 보다 "의미 있는 표현을 조금 보정" 하는 역할을 맡게 되는 경우가 많다. 이를 식으로 표현하면 y=H(x)=x+(작은 변화, residual) 이렇게 된다. 이 Residual은 값의 규모가 작고 출력이 망가질 위험이 적어 더 안정적으로 학습이 잘 되고 최적화가 용이하다. ResNet 에서는 x+residual 을 학습시킬 필요 없이 residual 만 학습하게 하도록 해 학습에 이점을 가져간다. Input x 가 F(X) 를 통과한 뒤 그대로 더해지기 때문에 이를 Skip Connection 이라고 부른다. 

 

출처) Deep Residual Learning for Image Recognition 논문

 CNN Layer 을 통과한 뒤에 다시 Input 을 더해야 하기 때문에 F(X) 를 통과하기 전후의 차원은 위와 같이 같아야 한다. 왼쪽의 Basic Block 은 18-layer 모델과 34-layer 구조에서 사용되고, 오른쪽의 Bottleneck 구조는 50-layer, 101-layer, 152-layer 구조에서 사용된다. Bottleneck 구조를 사용하면 파라미터 수를 줄이고 연산량을 줄이면서 모델의 깊이는 더 깊게 만들 수 있다. Bottleneck 구조를 사용해 모델을 깊게 만들었을 떄 성능이 더 우수하게 나왔다고 한다. 아래는 전체 구조이다. 

 

출처) Deep Residual Learning for Image Recognition 논문

 

 마지막으로, Skip Connection 을 사용했을 때 성능이 향상되는 이유를 다음과 같은 직관으로 이해하면 납득이 쉬웠다: 모델 중간중간에 입력 x를 다시 더해줌으로 인해 여러 층을 거치며 왜곡되는 것을 막아주고 모델이 학습해야 할 방향을 상기시켜준다. 옆에 초안을 두고 수정하는 느낌?

 

 

이렇게 만들어진 ResNet 모델은 2015년 ILSVRC 에서 우승하고 딥러닝 모델이 더 깊은 구조를 가질 수 있음을 보여주는 상징적 모델이 되었다. 지금까지도 새로운 모델들에 대해 성능 비교 기준이 되는 대표적 Baseline 모델로 회자된다고 한다. 

반응형

'컴퓨터 비전' 카테고리의 다른 글

Fast R-CNN 과 Faster R-CNN  (0) 2026.02.12
R-CNN (Regions with CNN features)  (0) 2026.02.10
VGG-Net 구조와 구현  (0) 2026.01.29
AlexNet 구현, CIFAR-10 이미지 분류하기  (0) 2026.01.14
AlexNet의 구조와 구현  (0) 2026.01.10