부캠 TIL 0908 - image classification backbone

기린이·2021년 9월 8일
0

부캠 TIL 🦆

목록 보기
25/53
post-thumbnail

Probleurems with deeper layers

Going deeper with convolutions

  • 깊고 넓어질수록 더 큰 receptive field, non-linearity를 가진다.
    그러면 계속 깊어지면 계속 좋아지나...?

아니다.

왜냐하면

  • computationally complex

  • degradation

    보통 overfitting이라고 많이 생각하는데, 이건 아니라고 한다.

    overfitting때문이라면 56-layer가 더 train error가 낮아야한다.

    결국 layer가 깊어지면 학습을 잘 못하는 이유는 backpropagation이 잘안돼서 그런거다.

CNN architectures for image classification 2

GoogleNet

  • 다양한 커널 적용
  • depth가 아닌 width확장
  • 1x1 convolution을 적용, 채널수를 줄여 복잡도 감소

  • conv layer
  • stacked inception modules
    인셉션 모듈 많이 쌓는다
  • auxiliary classifiers
    모듈많이 쌓아서 gradient역전파 잘 안됌 중간중간 gradient 더 주입
  • fc-layer

ResNet

  • degradation문제를 residual connection(skip connection, shortcut connection)으로 해결
  • x, h(x)의 차이를 학습
  • 2^n개의 path가 생성
  • 다양한 path로 더 복잡한 매핑 생성 가능
  • gradient가 shortcut으로 들어가면 소실 문제 해결
  • he initialization
  • 3x3 conv
  • residual block 단계가 나뉘어져 있어 다음단계로 갈때마다 stride2를 줘서 피처맵크기는 작아지고, 채널은 2배가 된다.

Beyond ResNet

Densenet

  • resnet보다 더 뒤의 레이어까지 연결됌
  • +가 아니라 concat(channel axis)

SENet

  • Squeeze: global average pooling으로 채널별로 값 1개씩
  • Excitation: 채널별로 weight적용

EfficientNet

  • width (google net)
  • depth (resnet)
  • resolution
    위의 3가지 요소를 모두 적용

Deformable convolution

  • conv filter
  • offsets

Summary of image classification

Summary of image classification

CNN backbones

  • googlenet이 가장 좋지만 구현의 어려움이 있는 경우가 많다
  • 따라서 resnet이 가장 많이 쓰임
  • 질문
    batch norm 언제 적용?

    그리고 ReLU와 같은 Activation function을 적용하기 전에 적용하는 것을 추천하고 있습니다.
    왜냐하면 배치 정규화의 목적이 네트워크 연산 결과가 원하는 방향의 분포대로 나오는 것이기 때문에 핵심 연산인 Convolution 연산 뒤에 바로 적용하여 정규화 하는 것이 핵심입니다.
    즉, Activation function이 적용되어 분포가 달라지기 전에 적용하는 것이 올바릅니다. 출처

profile
중요한 것은 속력이 아니라 방향성, 공부하며 메모를 남기는 공간입니다.

0개의 댓글