DenseNet과 SENet의 핵심아이디어 살펴보기
1. DenseNet
ResNet은 skip connect 과정에서 더했다면 DenseNet은 concatenation을 한다.
왜 이런 아이디어를 생각했을까?
둘을 더하면 x와 f(x)의 정보가 어떻게든 섞일테니까 concatenation으로 정보를 보존하면서 그냥 합치고 싶은 것이다.
문제는 둘을 단순히 합치는 concatenation은 parameter 수를 기하급수적으로 늘림
feature 특성을 더하면서 섞지말고 그대로 가져옴
그래서 중간마다 1*1 convolution을 통해 parameter 수를 줄이는 것이 핵심이다
dense block에서 concatenation으로 channel을 계속 늘려가면서 feature map을 그대로 가져옴.
너무 늘어나면 1*1 convolution 연산을 통해 channel을 감소시키는 transition block 연산을 반복함.
classification에서 stable한 성능을 보여준다
----------------------------------------------------------------------------------------------------------------------------
ResNet이 skip connection 방식으로 단순히 input과 output을 더했다면 DenseNet은 channel축으로 concatenation했다
무슨 차이가 있을까?
단순히 더하는 것은 두 신호의 원래 성질이 변형될 수 있는데 concatenation을 하면 두 신호를 그대로 보존하면서 가지고갈 수 있다
그러면서 상위 layer에서 필요할때 하위 layer의 feature 참조시 쉽게 사용가능하다
그러나 channel 수가 증가하면서 메모리나 계산복잡도가 증가한다
ResNet과 또 다른 차이는 단순히 이전 input만 가지고 온 것이 아니라 그 이전, 더 이전, 훨씬 이전의 input도 전부 가지고 오는 dense한 설계
현재 output은 그 이후 layer에 모두 넘겨주는 설계방식
gradient vanishing도 줄어든다고 하는데 직관적으로 layer끼리 연결되어있어서 gradient가 끝까지 잘 전달될수 있어서 그렇다
1-1) 코드 구현
AI_Data_Note/model/DenseNet.ipynb at main · yundaehyuck/AI_Data_Note (github.com)
------------------------------------------------------------------------------------------------------------------------------------
2. SENet
현재 주어진 activation map에서 channel간 중요도를 파악하여 중요한 곳에 새롭게 가중치를 두고자 했다
global average pooling으로 activation map의 각 채널별 평균정보만 가지도록 압축시키는 squeeze 연산
global average pooling으로 activation map의 채널별 평균 정보를 가지는 channel distribution을 구함
이제 channel distribution을 fully connected layer에 집어 넣어 channel간 연관성을 고려한 attention score를 계산함
위에서 구한 attention score를 이용하여 가지고 있던 activation map을 rescaling하는 것이 excitation 연산이다.
중요한 channel은 강조하고 그렇지 않은 건 0에 가깝게 하여 없애고
'딥러닝 > Computer Vision' 카테고리의 다른 글
EfficientNet은 어떻게 만들어졌을까? (0) | 2022.03.14 |
---|---|
GAN(Generative Adversarial Network)의 핵심 아이디어 미리보기 (0) | 2022.03.13 |
변형된 모델 학습방법 - semi-supervised training과 self-training (0) | 2022.03.08 |
semantic segmentation task와 Fully convolutional network, deconvolution 간단하게 알아보기 (0) | 2022.02.20 |
가장 좋은 data augmentation이 있을까?(random augmentation) (0) | 2022.02.13 |