FCNN(Fully Connected Neural Network) 에서는 입력 데이터를 1차원 배열 형태로 한정하기 때문에 입력데이터의 공간정보를 손실할 수 있다. 그렇기에 입력데이터의 이미지 공간정보를 유지한 상태로 학습 후 FCNN을 거쳐 결과물을 얻어낼 수 있다.
CNN은 이미지의 특징을 추출하는 부분과 클래스를 분류하는 부분으로 나누고 Convolution layer, Pooling layer를 여러 단계 거친다. Convolution Layer는 입력 데이터에 필터를 적용 후 활성화 함수를 반영해야 하며 pooling layer는 선택적이다.
convolution, pooling layer를 거친 각각의 결과를 feature map이라고 한다.
1. Channel
컬러 이미지의 경우 픽셀을 rgb 3개로 표현한 3차원 데이터이다.
컬러이미지(height, weight, 3), 흑백이미지(height, weight, 1)의 데이터 shape을 가진다.
Convolution Layer에서 n개의 필터를 거치면 출력은 n개의 채널을 갖게 된다.
2. Filter(Kernel)
이미지의 특징을 찾아내기 위한 공용 파라미터이며 정사각행렬로 정의된다.
CNN에서의 학습의 대상을 필터 파라미터이다.
3. Convolution
여기서는 ((1,0,1),(0,1,0),(1,0,1))의 필터를 stride 1로 합성곱을 계산하는 모습이다. stride는 필터를 적용하는 간격을 말한다.
4. Pooling(Subsampling)
feature map의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용하며 크게 max pooling, average pooling이 있으며 주로 max pooling을 사용한다.
다음 layer에서의 input size가 작아지게 되며, 사용하는 parameter 수가 줄어들어 overfitting을 방지할 수 있으며 일반화 성능을 올려준다.
convolution layer와 다르게 필터를 학습할 파라미터가 없으며 결과의 출력을 줄일 수 있다.
5. padding
출력 데이터의 크기가 계속해서 줄어드는 것을 조절하기 위한 방법이다. convolution이나 pooling으로 줄어든 feature map의 크기를 조절할 수 있으며 주로 0으로 채우는 zero padding을 사용한다.
6. 출력 데이터 크기 수식
참고자료
http://taewan.kim/post/cnn/#fn:3
CNN, Convolutional Neural Network 요약
Convolutional Neural Network, CNN을 정리합니다.
taewan.kim
https://amber-chaeeunk.tistory.com/24
딥러닝) CNN 구조 , 합성곱 계층 , padding , stride , 배치 처리
이번 포스팅에서 다룰 합성곱 신경망(Convolutional neural network , CNN)은 이미지 및 음성 인식에서 주로 사용된다. 1. CNN 구조 이전 포스팅까지 다루었던 기본 신경망은 인접하는 Layer의 모든 neuron들이
amber-chaeeunk.tistory.com
'📦 개발 > AI' 카테고리의 다른 글
[CNN] Simple Convolution Network function (1) | 2023.01.31 |
---|---|
[CNN] Simple Convolution Network (0) | 2023.01.30 |