논문_분석

Convolution_합성곱

대장장ㅇi 2024. 7. 20. 18:18

논문을 분석하는 중에 합성곱에 대해 확실히 이해해두고 가면 좋을듯 해서 정리합니다!

 

 

Convolution 의 필요성

Input Image

합성곱을 알아보기 전에 컴퓨터가 이미지를 어떻게 식별하는지를 확인해보면

밑에는 흑백 이미지로 작은 사각형으로 이루어져 있다. 이 각각의 작은 사각형을 픽셀(pixel) 이라고 한다. 

위 이미지를 살펴보면 가로 16, 세로 24 개의 픽셀이 존재한다. 이때 흑백 이미지는 위에와 같이 하나의 채널로 이루어져

가로(16) x 세로(24) x 1 로 구성돼어 24x16 행렬의 형태로 컴퓨터가 이미지를 식별하게 된다.

 

 

밑에는 컬러이미지 이다.

 컬러 이미지는 Red, Green, Blue 로 구성되는데 이때 각각의 행렬이 존재하여 채널수가 3개 이다.

즉 가로(5)x 세로(5) x 3 으로 구성된다.

 

 

따라서 입력 이미지를 컴퓨터가 식별하기 위해서는 행렬값으로 표현이 되는데, 이때 흑백 이미지는 채널이 한개/ 컬러 이미지는 채널이 3개 로 이루어져 있다고 생각하고 넘어가면 좋을듯 하다.

 

 

 

Convolution 

이해하기 쉽게 이번에는 흑백 이미지로 예시를 들어서 설명을 하면,

 

위에와 같이 7x7x1 의 흑백 이미지는 7이라는 숫자가 적혀져 있다. 이때 사람의 눈으로는 7이라는 값이 바로 판단이 되지만 컴퓨터가 이를 이해하기 위해서는 이미지를 flattening 해서 은닉층에 전달하게 된다. 

 

다만 위에처럼 flattening 하게 되면 사람이 보기에도 원래의 형태가 무엇인지 알아보기 어렵다. 이는 컴퓨터도 마찬가지로 flattening 하기 이전에 존재하였던 공간적인 구조의 데이터를 무시하게 된다.

결국, 이미지의 공간적인 특징을 유지하기 위할 방법이 필요했고, 이를 해결하기 위해 Convolution 이 나타났다.

 

 


Convolution 수식

$$ (f * g)(t) = \int_{-\infty}^{\infty} f(\tau)g(t - \tau) \, d\tau $$

 

위는 Convolution 의 수식이다.

수식을 살펴보면, 함수 f가 함수 g에 의해 영향을 받아 새로운 함수를 생성해 내는것이다.

 

밑에 그림을 보면서 이해해보자.

 

 

 

 

 

옆에와 같다면 

g(t - \tau)는 y축을 기준으로 좌우 반전이 된 함수 g를 우측으로 t 만큼 이동한 함수 g(t - \tau) 와 f(\tau)를 곱한 적분이다.

 

 

 

 

 

만약 t=3인 경우를 생각해보면

 

이때 두 함수를 곱한 f(\tau) * g(t - \tau) 를 적분하면 노란선이 0 에만 있으므로 적분값인 즉, convolution 값이 0이 된다.

 

 

만약 t=1 이라면

 

따라서 최종 적분 값은

위와 같다.

 

 

이를 수식으로 다시 살펴보면

 

따라서 시간의 흐름에 따라 데이터 g(t) 가 이동하면서 입력 데이터 f(t) 를 평균적으로 얼마나 변화시키는지 나타내는 것을 convolution 으로 정의한다.

 

 

다시 돌아와서 Input Image 로 살펴보면

다음과 같이 Convolution 연산이 진행됨을 볼 수 있다.

 

 

 

 


Color Image Convolution

 

위에서 흑백 이미지에서의 Convolution을 살펴보았으니 이제 컬러 이미지에서의 Convolution 연산을 살펴보면

 

 

다음과 같이 표현된다.

공식을 통해 살펴보면

 

Input Data: W1 x H1 x D1 (가로 x 세로 x 채널)

Parameter 

1. Filter 수 : K

2. Filter 크기 : F

3. Stride : S

4. Padding : P

 

Output Data: W2 x H2 x D2 (가로 x 세로 x 채널)

1. W2 = (W1 - F + 2P)/S + 1

2. H2 = (H1 - F + 2P)/S + 1

3. D2 = K