본문 바로가기
KAIST MASTER📚/CS231n

[CS231n] Lecture 5 - Convolutional Neural Networks

by 말랑e 2021. 2. 3.

 

www.youtube.com/watch?v=bNb2fEVKeEo&list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv&index=5

Stanford University에서 2017년도에 강의한 CS231n를 들으며 정리, 요약했다.

4강 Convolutional Neural Networks for Visual Recognition 강의 요약 시작!


intermediate feature 을 얻을 수 있다.

 

간략한 역사

1957 : 퍼셉트론

2012 : Alexnet

Convnet은 빠르게 발전하여 classification, detection, segmentation, image captioning 등에 이용된다

 

Fully Connected Layer

input을 쭉 펴서 행렬곱함

 

Convolution Layer

filters는 항상 input의 depth와 같은 depth를 가짐 (3)

5*5*3의 chunk가 하나의 값을 만듬

이렇게 모인 값들이 activation maps를 만듬

2번째 green filter가 이 과정을 반복해서 두번째 activation maps를 만들고, 이 과정이 반복됨

conv와 conv 사이에는 activation function이 들어감

low~high level features들

maximize neuron 하는 쪽으로 filter만들어짐

첫번째 filter는 (작은 네모) edge와 같은 activation function을 만들었다

 

conv와 relu를 거치면서 나오는 activation map

다시 여기로 돌아가서

filter가 slide하면서 output을 만듬

slide하는 간격을 stride라고 함

stride가 3이면 간격이 안맞다

공식화 시키면 저렇게 된다

실제로는 padding이라는 기법도 사용됨

(7+2 - 3) / 1 +1 = 6+1 = 7

이기에 7*7 output이 나온다

Zero padding을 하는 이유?

input size인 7*7을 maintain시켜주는 역할을 할 수 있기 때문

(F-1)/2 하면 원래 size유지 가능

padding안하면 deep network에서 점점 작아져서 사라질 것임

그러고 edge나 coner정보를 잃을 수도 있다.

 

Example

32*32*3

10 개의 5*5

그럼 (32+2*2-5)/1+1 = 32 size의 10 channel이 될 것이다

이 때, parameter의 수는?

(3*5*5+1)*10

input channel 수 * filter크기 =>하나의 filter의 parameter 수 이고

하나의 filter에 하나의 bias가 추가

Summary

1*1 convolution도 존재

Example : Torch and caffe

 

Conv와 Fully Connected Layer 비교

FC는 output 한점에 모든 input이 대응됨

conv는 5*5*3이 한 동그라미에 대응됨

Pooling Layer

Max Pooling

stride 2 pooling이다

최댓값만을 택함

왜 avg보다 max를 사용하나?

얼마나 neuron(filter)이 fire했나를 보여주는 지표이니 중요한 정보라고 볼 수 있어서

Stride vs Pooling

다운샘플링 시 요새는 stride를 더 많이 사용함, 선택사항이긴함

Summary

pooling에는 주로 padding을 사용하지 않음

ConvNetJS demo

Summary

 

댓글