티스토리 뷰

AI

[CNN] Convolution Neural Network 1

감자형 2018. 10. 4. 02:11

안녕하세요 감자개발자의 감자코딩입니다. 이번에 알아볼 내용은 CNN에 대한 기본 개념에 대해 살펴볼것인데요. 간략히 개념 정리한것에대해서 올리겠습니다.


CNN은 무엇인가?(convolution Nerual Network) 


1. CNN의 기본적인 구조

예를 들어 생각하겠습니다. 일단 우리는 2라는 숫자가 있다고 가정을 하겠습니다. 2라는 값이 입력값으로 들어오게 된다고 생각을 해봅시다

2라는 값이 input으로 들어오게 되면

5X5 matrix(2라는값이 쓰여진 매트릭스)는 하나의 배열인   25*1 layer 배열로 들어가게됩니다.

이것은 바로 조금만 픽셀이 없어나 있어도 엄청난 파장을 일으키게 된다.


2. 우리는 어떻게 숫자를 인식하나?


숫자가 2인지를 어떻게 확인할 것인가?

머리,꼬리,연결선을 가지고 2를 확인한다. -> 이것이 CNN

filter를 씌우면서 숫자들을 하나씩 곱하게 된다. 이때 우리는 무엇을 할것이냐 , 이것에 대한것들을 하나씩 이동하면서 필터를 적용시킬 것이다. 이것은 이미지의 특징을 보기위한 조그마한 사각형이다. 

이러면서 필터를 조금씩 옮기는것은? 과연 무엇이라 할까요? 

Stride 라고 불리어 옵니다. Stride를 하면서 조그마한 공간을 리셉티브 필터라고 하게 됩니다.


예를 들면) 

2*2 Filter(kernel)의 경우를 보면

대각선이 겹치는 부분에 대해서 확인을 한다.

검은색에 가까울수록 255

흰색에 가까울수록 0

이것을 바로 Gray Scale이라고 표현하게 되는것입니다.


ㅁ(이미지)  *  ㅁ(이미지) 매트릭스끼리 곱하여 결과값을 가져오게 되는데, 이때는  필터랑 겹치는부분에 있어서의 값을 output으로 뽑아내게됩니다.

그 결과가 작게나오면 유사성 낮고, 크게나오면 유사성이 크게 됩니다.


3.  Convolutuin Layer 의 기능


CONV 학습했던 convlution layer - 가장 Low레벨의 특징을 찾게된다.

숫자같은경우 (머리 꼬리 커넥터) 이후에 점점더 High(사각,동그라미)등을 찾게된다.

찾아진 feature들을 찾아내어서 이제 그것을 차인지 차가아닌지를 찾게 된다.



4. PooL layer - stride(필터를 조금씩 옮기게 되는것) 구조:


Filter(2*2) -> input(5*5) -> feature map(4*4) 

의 구조를 가지면서 stride를 하면서 결국에 최종의 feature map을 얻게될것이다.

이렇게 feature map(output)에서 Max Pooling을 하게 되면 가장큰 값을 가져오게 된다.

그러면 feature map(4*4)에서 -> 2*2 matrix로 바뀌게 된다. 


 왜 이것들을 하게되냐?

matrix의 row,column의 값도 작아지게 되며,  컴퓨팅 리소스를 적게 쓰고 메모리사용도 적게쓰기위한 것이다.


4. Zeropadding이란?


예를 들어 가정하겠습니다.  2*2(filter) -> 5*5(input) -> 4*4(feature map)


 정보를 잃지않기 위해서 그 주변을 삥둘러서 (7*7)의 Layer를 얻게 된다.

 왜 이렇게 되냐? 7*7의 layer를 하게 되면 3*3의 필터로 인하여 -> 결국 5*5의 layer를 얻게되기때문이다, 따라서 input layer == output layer가 같아 지는 결과가 발생하게 된다.

이 정보는 cnn에게 끝부분이라는것이라는 힌트를 주게된다. 이미지인식에 있어서 인식률이 높아지는 성과를 알아낼 수 있습니다.


또 빨강 노랑 파랑이라는 2라는 이미지가 있는 세개의 메트릭스가 있다고 가정하겠습니다.

weight value는 각각 , color에 따라 따로 존재하며, filter에 따라  각각의 feature map을 얻게 됩니다.


나타내는 형식을 살펴보겠습니다.

5*5(이미지)의 레이어가 3개 있으면 -> (5,5,3) 로 나타내게 되며,

optimizer을 할때 사용하는 방법은 back propagation 라는 방식을 사용하게 됩니다.


5. optimizer할때는 어떤방식을 사용하나?


back propagation / gradient value(기울기 값에 따른 처리)를 사용하게 됩니다.


Reference: 허민석님 강의









공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함