Fully-Connected Layer 완전연결층
Affine - ReLU - Affine - ReLU - Affine - Softmax
CNN(Convolutional Neural Network)
완전 연결 신경망에서는 Affine층 뒤에 활성화함수 ReLU로
마지막 Layer 부분에는 활성화함수 소프트맥스로 최종 결과를 출력합니다.
반면, CNN은 Conv층과 Pooling층이 추가되었습니다.
마지막에는 Affine - ReLU와 Affie - Sofrmax 조합이 그대로 사용됩니다.
Fully Connected Layer는 1차원(배열) 형태로 한정되는데,
한 장의 컬러사진은 3차원 데이터입니다.
Fully Connected로 학습시킬 경우,
3차원의 이미지를 1차원으로 평면화 시켜야하는데 이 과정에서 공간 정보가 손상됩니다.
그리하여 CNN이 나오게 되었고, CNN의 특징은 다음과 같습니다.
-
각 레이어의 입출력 데이터 형상 유지
-
이미지의 공간 정보를 유지하면서 인접 이미지와 특징을 효과적으로 인식
-
복수의 필터로 이미지의 특징 추출 및 학습
-
추출한 이미지 피쳐를 모으고 강화하는 풀링층
CNN은 이미지의 특칭을 추출하는 부분 + 클래스를 분류하는 부분으로 나눌 수 있습니다.
특징 추출 영역은 컨볼루션층과 풀링층을 겹쳐 쌓는 형태입니다.
CNN의 마지막 부분에는 이미지 분류를 위한 Fully Connected 층이 추가됩니다.
이미지의 특징을 추출하는 부분과 이미지를 분류하는 부분 사이에 이미지 형태의 데이터를 배열 형태로 만드는 Flatten Layer가 위치합니다.
CNN의 특징
Convolution 합성곱
Conv층에서 처리되는 합성곱이다. 이미지 처리에서 필터 연산을 말합니다.
윈도우를 일정 보폭(stride)만큼 이동하며 입력 데이터에 적용합니다.
이미지와 필터에 대응하는 값들끼리 곱하고 그 합을 출력합니다.
위 그림을 보면 이해가 쉬운데, 노란색이 필터이고 오른쪽과 같은 피쳐가 출력됩니다.
1열의 그림에 여러가지 커널(필터)를 적용한 결과입니다. 필터를 적용시키면 이미지에서 필터 모양의 특징을 뽑아냅니다. 수직 엣지 커널로 필터링한 결과 세로로된 엣지를 검출해낸 것입니다. 반면 수평엣지를 적용했을 때는 아무것도 검출되지 않은 것입니다.
아래 물고기 그림을 보면 더 이해가 잘될 수 있습니다 :>
Filter 필터
Stride 스트라이드
Stride를 해석하면 보폭입니다.
필터를 얼마만큼 이동하며 적용할 것인지를 나타내는 숫자입니다.
스트라이드가 커지면 값을 듬성듬성 뽑아내는 것과 같습니다.
따라서 출력 데이터(이미지)가 작아집니다.
(stride의 변화를 잘 나타내는 이미지를 찾지 못했다..!)
Padding 패딩
합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값으로 채우는 것을 말합니다.
위는 식빵 테두리처럼 0으로 두른 것을 볼 수 있습니다.
이같은 처리를 하는 이유는 주로 입력 데이터와 출력 데이터의 크기를 맞추기 위함입니다.
패딩처리를 하지 않았다면 2x2 사이즈의 데이터가 나왔을 것입니다.
패딩처리를 했기때문에 처음과 같은 4x4 사이즈의 데이터를 유지했습니다.
Pooling 풀링
풀링은 큰 이미지의 크기를 줄이기 위해 사용됩니다. 가로, 세로 방향의 공간을 줄이는 연산으로 sub-sampling이라고도 불립니다.
위 그림은 Max-pooling을 나타내는데 2x2 사이즈의 윈도우에서 가장 큰(max) 값인 2를 뽑아내고,
그 다음은 3, 4, 2와 같은 최댓값으로 이루어지고, 전체적으로 사이즈가 작아진 것을 확인할 수 있습니다. 그렇다면 Average-pooling은 최댓값이 아닌 윈도우의 평균값을 뽑아낸다는 것을 유추해볼 수 있습니다.
풀링은 최댓값이나 평균을 취하는 처리이므로 학습해야할 매개변수가 없고,
각 채널마다 독립적으로 계산하기 때문에 입력 데이터의 채널 수를 그대로 내보냅니다.
또 입력 데이터에 약간의 변화가 있어도 결과가 영향을 크게 받지 않아 강건하다고 할 수 있습니다.
Reference
https://tykimos.github.io/lecture/
https://gomguard.tistory.com/188?category=712467
'대외활동 > DSC CV Study' 카테고리의 다른 글
week4 - Using Transfer Learning in Keras (0) | 2020.01.27 |
---|---|
week3 - Intel Image Classification (0) | 2020.01.27 |
week2 - Optimization 최적화 기법 (0) | 2020.01.13 |
week2 - Backpropagation 오차역전파법 (0) | 2020.01.13 |
week1 - Tensorflow로 MNIST 이미지 분류하기 (0) | 2020.01.10 |