AI/이론
Image classification II
N-analyst
2021. 3. 9. 21:36
Image classification II¶
✅ GoogLeNet¶
1️⃣ Inception module¶
- 이전 층의 input activation에 여러 filter을 적용한다.
- 1x1, 3x3, 5x5 convolution filters
- 3x3 pooling operation
- 채널 축으로 모든 필터 output을 연결한다.
❗ 그런데 이렇게 사용하게 되면 많은 계산량을 가지게 된다. 이를 해결하기 위해서 아래 그림과 같은 구조로 재구성
- 필터를 적용하기 전 1x1 convolutionds으로 채널 수를 줄여준다.
- 쉽게 말하면 압축을 한 후 필터를 적용하여 계산량을 줄인다.
📌 1x1 convolutions¶
- 위 처럼 1x1 filter의 크기가 2이므로 input의 4개 채널이 2개의 채널로 압축이 이루어 진다.
2️⃣ Overall architecture¶
Stem network:
- vanilla convolution networks
- inception modules를 깊게 쌓는다.
- Auxiliary classifiers
- 이렇게 깊게 쌓으면 backpropagation gradient가 중간에 사라지는 문제가 흔히 발생하게 된다.
- gradient를 중간 중간에 따로 계산해 주기 위해서 Auxiliary clssifiers를 도입한다.
- 이 classifier는 마지막 단의 classifier랑 동일하다.
- Classifier output는 하나의 FC layer로 되어있다.
- softmax를 통해서 score계산
3️⃣ Auxiliary classifier¶
- vanishing gradient문제는 Auxiliary classifier로 처리한다.
- 하위 레이어에 추가적인 gradients를 주입해 준다.
- 학습 시에만 사용하고 테스트 시에는 제거한다.
✅ ResNet¶
- layer를 더 깊게 쌓으면 더 좋은 성능을 보인다는 것을 보여준다.
1️⃣ Hypothesis¶
- 일반 레이어: 레이어가 깊어 질수록 좋은 𝑯(𝒙)을 직접 배우기가 어렵다.
Residual block: 대신 residual(잔차)를 학습한다.
- Target Function : $H(x) = F(x) + x$
- Residual Function : $F(x) = H(x) - x$
📖 해결책: Shortcut Connect¶
- 직접적인 매핑 대신 잔여 매핑을 맞추기 위한 layer를 사용한다.
- Vanishing Gradient 문제는 바로 가기 연결로 해결된다.
- 레이어를 쌓기 만하지 말고 바로 가기 연결을 사용하자
📌 Residual connection¶
- 학습 동안, Gradient는 대부분 상대적으로 짧은 경로에 있다.
- Residual networks는 input과 output을 연결하는 $O(2^{n})$의 암시적 경로가 있다.
- output에서 input까지 가는 많은 경로를 통해서 굉장히 복잡한 mapping을 학습해 낼 수 있다.
- 그리고 추가적인 block은 경로의 수가 2배가 된다. (추가되면 갈 수 있는 경우의 수가 2개가 추가 되므로)
2️⃣ Overall architecture¶
- ResNet에 맞는 초기화 방법인 He initialization으로 초기화를 해준다.
- 모든 convolution layers는 3x3으로 이루어진다.
- 색깔별로 한 블록인데 이때마다 채널은 2배로 늘어나고 공간 해상도는 반으로 줄어든다.
- 마지막은 FC layer로 이루어진다.
✅ Beyond ResNets¶
1️⃣ DenseNet¶
ResNet에서 레이어의 입력과 출력을 요소별로 더했다.
Dense blocks에서 각 레이어의 모든 출력은 채널 축을 따라 연결(concat)되어 있다. 이때 더하기(add)와 연결(concat)의 차이가 있는데 더하기(add)는 여러 신호를 합쳐 버린다. 연결(concat)은 두 신호를 보존하고 있다 하지만 채널의 수는 그 만큼 늘어나긴 한다. 대신에 feature의 정보를 잘 보존하고 있다.
- Vanishing Gradient 문제 완화
- feature 전파 강화
- 기능 재사용 장려
2️⃣ SENet¶
- depth를 높이거나 connection을 새로하는 방법이 아니라 현재 주어진 activation간의 관계를 더 명확하게 만들었다.
- 채널간의 관계를 모델링하고 중요도를 파악
- Attention 생성 방법
- Squeeze: global average pooling을 통해서 각 채널의 공간정보를 없애고 각 채널의 분포를 구한다.
- Excitation: FC layer하나를 통해서 채널간의 연관성을 고려해서 gating하기 위한 Attention score를 생성해 낸다.
- input값과 위에서 얻은 Attention score를 가지고 rescaling하게 된다. 중요도가 떨어지는 것은 gating이 되도록 즉, 닫히도록 하게 된다.