CS231n- 5강

CS231n- 5강

  • 강의를 듣고 cnn 구조에 대해 이곳 저곳에서 이해해보고 다시 구성한 글입니다.

Convolutional Neural Networks

  1. 구조

    • (Convolutional layer - Relu- Pooling) X 반복 - Fully Conneted Layer
    • 앞의 과정을 Feautre extraction이라고 한다고 한다.(참고 https://www.slideshare.net/modulabs/2-cnn-rnn)
  2. Fully connected Neural Network(FCNN)와 비교

    • 사진데이터를 FC신경망에 학습을 할 경우 3차원 사진데이터를 1차원으로 평면화 시켜야 한다

    • 사진 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수 밖에 없다.

    • CNN은 이미지의 공간 정보를 유지하면서 필터,polling layer를 통해 이미지의 특징을 추출하고 학습할 수 있다는 장점을 갖고 있다.

  3. Convolution Layer

  • 32 * 32 * 3 이미지에서 5 * 5* 3 filter 만큼의 이미지를 가져오는 것

  • filter의 depth는 원 이미지의 depth와 같아야한다

  • filter는 이미지에 차례로 돌아다니면서 이미지의 정보를 filter가 뽑아내고자하는 특성을 수집하고 그것을 모아 둔 것이 activation map

  • 필터를 여러개 사용하면 하나당 하나의 activation map을 만든다.

    • filter & stride

      밑의 예시와 같이 7 7 input에서 3 *3 filter을 적용한다고 했을 때 *filter가 얼마나 움직일지 그 크기를 stride라고 한다.

      stride가 1이라고 하면 오른쪽으로는 5번이동할 수 있고 아래로는 5번이동 할 것이다.

      따라서 output은 5 * 5가 나올 것이다.

      stirde가 2이라고 하면 오른쪽으로는 3번 아래로는 3번이동할수 있을것이다.

      따라서 output은 3 * 3이 나올 것이다.

그래서 위와 같은 공식을 얻을 수 있게 된다

N - filter을 적용할려고 하는 이미지의 한면의 길이

F - filter의 한면의 길이

stride - filter의 stepsize

  • Zero paddig

filter을 사용하다보면 output사이즈가 작아지는 경우 위와 같이 ouptut 사이즈가 줄어든다 그렇게 되면 정보의 손실이 일어나게된다.

이를 위해서 원래 이미지의 테두리에 0을 배치한다 단, 크기는 (Filter 사이즈-1)/2 크기로 만들게 된다.

F=3이라면 zero pad을 1만큼 덧붙인다.

  1. Pooling layer
  • 풀링레이어는 convolution layer의 activation map의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용(down sampling)

  • max-pooling이 대표적인 pooling 방법

  • 각 박스(filter)안에서 가장 큰 값을 선택해 가져오게 한다.
  • 가장 강한 feature만 남긴다.
  1. Fully Connected Layer
  • 마지막 fully connected layer을 통해 기존 ordinary NN처럼 결과를 낸다.
  1. Summary
  • 참고사이트

https://www.youtube.com/watch?v=bNb2fEVKeEo

https://hamait.tistory.com/535

https://www.slideshare.net/leeseungeun/cnn-vgg-72164295

Continue reading

Pagination


© 2018. by Gangmin

Powered by zzsza