-
[n431] CNN과 전이학습AI 부트캠프 2021. 12. 31. 10:51
CNN (Convolutional Neural Network)
CNN의 구조
(1) Feature Extractor 부분, (2) Classifier 2단계로 나뉜다.
합성곱(Convolution)과 풀링(Pooling)
Convolution Filter는 이미지의 부분 특징을 읽기 위해 슬라이딩한다.
패딩 (Padding)
패딩(Padding)은 보통 이미지 가장자리를 '0'으로 둘러 싸는 제로 패딩 방식을 사용한다. 패딩을 하는 이유는 (1)이미지 맨 끝 가장자리에 있는 이미지 정보 들도 보존하기 위함과 (1)Feature map의 크기를 조절하기 위함이다.
스트라이드 (Stride)
스트라이드(Stride)는 '보폭'이라는 의미이다. 이 Stride를 통해 슬라이딩 할 때 몇 칸 씩 건너 뛸지 정할 수 있다.
Stride=2일 때, 다음과 같이 2칸씩 건너 뛰는 것을 볼 수 있다.
  - Feature map 크기 변화는 필터 크기(Filter size), 패딩(Padding), 스트라이드(Stride)로 표현 가능하다.
Nin : 입력이미지 크기(=피처 수)
Nout : 출력 이미지 크기(=피처 수)
k : 합성곱에 사용되는 Filter의 크기
p : 패딩 값
s : 스트라이드 값풀링 (Pooling)
풀링(Pooling)은 공간을 줄이기 위해 수행한다. 공간과 특징을 줄이기 때문에 이미지 사이즈가 많이 줄어든다. 그래서 컨볼루션 과정이나 dense layer로 넘겨줄 때 계산에 용이하다.
대표적인 Pooling 방법으로는 최대 풀링(Max pooling)과 평균 풀링(Average pooling)이 있다. 보통 최대 풀링 방식을 사용해서 각 부분의 특징을 최대한 보존한다. 풀링 층은 학습해야 할 가중치 없이, 단순 연산만 수행하며, 채널 수가 바뀌지 않는다.
완전 연결 신경망 (Fully connected layer)
Fully Connected Layer는 분류를 위해 구축 되는 것으로, Convolutional Layer, Pooling Layer에서 특징을 추출한 뒤 구축된다.
전이 학습 (Transfer Learning)
전이 학습은 이미 대량의 데이터로 학습한 Pre-trained Model의 가중치를 가져온 뒤, Fully Connected Layer 부분만 이 케이스에 맞게 설계해서 사용한 것을 의미한다.
Pre-trained Model은 이미 대량의 데이터를 학습해서 만들어진 모델이므로, 준수한 성능을 보인다. 이를 이용해서 빠른 속도로 높은 성능을 얻을 수 있다.
이미지 분류를 위한 주요 사전 학습 모델(Pre-trained Model)
이미지 분류를 위해 Pre-trained Model이 있다. 대표적으로 VGG, Inception, ResNet 있다. (모델의 구조를 외울 필요는 없다.)
VGG
- 특징 1. Convolutional Layer는 모두 3x3 크기의 필터를 사용한다.
- 특징 2. Activation Function = ReLU, Weight Initialize = He Initialize (기울기 소실 방지를 위함)
- 특징 3. Dropout, Optimizer=Adam을 통해 과적합 방지를 한다.
GitHub - DAWUNHAN/deeplearning-fundamental: Deeplearning을 공부하며 정리한 레포지터리입니다.
Deeplearning을 공부하며 정리한 레포지터리입니다. Contribute to DAWUNHAN/deeplearning-fundamental development by creating an account on GitHub.
github.com
GoogleNet (Inception)
GoogLeNet의 가장 큰 특징은 가로 방향으로 넓은 신경망 층을 갖고 있다는 점이다. (좀 더 자세한 설명은 아래 github 링크 참조)
GitHub - DAWUNHAN/deeplearning-fundamental: Deeplearning을 공부하며 정리한 레포지터리입니다.
Deeplearning을 공부하며 정리한 레포지터리입니다. Contribute to DAWUNHAN/deeplearning-fundamental development by creating an account on GitHub.
github.com
ResNet
기울기 소실 문제로 인해 네트워크 깊이가 깊어질 수록 성능이 저하되는 문제를 해결하기 위해 등장하였다. Short Cut, Identity Block을 구성하는 것이 가장 큰 특징이다.
Short cut은 이전 레이어의 출력이 Conv Layer를 거치지 않고 그대로 전달되는 것을 의미한다. 이를 통해 역전파에서 미분을 여러차례 적용해서 1 이상의 값이 보존되어 기울기 소실 문제를 해결 할 수 있다. (물론, 완전 해결은 아니다).
GitHub - DAWUNHAN/deeplearning-fundamental: Deeplearning을 공부하며 정리한 레포지터리입니다.
Deeplearning을 공부하며 정리한 레포지터리입니다. Contribute to DAWUNHAN/deeplearning-fundamental development by creating an account on GitHub.
github.com
이미지 증강 (Image Augmentation)
이미지를 이용한 딥러닝에서 가장 중요한 점은 이미지 데이터를 확보하는 것이다. 일반 텍스트 데이터와는 다르게 이미지 데이터는 구하기가 상대적으로 어렵다. 이 문제를 해결하기 위해 이미지 하나를 변환하여 여러 개의 다른 이미지로 만드는 작업을 이미지 증강이라고 한다. 회전, 반전, 자르기, 밝기 변화, 채도 변화 등의 변환을 이용해서 같은 이미지도 다소 다르게 보이게 해서 새로운 이미지로 만들 수 있다.
이미지 증강을 위해 Albumentations를 사용할 수 있으면 자세한 내용은 다음 링크에서 설명해 두었다.
GitHub - DAWUNHAN/deeplearning-fundamental: Deeplearning을 공부하며 정리한 레포지터리입니다.
Deeplearning을 공부하며 정리한 레포지터리입니다. Contribute to DAWUNHAN/deeplearning-fundamental development by creating an account on GitHub.
github.com
'AI 부트캠프' 카테고리의 다른 글
[n433] AutoEncoder (0) 2022.01.04 [n432] Segmentation & Object Detection (0) 2022.01.03 [n425] 자연어 처리 요약 (0) 2021.12.30 [n424] Transformer (0) 2021.12.29 [n423] RNN, LSTM (0) 2021.12.28