EECS 498-007 / 598-005 Deep Learning for Computer Vision (Lecture 7 : Convolutional Networks)

cjun·2022년 4월 5일
1

EECS 498-007 / 598-005

목록 보기
7/7
post-custom-banner

Convolutional Networks

  • 그동안 배웠던 linear classifier에서는 공간적인 정보를 담지 않음.
  • 이 문제를 해결하기 위해서 Convolutional Networks를 고안

  • Fully-Connected layer에서는 input vector에 weight matrix와 비선형 활성화 함수를 곱해 output vector를 만듦.

  • Convolutional Network에서는 3가지 중요한 연산과정을 거침

    • convolution layers
    • Pooling layers
    • Normalization

Convolution Layers

  • 기존 Fully-Connected Layer에서는 input Vector를 1차원으로 펼치고 이를 Weight Matrix와 연산해 주어서 Output 결과를 얻음
  • Convolution Layer에서는 input으로 3차원의 tensor를 넣고 1차원으로 펴줄 필요 X
  • 위의 이미지의 3차원에서 빨간색 3이 나타내는 것은 depth 혹은 channel이라고 부르며 이미지의 RGB 3채널을 나타냄.
  • 위의 이미지에서 32X32는 이미지의 width와 height을 나타냄.
  • 이때 3차원 input에 곱해줄 filter라고 불리는 Weight Matrix 또한 3차원
  • filter는 3차원 input image에 순차적으로 연산해주어 3차원 output을 얻음.
  • 이때, filter의 channel은 항상 input의 channel과 같아야함.

  • input 이미지의 특정 위치에 filter를 할당을 하고, 이를 dot product해주어 공간 정보를 얻음.
  • 예를 들어서 filter 사이즈를 3X5X5라고 할때 3X32X32 input에 매칭 가능한 모든 부분을 연산하여 1X28X28 activation map을 얻음.

  • 물론 하나의 Convolutional layer로는 충분하지 않으며, weight가 다른 filter를 함께 사용
  • activation map은 input 이미지에 대해서 각각의 filter가 얼마나 영향을 미치는지 알려줌.

  • Convolution layer의 filter는 hyperparameter로 지정을 해줄 수 있고
  • filter의 size는 input채널 X output채널 X filter width X filter height
  • batch 사이즈가 늘어나게 되면 filter 사이즈는 그대로, activation map는 batch 사이즈 만큼 늘어남.

  • Convolutional layer를 3개 가진 Neural Network를 예로 들면
  • 첫번째 convolutional layer는 input 채널이 3, output 채널이 6, 필터 크기가 5X5인 6X3X5X5인 필터를 가짐.
  • 두번째 convolutional layer는 input 채널이 6, output 채널이 10, 필터 크기가 3X3인 10X6X3X3인 필터를 가짐.
  • 세번째 convolutional layer는 input 채널이 10, output 채널이 12, 필터 크기가 5X5인 12X10X3X3인 필터를 가짐.
  • 각각의 convolutional 연산은 linear 연산과 같으며 여러 층을 쌓아도 하나의 linear 연산과 같음.
  • 따라서 non-linear activation function을 추가해주어 문제를 해결

  • Linear classifier에서는 각 클래스별로 하나의 template을 만들었고,
  • MLP 에서는 첫번째 layer의 경우 Weight Matrix의 크기와 같은 template을 만들었고,
  • Conv filters는 전체 input size와 같은 template을 만들기 보다 작고 지역적인 정보를 학습
  • AlexNet의 경우 첫번째 Convolutional layer에서 edge의 방향과 opposing color 같은 정보의 template을 만듦.
  • AlexNet의 경우 첫번째 Convolutional layer의 대한 output이 64채널을 가지는데 이는 input이미지에 대해서 64종류의 feature vector를 얻었다고 볼 수 있음.

Zero Padding

  • 이 과정을 좀 더 자세히 살펴보면 input 이미지가 7x7, filter size가 3x3일때
  • output은 5x5이고 이는 input(7) - filter(3) + 1 = 5
  • input 이미지를 convolution 연산을 하면 output은 size가 줄어드는 문제 발생

  • 이를 해결하기 위해서 zero padding이라는 기법을 사용.
  • input 이미지의 가장자리에 0으로 채워진 pixel을 추가
  • P = (filter-1)/2로 계산이 되며 output의 사이즈는 전과 동일.
  • Convolution layer를 설계할때, filter 사이즈, filter 개수(채널),padding 값를 hyper parameter로 지정

Receptive Fields

  • input이미지에 대해 Convolutional 연산을 하면 Output은 input 이미지의 local 영역에 의해서만 영향을 받음.
  • 3x3 filter를 예로 들면 output의 특정한 픽셀은 input 이미지의 3x3영역에 대해서만 영향을 받고, 이 3x3 영역을 receptive fields라고 함.

  • convolutional layer를 쌓게 되면
  • 초록색 pixel에 해당하는 receptive fields는 이전 레이어의 3x3에 해당하는 부분이지만,
  • input image의 7x7, 첫번째 layer에서의 5x5 정보를 담게 됨.
  • layer가 쌓일때마다 output이 input에서 영향을 받는 영역은 선형적으로 증가
  • 고해상도의 이미지의 경우 output에서 input의 넓은 영역에 영향을 받으려면 layer를 매우 많이 쌓아야함.

Strided Convolution

  • 이 문제를 해결하기 위해 stride라고 불리는 hyper parameter를 추가
  • stride=2라고 하면 기존에 input image의 가능한 모든 위치에서 convolutional filter를 연산해주었던 것 대신에
  • input image에 두번째 마다 convolutional filter를 연산
  • 이 과정을 통해서 output은 down sample이 매우 많이 되며, receptive fields를 쌓는것이 훨씬 빨라짐.
  • 이를 공식화 하여 output의 사이즈를 계산할 수 있고



  • 위와 같이 계산 가능

Convolution Summary

Other types of convolution

  • 지금까지 2d convolution만 다뤘지만 1d convolution, 3d convolution 모두 가능하며
  • 1d convolution은 순서대로 발생하는 textual data나 audio data에 사용되며
  • 3d convolution 은 point cloud data 혹은 3d data에 사용됨.

Pooling Layers

  • Pooling layer는 downsample 역할을 하며 학습 가능한 parameter를 포함하지 않음.
  • 이전에 stride를 통해서 downsample 하는 방법을 배웠지만, Pooling layer를 통해서도 가능.
  • 학습 가능한 parameter는 없지만 필터 사이즈를 가지며 convolution layer와 비슷하게 동작.
  • 이전 레이어의 receptive fields를 pooling 연산을 통해서 하나의 output을 얻음

  • filter size : 2x2, stride : 2 인 Max pooling은 가장 흔한 pooling layer중 하나
  • stride가 2인 이유는 pooling region이 겹치지 않게 하기 위해서이며
  • 2x2 region을 하나로 요약하는 기능을 함.
  • pooling layer의 장점 중 하나는 학습시킬 파라미터가 없다는 것이고,
  • 다른 하나는 해석의 불변성인데, input 이미지가 조금 움직이더라도
  • 즉, pooling region 내에서 움직이더라도 maxpooling의 결과는 같음.

Convolutional Networks

  • Convolutional Network는 위와 같이 conv, ReLU, Pool 조합의 반복이며
  • 이후 Flatten, Fully Connected layer로 이루어짐.
  • network가 진행 될수록 pooling과 conv stride로 인해서 Spatial size 는 줄어들지만 channel의 수를 늘려 전체 volume은 보존됨.

Normalization

  • Deep Network는 학습시키기 매우 우려움
  • Normalization을 통해서 이를 쉽게 만듦.

Batch Normalization

  • MLP에서 layer가 진행때마다 데이터의 분포가 변하는 것을 internal covariant shift라고 하는데
  • optimize를 하는데 어려움을 겪게하여 internal covariant shift를 줄여주기 위해서
  • 이를 평균이 0이고, 분산이 1인 데이터로 normalize함.
  • Network에 layer를 하나 추가하여 데이터의 분포를 정규화 시키는 것을 Batch Normalization이라 함.

  • 한 배치당 데이터수를 N이라고 하고, 각 데이터의 차원을 D라고 할때,
  • 각 차원별로 평균과 분산을 구하고 이를 이용하여 Normalization
  • 그러나 minibatch에 의존하므로 test-time에서는 사용할 수 없고
  • test에서는 training에서 의 평균값을 이용해 평균과 분산을 구함

  • batch normalization은 fully-connected network와 convolutional network에서 둘다 사용 가능
  • convolutional network에서는 spatial 정보 또한 고려해서 nomalization

  • 주로 fully-connected layer나 convolutional layer뒤에서 쓰이고, nonlinear함수를 사용하기 전에 사용된다 함.


profile
Sometimes You gotta run before you can walk.
post-custom-banner

0개의 댓글