CV - 5. DenseNet

최창우·2022년 12월 8일
0
post-thumbnail

📌목차

1. DenseNet 개요
2. Dense Block
3. Growth Rate
4. ResNet과 성능비교

✔️ 기억할용어

Dense Block
Transition Block
Bottleneck
Compression

📕 DenseNet 개요

논문명 : 2017 CVPR - "Densely Connected Convolutional Networks"

DenseNet 핵심 아이디어
Feed Forward 시 각 layer를 다른 모든 layer 들과 연결

해당 방법론의 4가지의 장점

  • vanishing-gradient 문제!
    완화
  • feature propagation 강화
  • feature 재사용 가능
  • parameter 수 감소

모델 구조는 크게 두가지로 구성됨

  • 1) Dense Block
  • 2) Transition Block

📕 Dense Block

Dense Block 에서는 [ 1 x 1 conv ] 과 [ 3 x 3 conv ] 복수번 사용된다. 단순히 conv을 두번하는게 아니라, 다음 형태를 띔
BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3)

  • BN > ReLU > Conv 순서로 수행하는 일명 'composite function' 을 이용
  • ResNet,Inception 등에서 사용했던것처럼, 1x1 Convolution으로 Channel을 줄여주고, 3x3 Convolution을 수행함으로써 학습파라미터 수를 줄여줌

📖 Dense Block 1개 자세히보기

Dense Block을 1개 자세히 확대해서 보면 아래와 같은 그림
동그라미가 순차적으로 연결되어있으며 (1개 적게그려짐..)
각 동그라미가 BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3) 를 뜻함

📖 Residual Connection

ResNet과 동일하게 Residual Connection을 수행하는데
ResNet에서는 단순덧셈(F(x)+x) 을 해주었다면
DenseNet에서는 Concat(F(x),x) 을 해주었음

  • 즉 1 x 1 로 채널수를 줄였지만, 채널수를 늘려주지않고 Concatenate로 채널수를 늘리는 효과를 얻음

📖 Bottleneck과 Compression

1. Bottleneck
DenseNet은 ResNet과 다르게 Concatenate를 하지만
1 x 1로 채널수를 줄였다가 concatenate를 해주기 때문에 Bottleneck 역할 수행하였음

2. Compression
maxpooling 수행하기 전에 1 x 1 Conv layer를 통과하여 학습파라미터를 줄여주었음

📕 Growth Rate

DenseNet은 ResNet과 다르게 이전 Feature map을 더하는게 아니라 Concatenate 해준다 하였음
그럼, 뒤로 갈수록 Concatenate되는 Feature map들이 늘어나게 되어, channel size가 급격히 늘어나게 될 것임.

이를 방지하기 위해서 DenseNet은 Growth Rate를 지정하여 channel size가 등차수열 형태로 늘어나게 함

📕 ResNet과 성능비교

  • DenseNet은 ResNet보다 학습파라미터 수가 적음에도 불구하고 매우 비슷한 성능을 넀음을 확인
  • 참고로, DenseNet-BC 에서 B는 Bottleneck 사용 / C는 Compression 사용을 의미

📚 Reference

https://gaussian37.github.io/dl-concept-densenet/
https://csm-kr.tistory.com/10

profile
유능한 개발자가 되고 싶은 헬린이

0개의 댓글