본문 바로가기
Computer/DeepLearning

ConvNet의 Conv 레이어 만들기

by hexists 2016. 6. 14.

뒤로 갈수록 이해하기 어려워진다.

오늘 공부한 내용은 Convolutional Nerual Network에 대한 내용이다.


강의는 https://youtu.be/Em63mknbtWo 를 참고.


CNN은 고양이를 통한 실험에서 시작되었다고 한다.

고양이에게 이미지를 보여주고, 뉴런이 활성화되는 부분을 관찰하니, 이미지의 부분 부분 마다 활성화되는 곳이 달랐다는 것이다.(Hubel & Wiesel, 1959)


전체적인 그림은 하나의 이미지를 잘라서 아래처럼 구성하는 것이다.

CONV RELU CONV LERU POLL CONV RELU ... FC(fully connected nerual network) 


32 X 32 X 3의 이미지가 있다면, 이미지의 일부분만 처리하는데(filter)

이런 filter를 사용해서 하나의 숫자(one number)로 만든다. =wx + b를 사용해서(=ReLU(Wx + b)

ex) filter size : 5 X 5 X 3,  w1x1 + w2x2 + w3x3 + ... + w25x25 + b


이렇게 필터를 통해 하나의 숫자로 만드는 과정을 이미지에서 stride size에 따라 추출한다.

stride size = 1이라는 것은 N X N 사이즈에서 1씩 shift한다는 의미이다.


7 X 7 이미지에서 3 X 3 filter, stride 2로 뽑는다면 3 X 3이 나온다.


즉, (N -F ) / stride + 1


실제로 사용할 때는 0 padding을 써서 사방에 0을 추가한 뒤 같은 size를 얻도록 하여 사용한다.

=> filter 사용으로 이미지가 작아지는 것을 방지


이런 filter를 여러개 적용하는 것이 convolution layer가 되고, 이를 계산하면 activation maps(x, y, 6)이 이렇게 계산된다.


(CONV + RELU) + (CONV + RELU) + (CONV + RELU) + ...


이런 형태가 CNN이라고 한다.


* 이번 블로그는 주저리 주저리 적어놓은 글이되었다. 좀 더 내용을 이해한다면 수정해야겠다.

* 그리고, 글로만 설명하기에는 부족함을 느낀다. 그림을 그려야 하나 싶다.

'Computer > DeepLearning' 카테고리의 다른 글

CNN case study  (0) 2016.06.14
CNN : Max pooling 과 Full Network  (0) 2016.06.14
레고처럼 넷트웍 모듈을 마음껏 쌓아 보자  (0) 2016.06.09
Dropout & Ensemble  (0) 2016.06.09