Convolution: 신호처리와 이미지 속 숨은 공통점을 찾아서
딥러닝에서 사용하는 convolution 층에서 filter 혹은 kernel 이라는 단어를 사용하는 이유에 대해 알고계신가요? 단순한 신호 처리 분야부터 이미지 처리 분야까지 이어지는 공통 분모인 convolution 에 대해 알아봅니다.
신호처리 분야에서 Convolution의 역할
딥러닝에서 자주 사용되는 Convolution 층에서 filter 혹은 kernel 이라는 개념을 들어보셨나요? 생긴것은 단순히 숫자들을 모아둔 행렬 형태인데 뜻을 알 수 없는 이름으로 부르는 이유가 무엇일까요? 함께 알아봅시다!
Convolution이란?
신호 처리 분야 안에서 Convolution은 두 개의 신호를 결합하여 새로운 신호를 만드는 수학적 연산입니다. 마치 두 개의 함수를 섞어서 새로운 함수를 만드는 것과 비슷하죠. 이 연산은 신호의 특징을 변경하거나 강조하는 데 사용됩니다.
Convolution의 다양한 역할
신호 필터링: Convolution을 이용하면 원하는 주파수 성분을 강조하거나 제거할 수 있습니다. 예를 들어, 오디오 신호에서 노이즈를 제거하고 싶다면 저역 통과 필터(LPF)를 사용하여 높은 주파수 성분을 제거할 수 있습니다. 반대로 이미지에서 경계선을 강조하고 싶다면 고역 통과 필터(HPF)를 사용하여 낮은 주파수 성분을 제거할 수 있습니다. 또한, 특정 주파수 대역만 통과시키고 나머지는 제거하는 대역 통과 필터(BPF)도 있습니다.
특징 추출: Convolution을 사용하면 신호에서 특정 패턴이나 특징을 추출할 수 있습니다. 예를 들어, 이미지에서 수직선이나 수평선을 검출하고 싶다면 해당 패턴과 유사한 커널(필터)을 사용하여 Convolution을 수행할 수 있습니다. 이렇게 추출된 특징은 객체 인식, 얼굴 인식, 음성 인식 등 다양한 분야에서 활용됩니다.
신호 상관관계 분석: Convolution을 이용하면 두 신호 간의 유사성이나 상관관계를 분석할 수 있습니다. 예를 들어, 두 개의 오디오 신호가 있을 때, 두 신호를 Convolution하면 시간 지연에 따른 상관관계를 계산할 수 있습니다. 이는 음향 신호 처리, 레이더 신호 처리 등에서 활용됩니다.
시스템 응답 특성 분석: 시스템의 입력 신호와 임펄스 응답을 Convolution하면 시스템의 출력 신호를 계산할 수 있습니다. 예를 들어, 스피커의 임펄스 응답과 오디오 신호를 Convolution하면 스피커를 통해 재생되는 소리를 예측할 수 있습니다. 이를 통해 시스템의 주파수 응답, 안정성 등을 분석할 수 있습니다.
이렇게 Convolution은 신호처리 분야에서 신호를 변경하고 분석하는데 핵심적인 역할을 합니다. 딥러닝에서도 Convolution은 이미지와 필터를 결합하여 특징을 추출하는 데 사용되죠.
예시를 통해 알아봅시다
Convolution 연산을 사용하여 신호의 피크(솟아난 부분)를 찾아내는 방법에 대해 예시를 살펴봅시다.
주어진 그래프에서 첫 번째 그래프는 피크가 뚜렷한 원본 신호입니다. 이 신호에서 피크를 검출하기 위해 Convolution 연산을 활용할 수 있습니다.
피크 검출을 위한 Convolution 연산 과정은 다음과 같습니다:
- 피크 검출에 적합한 커널(필터)을 설계합니다. 피크는 신호의 급격한 변화를 나타내므로, 이를 강조할 수 있는 커널을 선택해야 합니다. 예시에서는 [0, 1, 1, 0]과 같은 간단한 커널을 사용하였습니다.
- 설계한 커널을 원본 신호와 Convolution 연산을 수행합니다. 커널을 축에 따라 움직이면서 신호의 각 위치에 적용하여, 커널과 신호가 대응되는 값들을 곱한 후 더합니다. 이를 통해 새로운 Convolution 결과 신호를 얻습니다.
- Convolution 결과 신호에서 피크에 해당하는 위치를 찾습니다. 피크는 Convolution 결과 신호에서 큰 절대값을 가지는 위치에 나타납니다. 적절한 임계값을 설정하여 피크를 검출할 수 있습니다.
그래프의 세 번째 그림은 Convolution 연산 결과를 보여줍니다. 원본 신호의 피크 위치에서 Convolution 결과 신호의 절대값이 크게 나타나는 것을 확인할 수 있습니다. 이를 통해 원본 신호의 피크 위치를 성공적으로 검출할 수 있습니다.
Convolution 연산을 사용한 피크 검출 기능은 다양한 분야에서 활용됩니다. 예를 들어, 심전도 신호에서 불규칙한 이상 신호를 검출하거나, 음성 신호에서 음절의 시작 위치를 찾는 데 사용될 수 있습니다. 또한, 이미지 처리에서 경계선이나 모서리를 검출하는 데에도 Convolution 연산이 활용됩니다.
Convolution 연산은 신호의 특징을 강조하고 원하는 패턴을 검출하는 데 강력한 도구입니다. 적절한 커널을 선택하고 Convolution 연산을 수행함으로써 신호에서 피크와 같은 중요한 특징을 효과적으로 추출할 수 있습니다.
이러한 커널들은 이미지 전처리, 특징 추출, 객체 검출, 이미지 분할 등 다양한 컴퓨터 비전 작업에 활용됩니다. 커널의 크기, 모양, 가중치를 적절히 선택함으로써 원하는 이미지 처리 효과를 얻을 수 있습니다.
컴퓨터 비전에서 Convolution 의 역할
컴퓨터 비전 분야에서도 커널은 이미지 처리와 특징 추출에 광범위하게 사용되는 중요한 개념입니다. 커널은 작은 크기의 행렬로, 이미지의 특정 패턴이나 특징을 감지하고 강조하는 역할을 합니다. 커널은 이미지와 convolution 연산을 수행하여 이미지의 특징을 추출하거나 이미지를 변환합니다. 다음에 나와있는 다양한 커널 들의 효과가 궁금하신 분들은 링크를 통해 직접 체험해볼 수 있겠네요!
- 엣지 감지 커널(Edge Detection Kernels):
- 소벨 커널(Sobel Kernel): 이미지의 수평 및 수직 엣지를 감지하는 데 사용됩니다.
- 프리윗 커널(Prewitt Kernel): 소벨 커널과 유사하게 엣지를 감지하지만, 가중치가 다릅니다.
- 캐니 엣지 감지 커널(Canny Edge Detection Kernel): 다단계 알고리즘을 사용하여 이미지의 엣지를 감지합니다.
- 블러링 커널(Blurring Kernels):
- 평균 블러링 커널(Average Blurring Kernel): 이미지를 부드럽게 만들고 노이즈를 줄이는 데 사용됩니다.
- 가우시안 블러링 커널(Gaussian Blurring Kernel): 가우시안 함수를 기반으로 이미지를 부드럽게 만듭니다.
- 중앙값 블러링 커널(Median Blurring Kernel): 이미지의 각 픽셀을 주변 픽셀들의 중앙값으로 대체하여 노이즈를 제거합니다.
- 샤프닝 커널(Sharpening Kernels):
- 언샤프 마스크 커널(Unsharp Masking Kernel): 이미지의 고주파 영역을 강조하여 이미지를 선명하게 만듭니다.
- 라플라시안 커널(Laplacian Kernel): 이미지의 이차 도함수를 계산하여 에지를 강조합니다.
- 특징 추출 커널(Feature Extraction Kernels):
- Gabor 커널(Gabor Kernel): 이미지에서 특정 주파수와 방향의 텍스처 정보를 추출하는 데 사용됩니다.
- Haar-like 커널(Haar-like Kernel): Haar-like 특징을 추출하여 객체 검출에 활용됩니다.
- LoG(Laplacian of Gaussian) 커널: 이미지의 블롭(blob) 특징을 추출하는 데 사용됩니다.
- 모폴로지 연산 커널(Morphological Operation Kernels):
- 침식(Erosion) 커널: 이미지의 밝은 영역을 축소시켜 객체의 경계를 깎아내는 데 사용됩니다.
- 팽창(Dilation) 커널: 이미지의 밝은 영역을 확장시켜 객체의 경계를 확장하는 데 사용됩니다.
- 열기(Opening) 및 닫기(Closing) 커널: 이미지의 노이즈를 제거하고 작은 구멍을 메우는 데 사용됩니다.
이러한 커널들은 이미지 전처리, 특징 추출, 객체 검출, 이미지 분할 등 다양한 컴퓨터 비전 작업에 활용됩니다. 커널의 크기, 모양, 가중치를 적절히 선택함으로써 원하는 이미지 처리 효과를 얻을 수 있습니다.
딥러닝으로 이어지는 지름길
또한, 딥러닝의 발전으로 인해 CNN(Convolutional Neural Network)에서 학습 가능한 커널을 사용하여 이미지 특징을 자동으로 추출하는 방법도 널리 사용되고 있습니다. 신호처리 분야에서는 주로 1차원의 데이터를 주로 다뤘다면, 이미지 데이터는 2차원 혹은 3차원(특성맵) 데이터로 확장되었다고 볼 수 있습니다. 이미지에서 유사한 형상을 추출하기 위해 사용하는 가중치 행렬에 커널 이라는 명칭을 사용하는 이유입니다. CNN 의 주요 구조로서 커널의 형식과 기능에 자율성을 더한 dilated convolution 또는 deformable convolution 등도 최신 모델 안에서 널리 활용되고 있습니다.
Reference
- https://en.wikipedia.org/wiki/Kernel_(image_processing)
- https://setosa.io/ev/image-kernels/
- https://www.researchgate.net/figure/The-difference-between-normal-convolution-deformable-convolution-and-dilated_fig1_372440898