ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ CNN ] Feature Map 이해하기
    AI-ML 2023. 9. 19. 08:54
    728x90
    반응형

    - 목차

     

    키워드.

    • - CNN
    • - Kernel
    • - Feature Map
    • - Convolution

     

    들어가며.

    Convolution 연산은 입력 이미지와 커널 필터 사이에서 이뤄집니다.

    구체적인 연산 과정을 그림으로 표현하면 아래와 같습니다.

    4x4 입력 이미지와 2x2 커널 필터 사이의 일반적인 Convolution 연산을 수행합니다.

    4x4 입력 이미지는 2x2 커널 필터와 Convolution 결합을 하여 3x3 출력 텐서가 생성되는데요.

    자세한 연산의 순서는 아래의 이미지와 같습니다.

     

     

    커널은 입력 이미지의 부분 집합을 순회하면서 Element wide Product 을 수행하게 됩니다.

    그리고 그 결과가 출력 텐서에 적용되는데, 이 출력 텐서는 Feature Map 이라고 표현합니다.

     

     

    Kernel Filter.

    Convolution 연산을 위해서는 2개의 Tensor 들이 필요합니다.

    하나는 입력 이미지인 Input Tensor 이구요. 다른 하나는 Convolution 의 핵심인 Kernel Tensor 입니다.

    Kernel 은 Filter 라고도 불리기도 하구요. 여러가지 표현법이 있는 것으로 알고 있습니다.

    저는 단순히 Kernel 또는 Kernel Filter 라고 명명하겠습니다.

     

    Kernel 의 목적은 입력 이미지에서 특정 패턴을 파악함에 있습니다.

    Kernel 은 자신과 동일한 패턴을 가지는 이미지와 Convolution 연산을 하게 되면 결과값이 커지는 경향이 있습니다.

    예를 들어, 아래의 설명과 같이 Input Tensor 와 Kernel Filter 가 동일한 패턴을 가질수록 출력값이 증가하게 됩니다.

    즉 Kernel 은 패턴을 인식하는 목적으로 사용되며 다양한 커널을 사용하여 입력 이미지가 어떠한 패턴들로 구성되었는지 파악할 수 있게 되죠.

     

     

    그래서 아래 이미지와 같이 숫자 2를 표현하는 12x12 이미지 텐서의 경우에는 3개의 Kernel 를 통해서 숫자 2의 특징을 잘 캐치할 수 있을 것입니다.

    숫자 2의 위 부분의 둥근 모양의 패턴과 아랫 부분의 수평적인 패턴을 인식할 수 있는 Kernel 이 필요합니다.

     

    아래의 2개의 필터는 둥근선의 패턴을 잘 인식할 것 같고,

     

    아래의 Kernel 은 수평선에 대한 인식을 잘 수행하겠죠 ?

     

    이러한 방식으로 CNN 의 Kernel 이 동작할 수 있게 됩니다.

     

    결론적으로 CNN 의 Convolution Layer 에서 많은 수의 채널을 사용한다는 의미는 많은 수의 Kernel FIlter 를 사용함을 뜻하구요.

    이는 곧 다양한 패턴을 인식할 수 있음을 뜻하게 됩니다.

     

    Local Space. (Receptive Field)

    먼저 입력 이미지의 Local Space 의 개념을 알아봅니다. ( 또 다른 표현으로 Receptive Field 라고 합니다. )

    Input Tensor 와 Kernel Filter 가 서로 Convolution 연산을 수행하게 되는데요.

    Kernel 과 연산을 수행하게 될 Input Tensor 또는 입력 이미지의 작은 부분이 Local Space 가 됩니다.

    필연적으로 Local Space 의 크기는 Kernel 의 사이즈와 동일하겠죠 ?

    아래 이미지의 녹색 영역이 Local Space 와 Kernel 그리고 Convolution 연산의 결과가 됩니다.

    "2x4 + 3x3 + 2x2 + 3x1 = 24" 이 수식이 바로 녹색으로 칠해진 영역의 Convolution 연산의 내용입니다.

     

     

    아래 그림 설명은 Local Space 와 Kernel 의 Convolution 의 설명을 보충합니다.

    색칠되어 있는 영역이 Local Space 에 해당하구요.

    Input Tensor 는 Kernel 의 사이즈에 맞추어 여러 Local Space 들로 구성됩니다.

    위의 Kernel 에 대한 설명에서 알 수 있듯이, Kernel 은 이미지의 패턴을 인식한다고 말씀드렸죠 ?

    사실상 하나의 이미지는 여러가지 패턴으로 구성되어 있고,

    Local Space 단위로 이미지를 구획화하여, 각 Local Space 의 패턴을 Kernel 을 통해서 파악하게 됩니다.

     

     

     

    이렇게 Local Space 와 Kernel 의 Convolution 결과로써 Output Tensor 가 생성되는데요.

    이 Output Tensor 를 Feature Map 이라고 부릅니다.

    머신러닝 영역에서 Feature 라는 표현이 흔히 사용됩니다.

    feature 는 데이터를 표현하는 잠재적인 표현인데요.

    자연어 처리 영역이나 추천 및 예측 모델 영역에서 사용하는 Embedding Layer 가 대표적인 Latent Feature 를 사용합니다.

    이처럼 Convolution 연산을 Local Space 에 대한 Feature 를 출력하게 되구요.

    이를 Local Spatial Feature 라고도 부릅니다.

    이미지의 부분 공간의 특성이라고 할 수 있죠.

    즉, Convolution 은 이미지의 부분의 특성을 파악하는 연산 과정입니다.

    그리고 이러한 Feature 들이 모여진 결과를 Feature Map 이라 부르게 됩니다.

     

    정리하자면, Convolution 은 Local Space 와 Kernel 의 연산을 의미하구요.

    Local Space 가 가지는 패턴과 Kernel 의 패턴이 얼마나 유사한지를 수치적으로 표현하는 것은 Local Spatial Feature 라고 부릅니다.

    그리고 이러한 Feature 들이 모인 결과를 Feature Map 이라고 합니다.

     

     

    반응형

    'AI-ML' 카테고리의 다른 글

    [pytorch] nn.Sigmoid 알아보기  (0) 2023.10.30
    Collaborative Filtering 이해하기  (0) 2023.09.25
    [ pytorch ] ConvTranspose2d 알아보기  (0) 2023.09.11
    [ pytorch ] AutoEncoder 구현하기  (0) 2023.09.05
    [pytorch] Dropout 알아보기  (0) 2023.08.17
Designed by Tistory.