1. CNN의 개요
https://truman.tistory.com/170
- CNN은 합성곱(Convolution) 연산을 사용하는 ANN(Artificial Neural Network)의 한 종류이다.
- Convolution을 사용하면 3차원 데이터의 공간적 정보를 유지한 채 다음 레이어로 보낼 수 있다.
- 대표적인 CNN으로는 LeNet(1998)과 AlexNet(2012)이 있다.
- VGG, GoogLeNet, ResNet 등은 층을 더 깊게 쌓은 CNN기반의 DNN(Depp Neural Network, 심층 신경망)이다.
2. CNN의 흐름도
- 기존의 신경망(Artificial Neural Network) 구조에서 합성곱 계층(Conv), 풀링 계층(Pooling)이 추가된다.
- 객체의 특징 맵을 만들고 flatten을 이용해 한줄로 만든뒤 softmax등을 사용해서 구별
3. CNN의 주요 용어
3.1 Convolution(합성곱)
- 입력데이터와 필터간에 서로 대응하는 원소끼리 곱한 후 총합을 구하는것
- 교환법칙이 성립한다. : (이미지 * 필터) * 필터 = 이미지 * (필터 * 필터)
3.2 채널 (Channel)
- 컬러 이미지는 각 픽셀을 RGB 3개의 실수(3개 채널)로 표현한 3차원 데이터이다.
- 흑백 이미지는 2차원 데이터로 1개 채널로 구성된다.
- 높이가 39 픽셀이고 폭이 31 픽셀인 컬러 사진 데이터의 shape은 (39, 31, 3)으로 표현합니다.
- Convolution Layer에 유입되는 입력 데이터에는 한 개 이상의 필터가 적용된다.
- 1개 필터는 Feature Map의 채널이 됩니다.
- Convolution Layer에 n개의 필터가 적용된다면 출력 데이터는 n개의 채널을 갖게 된다.
3.3 필터 (Filter = Kernel)
- 필터는 이미지의 특징을 찾아내기 위한 공용 파라미터이다.
- 필터는 일반적으로 (4, 4)이나 (3, 3)과 같은 정사각 행렬로 정의된다.
- 입력 데이터를 지정된 간격으로 순회하며 채널별로 합성곱을 하고 모든 채널(컬러의 경우 3개)의 합성곱의 합을 Feature Map로 만든다.
- 하나의 Convolution Layer에 크기가 같은 여러 개의 필터를 적용할 수 있다.
- 여러개의 필터를 사용할 경우에 Feature Map에는 필터 갯수 만큼의 채널이 만들어진다.
- 입력데이터에 적용한 필터의 개수는 출력 데이터인 Feature Map의 채널이 된다.
- 필터는 데이터를 넣고 학습을 시키면, 자동으로 학습 데이터에서 학습을 통해서 특징을 인식하고 필터를 만들어 낸다.
3.4 스트라이드
- 필터는 입력 데이터를 지정한 간격으로 순회하면서 합성곱을 계산한다. 여기서 지정된 간격으로 필터를 순회하는 간격을 스트라이드(Stride) 라고 한다.
- 스트라이드는 필터를 적용하는 위치의 간격으로, 스트라이드가 커지면 출력크기가 작아진다.
3.5 특징맵 (Feature Map)
- Convolution Layer의 입력 데이터를 필터가 순회하며 합성곱을 통해서 만든 출력을 Feature Map 또는 Activation Map이라고 한다.
- Feature Map은 합성곱 계산으로 만들어진 행렬이다.
- Activation Map은 Feature Map 행렬에 활성 함수를 적용한 결과이다.
- 즉 Convolution 레이어의 최종 출력 결과가 Activation Map이다.
3.6 패딩(padding)
- Convolution 레이어의 출력 데이터가 줄어드는 것을 방지하는 방법이 패딩이다.
- 패딩은 입력 데이터의 외각에 지정된 픽셀만큼 특정 값으로 채워 넣는 것을 의미합니다.
- 보통 패딩 값으로 0으로 채워 넣습니다.(zero padding)
- 패딩을 사용하면 이미지를 더 구석구석 볼 수 있다는 장점이 있다.
3.7 풀링 (poolling) 레이어
- 세로 ·가로 방향의 공간을 줄이는 연산으로, Sub-sampling이라고도 불린다.
- 주로, 풀링의 윈도우 크기와 스트라이드의 값은 같게 설정한다.
- 풀링은 대상 영역에서 최댓값이나 평균만을 취하는 명확한 처리이므로 학습해야 할 매개변수가 없다.
- 채널마다 독립적으로 계산하기 때문에, 입력 데이터의 채널 수 그대로 출력 데이터로 내보낸다.
- 입력 데이터가 조금 변해도 풀링의 결과는 잘 변하지 않는다.
4. 출력 크기 계산
- 출력 크기(OH, OW)는 정수로 나누어 떨어지는 값이어야 한다. (∵원소의 개수)
- 딥러닝 프레임워크 중에는 값이 딱 나누어 떨어지지 않을 때, 가장 가까운 정수로 반올림 하는 경우도 있다.
반응형
'인공지능 > 딥러닝' 카테고리의 다른 글
강화학습 - 슈퍼마리오 DQN 기본 코드 (0) | 2020.05.12 |
---|---|
Object Detection API 설치 - Window 10 / CPU 버전 (2) | 2020.05.11 |
딥러닝의 종류와 개념 (0) | 2020.05.05 |
데이터 학습 과정 정리 (2) | 2020.04.27 |
손실 함수(Loss Function)와 최적화(Optimizer) (0) | 2020.04.27 |