인공지능/딥러닝

CNN(Convolution Neural Network)의 기본

해피밀세트 2020. 5. 10. 22:43
반응형

 

1. CNN의 개요

https://truman.tistory.com/170

 

딥러닝의 종류와 개념

1. CNN Convolutional Neural Network, 합성곱 신경망 인간의 시신경 구조를 모방한 기술 1989년 LeCun이 발표한 논문에서 처음 소개가 되었으며, 필기체 zip code 인식을 위한 프로젝트를 통해 개발이 되었다...

truman.tistory.com

  • CNN은 합성곱(Convolution) 연산을 사용하는 ANN(Artificial Neural Network)의 한 종류이다.
  • Convolution을 사용하면 3차원 데이터의 공간적 정보를 유지한 채 다음 레이어로 보낼 수 있다.
  • 대표적인 CNN으로는 LeNet(1998)과 AlexNet(2012)이 있다.
  • VGG, GoogLeNet, ResNet 등은 층을 더 깊게 쌓은 CNN기반의 DNN(Depp Neural Network, 심층 신경망)이다.

 

 

2. CNN의 흐름도

 

http://taewan.kim/post/cnn/#1-1-%ED%95%A9%EC%84%B1%EA%B3%B1-convolution
https://bcho.tistory.com/1149

 

file:///C:/Users/knit/Downloads/DLFS_CH7.pdf

 

  • 기존의 신경망(Artificial Neural Network) 구조에서 합성곱 계층(Conv), 풀링 계층(Pooling)이 추가된다.
  • 객체의 특징 맵을 만들고 flatten을 이용해 한줄로 만든뒤 softmax등을 사용해서 구별

 

 

3. CNN의 주요 용어

3.1 Convolution(합성곱)

http://deeplearning.stanford.edu/wiki/index.php/Feature_extraction_using_convolution

 

  • 입력데이터와 필터간에 서로 대응하는 원소끼리 곱한 후 총합을 구하는것
  • 교환법칙이 성립한다. : (이미지 * 필터) * 필터 = 이미지 * (필터 * 필터)

 

 

3.2 채널 (Channel)

 

  • 컬러 이미지는 각 픽셀을 RGB 3개의 실수(3개 채널)로 표현한 3차원 데이터이다.
  • 흑백 이미지는 2차원 데이터로 1개 채널로 구성된다.
  • 높이가 39 픽셀이고 폭이 31 픽셀인 컬러 사진 데이터의 shape은 (39, 31, 3)으로 표현합니다.
  • Convolution Layer에 유입되는 입력 데이터에는 한 개 이상의 필터가 적용된다.
  • 1개 필터는 Feature Map의 채널이 됩니다.
  • Convolution Layer에 n개의 필터가 적용된다면 출력 데이터는 n개의 채널을 갖게 된다.

 

 

3.3 필터 (Filter = Kernel)

https://bcho.tistory.com/1149

 

https://excelsior-cjh.tistory.com/180

 

  • 필터는 이미지의 특징을 찾아내기 위한 공용 파라미터이다.
  • 필터는 일반적으로 (4, 4)이나 (3, 3)과 같은 정사각 행렬로 정의된다. 
  • 입력 데이터를 지정된 간격으로 순회하며 채널별로 합성곱을 하고 모든 채널(컬러의 경우 3개)의 합성곱의 합을 Feature Map로 만든다. 
  • 하나의 Convolution Layer에 크기가 같은 여러 개의 필터를 적용할 수 있다.
  • 여러개의 필터를 사용할 경우에 Feature Map에는 필터 갯수 만큼의 채널이 만들어진다.
  • 입력데이터에 적용한 필터의 개수는 출력 데이터인 Feature Map의 채널이 된다.
  • 필터는 데이터를 넣고 학습을 시키면, 자동으로 학습 데이터에서 학습을 통해서 특징을 인식하고 필터를 만들어 낸다.

 

 

3.4 스트라이드

https://excelsior-cjh.tistory.com/180

 

  • 필터는 입력 데이터를 지정한 간격으로 순회하면서 합성곱을 계산한다. 여기서 지정된 간격으로 필터를 순회하는 간격을 스트라이드(Stride) 라고 한다.
  • 스트라이드는 필터를 적용하는 위치의 간격으로, 스트라이드가 커지면 출력크기가 작아진다.

 

 

3.5 특징맵 (Feature Map)

https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2

 

  • Convolution Layer의 입력 데이터를 필터가 순회하며 합성곱을 통해서 만든 출력을 Feature Map 또는 Activation Map이라고 한다. 
  • Feature Map은 합성곱 계산으로 만들어진 행렬이다.
  • Activation Map은 Feature Map 행렬에 활성 함수를 적용한 결과이다. 
  • 즉 Convolution 레이어의 최종 출력 결과가 Activation Map이다.

 

 

3.6 패딩(padding)

https://excelsior-cjh.tistory.com/180

 

  • Convolution 레이어의 출력 데이터가 줄어드는 것을 방지하는 방법이 패딩이다. 
  • 패딩은 입력 데이터의 외각에 지정된 픽셀만큼 특정 값으로 채워 넣는 것을 의미합니다. 
  • 보통 패딩 값으로 0으로 채워 넣습니다.(zero padding)
  • 패딩을 사용하면 이미지를 더 구석구석 볼 수 있다는 장점이 있다.

 

 

3.7 풀링 (poolling) 레이어

http://vaaaaaanquish.hatenablog.com/entry/2015/01/26/060622

 

  • 세로 ·가로 방향의 공간을 줄이는 연산으로, Sub-sampling이라고도 불린다.
  • 주로, 풀링의 윈도우 크기와 스트라이드의 값은 같게 설정한다. 
  • 풀링은 대상 영역에서 최댓값이나 평균만을 취하는 명확한 처리이므로 학습해야 할 매개변수가 없다.
  • 채널마다 독립적으로 계산하기 때문에, 입력 데이터의 채널 수 그대로 출력 데이터로 내보낸다.
  • 입력 데이터가 조금 변해도 풀링의 결과는 잘 변하지 않는다.

 

 

 

4. 출력 크기 계산

file:///C:/Users/knit/Downloads/DLFS_CH7.pdf

 

  • 출력 크기(OH, OW)는 정수로 나누어 떨어지는 값이어야 한다. (∵원소의 개수)
  • 딥러닝 프레임워크 중에는 값이 딱 나누어 떨어지지 않을 때, 가장 가까운 정수로 반올림 하는 경우도 있다.
반응형