딥러닝 - 합성곱신경망(Convolution Neural Network, CNN)

반응형

합성곱 신경망 Convolution Neural Network (CNN)

  • 시각적인 영상을 분석하는데 사용되는 다층의 순전파(Feedforward)적인 인공신경망의 한 종류
  • 필터링 기법을 인공신경망에 적용(Convolution 작업)하여 이미지를 효과적으로 처리 할 수 있는 심층신경망 기법
  • 행렬로 표현된 필터의 각 요소가 데이터 처리에 적합하도록 자동으로 학습되는 과정을 통해 이미지를 분류하는 기법

 

심층신경망(DNN), 합성곱신경망(CNN)의 차이

심층 신경망 (DNN)

  • 1차원의 데이터로 학습
  • 다차원일 경우 flatten 작업을 통해 1차원으로 변경, 이미지의 경우 공간적/지역적 정보가 손실
  • 추상화 과정 없이 바로 연산 과정으로 넘어가기 때문에 학습 시간과 효율성이 저하

합성곱 신경망 (CNN)

  • 그대로의 데이터로 학습
  • 공간적/지역적 정보 유지
  • 이미지 전체보다는 부분을 보는 것, 이미지의 한 픽셀과 주변 픽셀들의 연관성을 살리는 것
  • 가중치(weight)는 행렬의 숫자를 의미

 

이미지에 대한 이해

  • RGB(Red, Green, Blue) : 색을 표현할 수 있는 색의 정보, 빨간색, 녹색, 파란색으로 구성
  • 채널(Channel) :  각각의 색상을 표현하는 정보 (흑백은 채널1개, 컬러는 RGB 각각 1개씩 총 3개)
  • 이미지는 3차원의 행렬로 표현 (이미지의 가로 길이, 세로 길이, 채널)


CNN의 구성

  • Convolution Layer와 Pooling Layer를 반복적으로 수행하여 특징을 추출 (Feature Extraction)
  • Flatten 작업을 통해 Fully Connected Layer로 변환
    • Fully Connected Layer : 1차원 형태의 행렬, 모든 노드를 하나로 연결한 계층
  • Fully Connected Layer에서 Classifier를 통해 학습한 데이터를 기준으로 분류 작업 수행
    • Output Layer의 활성함수는 Softmax 사용


합성곱 (Convolution)

  • 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 연산
  • 필터(Filter)를 이용해 특정 크기 별로 학습을 하고 피쳐 맵(Feature Map)을 만드는 과정

 

Filter (=kernel =feature detector)

  • 이미지의 특징을 찾아내기 위한 공용 파라미터, 필터로 특징을 학습
  • 일반적으로 3x3, 4x4 정의
  • 행렬 별로 합성곱 연산을 하고 연산의 합을 Feature Map(=Activation Map)으로 생성

 

Stride (간격)

  • 필터가 합성곱 연산을 수행 할 때의 간격
  • 수치에 따라 행과 열로 N칸씩 이동 
    • 예시) 5x5 크기의 이미지, stride N
      • stride = 1, feature map size 3x3
      • stride = 2, feature map size 2x2 

 

Zero-padding

  • 합성곱을 적용했을 때 행렬의 크기가 작아짐을 방지하기 위해 행렬 주변에 0을 채워 넣는 방법
  • 합성곱의 필터 처리를 한 데이터는 기존 데이터보다 작아지기 때문에 크기 유지를 위해 사용
  • 입력값과 출력값의 크기가 동일. 즉, 이미지 정보 손실을 최소화
    • 예시) 패딩을 사용하지 않고 합성곱 연산 수행
      • 5x5 크기의 이미지, 3x3 크기의 필터
        • 3x3의 Feature Map(=Activation Map) 생성
    • 예시) 패딩을 사용하여 합성곱 연산 수행
      • 7x7(padding=1) 크기의 이미지, 3x3 크기의 필터
        • 5x5의 Feature Map 생성, 처음의 이미지(입력 값)와 크기가 같음

 

Activation (relu 등등)

  • 합성곱 연산으로 생성된 Feature Map(=Activation Map)에 활성함수를 적용하는 과정

 

합성곱 결과로 나오는 행렬 사이즈를 계산하는 방법

  • (I - K + 2P) / S + 1
    • Kernel / filter size : K
    • Depth : D
    • Stride : S
    • Zero padding : P
    • input image size : I
  • 예시) 30x30 크기의 이미지, 5x5 크기의 필터로 합성곱
    • (30 - 5 + 2*0) / 1 + 1
    • 25 + 1 = 26
    • Featrue map(=Activation Map) = 26x26

 

Pooling (Downsampling)

  • 합성곱 레이어의 출력 데이터(Feature Map(=Activation Map)를 입력으로 받아 크기를 줄이는 작업
  • 쓸데없는 파라미터들의 수를 줄이기 때문에 과적합 방지
  • 풀링 작업을 통해 특징을 쉽게 확인, 인공지능이 모양을 더 잘 인식 할 수 있음
  • 풀링 레이어 통과시 크기 감소
  • 즉, 추상화를 통해 이미지의 특징은 그대로 가지고 처리 효율을 높임
  • 풀링의 종류
    • Max Pooling : 영역 안의 최대값 추출, 일반적으로 사용
    • Average Pooling : 영역 안의 평균값 추출

 

Convolution Layer VS Pooling Layer

  • 학습 파라미터의 유무 (Convolution : Filter)

 

Flatten

  • 다차원의 행렬을 1차원의 행렬로 변환하는 작업

반응형