CNN, Convolution Neural Network (2)
업데이트:
- 연구주제 : CNN, Convolution Neural Network
- 연구목적 : 졸업작품을 위한 CNN 이해
- 연구일시 : 2020년 2월 7일 09:00~18:00
- 연구자 : 이재환 ljh951103@naver.com
- 연구장비 : HP EliteDesk 800 G4 TWR
- 관련연구 : Machine Learing, Deep Learning, Pytorch
서론
저번 포스팅에서 CNN이 뭔지, 등장한 배경, CNN에서의 Convolution의 원리에 대해 간단하게 알아보았다.
이번 시간에는 CNN에서의 Pooling
과 Flatten
이라는 과정을 알아보겠다.
본론
서론에서 얘기한 Polling은 뭐하는 과정일까?
Pooling
pooling
은 CNN의 문제점 하나를 교정해주는 작업이다.
저번 시간을 생각해보자.
Convolution을 통해 많은 수의 이미지를 생성하였다. 하지만 그 수가 너무많아졌다는 것이 바로 문제점이다.
하나의 이미지에서 Convolution을 거칠 때 마다, 이미지의 크기도 줄지않고 몇 배수씩 이미지가 생성되는데 그래서 나온것이 Pooling이다.
결국 Pooling도 Convolution과 유사한 과정이다.
1개의 이미지에 1개의 출력을 만들면서 동시에 기존 이미지에 Padding없이 필터만 적용시켜 크기를 줄이는 방법을 Pooling 이라고 한다.
여기서 풀링을 처리하는 다음과 같은 방법들이 있다.
- Max Pooling
- Average Pooling
- Min Pooling
다음의 사진을 보면 Pooling을 잘 이해할 수 있을 것이다.
이러한 Pooling은 Convolution과 비교하여 다음과 같은 특징을 갖는다.
- 학습대상 파라미터가 없음
- Pooling을 통과하면 행렬의 크기 감소
- Pooling을 통해서 채널 수 변경 없음
CNN에서는 주로 Max Pooling을 사용한다.
Flatten
그렇다면 Flatten
은 무엇인가?
Convolution과 Pooling을 계속 반복하면 이미지의 숫자는 많아지고 크기는 점점 줄어들게 된다.
최종적으로 도출되는 이미지는 이미지라기 보다는 특정 이미지에서 얻어온 하나의 특이점 데이터가 된다는 말이다.
즉, 2차원이 아닌 1차원의 Row 데이터로 취급해도 무관한 상태가 된다는 의미이다.
따라서 하나의 이미지로부터 다양한 특이점들을 뽑아내고 이것을 1차원 데이터로 변형하는 것을 Flatten이라고 한다.
다음 사진은 CNN의 전체적인 과정을 나타낸다. Flatten의 위치를 보면 이해가 빠를 것이라고 생각한다.
조각 하나하나의 특징데이터는 하나의 row 데이터가 된다.
CNN vs FCNN
기존의 FCNN은 1장의 컬러 사진을 1차원 배열의 형태로 한정한다. 이럴 경우, 공간 정보의 손실은 어쩔 수 없는 부분이 된다.
결과적으로 인공 신경망이 특징을 추출 및 학습이 비효율적이고 정확도 향상에 한계가 있다.
이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델이 CNN이다.
CNN은 FCNN과 다음과 같이 차별되는 특징을 갖는다.
- 각 레이어의 입출력 데이터의 형상 유지
- 이미지의 공간 정보를 유지하면서 인접 이미지와의 특징을 효과적으로 인식
- 복수의 필터로 이미지의 특징 추출 및 학습
- 추출한 이미지의 특징을 모으고 강화하는 Pooling 레이어
- 필터를 공유 파라미터로 사용하기 때문에, 일반 인공 신경망과 비교하여 학습 파라미터가 매우 적음
결론
정리를 하자면 다음과 같다.
- 특징 추출 영역은 다음과 같은 레이어의 여러 겹의 형태로 구성된다.
- Convolution Layer
- Pooling Layer
-
Convolution Layer는 입력 데이터에 필터를 적용 후 활성화 함수를 반영하는 핵심요소다.
-
Convolution Layer 다음에 위치하는 Pooling Layer는 선택적인 레이어다.
-
CNN의 마지막 부분에는 이미지 분류를 위한 Fully Connected 레이어가 추가된다.
- 이미지 특징을 추출하는 부분과 분류하는 부분 사이에는 이미지 형태의 데이터를 배열 형태로 만드는 Flatten 레이어가 위치한다.
즉, CNN은 이미지 특징을 추출하는 부분, 분류하는 부분으로 나뉘고 특징 추출 영역은 Filter를 사용하여 공유 파라미터 수를 최소화하면서 이미지의 특징을 찾는 Convolution 레이어와 특징을 강화하고 모으는 Pooling 레이어로 구성된다.
필터의 크기, Stribe, Padding과 Pooling 크기로 출력 데이터 크기를 조절하고 필터의 개수로 출력 데이터 채널을 결정한다.
향후 과제
딥러닝을 이용한 졸업작품 제작
참고자료
https://youngq.tistory.com/40
https://indoml.com/2018/03/07/student-notes-convolutional-neural-networks-cnn-introduction/
http://itwiki.kr/w/CNN
http://taewan.kim/post/cnn/
Writer: Jae-Hwan Lee
댓글남기기