본문 바로가기
AI 딥러닝/DLA

[CNN] 컨볼루션 쉽게 계산하기

by 깊은대학 2020. 7. 25.

일반적으로 많이 쓰이는 ‘뒤집기와 이동’ 방법을 사용하여 컨볼루션을 계산해 보자.

공식을 잘 살펴보면,

 

y[n]=k=h[nk]x[k]

 

우선 x[n]h[n]x[k]h[k]로 바꿔야 한다는 것을 알 수 있다. 그리고, h[k]를 뒤집어서 h[k]로 만든 후, n만큼 이동시켜서 h[nk]를 만든 후, k에 대해서 x[k]h[nk]를 곱한 다음, k에 대해서 h[nk]x[k]를 모두 더하면 y[n]을 계산할 수 있다는 것을 알 수 있다. 그리고, 모든 n에 대해서 위 과정을 반복하면 된다.

 

 

그럼 해 보자.

다음과 같이 임펄스 반응과 입력 신호가 있다고 하자.

 

 

h[n]x[n]h[k]x[k]로 바꾼다.

 

 

h[k]를 뒤집고 이동시켜서 h[nk]를 만든다.

 

 

n=0에서 k에 대해서 x[k]h[nk]를 곱하고 더한다.

 

 

n=1에서 k에 대해서 x[k]h[nk]를 곱하고 더한다.

 

 

n=2에서 k에 대해서 x[k]h[nk]를 곱하고 더한다.

 

 

이런 식으로 h[nk]x[k]영역을 빠져나갈 때까지 계속 반복한다.

n=7에서는,

 

 

n=8에서는 h[nk]x[k]영역을 완전히 빠져나간다.

 

 

컨볼루션 계산 결과는 동일하다. 하지만 '뒤집기와 이동' 방법이 이해하기는 쉽다.

정리하면 다음과 같다.

입력 신호와 임펄스 응답이 다음과 같을 때,

 

 

컨볼루션은 다음과 같이 h[n]을 뒤집어서

 

 

x[n]영역의 처음부터 빠져나갈 때까지h[n]을 이동하며 겹치는 부분을 곱셈과 덧셈을 반복하여 계산한다.

 

 

댓글