본문 바로가기
BOOSTCAMP AI TECH/3주차_Deep Learning Basics

[BOOSTCAMP AI TECH]13일차_Convolution Neural Network

by 이민우 2021. 2. 3.
728x90
반응형
  • 강의 목록
  1. [DLBasic] CNN - Convolution은 무엇인가?
  2. [DLBasic] Modern CNN - 1x1 convolution의 중요성
  3. [DLBasic] Computer Vision Applications
  4. [DLBasic] CNN Assignment
  5. [DLBasic] CNN - 강아지 종류 분류하기
  6. [DLBasic] CNN - 나만의 데이터셋 만들기
  7. [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의 의미가 있는지 확인한다.

Region Proposal Network

 

YOLO

  • 실시간성에 중점을 둔 네트워크.
  • Faster R-CNN보다 빠르다.
  • Region Proposal Network가 없어 빠른 속도를 낼 수 있다.
  • 이미지가 들어오면 n개의 그리드로 영역을 나눈다.
  • n개의 bounding box를 찾아주고 쓸모가 있는지 확인하며 해당 그리드가 어떤 클래스인지 예측한다.
  • 그리고 두 개의 정보를 취합해 결과를 표현한다.

  • 피어세션 회의 내용

# Gradient Descent

  • mini-batch의 크기가 작은 것이 좋은 결과를 얻는다고 수업했지만, 크기가 클 때가 좋다는 관점의 논문도 있다.
  • NAG 다음 위치에 근하는 값에서 gradient를 확인한다 -> 관성이 강한경우 찾고자하는 극소를 넘어가는 것을 방지할 수 있다.

  • 해야할 일

 


 

728x90
반응형