Image classification II

Image classification II


✅ GoogLeNet

1️⃣ Inception module

image.png

  • 이전 층의 input activation에 여러 filter을 적용한다.
    • 1x1, 3x3, 5x5 convolution filters
    • 3x3 pooling operation
  • 채널 축으로 모든 필터 output을 연결한다.

❗ 그런데 이렇게 사용하게 되면 많은 계산량을 가지게 된다. 이를 해결하기 위해서 아래 그림과 같은 구조로 재구성

image.png

  • 필터를 적용하기 전 1x1 convolutionds으로 채널 수를 줄여준다.
  • 쉽게 말하면 압축을 한 후 필터를 적용하여 계산량을 줄인다.

📌 1x1 convolutions

image.png

  • 위 처럼 1x1 filter의 크기가 2이므로 input의 4개 채널이 2개의 채널로 압축이 이루어 진다.


2️⃣ Overall architecture

image.png

Stem network:

  • vanilla convolution networks



image.png

  • inception modules를 깊게 쌓는다.



image.png

  • Auxiliary classifiers
  • 이렇게 깊게 쌓으면 backpropagation gradient가 중간에 사라지는 문제가 흔히 발생하게 된다.
  • gradient를 중간 중간에 따로 계산해 주기 위해서 Auxiliary clssifiers를 도입한다.
  • 이 classifier는 마지막 단의 classifier랑 동일하다.



image.png

  • Classifier output는 하나의 FC layer로 되어있다.
  • softmax를 통해서 score계산


3️⃣ Auxiliary classifier

image.png

  • vanishing gradient문제는 Auxiliary classifier로 처리한다.
  • 하위 레이어에 추가적인 gradients를 주입해 준다.
  • 학습 시에만 사용하고 테스트 시에는 제거한다.



✅ ResNet

  • layer를 더 깊게 쌓으면 더 좋은 성능을 보인다는 것을 보여준다.

1️⃣ Hypothesis

image.png

  • 일반 레이어: 레이어가 깊어 질수록 좋은 𝑯(𝒙)을 직접 배우기가 어렵다.

Residual block: 대신 residual(잔차)를 학습한다.

  • Target Function : $H(x) = F(x) + x$
  • Residual Function : $F(x) = H(x) - x$


📖 해결책: Shortcut Connect

  • 직접적인 매핑 대신 잔여 매핑을 맞추기 위한 layer를 사용한다.
  • Vanishing Gradient 문제는 바로 가기 연결로 해결된다.
  • 레이어를 쌓기 만하지 말고 바로 가기 연결을 사용하자


📌 Residual connection

image.png

  • 학습 동안, Gradient는 대부분 상대적으로 짧은 경로에 있다.
  • Residual networks는 input과 output을 연결하는 $O(2^{n})$의 암시적 경로가 있다.
  • output에서 input까지 가는 많은 경로를 통해서 굉장히 복잡한 mapping을 학습해 낼 수 있다.
  • 그리고 추가적인 block은 경로의 수가 2배가 된다. (추가되면 갈 수 있는 경우의 수가 2개가 추가 되므로)


2️⃣ Overall architecture

image.png

  • ResNet에 맞는 초기화 방법인 He initialization으로 초기화를 해준다.



image.png

  • 모든 convolution layers는 3x3으로 이루어진다.
  • 색깔별로 한 블록인데 이때마다 채널은 2배로 늘어나고 공간 해상도는 반으로 줄어든다.



image.png

  • 마지막은 FC layer로 이루어진다.



✅ Beyond ResNets

1️⃣ DenseNet

image.png

ResNet에서 레이어의 입력과 출력을 요소별로 더했다.

Dense blocks에서 각 레이어의 모든 출력은 채널 축을 따라 연결(concat)되어 있다. 이때 더하기(add)와 연결(concat)의 차이가 있는데 더하기(add)는 여러 신호를 합쳐 버린다. 연결(concat)은 두 신호를 보존하고 있다 하지만 채널의 수는 그 만큼 늘어나긴 한다. 대신에 feature의 정보를 잘 보존하고 있다.

  • Vanishing Gradient 문제 완화
  • feature 전파 강화
  • 기능 재사용 장려



2️⃣ SENet

image.png

  • depth를 높이거나 connection을 새로하는 방법이 아니라 현재 주어진 activation간의 관계를 더 명확하게 만들었다.
  • 채널간의 관계를 모델링하고 중요도를 파악
  • Attention 생성 방법
    • Squeeze: global average pooling을 통해서 각 채널의 공간정보를 없애고 각 채널의 분포를 구한다.
    • Excitation: FC layer하나를 통해서 채널간의 연관성을 고려해서 gating하기 위한 Attention score를 생성해 낸다.
  • input값과 위에서 얻은 Attention score를 가지고 rescaling하게 된다. 중요도가 떨어지는 것은 gating이 되도록 즉, 닫히도록 하게 된다.

'AI > 이론' 카테고리의 다른 글

Conditional generative model  (0) 2021.03.11
torch.autograd  (0) 2021.03.10
Object Detection  (0) 2021.03.10
Semantic segmentation  (0) 2021.03.09
Annotation data efficient learning  (2) 2021.03.08
Image classification I  (0) 2021.03.08
그래프 신경망이란 무엇일까? (심화)  (0) 2021.02.26
그래프 신경망이란 무엇일까? (기본)  (1) 2021.02.26

+ Recent posts