[딥러닝] CNN (Convolutional Neural Network)

sdubee10·2021년 12월 14일
0

Deep Learning

목록 보기
1/3

Convolutional Neural Network

CNN (Convolutional Neural Netowkr)모델은 이미지나 영상과 같은 데이터에서 패턴을 찾는데 유용하게 사용된다.

위의 그림처럼 CNN 모델은 데이터에서 직접 패턴을 찾아서 학습하는 "특징 검출" 부분이 있고, 찾은 패턴들을 이용하여 이미지를 판별하는 "분류"부분을 가지고 있다.


개인적으로 Convolutional Neural Network 라는 단어를 처음 접했을 때, 용어자체가 어렵다고 느껴졌다.

Convolution은 "합성곱" 이라는 뜻을 지니고 있는데, CNN을 "합성곱 신경망"이라고 부르는 것일까?

먼저 합성곱이라는 사전적 의미는 다음과 같다.

"두 함수 중 하나를 반전(reverse)하고 이동(shift)시켜가며 다른 하나의 함수와 곱한 결과를 적분하여 새로운 함수를 구하는 수학 연산자"


흠...

쉽게 이해하자면..

먼저 위에서 설명했듯이 CNN 모델은 데이터에서 직접 패턴을 찾고, 찾은 패턴들을 학습하여 이미지가 무엇인지 분류한다고 언급했다.

만약 컴퓨터에게 특정 사진을 입력 한 후, 이것이 무엇인지 판단하라고 하면 쉽게 분류하지 못할 것이다. 그래서 CNN모델은 이 사진을 먼저 잘게잘게 나뉘어서 특정 패턴을 찾으려고 한다.

만약 전체 사진을 5x5 행렬 형태로 변환하여 아래의 왼쪽 그림처럼 표현했다라고 하자.

여기에서 전체 사진을 3x3크기로 나눠서 특징을 찾으려고 할 때, 초록색의 3x3크기로 나누어 초록색 박스안에 있는 정보(현재 초록색 박스안에 있는 1의 개수)를 오른쪽 사진의 숫자 4로 요약하 표현할 수 있을 것이다.

여기에서 이미지의 특징이 대상 데이터에 있는지 없는지 검출해주는 함수를 필터라고 한다.

위와 유사한 필터링 작업을 "위아래방향필터", "좌우방향필터", "대각선방향필터", "이러이러한필터", "세모필터", 등 여러여러 가지의 조각 필터를 이용하여 해당 패턴이 그림위에 있는지 확인한 후, 나뉘어진 필터들을 합치고 특징을 파악하는 과정에서 "합성" 이라는 과정이 오게 된다.

이러한 이유로 잘게 나뉘어진 부분들을 "합성"하고, 나뉘어진 필터에서 파악한 특징들을 학습하는 과정이 있기에 Convolution이라고 부른다.


CNN 특징

CNN 모델을 그럼 언제 사용하면 좋을까?

CNN 모델은 특징맵을 생성하는 필터까지도 학습이 가능하기 때문에 비전 분야에서 성능이 매우 우수하다. 그래서 이미지를 인식하기 위해 패턴을 찾는데 많이 사용되며, 자율 주행자동차, 얼굴인식과 같은 객체인식이나 Computer Vision이 피요한 분야에서 많이 사용되고 있다.


CNN에서 자주 사용되는 주요 용어

  • Filter
    - 위에서 언급한 feature를 찾기 위한 detector
  • Stride
    - Filter를 몇칸 이동할 건지 정함
  • Padding
    - 입력데이터보다 출력 데이터가 작아지는 것을 방하는 방법

    위와 같이 0으로 둘러싸는 padding을 zero padding이라고 부르며, 0이라는 값을 붙였기 때문에 특징이나 분해능에는 영향을 미치지 않는다.
  • Pooling
    - 만약 1000 X 1000 크기의 이미지를 3X3크기의 필터로 특징을 찾게 된다면, 연산량이 많이 발생한다. 그래서 기존 이미지 크기를 적당히 줄이고, 특정 feature를 강조하기 위해서 사용 할 때 pooling 방법을 사용한다.
    pooling에는 Max Pooling, Average Pooling, Min Pooling이 있으며, CNN에서는 주로 Max Pooling을 사용한다. 이렇게 하면 오니즈가 감소하고 속도가 빨라지며 이미지 혹은 영상의 분별력 역시 좋아지는 효과를 볼 수 있다.

0개의 댓글