reniew's blog
cs and deep learning

About CNN

|

About CNN

CNN의 역사

CNN이 최초로 등장한 것은 1989년 LeCun의 “Backpropagation applied to handwritten zip code recognition” 에서 처음으로 등장하였다. CNN을 활용해 필기체 인식에서 성과를 확인하였지만, 이를 범용화 하기에는 아직까지는 어려움이 많이있었다. LeCun은 이후 LeNet이라는 Network를 1998년 처음으로 소개하게 되었다.

이후 2003년 Behnke의 논문 “Hierarchical Neural Networks for Image Interpretation” 과 simard의 논문 “Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis” 을 통해 일반화과 되었다고 볼 수 있다.

Image에서 CNN을 도입한데에는 기존의 Fully-Connected Neural Network들이 Image에 적용할 경우 똑같은 Object를 나타내더라도 조금만 변형(ex. 기울어짐, 비틀림 등)이 일어나도 다른 Object로 인식을 할 수 있다는 단점이 존재했기 떄문이다.(Image의 Topology 변화에 대응이 어렵다)

About CNN

CNN은 기본적으로 Image에 대해 Convolution 연산을 사용하는 layer들이 사용된 Neural Network를 뜻한다.

CNN의 기본적인 구조는 아래와 같다. CNN ArchitectureCNN의 기본적인 Architecture (출처 : https://taewanmerepo.github.io/2018/01/cnn/cnnexam.png)

Convolution Layer와 Sub-Sampling Layer들이 일정 수 만큼 나온 후 마지막에 Fully-Connected Layer가 나오는 구조이다.

CNN의 주요 용어

CNN에서 주로 사용되는 사용되는 용어는 아래와 같다.

  • Convolution
  • Channel
  • Filter
  • Kernel
  • Stride
  • Padding
  • Fiture Map
  • Activation Map
  • Polling
  1. Convolution CNN에서의 합성곱이란 각각의 Pixel에 대해 일정한 값들을 곱한 후 합치는 과정을 의미한다. 아래의 그림과 같이 Convolution 연산이 이뤄진다. Convolution 합성곱 연산 (출처: http://deeplearning.stanford.edu/wiki/index.php/Feature_extraction_using_convolution)
  2. Channel Image의 층으로 이해할 수 있다. 기본적으로 흑백이 아닌 컬러사진은 각 픽셀에 대해 RGB값이 3개의 Value를 갖는다. 따라서 컬러 사진은 3개의 채널을 가지게 된다. ChannelChannel (출처:https://en.wikipedia.org/wiki/Channel_(digital_image))
  3. Filter Filter는 Convolution 연산이 이뤄지는 window를 의미한다.
  4. Kernel CNN에서 Kernel은 Filter와 같은 의미로 사용된다.
  5. Stride Convolution Layer에서 기본적으로는 filter가 한칸씩 이동하면 Convolution 연산이 이뤄지지만, Stride 값에 따라 Convolution연산을 한 뒤 n칸만큼 이동한 후 Convolution 연산이 이뤄진다. 그림을 통해 이해하면 쉽다. Stride(출처:https://taewanmerepo.github.io/2018/01/cnn/filter.jpg)
  6. Padding Padding이란 Convolution Layer에서 이미지의 가장자리에 일정한 값을 추가로 넣는 것을 의미한다 주로 Zero Padding이 사용된다.
  7. Fiture Map Convolution 결과로 만들어진 Map을 의미한다.
  8. Activation Map Filter Map에 Activation Fuction을 적용한 Map을 의미한다.
  9. Polling Polling 이란 Fiture Map의 크기를 줄이기 위해 주로 사용한다. 일정한 크기의 영역의 값들을 어떠한 특징으로 값을 뽑아 하나의 값으로 줄이는 과정이다 Polling(출처 : https://taewanmerepo.github.io/2018/02/cnn/maxpulling.png)
CNN을 활용한 Computer Vision 문제들

초기에는 필기체 숫자들을 분류하기 위해 CNN을 사용하였지만, 시간이 흐르면서 점점 많은 분야에 CNN이 활용되고 있다.

CNN이 사용되는 대표적인 Task들을 다음과 같다

  • Image Classification
  • Semantic Segmentation
  • Object Detection
  • Object Localization
  • Visual QnA
  • Image Captioning

이러한 Task들을 풀어가는 CNN 모델들에 대해서 다음 포스트에서 하나씩 알아보도록 하겠다.

Comments