[위 글은 "3Blue1Brown"의 "그런데 컨볼루션이란 무엇입니까?"를 참고하여 제작하였다]
두 개의 다른 숫자 목록(혹은 두 개의 함수)을 결합하여 새로운 숫자 목록(혹은 새로운 함수)을 생성하기 위해서는 어떤 방법이 있을까? 더하기, 곱하기 등 다양하게 있지만 오늘은 컨볼루션(Convolusion)이라는 연산에 대해 알아보며 어떻게 활용되는지를 알아보자.
컨볼루션 자체는 단순한 연산이지만 이 연산을 활용하여 다양한 작업과 응용 분야에서 중요한 역할을 한다. 컨볼루션은 이미지 처리에 흔히 쓰이며 확률론의 핵심 구조이며, 미분 방정식을 푸는 데 많이 사용된다.
일단 확률론을 통해 컨볼루션이 이루어지는 과정을 시각적으로 이해해보자.
1. Convolusion 연산의 시각적 이해
컨볼루션은 확률론에서 두 독립적인 확률 변수의 합에 대한 확률 분포를 계산하는 데 사용되는 수학적인 선형 연산이다. 여러 독립적인 사건의 결과를 예측하거나 분석할 때 중요한 도구이다. 예를 들면 두 주사위의 합을 구할 때 가능한 모든 조합은 고려한다. 합이 4가 되려면 (1,3), (2,2), (3,1)임을 고려해야 한다.
컨볼루션이 합의 분포가 아닌 곱의 분포에 직접적으로 적용되지 않는 이유는 컨볼루션은 두 함수의 겹침을 통해 서로 어떻게 겹치는지 즉, 모든 가능한 합을 취하는 방식이지만, 두 확률 변수의 곱의 분포는 Z = X * Y의 분포를 직접 구해야하는 비선형적 특성과 변수 간의 복잡한 상호 작용을 포함하기 때문이다.
컨볼루션은 독립적인 확률 변수의 합의 분포를 찾는 데 주로 사용된다. 이는 다양한 확률 모델링 및 분석에서 중요한 역할을 한다.
주사위 2개를 던졌을 때 수의 합의 경우의 수의 확률을 알아내는 것을 예시로 생각해보자
모든 쌍을 이와 같이 격자에 배열하면, 합계가 일정한 모든 쌍이 서로 다른 대각선 중 하나를 따라 표시된다. 따라서 각 대각선에 존재하는 숫자를 세는 것만으로 특정 합계를 볼 확률이 얼마나 되는지 알 수 있다.
격자로 배열하는 방법과 달리 주어진 합계를 갖는 모든 별개의 쌍을 생각할 수 있는 방법이 있다. 바로 이 두 가지 다른 확률 세트를 각각 행에 그려보고 두 번째 행을 뒤집는 것이다.
그렇게 아래의 행을 왼쪽으로 끝까지 민 뒤 오른쪽으로 한 단위 밀면 정렬되는 쌍은 서로 다른 두 쌍이 되는데 이 둘의 확률을 곱하는 식으로 계산이 진행된다.
이 두 배열의 합성곱이 우리에게 새로운 배열을 제공하게 된다. 11(m + n -1)개 값의 새로운 배열은, 각 값은 쌍들의 곱의 합처럼 보인다.
이를 수식적으로 표현하면 다음과 같다.
식이 복잡해보이지만 예를 들면 n=6인 상황에서 살펴볼 쌍들은 (1, 5), (2, 4), (3, 3), (4, 2), (5, 1)이라는 것이며
이와 같이 컨볼루션은 두 번째 배열을 뒤집은 다음 다양한 오프셋 값에 정렬하고 여러 쌍의 곱을 가져와 더하는 이 과정이 두 신호가 어떻게 겹치는지, 가능한 모든 합을 취하는 방식을 구할 수 있는 근본적인 방법임을 알게 됐다.
2. 컨볼루션을 통한 해석
아래의 예시에 대해 컨볼루션을 통해 해석해보자
a = [1, 2, 3]
b = [4, 5, 6]
[a∗b]=[4,13,28,27,18]
- 확률적 해석(어떤 원소가 나올 확률이 제일 큰가에 대해)
주사위 두 개를 굴릴 때, 각 주사위의 눈금이 나올 확률이 제각기 다를 수 있다고 가정하자. 주사위의 눈금이 각각 1, 2, 3인 두 개의 주사위이며, 여기서 각각의 눈금이 나올 확률은 다르다. 이 확률을 컨볼루션을 사용하여 두 주사위의 합의 확률 분포를 구한다.
주사위 1의 확률 분포 a: [1/6, 2/6, 3/6]
주사위 2의 확률 분포 b: [4/15, 5/15, 6/15]
컨볼루션 결과 [a∗b]=[4/80, 13/80, 28/80, 27/80, 18/80]는 다음을 의미한다.
- 합이 2인 확률: 4/80
- 합이 3인 확률: 13/80
- 합이 4인 확률: 28/80
- 합이 5인 확률: 27/80
- 합이 6인 확률: 18/80
즉 두 주사위의 합은 4일 확률이 크다는 것이다.
- 음향 신호 예시(특정 주파수 성분을 얼마나 가지고 있나, 고주파 필터면 신호가 얼마나 고주파 성분을 가지고 있나에 ㄷ하여)
필터 a: 고주파 필터 (고주파 성분을 강조하는 필터)
입력 신호 b: 주파수의 변화를 포함한 신호
28이라는 값: 신호의 특정 부분에서 필터가 가장 강한 반응을 보였다. 이 부분은 신호에서 필터가 가장 강하게 작용한 부분을 나타낸다.
- 고주파 필터가 신호의 특정 부분에서 가장 강한 주파수 성분을 강조했음을 나타낸다. 필터가 신호의 이 부분에서 주파수 성분이 가장 강하게 강조되었음을 의미한다.
- 이 값이 클수록, 해당 신호 부분의 주파수 성분이 필터에 의해 가장 잘 감지되었다고 할 수 있습니다.
- 이미지 해석(특정 패턴에 대해 얼마나 유사한가)
필터 a: 엣지 검출 필터로 사용되는 커널
입력 신호 b: 단순화된 이미지 데이터
28이라는 값: 필터와 입력 신호의 중간 부분에서의 상호작용이 가장 강하게 나타낸다. 이는 필터가 신호의 이 부분에서 가장 강하게 작용했음을 의미한다.
- 엣지 검출 필터가 이미지의 가장 두드러진 엣지를 강하게 검출하는 부분에서 결과 값이 가장 크다. 즉, 필터가 신호의 이 부분에서 가장 큰 변화나 특징을 감지했다.
- 필터와 신호의 이 특정 부분이 겹치는 정도가 가장 높아, 필터가 신호의 엣지를 가장 효과적으로 감지했다.
3. 컨볼루션 활용 예시
- Moving averages(이동 평균)
: 데이터의 변동성을 부드럽게 하고 추세를 파악하는데 도움을 준다. 데이터 분석, 예측, 신호 처리 등 다양한 분야에서 활용된다. 원본 데이터는 변동이 심해 추세를 파악하기 어렵기 때문이다.
하나는 긴 숫자 목록이고 다른 하나는 모두 더하면 이 되는 더 작은 숫자 목록이 하나 더 있다고 가정하
이 경우에는 5개의 값이 있는 작은 목록이 있고 모두 1/5로 같다.
작은 값의 목록이 더 큰 값의 목록과 완전히 겹치면 이 합성곱 각 구간에서 데이터의 평균을 구하고 있다.
전반적으로 이 과정은 원본 데이터에 비해 부드러운 버전을 제공하게 된다.
모두 더하면 1이 되는 다른 숫자 목록으로 수정해도 여전히 이동 평균으로 해석할 수 있다.
위의 이동 평균은 중앙 값에 더 많은 가중치를 부여한다.
- Image processing
이미지 처리에서 컨볼루션(Convolution)은 이미지의 각 픽셀에 커널(또는 필터)로 알려진 작은 행렬을 적용하는 연산이다. 이를 통해 이미지의 다양한 특징을 추출하거나, 효과를 부여할 수 있다. 컨볼루션을 활용하는 몇 가지 대표적인 예시를 살펴보자.
- 컨볼루션의 기본 개념
- 컨볼루션 연산: 이미지의 각 픽셀을 커널과 곱한 후 그 합을 새로운 이미지의 픽셀 값으로 대체한다.
- 커널: 특정 효과나 특징을 추출하기 위해 사용되는 작은 행렬이다. 커널의 크기는 일반적으로 3x3, 5x5 등이 사용된다.
- 모자이크 처리
주로 개인정보 보호 등을 위해 이미지의 특정 영역을 모자이크 처리하여 개인정보 보호 등의 목적으로 사용된다. 해당 영역을 작은 블록 단위로 나누고, 각 블록의 평균값 또는 중앙값으로 블록의 모든 픽셀을 채운다.
모자이크는 이미지의 특정 영역을 블록 단위로 처리하기 때문에, 경계가 더 명확하게 구분되는 반면, 디테일을 완전히 제거한다. 모자이크 블록의 크기가 클수록 이미지의 세부 사항이 더욱 덜 보인다.
좀 더 엄밀히 말하면 이 작은 격자가 180º로 회전된 합성곱이다. 격차가 대칭인 경우는 중요하지 않지만 순수 수학의 맥락에서 합성곱의 정의는 항상 두 번째 배열을 뒤집는 것에 대한 생각을 해야함을 명심하자
- 엣지 검출(Edge Detection)
이미지에서 명확한 경계를 식별하는 데 사용된다. 엣지는 색상 또는 명도 값이 급격히 변하는 곳을 의미한다.
왼쪽에는 양수 오른쪽은 음수가 포함된 작은 값 격자를 살펴보자
모두 같은 색상의 부분에 있을 때, 작은 격자의 값의 합계가 0이기 때문에 픽셀 값의 변화가 없는 곳은 0으로 판단하며 반대로 픽셀 값의 변화가 있는 곳은 감지할 수 있다. 따라서 모든 수직 가장자리를 가려낼 수 있는 일종의 방법을 제공한다.
컨볼루션 필터가 이미지의 엣지에 수직으로 놓여 있을 때, 필터는 픽셀 값의 변화를 극대화하여 에지를 더 강하게 감지할 수 있다. 이는 이미지 처리에서 중요한 특징 감지 방법 중 하나로, 이미지 내의 구조적 변화를 포착하여 정확한 에지 검출을 가능하게 합니다.
마찬가지로 위에서 아래로 이동할 때 격자가 달라지도록 회전하면 모든 수평 가장자리를 가려낼 수 있다.
이 작은 격자를 종종 kernel이라고 한다. 다른 kernel을 선택하는 것만으로도 다른 이미지 처리 효과를 얻을 수 있다.
이 또한 작은 격자가 180º로 회전된 합성곱이다.
- 블러링(Blurring)
이미지를 흐리게 만들어 노이즈를 줄이거나 배경과 대상 사이의 경계를 부드럽게 만들어 디테일을 감소시키는 데 사용된다.
가우시안 블러(Gaussian Blurring): 가우스 분포에 기반한 커널을 사용하여 블러를 적용한다. 중앙에 가까울수록 큰 가중치를 부여하여 보다 자연스러운 블러 효과를 낸다.
- 샤프닝(Sharpening
이미지의 경계(가장자리, edge)를 더 선명하게 만들어 디테일을 강화한다.
- 참고: 컨볼루션은 최대한 많이 겹쳐있으면 값이 클 확률이 있지만 원소의 크기와 조합 또한 컨볼루션에서 중요하게 작용한다.
예시)
완전 겹침 (t=2):
- a=[1,2,3]
- b=[1,2,3]
- 계산: (1×1)+(2×2)+(3×3)=1+4+9=14
큰 원소들의 곱 (t=3):
- a=[1,2,3]
- b=[2,3,0]
- 계산: (2×3)+(3×2)=6+6=12
완벽히 겹치지 않더라도 원소들의 크기와 값이 크기 때문에 신호의 패턴과 강도가 서로 잘 맞물린다고 해석할 수 있다. 컨볼루션은 단순히 두 신호가 얼마나 겹쳐 있는지를 보여주는 것이 아닌 신호가 어떤 방식으로 겹치며 각 위치에서 어떤 기여를 하는지를 분석한다.
요약하자면 컨볼루션은 합의 분포를 알 수 있는 선형 연산으로 곱의 분포같이 비선형적이며 분포를 직접 알아야하는 경우에서는 쓸 수 없다. 컨볼루션은 그저 연산이며 이를 활용해 확률에서는 어떤 원소가 일어날 확률이 제일 큰지, 신호 해석에서는 특정 주파수 필터에 입력 신호가 얼마나 크게 작용하여 특정 주파수가 어느 정도로 있는지 확인하는 필터 역할을, 이미지에서는 커널(kernel)을 통해 어떤 이미지 특징을 이미지로 분석할 수 있는지를 제공한다.
'얼굴 인식에 대한 이해' 카테고리의 다른 글
얼굴 인식을 이해하고 서비스를 만드는 방법 (3) (4) | 2024.08.25 |
---|---|
얼굴 인식을 이해하고 서비스를 만드는 방법 (2) (0) | 2024.08.15 |
얼굴 인식을 이해하고 서비스를 만드는 방법 (1) (0) | 2024.08.08 |