ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CNN]Convolutional Neural Networks(CNN)
    Artificial Intelligence/Deep learning 2021. 5. 10. 02:11

    이번에는 computer vision에서 가장 기본이 되는 CNN에 대해서 포스팅을 하려고 합니다.

     

     

    CNN의 등장

    Convolutional Neural Networks(CNN)은 Deep Neural Networks에서 기존의 이미지나 영상 데이터를 처리할 때 발생하는 문제점들을 보안한 방법입니다.

    기존의 이미지 영상처리 방법은 2차원 이미지(채널 포함 시 3차원)를 1차원 배열로 변환한 다음에 FNN (Fully- connected multi layered Neural Network) 신경망으로 학습시키는 방법입니다.

    FNN은 벡터 형태로 표현된 데이터를 입력 받기 때문에 이미지를 반드시 벡터화해야 하는데, 이미지를 벡터화하게 되면 인접 픽셀간의 상관관계가 무시됩니다. 일반적으로 이미지 데이터는 인접한 픽셀 간의 상관관계가 매우 높기 때문에 이미지를 백터화 화는 과정에서 정보 손실이 발생할 수밖에 없습니다.

     

    eye에 영향을 미치는 픽샐은 8칸인데 모두 인접하게 모여있습니다 
    이미지를 1차원으로 바꾸게 될 경우

    위와 같이 FNN문제점을 극복하기위해 만들어진 방법이 CNN입니다.

    CNN은 이미지의 형태(2차원)를 보존하도록 행렬 형태의 데이터를 입력받기 때문에 이미지를 백터화 하는 과정에서 발생하는 정보 손실을 방지할 수 있습니다.  즉 CNN의 기본 개념은 "행렬로 표현된 필터의 각 요소가 데이터 처리에 적합하도록 자동으로 학습되게 하자"입니다. 

     

     

     

    CNN(Convolutional Neural Networks)

    CNN은 Convolutional Layer를 통해서 입력 받은 이미지에 대한 특징(Feature)을 추출하고, 이를 기반으로 기존의 전연결된 뉴럴 네트워크를 이용해 분류를 하는 원리입니다.

     

    Convolutional Layer

    Convolutional Layer는 입력 데이터로부터 특징을 추출하는 역할을 합니다. 

    특징을 추출하는 기능의 필터(Filter)와 그 값을 비선형 값으로 바꾸어주는 활성화함수(Activation Function)로 구성됩니다.

    활성화 함수를 사용하는 이유는 활성화된 특징만을 다음 계층으로 전달하기 위함입니다. 일반적으로 많이 사용하는 활성화 함수"ReLU"는 음수 값을 0에 매핑하고 양수 값을 유지하여 더 빠르고 효과적인 학습을 가능하게 하는 특징을 가지므로 많이 사용됩니다.

    Convolutional Layer에 유입되는 입력 데이터에는 한 개 이상의 필터가 적용됩니다.
    또한 1개의 필터는 Feature Map의 채널이 됩니다. 다시 말해 Convolutional Layer에 n개의 필터가 적용된다면 출력 데이터는 n개의 채널을 갖습니다.

     

     

    Filter

    필터는 이미지의 특징을 찾아내기 위한 공용 파라미터입니다.

    Filter를 kernel 또는 mask라고 하기도 합니다. 

    필터는 일반적으로 3,3 또는 5,5와 같은 홀수 정방 행렬로 정의됩니다.

    필터는 입력 데이터를 지정된 간격(Stride)으로 순회하며 채널별로 합성곱을 하고 모든 채널의 합성곱의 합을 Feature Map로 만듭니다.

    아래 그림은 채널이 1개인 입력 데이터를 3x3 크기의 필터로 합성곱하는 과정을 설명합니다.
    stride가 1로 설정되었기 때문에 필터가 1칸씩 이동하면서 합성곱을 계산합니다.

     

     

    필터는 입력 데이터의 각 채널을 순회하며 합성곱을 계산한 후 채널별 Feature Map을 만들고 그 Feature Map을 합산하여 최종적으로 반환합니다.

    Feature Map에서 Activation Function을 적용한 결과를 Activation Map이라고 합니다.

    즉 Convolution Layer의 최종 출력 결과는 Activation Map입니다.

     

     

    Padding

    Convolution Layer에서 Filter와 Stride에 작용으로 Feature Map 크기는 입력 데이터보다 작아집니다. Convolution Layer의 출력 데이터가 줄어드는 것을 방지하는 방법이 패딩입니다. 패딩은 입력 데이터의 외각에 지정된 픽셀만큼 특정 값으로 채워 넣는 것을 의미합니다. 보통 패딩 값으로 0으로 채워 넣습니다.

    0으로 채운 패딩

     

    Pooling Layer

    Pooling Layer에서는 Convolution Layer의 출력 데이터를 입력으로 받아서 출력 데이터(Activation Map)중에서 필요한 특징들만 추려서 사용하는데 이방법을 Pooling 또는 sub sampling이라고 합니다.

    Pooling의 대표적인 방법으로는 Max pooling, Average pooling, Min Pooling등이 있는데, 이 중 Max pooling 이 많이 사용됩니다.

    Pooling 레이어는 Convolution 레이어와 비교하여 다음과 같은 특징이 있습니다.

    • 학습대상 파라미터가 없음
    • Pooling 레이어를 통과하면 행렬의 크기 감소
    • Pooling 레이어를 통해서 채널 수 변경 없음

     

     

    위의 Feature Learning 과정이 끝난 후에는 한층에 모든 픽셀을 다 검사 하는 FC(Fully Connected) Neural Network를 통해서 Output을 출력하게 됩니다. 

Designed by Tistory.