BraveTiger

CH6. 딥러닝 - CNN(Convolutional Neural Networks) 본문

취업 준비/AIVLE SCHOOL

CH6. 딥러닝 - CNN(Convolutional Neural Networks)

BraveTiger 2023. 4. 25. 09:30

CNN(Convolutional Neural Networks): 합성곱신경망

Convolution이라는 전처리 작업이 들어가는 Neural Network 모델

  • CNN은 이미지를 그대로 받음으로써 공간적/지역적 정보를 유지한 채 특성(feature)들의 계층을 빌드업
  • 이미지 전체보다는 부분을 보는 것, 그리고 이미지의 한 픽셀과 주변 픽셀들의 연관성을 살리는 것

※ CNN?

DNN은 기본적으로 1차원 형태의 데이터를 사용

  • 만약 이미지가 입력값이 되는 경우
    • 이것을 flatten시켜서 한줄 데이터로 만들어야 하는데 이 과정에서 이미지의 공간적/지역적 정보(spatial/topological information)가 손실
    • 또한 추상화과정 없이 바로 연산과정으로 넘어가 버리기 때문에 학습시간과 능률의 효율성이 저하

CNN의 구조

Input layer ▶ Convolution layer ▶ Flatten layer ▶ Fully Connected layer ▶ Output layer

  • Input layer
    • 이미지를 3차원 정보의 입력
  • Convolution layer
    • feature extraction을 수행하는 layer
    • 내부에 Convolution layer + Relu를 통해 의미가 없는 특징을 zero화
    • pooling layer: feature개수 축소, 중요한 feature만 유지
  • Flatten layer
    • Convolution Layer와 Pooling Layer를 반복적으로 거치면서 주요 특징만 추출
    • 이 때 추출된 주요 특징은 2차원 데이터로 이루어져 있지만 분류를 위한 학습 레이어에서는 1차원 데이터 필요
    • Flatten Layer가 2차원 데이터를 1차원 데이터로 바꾸는 역할
  • Fully Connected layer
    • 비선형 조합 학습 및 분류
  • output layer

Convolution Layer

  • Filter(Kernel)을 적용하여 입력에 대한 특정 성분만 뽑아내는 작업
    • CNN은 filter를 갱신하면서 학습
  • Image에 특정 filter를 Convloution한 결과를 feature map이라함
  • feature map은 Image에 적용된 filter의 개수만큼 Channel을 갖게 된다.
    • n 개의 filter가 적용된 경우 n개의 Channel을 갖는다.
    • filter를 순회하는 간격인 stride를 설정하여 convolution 한다.

(Zero)Padding

  • Convolution layer에서 filter를 사용하여 feature map을 생성할 때 이미지 크기가 작아지는 것을 방지하여, 테두리에 filter 크기를 고려하여 0으로 채우는 작업
  • 인공신경망이 이미지 외각을 인식하도록 하는 효과도 있다.
  • 5x5 이미지 둘레에 0을 채워 7x7의 이미지로 만들어 3x3 filter를 적용하면 5x5의 feature map이 만들어진다.

Pooling

  • Convolution layer의 Output을 Input으로 받아 feature map의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용
  • Max, Min, Average pooling이 있음
  • Pooling size를 Stride로 지정하며, 이 크기에 따라 줄어드는 양이 결정된다.
  • 입력 데이터의 행, 열 크기는 pooling 사이즈의 배수이어야 한다.

Flatten Layer

  • CNN 데이터를 Fully Connected Neural Network 형태로 변경하는 layer
    • 입력 데이터의 shape 변경만 수행
    • 입력 데이터의 shape가 (8, 8, 10)이면, Flatten이 적용된 출력 shape는 (640, 1)이 된다.

Fully Connected Layer

 

Output(Softmax) layer

  • Flatten layer의 출력을 입력으로 받아 분류 클래스를 매칭시키는 layer
    • 분류 작업 시행
    • 입력 shape가 (640, 1)이고, 분류 클래스가 10인 경우 출력 shape는 (10, 1)이 된다.

출처: https://developersbreach.com/convolution-neural-network-deep-learning/

 

Comments