목차
더보기
1. CNN
2. Convolution Layer
3. Pooling Layer
4. Fully Connected Layer
1. CNN
DNN의 문제점
- 일반 DNS는 1차원 형태의 데이터를 flatten 시켜서 한 줄 데이터로써 처리한다.
- 이 때, 이미지가 입력되는 경우 공간적/지역적 정보를 손실하고 추상화 과정이 없기 때무에 학습 시간과 성능 효율이 떨어진다.
CNN이란?
- 1차원 데이터를 넘어서 이미지나 영상 데이터를 처리하는 모델이다.
- 이를 위해 Convolution이라는 전처리 과정을 수행한다.
- CNN은 이미지의 공간적/지역적 정보를 유지한 채 특징들의 채널을 쌓는다.
- 따라서 이미지 전체가 아닌 부분을 집중하는 것, 한 픽셀과 주변 픽셀들의 연관성을 추출하는게 핵심이다.
2. Convolution Layer
Convolution layer의 작동원리
- 주로 이미지를 입력으로 받는데 이때의 예시를 살펴보자.
- 32*32 단위의 픽셀로 구성됐다. 이를 32*32 2차원 매트릭스로 표현할 수 있다.
- 즉, 실제 CNN의 입력값은 실제 이미지가 아닌 매트릭스이다.
- 채널은 이미지의 경우 RGB, 3가지 경우를 갖기 때문에 3이다. 흑백의 경우 1이 될 수도 있다.
- 입력값(매트릭스)를 전체적으로 훑어 특징을 찾아내기 위해 필터를 사용한다.
- 필터의 채널이 입력 이미지의 채널과 같아야 한다는 중요한 특징이 있다.
- 필터는 매트릭스와 매트릭스 간의 Inner Product를 수행한다.
- 입력값에서 필터를 가지고 각각 내적 연산을 해서 하나의 숫자를 만든다. 이를 상하좌우 전체적으로 이동하면서 계산하고 결과값을 모은다.
- 그 결과, 32*32 매트릭스에서 28*28 크기로 축소됐음을 알 수 있다.
- 각 특징별 필터를 가지고 이와 같은 과정을 반복하면 필터 개수만큼 피처맵이 여러 장 생긴다.
- 즉, 출력 피처맵의 채널 수는 Convolution 필터의 개수와 같다는 특징이 있다.
Stride
- 필터를 옆으로 얼마만큼 움직일건가를 말한다.
- 그림과 같이 stride가 2라면 두칸씩 움직인다는 것이다.
Zero padding
- Convolution의 결과를 살펴보면 32*32에서 28*28 크기로 축소됐다. 즉 이미지 정보에 손실이 생겼다는 뜻이다.
- 이를 해결하기 위해 입력값에서 축소될 크기만큼 0으로 구성된 테두리를 이미지 테두리에 씌운다.
- 즉, 32*32 매트릭스에 4*4만큼 Padding을 씌워서 필터를 적용했을 때 32*32 크기로 손실을 없앤다.
Activation Function
- Relu를 사용하여 -1을 0으로 바꿔준다.
3. Pooling Layer
Convolution의 문제점
- 입력값 하나의 이미지에서 필터를 적용해 결과값이 너무 많아졌다.
- 때문에 결과값의 낮은 특징은 제거하고 높은 특징은 드러내기 위해 크기를 줄이는 Pooling을 수행한다.
Max Pooling
- Max Pooling은 매트릭스에서 가장 큰 숫자를 뽑아 채널을 반으로 축소한다.
Average Pooling
- Average Pooling은 매트릭스에서 평균값을 가지고 채널을 반으로 축소한다.
4. Fully Connected Layer
동작 과정 살펴보기
- Max Pooling의 연산 결과를 입력값으로 생각해보자.
- 2차원의 형태를 1차원으로, 벡터 형태를 만든다.
- 이를 전부 연결해서 결국 2개의 클래스로 나타낸다. 이를 Softmax에 통과시켜 분류한다.
'Group Study (2022-2023) > Machine Learning' 카테고리의 다른 글
[Machine Learning] 8주차 스터디 - Segmentation: U-Net (0) | 2022.11.28 |
---|---|
Part 3. Convolutional Neural Network(2) (0) | 2022.11.26 |
[Machine Learning] 6주차 스터디 - PART 2: Basic Deep Learning (2) / PART 3: Convolutional Neural Network (1) (0) | 2022.11.21 |
[Machine Learning] 5주차 스터디 - PART 2: Basic Deep Learning (0) | 2022.11.18 |
[Machine Learning] 6주차 스터디 - Object Detection: YOLOv1~v2 (0) | 2022.11.15 |