Colab으로 하루에 하나씩 딥러닝

합성곱 신경망_1.CNN이란? 본문

딥러닝_개념

합성곱 신경망_1.CNN이란?

Elleik 2022. 12. 27. 22:27
728x90

합성곱 신경망(Convolutional Neural Network, CNN, ConvNet)

  • 이미지 전체를 한 번에 계산하는 것이 아닌 이미지의 국소적 부분을 계산함으로써 시간과 자원을 절약하여 이미지의 세밀한 부분까지 분석할 수 있는 신경망 
  • 이미지 분석시, 이미지를  펼쳐서(Flattening) 픽셀에 가중치를 곱하여 은닉층으로 전달함. 이때에 데이터의 공간적 구조를 무시하는 문제를 해결하기 위하여 CNN을 사용 
  • 음성 인식, 이미지/ 영상 처리에 유용

합성곱 신경망 구조

  • 합성곱층풀링층을 거치면석 이미지의 주요 특성 벡터를 추출
  • 추출된 주요 특성 벡터들은 완전연결층을 거치면서 1차원 벡터로 변환
  • 출력층에서 활성화 함수인 소프트맥스(softmax) 함수를 사용하여 최종 결과가 출력

 

1. 입력층(Input layer)

  • 입력 이미지 데이터가 최초로 거치게 되는 계층
  • 이미지는 높이, 너비, 채널의 값을 갖는 3차원 데이터
    • 이미지가 그레이 스케일(gray scale) → 채널값 = 1  
    • 이미지가 컬러(RGB) → 채널값 = 3
    • 이미지의 형태가 (4,4,1) =높이 4, 너비 4,  채널 1(=그레이 스케일) 

2. 합성곱층(Convolutional layer)

  • 입력 데이터에서 특성을 추출하는 역할
  • 특성을 감지하기 위해 커널(kernel) / 필터를 사용
    • 커널은 3×3, 5×5 크기로 적용되는 것이 일반적
    • 스트라이드(stride): 필터를 적용하는 위치의 간격
    • 필터 채널과 필터 개수는 상이할 수 있음  필터 채널이 3(RGB)여도 필터 개수가 1개로 연산이 진행될 수 있음
  • 특성 감지 이후 추출된 결과물이 특성 맵(feature map)

3. 풀링층(Pooling layer)

  • 합성곱층과 유사하게 특성 맵의 차원을 다운 샘플링하여 연산량을 감소시킴
  • 주요한 특성 벡터를 추출하여 학습을 효과적으로 할 수 있게 함
  • 2가지의 연산 방법 사용
    • 최대 풀링(max pooling): 대상 영역에서 최댓값을 추출 → 가중치를 갖는 값의 특성을 눈에 뜨게 확인시키기 때문에 주로 사용
    • 평균 풀링(average pooling): 대상 영역에서 평균을 반환

4. 완전연결층(Fully connected layer)

  • 합성곱층과 풀링층을 거치면서 차원이 축소된 특성 맵은 최종적으로 완전연결층에 전달됨
  • 이미지는 3차원 벡터에서 1차원 벡터로 펼쳐짐(flatten)

5. 출력층(Output layer)

  • 소프트맥스 활성화 함수를 사용하여 입력받은 값을 0~1 사이의 값으로 출력
  • 이미지가 각 레이블에 속할 확률 값이 출력되고, 가장 높은 확률 값을 갖는 레이블이 최종 값이 됨

 

참고: 서지영, 『딥러닝 텐서플로 교과서』, 길벗(2022)