Rei’s Tech diary

딥러닝의 대표주자 CNN, 이미지 인식, Convolution Layer 본문

프로그래밍/AI

딥러닝의 대표주자 CNN, 이미지 인식, Convolution Layer

Reiger 2022. 10. 27. 03:13
딥러닝(Deep Learning) 의 개념

딥러닝(Deep Learning) : 인공신경망의 일종으로, 입력계층과 출력계층 사이에 2개 이상의 은닉계층을 갖는 심층신경망을 뜻함.

2000년대 초반까지 형성된 인공신경망에 대한 부정적인 인식 때문에, 기존 인공신경망의 한계를 뛰어넘은 인공신경망에 대해 '딥러닝'이라고 용어를 붙여 리브랜딩한 것.

'인공지능 ⊃ 머신러닝 ⊃ 딥러닝' 의 관계.

 

 

딥러닝의 특징

- 특징 추출(Feature Extraction) : 데이터로부터 올바른 결과 도출에 도움이 되는 정보를 뽑아내는 작업.

예를 들어, 고양이와 개를 구분하고자 할 때 올바른 결과 도출에 도움이 되는 중요한 특징으로 '꼬리 모양'과 '눈동자 모양'을 추출할 수 있지만, 이 작업을 사람이 수행하는 경우, 얼마나 특징 추추을 잘하느냐는 전적으로 그 사람의 능력에 좌우됨.

만약,  '발가락 개수'를 특징으로 쓴다면 고양이와 개를 구분하는 데 전혀 도움이 되지 않아, 머신러닝 모델의 성능도 향상되지 않음.

 

- 딥러닝 외 대부분의 머신러닝 알고리즘들은 데이터의 양이 일정 수준을 넘어사면 더 이상 성능이 향상되지 않는 한계를 보이지만, 딥러닝은 데이터가 많을수록 성능이 좋아지는 것이 특징.

 

 


컨볼루션 신경망, CNN (Convolution Neural Network)

컨볼루션 신경망(CNN, Convolution Neural Network)은 딥러닝의 한 종류로, 주로 이미지를 인식하는 데 사용됨.

CNN의 구조는 ①특징 추출 부분②분류부분으로 나누어져 있음.

특징 추출 부분은 입력된 이미지로부터 이미지 구분에 유용한 특징을 자동으로 추출.

이렇게 추출된 특징은 분류 부분에 입력되어 이미지 분류의 정확도를 높임.

 

 

 

CNN의 특징 추출 작업

만약 있는 그대로의 형태를 기준으로 이미지를 분류한다면, 같은 고양이 이미지더라도 고양이의 위치, 크기, 자세, 표정 등이 다를 때 분류에 어려움을 겪게 된다.

이미지의 "형태" 대신 이미지를 제대로 파악할 수 있는 "대표적인 특징"들을 도출하고, 도출된 특징들로 이미지를 분류하면 해결할 수 있다.

 

CNN의 특징 추출 부분은 컨볼루션 계층과 풀링 계층이 쌍으로 여러 겹 구성되어 있다.

* 컨볼루션 계층(Convolution Layer) : 이미지에 어떤 특징이 있는지 찾아내는 필터(Filter)를 활용하여 이미지의 특징 지도(Feature Map)를 만듦.

* 풀링 계층(Pooling Layer) : 컨볼루션 계층에서 만들어낸 특징 지도를 일정 크기의 영역으로 구분하여 그 영역을 대표하는 값을 결정.

 

CNN 구조 정리

 

 

FNNs vs. CNN

이미지 데이터에서는 일반적으로 인접 픽셀간의 매우 높은 상관관계가 존재하기 때문에 이미지를 벡터화하는 과정에서 막대한 정보 손실이 발생한다.

CNN은 이미지의 형태를 보존하도록 행렬 형태의 데이터를 입력받기 때문에 이미지를 벡터화하는 과정에서 발생하는 정보 손실을 방지한다.

 

만약 FNN을 이용하여 1024x1024 크기의 컬러 이미지를 처리하고자 한다면, FNN에 입력되는 벡터의 차원은 약 315만이라는 막대한 수가 된다. 300만 차원의 입력을 처리하기 위해서는 필연적으로 막대한 양의 뉴런이 필요하고, 이에 따라 인공신경망 전체의 model parameter는 기하급수적으로 증가한다.

CNN을 이용하면 단순히 필터들을 모수화할 수 있을 정도의 model parameter만 필요하며, CNN의 마지막 fully-connected layer는 원본 이미지가 아닌 풀링 계층을 통해 축소된 이미지를 처리하기 때문에 fully-connected layer의 가중치 또한 크게 줄어든다.

 

 

 

컨볼루션 계층 (Convolution Layer)

 

 

풀링 계층 (Pooling Layer)

스트라이드가 2로 설정된 max-pooling 기반 출링 계층의 동작

국소 영역 내부에서는 픽셀들이 이동 및 회전 등에 의해 위치가 변경되더라도 출력값은 동일하다.

따라서, 풀링 계층을 이용할 경우, 이미지를 구성하는 요소들의 이동 및 회전 등에 의해 CNN의 출력값이 영향을 받는 문제를 완화할 수 있다.

 

CNN이 처리해야 하는 이미지의 크기가 크게 줄어들기 때문에 인공신경망의 model parameter 또한 크게 감소한다. 따라서, 풀링 계층을 이용함으로써 CNN의 학습 시간을 크게 절약할 수 있으며, 오버피팅(overfitting) 문제 또한 어느 정도 완화할 수 있다.