- 1. Basic Vision Model
- [12′ NIPS] ImageNet Classification with Deep Convolutional Neural Networks (AlexNet) 핵심 리뷰
- [15′ CVPR] Going deeper with convolutions (GoogleNet, inception) 핵심 리뷰
- [15′ ICLR] VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION (VGGNet)
- [15′ ICML] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
- [16′ CVPR] Deep Residual Learning for Image Recognition (ResNet)
- 2. Vision Model 응용 버전
- [16′ BMVC] Wide ResNet : Wide Residual Networks
- [17′ CVPR] Xception: Deep Learning with Depthwise Separable Convolutions
- [17′ ICLR] FRACTALNET: ULTRA-DEEP NEURAL NETWORKS WITHOUT RESIDUALS
- [17′ CVPR] Densely Connected Convolutional Networks (DenseNet)
- [17′ CVPR] Deep Pyramidal Residual Networks (PyramidNet)
- [17′ CVPR] Active Convolution: Learning the Shape of Convolution for Image Classification
- [17′ CVPR] Residual Attention Network for Image Classification
- [18′ CVPR] SENet : Squeeze and excitation networks
- [18′ BMVC] BAM: Bottleneck Attention Module
- [18′ ECCV] CBAM : convolutional block attention module
- [19′ CVPR] Selective Kernel Networks (SKNet)
- [19′ ICML] EfficientNet : Rethinking Model Scaling for Convolutional Neural Networks
- [21′ ICLR] Vision Transformer : AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
- [21′ NIPS] MLP-Mixer: An all-MLP Architecture for Vision
- [논문 리뷰] KAN: Kolmogorov–Arnold Networks
내용 요약
ResNet의 Wide 버전인 Wide ResNet 논문의 핵심 내용을 살펴봅니다. 먼저 기존 방법의 문제점을 살펴보고, Wide ResNet의 제안 방법을 살펴봅니다. 마지막으로 실험 결과를 통해 제안 방법의 효과를 살펴봅니다.
1. 들어가며
이번 글에서는 2016년 BMVC에 발표된 Wide Residual Networks 논문을 리뷰합니다. 이 논문은 Wide ResNet이라고 불리며 이번 글에서도 Wide ResNet이라고 지칭하겠습니다.
2. 기존 방식의 문제점
기존 방식의 문제점을 살펴보기 전에 먼저 Width와 Depth가 무엇인지 정의를 살펴보겠습니다.
위의 첫 번째 그림은 Width의 정의를 보여줍니다. Width란 Convolution Filter의 개수 또는 Output Feature Map의 채널 수를 의미합니다. 즉 Width가 넓은 모델이란 Convolution Filter의 개수를 많이 사용하여 Output Feature Map의 채널 수가 많은 모델을 의미합니다.
반면 두 번째 그림은 Depth의 정의를 보여줍니다. CNN을 구성할 때 Convolution, Activation, Pooling 등의 연산은 하나하나가 ‘층(Layer)’을 이룹니다. 이때 이 ‘층’의 개수를 Depth라고 표현합니다. 즉 Depth가 깊은 모델이란 Convolution, Activation, Pooling 등의 연산 층이 많이(깊이) 구성된 모델을 의미합니다.
이제 2016년 당시의 상황을 생각해보겠습니다. 이때는 VGGNet, Inception, ResNet 등의 모델이 발표되며 모델의 Depth에 대한 연구가 활발히 진행되던 시기였습니다.
위의 그림은 VGGNet, Inception, ResNet의 핵심 철학을 표현하고 있습니다.
VGGNet은 3×3 Convolution만 사용하여 깊은 모델을 구성하는 방법을 연구했습니다.
Inception은 1×1 Convolution, 3×3 Convolution, 5×5 Convolution, Pooling 등을 조합하여 Inception Module로 만들어 쌓으면 깊은 모델을 만들 수 있음을 밝혔습니다.
ResNet은 모델을 더 깊게 쌓기 위해서는 지름길을 뚫어주면 효과적임을 밝혔습니다.
세 개 연구 모두 모델을 ‘깊게’ 쌓는 방법에 초점을 맞추고 있습니다. 이에 저자들은 Width에 대한 체계적인 연구는 없음을 문제로 지적합니다.
3. 제안 방법
이러한 문제를 해결하기 위한 저자들의 제안 방법을 살펴보겠습니다.
3-1. ResNet에서 width만 늘려보자
Width에 대한 연구가 없는 게 문제이니, 해결책은 아주 간단합니다. Depth를 늘리기에 효과적인 방법임이 증명된 ResNet을 그대로 사용하되, Width만 늘려준 모델을 만들어 성능을 비교해보는 겁니다.
위의 그림을 보면 ResNet과 Wide ResNet의 연산에 따른 Output Feature Map을 도식화하고 있습니다. Wide ResNet의 Output Feature Map은 Channel이 더 커진 모습을 볼 수 있습니다.
4. 효과
다음은 이렇게 제안한 방법의 효과에 대해 알아보겠습니다.
4-1. ImageNet 성능
먼저 ImageNet 데이터셋에 대해 Width의 증가에 따른 성능을 비교해보겠습니다.
위의 그림을 보면 동일한 층의 모델에서 Width가 증가할수록 성능이 좋아지는 모습을 볼 수 있습니다. 따라서 Width의 증가는 모델의 성능에 긍정적인 영향을 준다고 말할 수 있습니다.
다음은 ResNet과 Wide ResNet의 ImageNet에 대한 성능을 비교해보겠습니다.
위의 그림에서 비슷한 파라미터수를 갖는 ResNet152와 Wide ResNet을 비교해보면 Wide ResNet의 성능이 더 좋은 모습을 볼 수 있습니다. 따라서 동일한 조건에서 Width가 클수록 성능이 더 좋다고 말할 수 있습니다.