본문 바로가기

논문/Computer Vision

[논문] Densely Connected Convolutional Networks

최근 연구들은 layer들이 input과 output에 더 가까운 connection을 가지게 해 convolutional network를 더 깊고, 정확하고, 효율적이게 학습하는 방법을 제시한다. 본 논문에서는 이런 연구들을 기반으로한 Dense Convolutional Network (DenseNet)을 제시한다. 이 network에서는 각 layer가 모든 다른 layer로 connection을 가지는 feed-forward 처럼 연결되어 있다. 각 layer의 input으로 모든 이전 layer들의 feature map이 사용된다. 또 스스로의 feature map은 모든 다음 layer들의 input으로 사용된다.

DenseNet은 vanishing-gradient 문제를 없애고 feature propagation을 강화하고 feature reuse를 장려하며 parameter 수를 현저히 줄일 수 있다.

 

 

 

1 Introduction

CNN network들의 layer들이 더 많아지고 깊어질수록 새로운 연구 문제가 떠오른다.

  • Input이나 기울기가 layer들을 통과하면서 사라지는 문제이다.

ResNet과 Highway Networks는 다음 layer로 가는 identity connection들을 활용하여 이를 해결한다.

Stocastic depth는 학습 과정에서 layer을 무작위로 drop시켜 정보와 기울기가 더 잘 전달되게 한다.

위 방법들의 공통된 특징은 이전 layer에서 다음 layer로 더 짧은 path를 만든다는 점이다.

 

본 논문에서는 layer간 정보 흐름을 최대화시키기 위해서 모든 layer들을 직접적으로 연결하는 구조를 제안한다.

Feed-forward한 nature를 지키기 위해서 각 layer는 모든 이전 layer들로부터 추가 input을 받고 모든 다음 layer들에게 feature map을 전달한다.

또 feature들을 layer로 넣기 전에 더해서 합치는 ResNet과는 다르게 각 feature들을 concatenate 한다.

따라서 l 번째 layer는 l개의 input을 가진다. 또 자신의 feature-map을 모든 다음 L-l subsequent layer들로 넘긴다.

 

DenseNet은 기존 convolution network들에 비해 더 적은 parameter를 필요로 한다.

ResNet의 경우 각 layer마다 weight를 가지기 때문에 많은 parameter들을 필요하다.

제시된 DenseNet 구조는 network에 추가되는 정보와 유지하는 정보를 완전히 구분한다. 또 DenseNet layer들은 아주 얇기 때문에 기존 feature map들에서 아주 적은 수의 parameter만 추가한다.

 

DenseNet은 정보와 기울기의 흐름이 더 효과적으로 해주고 모델 학습을 용이하게 해준다.

각 layer는 loss function의 기울기와 기존 input signal 정보를 모두 직접적으로 접근할 수 있다.

 

 

 

2. Related Work

최근 연구들은 residual connection을 통해 extremely-deep neural-network를 학습시킨다. Highway Network와 ResNet이 그 대표적인 예시이다.

특히 ResNet의 변형인 stochastic depth는 무작위로 layer를 drop시켜 학습을 향상시킨다. 즉 모든 layer를 필요로 하지 않고 몇몇 layer들은 중복된 정보를 가지고 있다는 것을 보여준다.

 

Network를 더 깊게 만드는 것과 별개로 network의 넓이를 넓게 만드는 연구도 있다.

GoogLeNet은 Inception module을 통해 서로 다른 filter 크기로 생성된 feature map들을 연결시켜 사용한다.

FractalNet 또한 이런 넓은 모델 구조를 활용한다.

 

이렇게 넓거나 깊은 구조를 사용하는 대시 DenseNet은 feature reuse를 통해 모델을 향상한다.

다른 layer에서 학습된 feature map들을 연결시켜 각 layer들의 다양성을 증가시키고 효율을 향상시킨다.

이전 feature들을 연결시키는 Inception network에 비해 DenseNet은 더 간단하고 효율적이다.

 

 

 

3 DenseNets

Input 이미지 $x_0$가 있다 가정한다.

네트워크는 L개의 layer들로 구성되어 있고 각 layer는 non-linear transformation $H_l(\dot)$을 구현한다.

  • $H_l(\dot)$은 Batch Normalization (BN), rectified linear units (ReLU), Pooling, Convolution 등으로 구현된 합성 함수

 

ResNets

기존 convolutional feed-forward network로 l번째 output을 l+1번째 output으로 사용한다.

  • $x_l=H_l(x_{l-1})+x_{l-1}$

ResNet의 장점은 기울기가 이전 layer들로 직접적으로 흐를 수 있다는 것이다.

하지만 identity function과 output $H_l$은 덧셈으로 합쳐지기 때문에 정보 흐름을 방해할 수 있다.

 

Dense connectivity

이런 정보 흐름을 더 향상시키기 위해서 다른 연결 패턴을 제시한다.

l번째 layer는 이전 모든 layer들의 feature map을 input으로 받게 된다. 즉,

  • $x_l=H_l([x_0, x_1, ..., x_{l-1}])$
    • $[x_0, x_1, ..., x_{l-1}]$: 연결된 이전 layer들에서 생성된 feature map들

구현의 용이성을 위해 $H_l(\dot)$의 여러 input들은 하나의 tensor로 연결해 사용한다.

 

Composite function

$H_l(\dot)$

  • BN, ReLU, 3x3 convolution

 

Pooling layers

위 concatenation은 feature map 사이즈가 변화하면 사용 가능하지 않다.

따라서 network를 여러개의 dense block들로 나눈다:

각 block들 사이에 layer를 transition layer로 정의한다.

실험에서는 이 layer가 BN, 1x1 convolution, 2x2 average pooling을 거치게된다.

 

Growth rate

각 함수 $H_l$이 k개의 feature map을 생성하면 l번째 layer는 $k_0+k \times (l-1)$개의 input feature map을 가지게 된다.

  • $k_0$: Input layer의 채널 수

기존 구조와 DenseNet의 큰 차이점은 DenseNet은 매우 얇은 layer들을 가진다는 것이다. (ex. k=12)

이 k를 growth rate라 정의한다.

 

실험을 통해서 작은 k로도 state-of-the-art 성능을 얻을 수 있다는 것을 보여준다.

  • 이는 각 layer가 모델의 이전 feature map들 (collective knowledge)에 대한 직접적인 접근이 가능하기 때문이다.

k값은 각 layer가 global state에 얼마나 많은 정보 (k개의 feature map)을 추가할지 결정한다.

그리고 이런 global state는 network 어느 곳에서도 접근 가능하다.

 

Bottleneck layers

이전 연구들에서는 1x1 convolution을 bottleneck layer로 사용해 각각의 3x3 convolution 이전에 input feature map 크기를 줄인다.

이런 bottleneck 구조를 사용한 DenseNet을 DenseNet-B라 정의한다:

  • BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3)
  • 실험에서는 각 1x1 convolution이 4k개의 feature map을 생성하도록 한다

 

Compression

더 향상된 compactness를 위해 transition layer들에서 feature map 수를 더 줄인다.

한 dense block이 m개의 feature map을 포함한다면 다음 transition layer가 $\lfloor \theta m \rfloor$ 개의 output feature map을 출력하도록 한다.

  • $\theta$: 0보다 크거나 1과 같거나 작은 compression factor
    • 1일 때 ㄹeature map 갯수는 변하지 않음
    • 1보다 작을 때 DenseNet-C라 정의하고 실험에서는 $\theta$=0.5를 사용

이런 compression과 bottleneck이 모두 사용된 모델을 DenseNet-BC라 정의한다.

 

Implementation Details

ImageNet을 제외하고 DenseNet은 모두 3개의 같은 layer 수를 가진 dense block을 가진다.

첫번째 dense block에 들어가기 전에 16개의 output channel을 가지도록 convolution을 진행한다.

Kernel size가 3x3인 convolution layer들에서는 각 변을 0으로 padding해 feature map 크기가 변하지 않도록 한다.

두 dense block 사이에는 1x1 convolution과 2x2 average pooling을 사용한다.

마지막 dense block 후 global average pooling과 softmax를 사용해 분류한다.

 

각 dense block의 feature map 크기는 32x32, 16x16, 8x8이다.

기본 DenseNet 구조는 {L=40, k=12} {L=100, k=12} {L=100, k=24}로 실험을 진행한다.

DenseNet-BC 구조에 대해서는 {L=100, k=12} {L=250, k=24} {L=190, k=40}로 실험을 진행한다.

 

ImageNet의 경우 4개의 dense block을 사용한다.

정확한 구조는 아래 테이블에 정의한다.

 

 

 

4. Experiments

4.1 Datasets

CIFAR

CIFAR 데이터셋은 32x32 colored 이미지로 구성되어 있다.

  • Training: 50,000 (validation 5000개 샘플)
  • Test: 10,000
  • 증강: mirorring/shifting
  • 전처리: channel mean과 std를 통해 정규화

 

SVHN

Street View House Numbers 또한 32x32 colored digit 이미지로 구성되어 있다.

  • Training: 73,257 (531,131 추가적인 학습 데이터)
  • Test: 26,032
  • 데이터 증강 x
  • Validation: Training에서 무작위 6,000개 샘플
  • 전처리: Pixel value를 255로 나눠 0과 1 사이 값으로 변경

 

ImageNet

  • Training: 1.2 백만개
  • Validation: 50,000
  • 증강: 테스트 시 사이즈 224x224 single-crop / 10-crop

 

 

4.2 Training

CIFAR, SVHN

  • Batch size 64
  • Epoch: CIFAR-300, SVHN-40
  • Learning rate: 0.1
    • 50%, 75%에 각각 0.1배

ImageNet

  • Batch size 256
  • Epoch 90
  • Learning rate: 0.1
    • Epoch 30, 60에 각각 0.1배

Weight decay: 0.0001

Momentum: 0.9

Initailization: Kaiming Initialization

Dropout: 증강이 없는 dataset-0.2

 

 

4.3 Classification Results on CIFAR and SVHN

Accuracy

모든 CIFAR 데이터셋에서 DenseNet-BC에 L=190, k=40을 사용했을 때 가장 좋은 성능을 보여준다.

SVHN에서는 L=100, k=24를 사용했을 때 가장 좋은 성능을 보여준다.

  • 더 깊은 250 layer를 사용해도 성능이 좋아지지 않는데 이는 SVHN의 너무 간단한 task에 의한 overfitting으로 추측된다.

 

Capacity

더 크고 깊은 모델을 사용할수록 더 좋은 성능을 보여준다.

Overfitting이나 optimization 어려움을 겪지 않는다.

 

Parameter Efficiency

DenseNet-BC (250 layer) 모델은 15.3M parameter를 가지고도 30M parameter가 넘는 FractalNet이나 Wide ResNet 보다 좋은 성능을 보인다.

위 Figure 4는 훨씬 더 적은 수의 parameter로 비슷한 test error에 수렴하는 DenseNet의 예시를 보여준다.

 

Overfitting

DenseNet은 overfitting에 취약하지 않다.

특히 데이터 증강이 없는 데이터셋을 사용했을 때 DenseNet이 다른 모델들에 비해 overfitting에 취약하지 않다는 것이 명확하다.

 

 

4.4 Classification Results on ImageNet

---

 

 

5. Discussion

표면적으로 DenseNet은 ResNet과 매우 유사하다.

유일한 다른 점은 input feature들을 더하는 것이 아니라 하나로 연결시킨다는 점이다.

 

Model compactness

이런 concatenation은 feature reuse를 장려한다.

따라서 Figure 4 왼쪽 두 그림처럼 훨씬 더 적은 parameter로도 비슷하거나 더 좋은 성능을 보여준다.

 

Implicit Deep Supervision

이런 dense convolution network들의 향상된 성능은 deep supervision으로 설명될 수 있다.

  • Deeply-supervised nets: 각 hidden layer에 classifier를 추가해 중간 layer들도 차별적인 feature들을 학습하도록 함

DenseNet도 비슷한 "implicit deep supervision"을 사용한다.

  • 하나의 classifier는 모델의 모든 layer들의 output을 직접적으로 supervise 한다.
  • 하지만 loss function과 기울기는 훨씬 더 간단하게 모든 layer들이 하나의 loss function을 공유한다.

 

Stochastic vs. deterministic connection

Stochastic depth 정규화 기법에서 아무 layer도 drop 되지 않는다면 모든 이전 layer output을 input으로 받는 DenseNet과 유사한 구조를 가지게 된다.

비록 다른 구조를 가지고 있지만 Stochastic depth 기법은 DenseNet의 정규화 효과에 연관성을 가지고 있을 수 있다.

 

Feature Reuse

Figure 5는 모든 3개 dense block에 대한 heat-map을 보여준다.

각 cell은 layer s (y축)에서 layer l (x축)으로의 weight 절대값 평균을 나타낸다.

 

  • 모든 layer들에서 많은 input에 대해 weight가 퍼져있다. 이는 이전 layer들에서 추출한 output이 deep layer들에서도 사용된다는 것을 의미한다.
  • Transition layer들의 weight들은 이전 dense block에 있는 모든 layer에 대해 weight가 퍼져있다. 이는 첫번째 layer부터 마지막 layer까지 적은 indirection으로 정보가 흐름을 의미한다.
  • 두번째와 세번째 dense block에서 transition layer의 output에 낮은 weight를 부여한다 (첫번째 row). 이는 transition layer의 output이 중복 데이터를 많이 포함함을 의미한다.
  • 마지막 classification layer에서 weight가 최종 feature-map들에 더 높은 가중치를 부여한다. 이는 여전히 high-level feature들이 마지막에 생성되어 영향을 주는 것을 의미한다.

 

6. Conclusion

본 논문에서는 새로운 convolutional network 구조인 Dense Convolution Network (DenseNet)을 제시한다.