모두를 위한 딥러닝

[DL] 모두를 위한 딥러닝 11-1 CNN introduction

승무_ 2022. 4. 24. 23:34

CNN의 기본 아이디어는 고양이 실험에서 시작되었습니다.

 

시각 피질 안의 많은 뉴런들이 시야의 일부 범위 안에 있는 시각 자극에만 반응을 한다는 내용입니다.

어떤 뉴런은 수직선의 이미지에만 반응하고, 다른 뉴런은 다른 각도의 선에 반응하는 뉴런이 있는 등

일부 영역에만 반응하였습니다.

 

자세한 내용은 링크를 참고하세요: https://excelsior-cjh.tistory.com/180

 

 

하나의 이미지를 여러개의 컨볼루션 필터를 통해 서로 다른 특징점들을 뽑아내는 방법을 이용하였고,

ReLU와 Pooling레이어를 조합한다.

마지막 부분에서는 분류를 위해 FC레이어를 붙여 사용한다.

 

컨볼루션 필터의 수는 Input 채널의 수와 동일해야 한다.

*)3은 color수 ->R,G,B

*)컨볼루션 연산을 통해 하나의 값을 만들어내게 된다. (XW+b 연산을 통해)

이는 기존에 알고있는 연산과정과 비슷하다.

활성화 함수인 ReLU도 적용이 가능하다.

 

이러한 과정을 전체 이미지에 적용하여 Output을 만들어내게 된다.

 

How many numbers can we get?

컨볼루션 연산이 어떻게 이루어지는지 자세히 알아보자.

Stride가 1이라면 필터가 1칸씩 이동하며 output을 만들어 낸다.

따라서 위의 그림의 경우에는 5x5크기의 output이 만들어지게 된다.

 

stride가 2라면 필터가 2칸씩 이동하므로 3x3크기의 output이 만들어 진다.

 

output 크기에 대한 수식은 위의 수식과 같다.

 

*Padding기능을 사용하면 Input과 Output의 크기를 동일하게 유지할 수 있다.

 

Padding은 가장자리를 0으로 채워 컨볼루션 계산에 의한 크기 손실을 막는 역할을 한다.

Padding에 관련된 수식은 위의 사진과 같다.

사용하는 필터의 갯수에 따라 output의 크기도 달라지게 된다.

다른 w,b를 가진 필터를 더 만든다

(노란색이 파란색에 대해 첫번째 만들어 진거, 초록이 파란색에 대해 두번째 만들어 진거)

만약 6개의 필터를 사용하게 된다면 출력값의 채널은 6이 될것이다.

즉, 필터의 갯수와 같다.

이러한 과정을 여러번 적용할 수 있다.

첫번째 레이어의 필터수는 6 이므로 6개의 채널로 출력이 되었고

두번째 레이어의 필터수는 10 이므로 10개의 채널로 출력이 되었다.

 

여기서 총 가중치의 갯수는 5x5x3 X 6 + 5x5x6 X 10개가 될 것이다.