- 강의 목록
- [DLBasic] CNN - Convolution은 무엇인가?
- [DLBasic] Modern CNN - 1x1 convolution의 중요성
- [DLBasic] Computer Vision Applications
- [DLBasic] CNN Assignment
- [DLBasic] CNN - 강아지 종류 분류하기
- [DLBasic] CNN - 나만의 데이터셋 만들기
- [DLBasic] 과제 해설 - Optimization
- 요약
강의
CNN의 상세한 개념을 학습했고, 여러 모델을 학습했다.
GoogleNet과 VGGNet을 통해 1*1 컨볼루션의 중요성을 집중적으로 학습했다.
그리고 Semantic Segmentation과 Detection 분야에서의 CNN의 활용을 학습했다.
피어세션
어제 배운 내용들을 복습하며, 파이썬 머신러닝 완벽 가이드 책을 토대로 검증 과정을 공부했다.
- 학습정리
Convolution Neural Networks
- CNN은 컨볼루션 레이어와 풀링 레이어, 그리고 완전연결층으로 구성되었다.
- 컨볼루션 레이어와 풀링 레이어에서 특징을 추출하는 단계를 거친다.
*패딩 : 컨볼루션의 결과로 이미지의 크기가 줄어들지 않도록 유지
*stride : 필터의 이동간격
*요즘에는 완전연결층이 없어지는 추세
*완전연결층에서 파라미터의 개수가 지나치게 많이 늘어남.
*컨볼루션 횟수를 늘리면서 파라미터를 줄이는 것이 이득.
1*1 컨볼루션
- 차원의 축소가 일어난다.
- 깊이를 증가시키며 매개 변수 수를 줄이는 방법이다.
1*1 컨볼루션은 원하는 수의 채널 수를 가질 수 있다.
이로 인해 파라미터의 수가 줄어들어 계산량이 감소한다.
AlexNet
- Relu 함수를 사용하기 시작했다.
- GPU 두 개를 병렬적으로 사용했다.
- 드롭 아웃과 Data Augmentation을 사용했다.
- Local response normalization, Overlapping pooling을 사용했다.
*Relu 함수는 Tanh 함수와 같은 정확도를 보이나 6배 가량 빠르다.
*Overlapping pooling은 stride를 조정해 풀링 범위를 겹치게 하는 것.
*Relu 함수의 장점
1) 선형 모형의 특성 보존
2) 경사 하강으로 최적화가 쉬움
3) 일반화가 좋음
4) 경사도 소멸 문제 극복
VGGNet
- 3*3 필터만을 사용해 깊이를 늘렸다.
- 완전 연결층에서 1*1 컨볼루션을 했다.
- 드롭 아웃을 사용했다.
3*3 레이어
-3*3 필터를 여러 개 겹쳐 사용하면 5*5, 7*7 등의 더 큰 필터의 효과를 낼 수 있다.
-weight과 memory 관점에서 3*3 필터를 여러 개 사용하는 것이 연산량 감소와
메모리 효율 증가의 이점이 있다.
GoogleNet
- NiN(network in network)인 Inception 블록을 사용한다.
- Inception Block
- 파라미터의 수를 줄여준다.
- 매개변수의 계산을 기억한다.
- 1*1 컨볼루션으로 채널의 넓이 감소의 효과가 있다.
ResNet
- 매우 깊은 네트워크를 보유했다.
- 원래 네트워크가 깊으면 오버피팅이 일어날 수 있는데, ResNet은 Skip 연결로 이를 없앴다.
- Skip 연결은 연산값에 입력값을 추가로 가지고 있음으로써 깊은 네트워크로 인한 경사도 소실 문제로 인한 학습률 저하를 완화시켰다.
- Bottle-neck을 사용한다.
DenseNet
- ResNet에서는 원본 데이터를 추가했다면, DenseNet은 함께 이용한다.
- DenseBlock : 각 레이어는 이전 레이어의 피처 맵을 포함한다. 채널 수가 기하학적으로 증가
- Transition Block : 배치 정규화. 1*1 컨볼루션, 2*2 평균풀링을 통해 차원을 줄였다.
Semantic Segmentation
- 컴퓨터 비전 분야에서 가장 핵심적인 분야
- 단순히 사진을 분류하는 것이 아닌, 해당 사진을 완벽하게 이해하는 높은 수준의 문제
- 이미지의 각 픽셀들이 어떤 라벨에 포함되는지 분류한다.
Fully Convolutional Networ
- Semantic Segmeatation 모델을 위해 CNN을 변형시킨 것.
- 기존의 CNN은 마지막 단계에서 완전연결층을 거치는데, 이 때 위치정보가 사라진다. (Flatten)
- 이를 위해 완전연결층을 없애고, 컨볼루션 레이어로 대체한다.
- 마지막 컨볼루션 레이어는 heap map을 출력한다.
- heap map은 분류 뿐 아니라 위치 정보를 유지한다.
- 그런데 이 heap map은 input 데이터가 너무 커진다. (coarse하다)
- 따라서 원본 이미지 크기에 가까운 Dense map으로 변환해야 한다.
- 위의 방법에는 네 가지 방법이 있다. : Interpolation, Deconvolution, Unpooling, Shift & stitch
*Deconvolution (conv transpose)
-output 이미지를 원본 input 사이즈로 복원하는 과정.
-upsampling이라고도 부른다.
Detection
- Detection은 픽셀로 위치를 구분하는 것이 아닌, 바운딩 박스를 통해 개체를 구분하는 방식.
R-CNN
- 입력 이미지에서 2,000개의 임의의 영역을 추출한 뒤 동일한 크기로 맞춘다.
- 그 후 알렉스넷을 활용해 특징을 계산하고 선형 SCM으로 분류한다.
- 2,000개의 이미지가 CNN을 통해야 하므로 너무 느리다.
SPPNet
- SPPNet은 CNN을 한 번만 적용하여 R-CNN의 단점인 속도를 보완한다.
Fast R-CNN
- SPPNet과 유사하지만 마지막에 NN을 적용한 부분이 다르다.
Faster R-CNN
- Region Proposal Network와 Fast R-CNN을 합친 것
- Region Proposal Network : 영역을 선택하는 것도 네트워크로 학습하자고 해서 만든 것
- Region Proposal Network는 이미지에서 특정 영역이 bounnding box의 의미가 있는지 확인한다.
YOLO
- 실시간성에 중점을 둔 네트워크.
- Faster R-CNN보다 빠르다.
- Region Proposal Network가 없어 빠른 속도를 낼 수 있다.
- 이미지가 들어오면 n개의 그리드로 영역을 나눈다.
- n개의 bounding box를 찾아주고 쓸모가 있는지 확인하며 해당 그리드가 어떤 클래스인지 예측한다.
- 그리고 두 개의 정보를 취합해 결과를 표현한다.
- 피어세션 회의 내용
# Gradient Descent
- mini-batch의 크기가 작은 것이 좋은 결과를 얻는다고 수업했지만, 크기가 클 때가 좋다는 관점의 논문도 있다.
- NAG 다음 위치에 근하는 값에서 gradient를 확인한다 -> 관성이 강한경우 찾고자하는 극소를 넘어가는 것을 방지할 수 있다.
- 해야할 일
'BOOSTCAMP AI TECH > 3주차_Deep Learning Basics' 카테고리의 다른 글
[BOOSTCAMP AI TECH] 15일차_Generative model (0) | 2021.02.07 |
---|---|
[BOOSTCAMP AI TECH] 14일차_Recurrent Neural Network (0) | 2021.02.04 |
[BOOSTCAMP AI TECH] 12일차_최적화 & CNN (0) | 2021.02.02 |
[BOOSTCAMP AI TECH] 11일차_딥러닝 기초 (0) | 2021.02.01 |