Boostcamper's TIL (7)

최현진·2021년 8월 11일
0

boostcamp

목록 보기
7/20

2021/08/12

학습한 내용

DL Basic

CNN

Convolution

  • NxN 크기의 filter(kernel)가 입력 데이터 (image)를 순차적으로 순회하면서 output을 만들어내는 연산이다.
  • filter를 어떻게 초기화 하는지에 따라 Blur, Emboss, Outline 등 다양한 결과물을 만들 수 있다.
  • filter를 통해 feature map을 생성하며 output의 channel은 feature map의 개수이다.
  • 이미지의 특성을 잘 뽑도록 filter의 weight를 학습한다.
  • CNN 연산에서 중요한 것은 parameter의 개수를 계산할 수 있어야 한다.

Convolution Neural Networks
전통적인 CNN 모델은 Convolution layer 다음 Fully Connected layer를 쌓아 만든다.

# 10개의 클래스로 라벨링된 이미지 데이터를 분류하는 모델
import torch
import torch.nn as nn
import torch.nn.functional as F
#...
conv1 = nn.Conv2d(in_channels=3, out_channels=8, kernel_size=3, padding=1)
conv2 = nn.Conv2d(in_channels=8, out_channels=16, kernel_size=3, padding=1)
fc1 = nn.Linear(8*8*16, 64)
fc2 = nn.Linear(64, 32)
fc3 = nn.Linear(32, 10)
#...

conv1의 output은 다음 conv2의 input_channels과 같다.

첫번째 conv1을 통과할 때 사용되는 데이터는 3개의 channel(RGB)을 가진 28x28 이미지라고 가정했을 때 output은 8개의 feature map을 가진다. 이때 파라미터를 계산하면 3x3x3x8 = 216이 된다 (filter W)x(filter H)x(input channel)x(output channel)

Stride, Padding

  • Stride : filter가 데이터를 순회할 때 움직이는 칸(pixel) stride = 1일때 1칸씩 움직임
  • Padding : filter가 1칸씩 움직이는 경우 이미지 테두리 근처 픽셀은 1번밖에 스캔을 못한다. 이를 방지하고자 padding을 준다. (output의 크기도 달라진다)

Modern CNN

최근 ILSVRC에서 좋은 결과를 보이는 모델들은 점점 layer는 깊어지고 fully connected layer는 사라져가고 있다.

AlexNet
가장 좋은 CNN 모델의 근간이 되는 모델로 ReLU 함수 사용, Data augmentation, Dropout 등 현재는 당연하게 적용하는 알고리즘들이지만 당시에는 그렇지 않았다.

VGG
3x3 filter를 사용하였다. AlexNet에서 11x11 filter를 사용하였는데 너무 큰 filter의 크기는 parameter가 매우 커진다 VGG에서는 3x3 filter를 사용한 것이 핵심이다.

GoogLeNet
Inception blocks을 사용했다. input 데이터가 여러가지 path로 이동할 수 있는데 Inception blocks을 사용해 parameter 수를 획기적으로 줄였다.

ResNet
Layer가 일정 수치 이상으로 깊어지면 결국 학습이 더이상 되지 않는 현상이 발생하는데 skip connection이라는 아이디어를 사용해서 layer를 깊게 만들 수 있는 방법을 제시하였다.

DenseNet
각 later의 feature map을 concatenates 하는 아이디어를 사용한다.

Computer Vision Application

컴퓨터 비젼 어플리케이션 분야에는 다양한 task가 존재한다.

  • Semantic Segmentation : 해당 픽셀을 분류하는 문제. 마지막에 fully connected layer로 연결하지 않고 convolutionalization. output은 마치 heatmap과 같다. 이를 Deconvolution 한다.

  • Detection : R-CNN, SPPNet, Fast R-CNN, Faster R-CNN, YOLO


profile
Boostcamper!

0개의 댓글