본문 바로가기
ML/CNN

[CNN] DenseNet 요약

by 나른한 사람 2021. 8. 4.

DenseNet

DenseNet의 구조

  • DenseNet은 ResNet의 아이디어(Skip-Connection)를 계승한 Dense-Connectivity를 사용해 좋은 성능을 냈다.
  • Dense Block을 제안하고 있으며, 내부적으로는 ResNet과 같은 Pre-activation 구조를 사용한다.

1. Dense-Connectivity

  • ResNet의 Skip-Connection과 DenseNet의 Dense-Connectivity의 수식을 보면 다음과 같다.

Skip-Connection | $x_{l} = f(x_{l-1}) + x_{l-1}$
Dense-Connectivity | $x_{l} = f([x_{0}, x_{1}, ..., x_{l-1}])$

  • Skip-Connection은 이전의 feature들을 계속해서 Add하기 때문에, 네트워크가 깊어질수록 information-flow가 약해진다.
  • 하지만 Dense-Connectivity의 경우에는 Concatenate로 레이어를 쌓아간다.

Dense-Connectivity

2. Dense Block

Bottleneck layer

  • Dense Block은 n개의 Dense layer로 이루어져 있으며, Dense layer는 (BN - Activation - Conv(1x1) - BN - Activation - Conv(3x3))의 Bottleneck 구조로 구성되어 있다.
  • 각 Dense Block 마다 n 값이 다르다.
  • Dense Layer는 input이 들어오면, Grouwth rate 개의 피쳐 맵을 생성한다.
  • 따라서, Dense Block의 output shape는 다음과 같다
  • $Output = k_{0} + Growthrate*(n-1)$

2.1. Bottleneck

  • 레이어가 깊어지면서 연산량이 급격히 증가하는 것을 막기 위해서 Bottleneck Layer를 사용함.

2.2. Growth rate

  • Dense Layer에서 Output으로 나오는 filter의 size를 의미함.
  • 일반적으로 Grouwth rate가 높을수록 성능이 좋다고 함.

3. Transition Layer

  • Dense Block 이후에 나오는 Conv(1x1) 레이어와 AveragePool(2x2) 레이어를 합쳐서 Transition Layer라고 부른다.
  • Transition Layer는 Conv(1x1)을 통해 채널 수를 줄이고,
  • AveragePool(2x2)를 통해 사이즈를 줄인다.
  • Theta 값이 하이퍼 파라미터로 존재하는데 이는 채너 수를 얼마나 줄일지 정해준다. ( Output Channel = Input Channel * Theta )

4. Detail

Structure

'ML > CNN' 카테고리의 다른 글

[CNN] ResNet50 Implementation(Keras)  (0) 2021.08.09
[CNN] GoogLeNet Implementation (Keras)  (0) 2021.08.06
[CNN] ResNet 요약  (0) 2021.08.03
[CNN] GoogLeNet 요약  (0) 2021.08.02
Convolutional : Autoencoder / Neural Network  (0) 2021.07.29

댓글