본문 바로가기
Dev

DenseNet

by 호랑2 2023. 4. 30.

앞서 살펴본 ResNet이 이전 layer 들의 feature 를 다음 layer 에 더해주는 방식이었다면, DenseNet은 전체 layer 를 모두 누적하여 쌓는 (concat) 방식이라고 할 수 있다.


출처 : Densely Connected Convolutional Networks
 
DenseNet의 목적은 ResNet과 마찬가지로 기울기 소실 방지 및 파라미터의 수를 절약하여 연산 속도를 빠르게 하는 데 있다. DenseNet 에 활용되는 개념에는 아래와 같은 것이 있다.
 
1. Growth Rate
DenseNet 또한 여러개의 feature 가 누적되는 개념이다 보니 channel 의 개수가 많은 경우 계속해서 channel 이 늘어날 수 있다. 따라서 DenseNet 에서는 각 layer feature의 channel 개수를 작은 값으로 설정하는데, 이를 Growth Rate 라고 부른다. 위의 그림은 Growth Rate 가 4인 예시를 보여주고 있다.
 
2. Bottleneck Layer
앞서 살펴본 Bottleneck Layer 가 DenseNet 에서도 사용된다. 다만 1x1 convolution 을 거쳐서 channel 개수를 줄이는 것은 동일하나, 연산 이후 feature 의 원래 channel 개수만큼 복원하는 것이 아닌 Growth Rate 만큼의 feature channel 을 복원하는 것이 특징이다.
 
3. Transition Layer
끝으로 DenseNet 에는 Transition Layer 가 존재한다. Transition Layer 는 feature 의 가로 세로 사이즈를 줄여주고 feature 의 개수를 줄여주는 역할을 담당하며 Batch Normalization, ReLU, 1x1 convolution, 2x2 average pooling 으로 구성되어 있다. 1x1 convolution 을 통해 feature의 개수를 줄여주고, 2x2 average pooling 을 통해 feature의 가로 세로 사이즈를 절반으로 줄여준다.
 
DenseNet 은 전체 feature를 모두 쌓는 방식이기 때문에 ResNet 보다 데이터 손실이 적고 이에 따라 성능은 뛰어나지만 ResNet의 개념을 약간 변형한 것이기 때문에 학술적으로는 ResNet 에 비해 활용도가 떨어지는 것이 현실이다.

댓글