Data Science/Convolutional Neural Network(CNN)

7. Advanced CNN-3

HJChung 2020. 3. 21. 20:21

ResNet의 아이디어를 이어서 굉장히 좋은 성능을 보이는 Densely Connected ConvNets(DenseNet)에 대해서 알아보도록 하겠습니다. 

 

3. Densely Connected ConvNets(DensNet)

DenseNet의 architecture

첫 번째 입력을 전부다 연결, 그 다음 layer도... 모두 연결된 Dense한 connection이 있는 구조입니다. 

구조를 자세히 살펴보면,

input영상이 들어왔을 때, 먼저 Conv layer로 feature map을 만듭니다.  그 다음, Dense Block을 이용해서 그 사이의 모든 Conv layer는 Dense Connected되어 있습니다. (그림처럼)

그 후 Conv layer로 채널 조정을 해주고, MaxPooling으로 영상 크기를 줄입니다. 

이러한 과정을 여러번 반복합니다. 

즉, DensNet은 ResNet의 아이디어의 연장선에 있으며, Dense Block을 제안하고 있다. Dense Block 내에는 ResNet과 같이 Pre-Activation 구조 (Batch Normalizatio-ReLu activation-Conv)구조를  사용합니다. 

 

1) Dense Block 내부 구조의 이해

옆 그림의 Dense Block은 이리저리 연결된 Skip Connection때문에 자칫 복잡해 보일 수 있지만, 이는 Concateration이라고 보면 됩니다. 

입력이 들어오면 -> Growth Rate만큼 만들어지는 feature이 만들어진다. 이걸 기존에 있던 입력과 concatenate해서 연결해줍니다. -> 그러면 c에서  c+4 -> 이 과정을 반복하면, 누적되어 skip connection이 있는 것과  마찬가지입니다. 

 

2) Bottleneck 구조

Dense block에서도 GooLeNet에서 나온 개념인 Bottleneck을 사용할 수 있습니다. Layer가 깊어지면서 연산량이 급격히 증가하는 것을 막기 위해, 1x1 Conv를 이용한 Bottleneck Layer을 사용합니다. 

예를 들어, 3x3x(Channel in + Growth rate * 몇 번째 Growth) x k 를 Bottle neck구조에서는 이를 두 개로 쪼개어서 

아래의 그림처럼 됩니다. 

bottleneck

 

'Data Science > Convolutional Neural Network(CNN)' 카테고리의 다른 글

6. Advanced CNN-2  (0) 2020.03.18
5. Advanced CNN-1  (0) 2020.03.18
4. Basic CNN Implementation(v2)  (0) 2020.03.15
4. Basic CNN Implementation(v1)  (0) 2020.03.15
3. Batch Normalization  (0) 2020.03.14