About me
home
Portfolio
home
⏱️

DenseNet 정리

주요 특징: 모든 레이어에 피쳐맵을 연결한다. 연결할 때는 ResNet과는 다르게 덧셈이 아니라 concatenate(연결)을 한다. 그래서 피쳐맵의 크기가 반드시 동일해야 한다.
밀집 블록 내의 모든 합성곱 계층이 서로 연결
밀집 블록(dense block): 3X3으로 밀집 연결된 합성곱 계층 두 개로 구성된 모듈
모든 밀집 블록은 전체 안에서 다른 밀집 블록과도 모두 연결 → 모든 계층이 네트워크에서 자기보다 앞선 계층 전체로부터 정보를 받는 것이 가능해짐 → 마지막 계층에서 제일 처음에 위치한 계층까지 경사를 크게 유지하며 흐를 수 있게 됨
ResNet과의 차이점
ResNet: 스킵연결을 사용해 입력을 출력에 더함
DensNet: 이전 계층의 출력은 현재 계층의 출력과 결합, 결합은 깊이의 차원에서 이루어짐 → 네트워크를 따라가면서 출력의 크기가 폭발적으로 증가한다는 문제 야기 → 전환 블록(transition block) 고안
1X1 합성곱 계층과 2X2 풀링 계층으로 구성
깊이 차원의 크기를 표준화, 재설정하여 블록의 출력이 이어 나오는 밀집 블록에 제공되도록 함
변형 DenseNet
예) DensNet121
숫자는 전체 계층 수
ResNet은 이전 결과와 현재 결과를 Summation으로 이어주는 구조였다면, DenseNet은 모든 결과를 Concatenation으로 다 연결시키는 구조라고 볼 수 있다. 그래서 ResNet은 결국 최종적으로 마지막 Layer의 결과로 Classification을 하는데, DenseNet은 전체 Layer 결과를 모두 반영하여 Classification을 할 수 있다. 그렇기 때문에 저자들은 DenseNet이 더 좋은 성능을 낼 수 있다고 주장한다.
하지만 모든 Layer를 다 연결하면 Parameter 수가 급격하게 늘어나기 때문에, DenseNet은 각 Layer의 Channel 수 (= Depth)를 줄인다. Channel 수를 많이 늘리지 않아도 모든 Layer를 고려하기 때문에 성능에 문제가 없다는 것이다.

세부구조

Parameter 수가 적음

• Low한 Feature도 반영 가능