CNN, Convolution Neural Network (1)

업데이트:

  • 연구주제 : CNN, Convolution Neural Network
  • 연구목적 : 졸업작품을 위한 CNN 이해
  • 연구일시 : 2020년 2월 6일 09:00~18:00
  • 연구자 : 이재환 ljh951103@naver.com
  • 연구장비 : HP EliteDesk 800 G4 TWR
  • 관련연구 : Machine Learing, Deep Learning, Pytorch


서론

image

CNN, Convolution Neural Network이 무엇일까?
이미지 처리 분야는 CNN이라는 이미지를 다루는 딥러닝 기법이 나옴과 함께 엄청난 속도로 발전하는 중이다.
즉, CNN이란 딥러닝 방법의 일종으로 이미지 분류를 위한 인공지능에 가장 많이 사용되고 가장 뛰어난 방법중 하나이다.
위의 사진을 보면 대충 CNN이 하는 일을 한 눈에 알 수 있다.

그럼 왜 CNN이 가장 뛰어난 방법일까?


본론

기존 이미지 분석의 문제점

초기에 Deep Neural Network에서 이미지나 영상과 같은 데이터를 처리할 때 몇 가지 문제점들이 발생하였다.
어떤 문제였냐면 예를 들어보겠다.

  • index: 1
  • 꽃받침길이: 5.1
  • 꽃받침너비: 3.5
  • 꽃잎길이: 1.4
  • 꽃일너비: 0.2
  • 꽃의 종류: setosa

이러한 꽃에 대한 정보가 많이 존재한다고 가정하자.
꽃잎의 정보를 input, 꽃의 종류를 output으로 설정하여 학습을 하게 될 것이다.
그리고 학습이 완료되면 학습된 모델에게 꽃받침과 꽃잎에 대한 정보를 입력하여 꽃의 종류가 출력될 것이다.

여기서 이러한 데이터는 1차원 데이터라고 부른다. 데이터가 하나의 row로 표현되기 때문이다.
하지만 이미지는 그렇지않다. 480x480 과 같은 형태로 표현되는 이미지는 row로 표현되지 않는다. 가능하다고? 예를 들어보자.

image

다음과 같은 꽃 사진이 있다. 이 사진 데이터를 한 줄로 표현하면 어떨까? 정말로 한 줄이 된다.

image

이런식으로 말이다..
실제로는 작은 숫자들로 이루어진 한 줄 데이터가 된다. 이 한줄로 표현된 이미지와 기존의 이미지를 비교해보면 일반 DNN으로 학습시킬 때의 문제점을 알 수 있다.

이미지 데이터는 한 점을 기준으로 주변 점들이 모여 하나의 객체를 이룬다.

위의 이미지에서는 특정 픽셀들이 모여 꽃이라는 객체를 만들게 되는데 row데이터에서는 이러한 연관 관계가 제거된다. 위의 저 그림을 누가 꽃이라고 생각하겠는가?


CNN의 극복

예를 들어보자. 다음과 같은 이미지가 있다. 저 네모 칸 하나는 픽셀을 의미하고 이 이미지의 내부는 0과 1로 구분되며 1은 검은색, 0은 흰색이라고 가정해보자.

image

CNN은 이 이미지의 한 픽셀과 주변 픽셀들의 연관관계를 유지시키며 학습시킨다.
CNN은 일단 하나의 이미지로부터 픽셀 간의 연관성을 살린 여러 개의 이미지를 생성하는 것에서 시작한다.

우선 3X3로 예를들겠다. 3x3 크기로 이미지를 뽑아내고 3X3의 랜덤값을 갖고있는 데이터(필터)와 각 픽셀을 곱해준다.
그렇게 되면 각 필터의 값에 따라서 서로 다른 값이 발생하는 것을 알 수 있다.
9개의 픽셀로부터 1개의 값이 생성되며 빨간 칸을 한칸씩 옮기면서 이 값들을 하나씩 생성하게 되면 결국 10X10 이미지 하나가 생성된다.

image

12X12 이미지가 10X10의 크기로 줄어드는데 괜찮은가?
손실되는 부분은 존재하게 된다. 그래서 우리는 이러한 문제를 해결하는 방법으로 padding 값을 주게된다.

padding이랑 이미지의 양옆에 0 값을 갖는 데이터를 추가하여 원래의 크기의 이미지와 동일하게 유지해주도록 하는 방법이다.

이러한 일련의 과정은 CNN의 핵심이고 Convolution 이라고 한다.

정리하자면 다음과 같은 사진의 형태로 Convolution의 과정이 이루어진다.

image

image


Padding

image


결론

CNN이 뭔지, 어떤 원리인지, 왜 필요한지 우리는 알아보았다. 아직 Convolution과정 말고도 거쳐야 하는 과정들이 있다. CNN에서 Convolution이 한 부분이라면 당연히 더 있다고 생각할 것이다. 그럼 다음에는 어떤 추가적인 작업을 거치는지, 추가로 CNN의 부가적인 설명을 하겠다.


향후 과제

CNN에서의 PoolingFlatten 연구


참고자료

https://youngq.tistory.com/40
https://indoml.com/2018/03/07/student-notes-convolutional-neural-networks-cnn-introduction/


Writer: Jae-Hwan Lee

댓글남기기