Lumiere, and s5unnyjjj

Densely Connected Convolutional Networks[DenseNet] 본문

Review (Paper, Code ...)/Paper Review

Densely Connected Convolutional Networks[DenseNet]

s5unnyjjj 2020. 9. 13. 09:10
반응형

paper : arxiv.org/abs/1608.06993

 

< Outline >

 1. Introduction

 2. DenseNet

 3. DenseNet-BC

 4. Result

 5. Concolusion

 

----------------------------------------------------------------------------------------------------

 

1. Introduction

네트워크의 깊이가 깊어질수록 초기의 정보가 사라진다는 문제점이 있다. 그래서 일각에서는 해당 문제를 해결하기위해 노력하고 있다. 예를 들면 Stochastic depth는 레이어를 무작위로 dropping하여 ResNet을 단축시킴으로써 초기 정보를 밑으로 더 많이 내려가게 하고 FractalNets는 평행한 여러 개의 네트워크를 합침으로써 초반부 layer를 후반부 layer로 이음으로써 초기 정보가 쉽게 사라진다는 문제점을 해결하려 하였다. 본 논문 역시 같은 문제점을 해결하려 하고자 하였고 기존에 나왔던 네트워크보다 더 나은 네트워크인 Densely Connected Convolutional Networks인 DenseNet을 제안한다. 

 

2. DenseNet

 1) ResNet

  ResNet은 tf.add()함수를 사용하여 summation하는 즉, Feautre map을 더한다. 

  아래의 H(l) 은 Batch Normalization(BN) + ReLU + 3x3 Conv이다.

  하지만 뒤로 갈 수록 information flow가 점점 옅어지면서 information 흐름을 방해한다는 문제점이 있다. 해당 문제점   을 해결하기 위해 DenseNet이 등장한다.

 

 2) DenseNet

  DenseNet은 tf.concat함수를 사용하여 concatenate하는 즉, Feature map을 concat시켜서 쌓는다. 그에 따라 L-layer

 network에서 L(L+1)/2개의 connection이 생긴다.

  아래의 H(l) 은 Batch Normalization(BN) + ReLU + 3x3 Conv이다.

  •   DenseNet은 DenseBlock과 Transition Layer 그리고 Classification Layer로 구성되어있다.

  - DenseBlock

   총 3개의 DenseBlock이 사용된다.

  - Transition Layer

  총 2개의 Transition Layer가 사용되며 down sampling을 용이하게 하기 위함이며 down sampling layer는 feauture map의 size를 조절해준다.

  - Classification Layer

  제일 끝에 하나의 Classification Layer가 사용되며, Pooling에 Global Average Pooling(GAP)가 사용된다. GAP는 각 feature map상의 노드값들의 평균을 추출해주며 Fully Connected(FC)를 사용하기 않기에 Parameter 수가 대폭 감소한다.

  • Growth Rate

본 논문에서 Growth Rate는 각 layer의 feature map의 channel 개수를 의미하며, k라 지칭하였다. l번째 layer는 k(0) + k x (l - 1)개의 input feature map을 가진다. 또한 feature map 끼리 densely하게 연결이 되는 구조이다 보니 자칫 feature map의 channel 개수가 많은 경우 계속해서 concat되면 channel수가 많아질 수 있기 때문에 본 논문에서는 growth rate로 작은 값을 사용하였다.

 

  • DenseNet Architecture

 3. DenseNet-BC

 DenseNet과의 차이점은 DenseNet-BC는 DenseNet+Bottleneck Layer+Compression으로 구성되어 있다. 

 1) Bottleneck Layer

  input feature map의 수를 줄여주고 computational efficiency를 향상시킨다.

  아래의 그림은 DenseNet에서 사용되는 Composite Function과 DenseNet-BC에서 사용되는 Bottleneck Layer과의 차이

 를 그림으로 나타낸 것이다.

  • DenseNet : Composite Function

  • DenseNet-BC : Bottleneck Layer

 

  DenseNet-BC처럼 convolution 1x1를 넣게 되면 아래의 그림처럼 parameter 수를 조절할 수 있다. 

 

  • DenseNet-BC Architecture

 2) Compression

 transition layer에서 feature map의 수를 줄여주기 위해 theta값을 0.5로사용하였다. 

 

 

 4. Result

 test error는 유사한 반면 parameter 수가 DenseNet-BC < DenseNet-B < DenseNet-C, DenseNet이며 ResNet은 DenseNet-BC의 3배보다도 더 많았다. 

 또한 Feature Reuse를 통하여 Dense Block과 Transition layer에서 가중치가 골구루 잘 분포되어 있었으며, transition layer는 중복/연결되는 특징을 산출하였고, Classification layer가 전체 weight를 가져가기는 하지만 네트워크 마지막 단계에서 생긴 feature를 더 많이 가져간다.

 

 5. Concolusion

 ResNet은 feature map을 더하는 summation 반면에 DenseNet은 feature map을 쌓는 concatenate를 사용하였다. DenseNet은 Dense Block+Transition Layer+Classification Layer로 구성되고 DenseNet-BC는 DenseNet+Bottleneck Layer+Compression으로 구성되어있다. 뿐만 아니라 Feature Reuse를 통한 Parameter수가 절약된다는 장점이 있다.

 

----------------------------------------------------------------------------------------------------

 

>> 필자가 논문을 읽고 직접 구현한 코드를 아래의 링크에 업로드하였으니 참고바랍니다.

github.com/s5unnyjjj/DenseNet-and-DenseNet-BC

>> 부족한 점이 많을 수 있기에 잘못된 내용이나 궁금한 사항이 있으면 댓글 달아주시기 바랍니다.

>> 긴 글 읽어주셔서 감사합니다. 

 

반응형
Comments