관리 메뉴

코딩하는 락커

[Week3] 스트라이드 본문

[2020] 📚 DSC 겨울방학 스터디

[Week3] 스트라이드

락꿈사 2020. 1. 24. 18:15

https://youtu.be/tQYZaDn_kSg

스트라이드 합성곱은 합성곱 신경망의 기본 요소이다. 

 

예제를 통해 stride=2인 경우에 대해 알아보자.

 


먼저 7x7 사이즈의 원본 이미지와 3x3 사이즈의 필터를 합성곱 연산한다고 할 때,  위 이미지에서 볼 수 있듯 4x4 사이즈의 결과 이미지의 최상단 맨 왼쪽의 결과값은 91이 나온다.

 

그리고 다음 합성곱 연산을 한다고 할 때, 한 픽셀 옆으로 것이 아니라 두 픽셀 옆으로 이동하는 것이다. 바로 아래 이미지처럼 말이다.


이렇게 두 픽셀을 뛰어넘어  합성곱 연산을 한 결과 100이 나오고, 그 다음에 아까 한 것과 같이 두 픽셀을 또 뛰어넘는다.


그리고 합성곱 연산한 결과 결과 이미지의 최상단 맨 오른쪽의 결과값은 83이 나오게 된다.

 

그 다음 아래쪽으로 이동할 때도 마찬가지로 3,4,8,7,8,3,4,2,1 파트로 이동하여  합성곱 연산을 하고 쭉 다 이런식으로 하여 결과 이미지를 추출한다.


이렇게 stride=2인 합성곱 연산을 하면 위 이미지 오른쪽과 같은 4x4 사이즈의 결과 이미지가 도출된다.

 

따라서 n x n 이미지를 f x f 필터로 합성곱 연산을 할 때,  패딩을 p로 스트라이드를 s를 가지면 결과 이미지의 크기는  n-2p-f/s+1 x n-2p-f/s+1가  된다. 

 

그래서 7-2(x0)-3/2+1 -=  4/2+1 = 3 이므로 3x3가 된 것이다. 만약 예제와는 다르게 분수꼴이 정수가 아니라면  내림을 해준다. 위 상단의 파란 박스를 계산한다고 할 때,  파란 박스가 패당을 더한 이미지 안에서 꽉차 있을 때만 계산하고 그게 아니라 삐져나간다면 계산을 해주지 않는다는 의미라고 한다....잘 모르겠다.^,^

 

결국 패딩 p와 스트라이드s가 있을 때의 결과 행렬은 [(n+2p-f)/s +1] x [(n+2p-f)/2 +1]가 된다. 


그리고 요소들을 곱하고 더하는 계산 전에 한 가지 과정이 더 있는데, 6x6 행렬과 3x3 필터를 합성곱 하기 전에 위 그림과 같이 가로축과 세로축을 뒤집어 주는 미러링 과정이다.

 

딥러닝 분야에서는 이런 뒤집는 과정을 생략해서 사실상 교차상관이라고 불리는게 맞지만 딥러닝 분야에서는 합성곱이라고 부른다.

 

 이러한 과정을 생략하는 이유는 수학에서는 결합법칙이라고 불리는 이 작업이 신호처리 분야에서는 중요하지만 심층 신경망 분야에서는 별로 소용이 없기 때문이다.

 

아오...끝

 

 

Comments