- 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
내용 요약
FractalNet 이전 방법의 문제점을 살펴봅니다. 이어서 FractalNet의 제안 방법을 살펴봅니다. 마지막으로 실험 결과를 통해 제안 방법의 효과를 살펴봅니다.
1. 들어가며
이번 글에서는 2017년 ICLR에 발표된 FRACTALNET: ULTRA-DEEP NEURAL NETWORKS WITHOUT RESIDUALS 논문을 리뷰합니다. 이 논문은 FractalNet 이라고 불리며, 이번 글에서도 FractalNet 이라고 지칭하겠습니다.
2. 기존 방식의 문제점
ResNet의 모식도를 다시 한번 살펴보겠습니다.
ResNet은 우측의 그림처럼 Identity Mapping을 지름길로 연결해주는 Residual Block을 1열로 쌓는 구조로 이루어져 있습니다. 이러한 ResNet의 구조를 보며 저자들은 두 가지 의문을 제기합니다.
첫 번째는 ‘지름길 연결을 꼭 Identity Mapping으로 해주는 것이 최선인가’에 대한 의문입니다.
두 번째는 ‘Block의 구성을 더 크고 다양하게 만들면 어떨까’에 대한 의문입니다.
3. 제안 방법
이러한 문제를 해결하기 위한 저자들의 제안 방법을 살펴보겠습니다.
3-1. 지름길을 convolution 연산으로 연결
첫 번째 의문인 지름길 연결 방법에 대해 저자들은 Identity Mapping이 아닌 Convolution 연산 후 합쳐주기 방법을 사용합니다.
기존의 Residual Block의 Identity Mapping 부분이 Convolution 연산으로 바뀐 모습을 볼 수 있습니다. 이렇게 Identity Mapping을 Convolution 연산으로 바꿔주는 게 어떤 의미가 있을까요?
각 Layer는 Layer만의 특성을 갖는 정보들을 연산합니다. 따라서 각 Layer가 ‘세대’를 의미한다고 상상해보겠습니다. 그러면 Identity Mapping은 이전 세대의 정보를 그대로 가져와 사용한다는 의미가 됩니다. 생각해보면 우리도 어른들의 조언을 들으며 많은 도움을 받으니, 일리가 있다는 생각이 듭니다. 하지만 적절한 조언은 시대에 따라 조금씩은 달라지는 법이죠. 이러한 관점에서 생각해보면 이 전 Layer의 정보에 Convolution 연산을 한번 거친 뒤 합쳐주겠다는 철학은, 이전 세대의 정보를 참고는 하되 지금 세대에 맞게 각색해서 받아들이겠다는 철학이라고 이해할 수 있습니다.
3-2. 블록을 fractal 구조로 만들기
두 번째 의문은 ‘Block 구성을 더 크고 다양하게 만들 수는 없을까’하는 것이었습니다. 저자들은 아마 이런 생각을 했던 것 같습니다. Residual Block 자체를 하나의 연산이라고 생각해 볼게요. 그럼 Residual Block도 잘 쌓으면 (단순히 1열로 말고) 하나의 더 크고 능력이 좋은 Block을 만들 수 있지 않을까요? 이에 저자들이 제안하는 방법은 위에서 소개한 기본 모듈을 Fractal 구조로 쌓아 하나의 Block으로 만드는 방법입니다.
위의 그림에서 분홍색 부분은 위에서 소개한 기본 모듈에 해당합니다. 그리고 이러한 기본 모듈은 다시 Fractal 구조로 쌓여 파란색 덩어리를 구성하고 있습니다. 마찬가지로 파란색 덩어리는 다시 Fractal 구조로 쌓여 진한 파란색의 덩어리를 구성하고 있습니다. 이렇게 기본 모듈을 Fractal 구조로 쌓아 Fractal Block을 구성합니다.
3-3. 전체 구조
이제 FractalNet의 전체 구조를 살펴보겠습니다.
전체 구조는 위에서 소개한 Fractal Block과 Pooling 연산이 1열로 쌓여 구성됩니다.
4. 효과
다음은 이렇게 제안한 방법의 효과에 대해 알아보겠습니다.
4-1. ImageNet 성능
ImageNet 데이터셋에 대한 성능을 다른 네트워크들과 비교해보겠습니다.
FractalNet은 ResNet의 응용 버전이라고 할 수 있는데요. ResNet과 성능을 비교해보면 조금 더 개선된 모습을 볼 수 있습니다.