*본 내용은 논문의 상세한 분석이 아닌, 간단한 복기용 정리입니다.
DenseNet은 ResNet의 Architecture에서 발전했습니다.
ResNet 문서는 이전 게시물을 참조하세요.
https://stevenkim1217.tistory.com/entry/ResNet-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
기존의 그냥 선형적인 ResNet의 구조에서는 Layer의 개수만큼 연결이 있었다면,
DenseNet은 각 Layer 안의 Subsequence Layer에도 다 일일이 연결이 돼서, x번째 layer에서 연산을 할 때 x-1번째 Layer에서 나온 feature map들을 모두 채널 간에 Concat해서 사용합니다.
이러한 Dense 간의 Connectivity 때문에 이 구조의 이름이 DenseNet입니다.
ResNet에서는 short-cut을 추가하는 구조를 가졌는데, DenseNet은 모든 layer가 뒤에 오는 모든 layer에 전부 다 직접 연결되어 있었죠. 그래서 이렇게 수식을 쓸 수 있습니다.
Convolutional Network에는 feature map의 크기를 변경하는 down sampling layer가 필수적으로 사용됩니다.
DenseNet에서는 Dense Block을 여러개로 쪼개주고, Convolution, Pooling layer을 세트로 Transition Layer라고 하는데, 이 Trasition Layer가 Dense Block 사이에 위치해서, 여기서 featue map의 사이즈를 바꿔줍니다.
이전 게시물에서 ResNet 설명할 때 말씀드린 Bottle Neck 구조가 여기에도 보시면 들어가있습니다.
3x3 convolution 연산하기 전에 1x1 연산을 먼저 해서 뒤의 연산량을 줄여줍니다. 이 Bottle Neck 구조가 DenseNet에서도 좋은 효율을 낸다고 합니다.
이 DenseNet의 Architecture에 대해서 설명을 드리면, 4개의 Dense Block 사이에 Transition Layer가 위치해 있고, 마지막 7x7 global average pooling에서 feature을 1차원 벡터로 만듭니다.
Global Average Pooling (GAP)
참고용으로, Global average pooling에 대해서 설명하겠습니다.
CNN의 구조에는 높이, 너비, 채널이 있습니다. 이 세개를 “채널” 값만 남기고 각 채널의 값은 그냥 평균을 내서 하나로 퉁칩니다.
그래서 어떤 사이즈의 인풋이 들어와도 동일한 채널이면 그냥 평균을 내버려서 파라미터가 Fully connected layer 처럼 parameter 수가 폭발적으로 증가하지 않기 때문에, overfitting 측면에서 유리합니다.
'AI 논문 리뷰(AI Paper Review) > 컴퓨터비전(Computer Vision)' 카테고리의 다른 글
[논문정리] SENet:Squeeze and Excitation Networks (0) | 2023.09.01 |
---|---|
[논문정리] CSPNet 개념 정리 (0) | 2023.09.01 |
[논문정리] ResNet 개념 정리 (0) | 2023.09.01 |
[논문 정리] DeiT: Training data-efficient image transformers & distillation through attention (0) | 2023.09.01 |
[논문 정리] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows (0) | 2023.09.01 |