이번 포스팅은 CNN의 개념에 대해 정리해보았다.
포스팅에 앞서, 아래 참고문헌이 상당히 요약이 잘 되어 있어서 해당 참고문헌을 토대로 내가 이해한 개념대로 작성해보려고 한다.
참고문헌 : http://taewan.kim/post/cnn/
Input 값 (숫자 3) 은 한장의 컬러 사진이며 이는 3차원 데이터다. 하지만 Fully Connected Layer 만으로 구성된 인공 신경망의 입력데이터는 1차원 (배열) 형태로 한정된다.
※ Fully Connected Layer : 이전 레이어의 모든 노드가 다음 레이어의 모든 노드에 연결된 레이어를 Fully Connected Layer라고 하며 Dense Layer 라고도 한다.
그리고 배치 모드에 사용되는 여러 장의 사진들은 4차원 데이터다. 사진 데이터로 Fully Connected 신경망을 학습 시켜야할 경우에, 3차원의 사진 데이터를 1차원 사진 데이터로 평면화 시켜야 한다.
따라서, 차원을 낮추는 과정이기 때문에 평면화시키는 과정에서 공간 정보가 손실 될 수 있다.
다시말해 이미지 공간 정보의 유실로 인한 정보의 부족으로 인공 신경망이 특징을 추출하고 학습하는데 비효율적이며 정확도를 높이는데는 그만큼 한계가 있다. 이러한 문제점을 보완하기 위해 이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델이 바로 CNN (Convolutional Neural Network)다.
CNN은 기존 Fully Connected Neural Network와 비교하여 다음과 같은 차별성을 갖는다.
- 각 레이어의 입출력 데이터의 형상을 유지함
- 이미지의 공간 정보를 유지하면서 인접 이미지와의 특징을 효과적으로 인식함
- 복수 개의 필터로 이미지의 특징을 추출하고 학습함
- 추출한 이미지의 특징을 모으고 강화하는 Pooling Layer가 존재함
- 필터를 공유 파라미터로 사용하기 때문에 일반 인공 신경망과 비교하여 학습 파라미터가 매우 적음
CNN은 위에 있는 이미지와 같이 이미지의 특징을 추출하는 부분(Feature Extraction)과 클래스를 분류하는 부분(Classification)으로 나눌 수 있다.
1. 특징을 추출하는 부분은 Convolution Layer와 Pooling Layer를 반복하여 여러 겹 쌓는 형태로 구성되는데 Convolution Layer는 입력 데이터에 필터를 적용 후에 활성화 함수를 반영하는 필수 요소지만 Pooling Layer는 선택적인 요소이다.
2. 클래스를 분류하는 부분에는 이미지를 분류하기 위해 Fully Connected Layer가 추가된다.
3. 이미지의 특징을 추출하는 부분과 이미지를 분류하는 부분 사이에 이미지 형태의 데이터를 배열 형태로 만드는 Flatten 레이어가 위치한다.
따라서, 이미지 특징 추출을 위해서 위 그림과 같이 입력데이터를 필터가 순회하며 합성곱을 계산(1) 하고 그 계산 결과를 이용해서 Feature Map(2) 을 만든다. Convolution Layer는 Filter의 크기, Stride, Padding 적용 여부, Max Pooling 크기에 따라서 출력 데이터의 Shape가 변경(3) 된다.
'개발(Dev) 이야기 > A.I.' 카테고리의 다른 글
Deep Learning과 자율 주행 기술 (0) | 2019.08.16 |
---|---|
Deep Learning 프레임워크의 종류 (0) | 2019.08.05 |
Xilinx Benchmark 예제 코드 실행해보기 (0) | 2019.08.02 |
FPGA 기반의 Xilinx Alveo Card U200 장착 및 드라이버 설치과정 (0) | 2019.08.02 |
Hdf5 형식 파일이란 ? (0) | 2019.08.01 |