3 minute read

week 2 Wed 0811

  • convolution의 직관
    • 도장을 찍는다
    • 의미: 필터에 찍는다. 필터 모양에 따라 다른 결과가 나온다. 필터의 평균: 블러 등등
  • 필터의 수만큼 결과의 채널
  • 1번 cov 후 activication.
    • e.g. relu
  • 조심: 파라미터의 숫자 = 채널에 들어가는 칸의 수.
    • f * f * n_c_prev * n_c

구성

  • conv
  • FC: classification. 파라미터 수를 줄이기 위해 최근 트렌드는 뒤를 conv으로 바꿈. 파라미터 수가 * 크면 일반화 성능이 떨어진다.
  • stride: 건너 뛴다
  • padding: 가장 자리에 0을 붙인다
  • 레이어 별로 파라미터 수가 몇개인지 감을 항상 가지고 있어야 한다.
  • 출력의 feature map의 크기를 조정 가능
  • stride = 1, padding = 1이면 입력과 같은 수가 나온다.
  • 네트워크 모양만 봐도 파라미터 수가 큰지 작은지 감이 생겨야 한다. 만단위인지 십만인지 백만인지 등

특징

  • Alex net을 보면 conv 단에서는 파라미터의 수가 K단위
  • dense layer으로 가면 M단위로 바뀐다
  • 왜? parameter sharing
  • dense layer -> conv layer through 1 by 1 conv
  • 1 x 1 conv 직관: h,w, n_c의 3차원 텐서. 1 1 conv chnnel 1개는 전체 n_c에 대해 1번 씩 * conv해서 더함. 내적고ㅏ 같은 의미. 이게 1개의 뉴런. n개의 ㅣ채널이 있으면 n개의뉴런. dense * layer와 같은 연산.

  • 과제 인사이트: cnn의 general performance가 좋더라
  • 레이어에 이름을 주면 디버깅할 때 편하다

moderan cnn

  • 깊어지고 파라미터 작아지고 성능은 좋아진다
  • ILSVRC: object detection 챌린지
  • alex net
    • gpu크기 때문에 두개로 나눔
    • 11 11 필터. 채널 수는 더 많아지게 되어서 결과적으로 비효율
    • 키 아이디어: relu 사용. GPU. data augmentation. drop out. 지금의 잘 되는 기준을 잡은 * 논문. sigmoid. 0을 기점으로 slope가 줄어든다. vanishing grad 발생.
  • VGG net
    • 33 필터 활용. 11 활용해서 fc을 conv으로 바꿈. drop out… why 33 filter? 커지는 이점: * 더 넓게 볼 수 있다. 33 두개 쓰는게 55 하나 쓰는 것과 결과는 같지만 파라미터 수는 훨씬 작아 짐. * parameter sharing. 인사이트: 55 보다 33이 좋다.
  • 구글넷
    • 중간 중간에 11을 써서 더 줄임. 메모리 세이브. 비슷한 모양이 반복. 네트워크 인 네트워크. NIN.
    • inception block 안에 11을 넣어서 보틀넥. 파라미터 수를 엄청 줄인다 + 여러 correlation을 * 모은다. 먼저 11 필터를 사용해서 채널 수를 낮춘다. 11필터를 쓰면 크기는 유지되지만, conv * 레이어에서 output필터 수를 줄여서 전체 채널을 낮춘다. 추상적 정보를 집약시키는 것, 그리고 33,55을 * 적용.
  • resnet
    • 문제: generalization performance. 가 안좋다의 두가지 경우
      1. overffiting: 에폭이 반복될 수록 train에러는 작다. test 에러의 크기가 커진다
      1. 에폭이 반복될 수록 train error도 감소를 안한다.
    • 해결: identity map추가.
    • 차이만 새로 학습.
    • main path에 새로 학습한 내용 더한다
    • 11 필터를 conv 해서 채널 수를 맞춰 준다.
    • batch norm이 conv 뒤에 온다. 논란: relu 다음에 bn이 오기도 한다.
    • 전략: 33 55 필터로 spatial size줄이고 11 필터로 원하는 채널 만들면서 깊게 쌓는다
  • DenseNet
    • resnet은 identity map을 더한다. densenet은 concatinate .
    • 근데 concat은 채널 수가 두배가 됨. 계속 두배가 되면 exp하게 채널 수가 커진다.
    • 구현
    • transition block -> batch norm -> 11 conv(channel 사이즈 줄임) -> 22 avPool -> * transition block
  • cnn으로 뭘 만들어야겠다! -> resnet 혹은 densenet을 써라.# application

sementic segmentaion

  • 픽셀 단위로 어느 object에 속하는지.
  • u net
  • 자율주행
  • 라이더 없이
  • FC을 conv으로 바꿈: convolutionalization. fulliy convolution network으로 바꾸는 것.
  • 왜 이걸 하냐? yolo 예제 처럼…
    • 겹치는 부분이 겹치는 부분이 사실 아니다. conv 특성을 따라 인접 영역까지 내적해서 새로운 칸에 저장. deconvolution = conv transpose
    • spation dimension을 키워준다. 근데 사실 conv에 역은 없다. 복원은 불가능.

Detection

  • RCNN
    • pixel 단위가 아니라 바운딩박스로 classification. 이미지 안에서 패치를 뽑는다. 똑같은 크기로 cnn에 넣는다. 분류는 svl으로 함. linear support vector.
    • 문제: 패치 마다 한번씩 cnn 돌려야.
  • sppnet
    • 1번만 돌자. 결과에서 패치 나누자. 비슷한 RCNN. 바운딩 박스 만들고. 1번 FF. 결과에서 각 박스 결과 확인 및 학습. Fater Rcnn은 바운딩 박스를 뽑는 기준도 학습하자이다. 중간에 RPN (region proposal network): 해당 영역에 물체가 있을지 학습. 바운딩 박스가 유의미한지, 위치와 크기를 어떻게 바꿀지 학습.
  • yolo
    • 바운당박스를 따로 뽑는 rpn이 없다. 이미지 넣으면 한번에 박스도 찾고 classification도 한꺼번에 한다.

Comments