DenseNet

IT 위키

DenseNet(영어: Dense Convolutional Network, 덴스넷)은 층(layer) 간의 연결을 극대화하여 특징 재사용(feature reuse)과 기울기 흐름(gradient flow)을 개선한 컨볼루션 신경망(CNN) 구조이다.

개요[편집 | 원본 편집]

DenseNet은 각 층이 이전 모든 층의 출력(feature map)을 입력으로 받아들이고, 자신의 출력을 이후 모든 층이 다시 입력으로 전달하는 구조를 가진다. 즉, 하나의 Dense Block 내부에서 l번째 층의 입력은 0번째부터 (l−1)번째 층의 출력이 모두 연결(concatenate)된 형태이다. 이 구조는 정보 흐름을 원활하게 만들고, 기울기 소실(vanishing gradient) 문제를 완화하며, 특징 재사용을 극대화한다.

역사[편집 | 원본 편집]

DenseNet은 2017년 가오 후앙(Gao Huang), 즈앙 리우(Zhuang Liu), 로렌스 반 더 마아텐(Laurens van der Maaten), 킬리안 와인버거(Kilian Q. Weinberger)에 의해 제안되었다. 논문 제목은 “Densely Connected Convolutional Networks”이며, CVPR 2017에서 발표되었다. CIFAR-10, CIFAR-100, ImageNet 등 여러 벤치마크에서 당시 최상위 성능을 기록하였다.

아키텍처[편집 | 원본 편집]

DenseNet은 Dense Block과 Transition Layer로 구성된다.

Dense Block[편집 | 원본 편집]

Dense Block은 내부의 모든 층이 이전 모든 층의 출력을 입력으로 받는 구조를 가진다. 각 층은 새로운 특징 맵만 생성하고, 이전 특징 맵은 그대로 연결(concatenate)된다. 이때 “growth rate(k)”라는 하이퍼파라미터가 각 층이 새롭게 생성하는 채널 수를 결정한다.

Dense Block 내부의 연산 흐름은 다음과 같다.

  1. Batch Normalization
  2. ReLU 활성화 함수
  3. 1×1 컨볼루션 (Bottleneck layer, 선택적)
  4. Batch Normalization
  5. ReLU 활성화 함수
  6. 3×3 컨볼루션
  7. 출력 특징 맵을 이전 출력들과 연결(concatenate)

Transition Layer[편집 | 원본 편집]

Dense Block 사이에는 Transition Layer가 존재하며, 네트워크의 크기를 제어한다.

  1. 1×1 컨볼루션을 통해 채널 수를 줄인다.
  2. 2×2 평균 풀링(Average Pooling) 또는 스트라이드 2 다운샘플링을 수행한다.

이 과정을 통해 계산량과 메모리 사용량을 줄이고, 블록 간 연결을 효율적으로 관리한다.

전체 구조 (예시)[편집 | 원본 편집]

  1. 초기 컨볼루션 계층 (7×7 Conv, Stride 2)
  2. 맥스풀링 (3×3, Stride 2)
  3. Dense Block 1
  4. Transition Layer 1
  5. Dense Block 2
  6. Transition Layer 2
  7. Dense Block 3
  8. Transition Layer 3
  9. Dense Block 4
  10. 글로벌 평균 풀링 (Global Average Pooling)
  11. 완전연결층 (Fully Connected Layer) → Softmax 출력

주요 버전[편집 | 원본 편집]

  • DenseNet-121
    • 4개의 Dense Block으로 구성, 각 블록의 층 수는 [6, 12, 24, 16].
    • Growth rate = 32.
  • DenseNet-169
    • 블록 구성: [6, 12, 32, 32].
    • 더 깊은 네트워크로 CIFAR 및 ImageNet에서 높은 정확도 달성.
  • DenseNet-201
    • 블록 구성: [6, 12, 48, 32].
    • 복잡한 특징 추출에 강함.
  • DenseNet-264
    • 블록 구성: [6, 12, 64, 48].
    • 매우 깊은 구조로 고해상도 인식 과제에 사용됨.

기술적 특징[편집 | 원본 편집]

  • 층 간의 직접 연결로 인해 기울기 소실 문제를 완화함.
  • 특징 재사용이 활발하게 이루어져 파라미터 효율이 높음.
  • 동일한 성능을 내는 기존 네트워크보다 훨씬 적은 파라미터를 가짐.
  • 학습이 빠르고, 표현력 대비 모델 크기가 작음.

한계[편집 | 원본 편집]

  • 모든 층의 출력을 연결(concatenate)하기 때문에 메모리 사용량이 증가함.
  • 네트워크가 깊어질수록 계산량이 많아짐.
  • Growth rate와 압축율(compression factor) 조절이 모델 효율에 큰 영향을 미침.

같이 보기[편집 | 원본 편집]

참고 문헌[편집 | 원본 편집]

  • Gao Huang, Zhuang Liu, Laurens van der Maaten, Kilian Q. Weinberger, "Densely Connected Convolutional Networks," IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017.
  • Ian Goodfellow, Yoshua Bengio, Aaron Courville, "Deep Learning," MIT Press, 2016.

각주[편집 | 원본 편집]

없음