본문 바로가기
딥 러닝

06.CNN ( Convolutional NN )

by Jnamelight 2017. 12. 27.



CNN 의 초기 모델은 고양이 뇌 실험에서 시작되었다.


이미지를 나눠서 판단한 후에 판단된 결과를 다시 합쳐서 전체의 그림을 판단하는 방법이다.





만약 차그림이 있다고 가정하자


위와같이 CONV , RELU ,POOL 로 나눠서 그림들을 판단( 트레이닝 ) 시킨다.


그럼 나중에 값들을 종합해서 자동차 라는 결과를 뽑아내는 방식이다.





그럼 어떤 방법으로 그림을 나누는가? 



필터를 이용한다. 예전에 대학교때 영상처리 공부를 하면서 마스크에 대해서 공부한적이 있다.


그와 비슷하게 어느 특정한 필터를 주어서 하나의 값을 뽑아내는 방법이다.



여기서 중요한건 필터를 구성하는 방법,몇개의 값들이 나와야 하는가인대



1. 필터는 우리가 사용했던 방법으로 Wx+b 의 방식을 사용한다 -> 하나의 값을 나타낼수 있음


2. 몇개의 값들이 나와야하는가에서는 필터의 크기에 따라 결정이된다.




이런식으로 그림의 값이 7 X 7 이고 필터의 값이 3 X 3 이다. 여기서 stide : 1 이면 (stride 란 움직이는 칸수 ,여기서는 한칸씩 이동)


(N - F ) / stide + 1 의 공식을 이용

( 7 - 3 ) / 1 + 1 = 5의 값이 나오게 된다.


즉   5 X 5 의 값이 나오게 된다.




정리하면


그림의 한칸의 값을 입력값으로 잡고 ( x ) , 내가 원하는 필터에 넣는다 ( Wx+b ) 

그럼 값이 나오게 된다 ( 공식에 의해서 )    -> Conv Layer 의 완성  




근대 만약 conv layer가 많아지면, 값들은 계속해서 작아질 것이다.


그럼 원본 그림은 엄청 작아지는 문제가 야기되는대,


여기서 사용되는 방법이 패딩이다 ! , ( 쓰레기값 을 대입 )



패딩을 이용하는 이유는 두가지정도이다.


1. 원본 그림의 크기 유지

2. 그림의 모서리값 판단.



그럼 위와 같이 Conv layer 가 구성이된다. ( e,g = 깊이 를 나타냄 )







polling 의 개념을 알아보자.


polling은 conv layer에서 하나의 layer를 가져와서 샘플링 하는 것이다. ( 영상처리 개념 )




위와같이 각각의 모든 레이어들을 샘플링하여 모아 놓은 것을


풀링이라고 한다.




모아 놓은 풀링 역시 max pooling 작업을 하여 내가 원하는 크기만큼의 값으로 나타 낼 수 있다 ,


맥스 풀링은 말그대로 필터에서 가장 큰값만을 뽑아내는 방법이다.


댓글