인공지능/Computer Vision

합성곱 연산(Convolution operation)

해리누나 2023. 5. 14. 05:32
728x90
반응형

출처: https://www.youtube.com/watch?v=ArPaAX_PhIs&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=1

 

다충 퍼셉트론으로 이미지 인식 문제를 처리해야 한다고 가정해보자.  위의 고양이 이미지의 크기를 1000 x 1000이라 해보자. 추가로 칼라이미지라 채널을 3개를 가지니 해당 이미지의 차원은 1000 x 1000 x 3 으로 총 3백만 개의 픽셀값으로 이루어진 것이다. 따라서 신경망에서 입력층은 총 3백만개의 입력특징을 갖게 된다. 만일 이 신경망에서 첫 은닉층에서 1000개의 은닉노드가 있다면 첫번째 은닉층로 가는 매개변수의 수는 3,000,000 x 1000 = 삼십억개가 된다. 이렇게 변수가 크면 큰 만큼의 충분한 데이터를 얻어서 과적합을 방지하기가 어려워진다. 또한 메모리의 요구사항이 몇 십억개의 변수를 학습하기에는 적합하지 않을 수도 있다.

 

하지만 합성곱 연산을 통해 이미지의 크기에 대해 고민할 필요가 없어졌다.

이 합성곱 연산이 어떻게 이뤄지는지 보자.

 

 

합성곱 연산 (Convolution operation)

 

합성곱층은 합성곱 연산을 통해서 이미지의 특징을 추출한다.

합성곱은 필터(Filter) 또는 커널(Kernel) 이라 불리는 행렬로 이미지를 처음부터 끝까지 겹치며 훑으면서 필터와 겹쳐지는 부분의 원소끼리 값을 곱해서 모두 더한 값을 출력으로 한다. 이때 이미지는 가장 왼쪽 위부터 가장 오른쪽 아래까지 순차적으로 훑게 된다.

 

  • 필터는 일반적으로 3 × 3 또는 5 × 5의 크기를 사용한다. (대부분 홀수 x 홀수의 크기를 사용함)

 

예시로 3 x 3의 필터로 5 x 5 이미지에 합성곱 연산을 수행하는 과정을 보자. (이 때 한 번의 연산을 1 step 이라 하겠다.)

첫 번째 스텝

 

두 번째 스텝

 

이렇게 위에서부터 왼쪽에서 오른쪽으로 한 번 훑은 다음에는

 

 

한 줄 내려와서 차례로 또 계산한다.

 

마지막 스텝

 

이렇게 이미지의 하단 오른쪽 모서리 부분까지 흩어주면 계산은 끝난다. 입력으로부터 필터를 사용해 합성곱 연산을 통해 나온 오른쪽의 결과를 특성 맵(feature map)이라고 한다.

 

합성곱 연산: (5 x 5 이미지) * (3 x 3 필터) = (3 x 3 특성맵)
합성곱 관계식: (n x n) * (f x f) = (n - f + 1 x n - f + 1)

위의 예시를 기반으로 합성곱의 관계식을 세워볼 수 있다.

 

 

 

스트라이드 (Stride)

위의 예시에서는 이동범위가 한 칸이었는데 이동범위도 사용자가 다르게 설정해 줄 수 있다.

스트라이드를 2로 두었을 때의 합성곱 연산과정이다. 이동 범위가 늘어난 만큼 합성곱 연산을 적게 하니 특성 맵이 더 작아질 수밖에 없다.

 

합성곱 연산: (5 x 5 이미지) * (3 x 3 필터) = (2 x 2 특성맵)  |  s(스트라이드) = 2
관계식: (n x n) * (f x f) = [(n – f) /s + 1 x (n – f) /s + 1]

스트라이드가 1이 아닐 때의 관계식은 위와 같다. 만일 $(n-f)/s$ 의 값이 정수가 나오지 않을 경우 내림갑으로 해서 계산하면 된다.

 

 

 

위의 필터는 소벨 필터로 x 필터는 세로(수직)를 y 필터는 가로(수평) 윤곽선을 검출하는 필터다. 예전에 딥러닝이 발전하기 전에는 위의 소벨 필터처럼 사람이 직접 필터의 요소 값들을 직접 골랐는데 그러지 않아도 된다. 필터의 요소들을 변수로 설정한 다음 기계가 스스로 학습해가며 적절한 숫자들을 찾는다. 이 변수들을 다충 퍼셉트론에서의 가중치 역할을 한다고 보면 된다.

 

 

가중치와 편향

 

출처: https://wikidocs.net/64066

왼쪽은 다충 퍼셉트론으로 이미지를 처리한다고 했을 때다. 초반에 업근한 것처럼 각각의 이미지 요소들이 다음 은닉층과 전부 연결되니 9개의 입력 이미지 요소  x  4개의 첫 은닉층의 은닉 노드 = 총 36개의 가중치를 가지게 된다.

 

하지만 합성곱 신경망을 통해 이미지를 처리하게 된다면 각 합성곱 연산마다 이미지의 모든 픽셀을 사용하는 것이 아니라  필터와 맵핑되는 픽셀만을 입력으로 사용한다. 따라서 결국 이미지 전체를 흝으면서 사용되는 가중치는 고작 4개($w_1, w_2, w_3, w_4$) 뿐인 것이다.

 

합성곱 신경망에도 편향(bias)를 추가할 수 있다. 필터가 적용된 뒤에 편향이 추가된다. 편향은 하나의 값만 존재하며, 커널이 적용된 결과의 모든 원소에 더해진다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형