🚦 Summary

  • 딥러닝의 기초개념중 하나인 Convolution에 대해 공부하며 정리한 노트를 블로그에 기록합니다.
  • Convolution의 핵심 개념: Convolution은 이미지에 커널을 적용하여 특징을 추출하는 과정이며, 이미지의 중요한 요소를 강조하고 노이즈를 제거하는 데 사용됩니다.
  • Convolution 연산 방식: 이 연산은 커널을 이미지 전체에 적용하여, 각 위치에서 커널과 이미지의 원소별 곱셈 후 합산하여 새로운 이미지를 생성합니다.
  • 영상분석의 핵심 - 꼭짓점 감지: 영상분석에서 꼭짓점은 중요한 특징으로, 다양한 크기의 커널 사용 또는 이미지 크기 조정을 통해 다양한 스케일의 특징을 추출할 수 있습니다.

📌 Intro.

  • 딥러닝을 활용한 컴퓨터 비전(Computer Vision) 관련 기능을 구현할때 가장 핵심적인 기능인 Convolution 에 대해 간단하게 정리한 내용을 기록합니다.
  • Convolution이 어떤 개념이며, 어떻게 이미지의 특징을 강조하고 변형하는지, 이 기술이 영상분석에 어떻게 적용되는지를 간략하게 살펴봅니다.

💡 이런걸 정리합니다.

  • Convolution의 정의 및 주요 개념
  • Convolution 을 이용한 이미지(영상) 처리 과정
  • 어떻게 Convolution을 이용해 영상분이 가능한가


1. Convolution의 정의 및 주요 개념

  • Convolution(Convolution) 은 딥러닝을 기반으로 영상관련 데이터 처리를 하기에 최적화된 알고리즘(Algorithm)입니다.
  • 그리고 이 Convolution 을 활용해 신경망(Neural Network) 을 영상처리에 특화된 알고리즘(Algorithm)이 바로 CNN(Convolution Neural Network) 입니다.


Convolution 이란

  • 기본 개념:
    • Convolution(Convolution)
      • 수학적인 연산으로, 합성곱이라고도 합니다.
      • 실제 작동 과정으로 보자면 하나의 함수를 다른 함수 위에 겹쳐서 적용하는 과정을 말합니다.
      • CNN에서는 이를 이미지에 적용하여 특징을 추출할 때 사용합니다.
  • 이미지 처리에서 Convolution 계층의 역할:
    이미지의 로컬 특징(예: 가장자리, 질감, 색상 등)을 효과적으로 감지합니다.
    • 입력 이미지를 필터(커널)로 스캔하며, 각 위치에서 필터와 이미지 간의 점곱(dot product)을 계산합니다.
  • 주요 개념
    • 필터(커널):
      필터는 일반적으로 작은 크기의 행렬(예: 3x3, 5x5)입니다.
      • 이미지 위를 이동하며, 각 위치에서 이미지의 작은 부분과 필터의 Convolution 연산을 합니다.
    • 특징 맵(Feature Map):
      Convolution 연산을 통해 생성된 출력을 특징 맵이라고 합니다.
      • 이는 원본 이미지에서 필터에 의해 감지된 특징을 나타냅니다.
      • 이러한 특징은 이미지의 색상(RGB값)을 통해 구분되며, 이미지가 가진 경계선, 색상, 모양 등의 특징을 포함하고 있습니다.
    • 스트라이드(Strides):
      필터가 이미지 위를 이동하는 간격을 스트라이드라고 합니다.
      • 스트라이드의 크기에 따라 특징 맵의 크기가 결정됩니다.
    • 패딩(Padding):
      이미지의 가장자리 부분에도 Convolution을 적용하기 위해 이미지 주변을 가상의 픽셀(주로 0)로 채우는 것입니다.
      • 이를 통해 이미지의 크기 감소를 조절할 수 있습니다.
    • 활성화 함수:
      Convolution 계층 후에는 보통 활성화 함수(예: ReLU)가 적용됩니다.
      • 이는 비선형성을 도입하여 네트워크가 더 복잡한 패턴을 학습할 수 있게 합니다.


  • Convolution의 중요성:
    • Convolution 연산을 통해 이미지의 중요한 특징을 효율적으로 추출합니다.
    • 다양한 필터를 통해 이미지의 다양한 측면을 학습할 수 있습니다.
  • 응용 분야:
    이미지 분류(Image Classification), 객체 인식(Object Detection), 얼굴 인식(Face Recognition) 등 다양한 Computer Vision 작업에 활용됩니다.


2. Convolution 을 이용한 이미지(영상) 처리 과정

  • 기본적으로 Convolution 을 통한 이미지 처리과정은 아래와 같습니다.
    • 필터(또는 커널)라 불리는 작은 행렬을 이미지 위에 적용

      합니다.

    • 필터는 이미지를 순회하며, 각 위치에서 필터와 이미지 부분 간의 요소별 곱셈(합성곱)을 수행합니다.
    • 요소별 곱셈의 결과를 모두 합하여 새로운 값(출력)을 생성합니다.
    • 이를 이미지로 표현하면 아래와 같습니다.

  • 과정

    초기 위치: 필터를 이미지의 왼쪽 상단에 위치시킵니다.

    1. 요소별 곱셈과 합: 필터와 이미지 간의 요소별 곱셈(Convolution 연산)을 수행하고, 결과를 모두 더합니다.
    2. 이동: 필터를 오른쪽으로 한 칸 이동시킵니다(가로 방향).
    3. 반복: 이미지 전체를 커버할 때까지 이 과정을 반복합니다.
    4. 세로 이동: 필터가 이미지의 오른쪽 끝에 도달하면, 아래로 한 칸 이동시키고 다시 왼쪽으로 이동하며 과정을 반복합니다.
  • 결과

    • 이 과정을 통해 생성된 새로운 값들의 집합을 ‘특징 맵(Feature Map)’이라고 합니다.
    • 특징 맵은 원본 이미지의 중요한 정보를 담고 있으며, 이미지의 크기가 줄어들 수 있습니다.


Convolution 연산과정 이미지로 이해해보기

  • 기본적인 Convolution 연산과정을 상세하게 정리해 보면 아래와 같습니다.
  1. 이미지의 수치화:
    • 이미지를 수치 데이터로 변환합니다. 이는 일반적으로 픽셀의 강도(밝기)를 나타내는 숫자로 표현됩니다.
      • 컬러이미지의 경우 주로 RGB값, 즉 3개의 수치로 표현되며 숫자의 범위는 0~255입니다.
      • 흑백이미지의 경우 0 또는 1로된 2개의 수치로 표현되며 값의 범위는 동일하게 0~255입니다.
  2. 필터(커널) 정의:
    • 이미지의 특징을 추출하기 위해 작은 크기의 필터(행렬)를 정의합니다.
      • 경우에 따라 종종 커널(kernel), 마스크(mask) 라는 용어가 사용되기도 합니다.
      • 혼용되는 이 용어들에 대한 정리를 다음의 포스팅에서 정리하였습니다.
  3. 컨볼루션 연산:
    • 필터를 이미지의 좌상단부터 시작하여 이미지 위에 겹쳐 놓습니다.
    • 겹쳐진 부분에서 필터와 이미지의 각 픽셀 값들을 곱한 뒤, 그 결과를 모두 더합니다.
    • 이렇게 얻은 결과는 특징 맵의 한 요소가 됩니다.
  4. 필터의 이동:
    • 필터를 오른쪽으로 한 칸 이동시키고, 같은 컨볼루션 연산을 반복합니다.
    • 이미지의 모든 부분을 커버할 때까지 필터를 가로 및 세로로 이동시키며 연산을 수행합니다.
  5. 특징 맵 생성:
    • 연산을 통해 얻은 결과들을 모아 특징 맵을 만듭니다.
    • 특징 맵은 원본 이미지의 중요한 정보를 담고 있으며, 이미지의 크기가 줄어들 수 있습니다.
  6. 이미지의 특징 추출:
    • 컨볼루션 연산을 통해 이미지의 주요 특징(가장자리, 질감 등)이 특징 맵에 강조되어 나타납니다.
    • 이 특징 맵은 이미지 인식, 분류 등의 후속 작업에 사용됩니다.
  • 이를 그림과 함께 정리해보자면 다음과 같습니다.

  • 좌측 이미지 는 전체 이미지를 수치화한 것(보통 픽셀의 강도) , 중간은 컨볼루션 연산에 사용될 필터(커널), 우측은 연산 결과를 의미합니다.
  • 이미지의 좌상단부터 커널을 겹쳐놓고, 커널의 크기만큼만 Convolution 연산을 수행해 결과를 도출하면 이미지 우측의 결과와 같은 형태의 값을 얻을 수 있습니다.


  • 이 과정을 1칸씩 shift하면서 이미지에 대한 필터를 적용한 컨볼루션 연산 을 적용하며 결과값을 지속 도출합니다.
  • 막다른 곳에 도달시 맨 왼쪽으로 이동하고 한칸 아래로 이동합니다.
    • 커널은 이미지 영역 내에서만 겹쳐야 한다는 조건이 있기 때문입니다.
  • 이렇게 이미지에 대해 모든 구역에 대해서 Convolution 연산을 끝내고 나면 아래와 같이 Feature Map을 도출할 수 있습니다.

    • 위 이미지 예시로 보면 5 x 5 사이즈였던 이미지에 3 x 3 사이지의 필터를 적용해서 컨볼루션 연산을 하여 도출된 [[특징맵(Feature map)]] 과 같이 3 x 3 사이즈로 줄어 이미지 크기가 줄어들었다는 것을 알 수 있습니다.


💡 Convolution 연산 결과가 원본이미지보다 작은 이유

  1. 컨볼루션 필터의 크기
    • 컨볼루션 필터(또는 커널)의 크기가 일반적으로 입력 이미지보다 작습니다.
    • 이 필터가 이미지 전체에 걸쳐 적용될 때, 가장자리 부분은 완전히 커버되지 않을 수 있습니다.
  2. 경계 처리
    • 컨볼루션 연산을 수행할 때, 이미지의 가장자리 부분은 필터가 완전히 겹쳐지지 않는 경우가 많습니다.
    • 즉, 필더가 이미지의 가장자리에 적용될 때, 이미지 밖의 픽셀 값이 없어서 이 부분을 Convolution 연산에 포함시키지 않습니다.
    • 이로 인해 결과 이미지의 크기가 줄어들 수 있습니다.
  3. 스트라이드(Stride)
    • 스트라이드는 필터가 이미지를 이동하는 간격을 의미합니다.
    • 스트라이드가 1보다 큰 경우, 필터는 이미지 상의 픽셀들을 건너뛰면서 이동하게 되며, 이는 결과적으로 출력 이미지의 크기를 줄입니다.

이러한 특징들로 인해 컨볼루션 연산 후의 이미지는 원본 이미지보다 사이즈가 줄어드는 경향이 있습니다. 하지만, 이와 반대로 출력 이미지의 크기를 유지하거나 늘리고 싶은 경우에는 ‘패딩(Padding)’ 기법을 사용하여 이미지의 가장자리에 가상의 픽셀을 추가함으로써 이를 조절할 수도 있습니다.


$test \times \beta$

🤓 Convolution 연산의 대표적 특징 ‘결합법칙’

수학적 수식으로 보는 결합법칙

  • 결합법칙은 수학의 주요 개념중 하나로, 연산을 수행하는 순서가 결과에 영향을 미치지 않는 다는 것을 의미 합니다.
  • 이를 수식으로 표현해보자면 아래와 같습니다.
    • $(f \times g) \times h = f \times (g \times h)$
    • 즉, $(f \times g)$ 로 convolution 연산을 한 값과 $h$ 를 convolution 연산하는 값이나 $(g \times h)$ 의 convolution 연산 결과에 $f$ 를 convolution 연산하는 값이나 동일하다는 의미입니다.

CNN의 feature map 추출과정으로 보는 결합법칙

  • 이러한 사실을 CNN의 convolution 연산에 사용되는 요소들로 치환해 Red 색상의 특징만 추출하는 과정으로 표현해 보자면 아래와 같습니다.
    • $f$ : (input) 이미지/영상
    • $g$ : R(ed) / G(reen) 를 통과시키는 필터 👉 RGB중 R과 G의 성분을 감지/추출
    • $h$ : R(ed) 를 통과시키는 필터 👉 R/G 중 R(ed) 의 성분만을 추출하는 필터
  • 이는 입력 이미지 $f$에 먼저 빨간색/녹색을 강조하는 필터 $g$를 적용한 후, 그 결과에 다시 빨간색을 강조하는 필터 $h$를 적용하는 것과, 먼저 $g$와 $h$ 필터를 결합한 후, 그 결합된 필터를 입력 이미지 $f$에 적용하는 것은 결과적으로 동일한 출력을 가져오는 것을 의미합니다.

3. Convolution 으로 영상분석은 어떻게 하는 걸까?

  • 위에 살펴본 것 처럼 Convolution 연산을 통해 영상/이미지에서 특징을 뽑아낼 수 있습니다.
  • 영상에서 중요한 특징은 꼭짓점(corner) 입니다.
  • 꼭짓점은 이미지/영상 에서 두개의 가장자리(edge)가 만나는 점입니다.
  • 즉, 이미지상의 픽셀들중에 변화가 많이 발생하는 부분을 의미 합니다.

  • 같은 영상(이미지)라도 위 이미지 처럼 다양한 크기의 꼭짓점이 있을 수 있습니다.
    • (a) 는 작은 크기의 꼭짓점을 (c)는 큰 크기의 꼭짓점을 의미합니다.
    • 그리고 하나의 이미지에 (b) 와 같이 여러 위치에 다양한 꼭짓점들이 존재할 수 있습니다.
  • 이러한 특징들을 파악하기 위해 서로 다른 크기의 영상 특징(꼭짓점)을 찾아보게 됩니다.
    • 작은 꼭짓점을 찾을때는 작은 mask(a)를 쓰고, 큰 꼭지점을 찾을때는 큰 mask(c)를 써야지만 찾아낼 수 있습니다.
  • Convolution 연산으로 이러한 영상의 다양한 특징을 찾아낼 수는 있는데 이때, 서로 다른 크기의 영상을 뽑아낼 수 있는 방법이 필요합니다.


서로 다른 크기의 feature 찾기

  • 하나의 영상에서 여러가지 특징을 찾아내기 위해 서로 다른 크기의 feature map을 만드는 방법은 크게 2가지 입니다.
  • 하나는 필터 사이즈를 점점 키우는 방식이고, 다른 하나는 원본(영상/이미지)의 사이즈르 점점 작게 만드는 것입니다.


방법 1) 필터 사이즈를 점점 키우면서 Convolution을 한다.

  • 하나의 고정된 크기의 영상에 여러 크기의 필터를 적용해 특징을 추출합니다.
  • 결과적으로 영상에서 여러 크기의 꼭짓점을 포착해 feature map을 만들 수 있습니다.
  • 이를 다중 필터 Convolution (Multi-Filter Convolution) 라고 합니다.


방법 2) 영상 사이즈를 점점 작게 만든다.(필터크기는 고정)

  • 이 방법은 필터의 크기는 균일하게 유지하면서, 영상의 크기를 다양한 크기로 변화시켜서 특징을 추출하는 방법입니다.
  • 예제 이미지로만 보면 필터의 사이즈도 이미지 크기에 따라 변하는 듯 하지만, 실제로는 그렇지 않습니다.
  • 원본 영상의 크기를 다양하게 조정하면 물리적으로 동일한 크기의 필터(3x3)를 적용해도 실제 필터에 입력되는 이미지의 정보는 변화하게 됩니다.
    • 첫번째 이미지의 사이즈에 적용되던 3x3 사이즈의 필터에 절반으로 크기가 줄어든 이미지를 적용한다면 물리적으로 3x3 필터에 입력되는 정보는 6 x 6 만큼입니다.
    • 마찬가지로 다시 또 절반으로 크기를 줄인 이미지를 입력한다면 물리적으로 필터에 입력되는 정보는 12 x 12 만큼이 됩니다.
  • 이와 같이, 실제 필터의 사이즈는 변화하지 않지만, 영상의 사이즈 크기 조절을 통해 필터를 통해 습득하는 정보의 크기를 조절할 수 있습니다.
  • 그리고, 이러한 방법을 통해 다양한 특징을 추출해내는 것 입니다.


이 두가지 방법을 모두 사용해서 이미지의 특징을 추출하는 것이 CNN(Convolution Neural Network) 입니다.
서로다른 필터를 적용하거나 이미지의 크기를 조절해가면서 다양한 방법으로 이미지나 영상의 특징을 추출하고 학습을 하기 때문입니다.
이는 CNN에서 다양한 레이어를 쌓아 구현하는 과정에서 이뤄지는데, CNN에 대해 정리하는 포스팅에서 다시 한번 상세한 내용을 다뤄보겠습니다.



🎈 Outro.

  • 이번 포스팅에서는 Convolution이 무엇인지 아주 기본적인 개념에 대해 간략하게 정리해보았습니다.
  • 또한, 딥러닝의 Computer Vision 분야(이미지 혹은 비디오 처리) 에서 이 Convolution 이 어떻게 적용되어서 이미지/영상 데이터를 처리할 수 있는지 그 방법에 대한 개괄적인 내용을 정리했습니다.

댓글남기기