곰퓨타의 SW 이야기

Lab 10-1 Convolution 본문

인공지능/부스트코스_파이토치로 시작하는 딥러닝 기초

Lab 10-1 Convolution

곰퓨타 2021. 2. 27. 00:45

www.boostcourse.org/ai214/lecture/43764/?isDesc=false

 

파이토치로 시작하는 딥러닝 기초

부스트코스 무료 강의

www.boostcourse.org

 

 

Convolution?

이미지 위에서 stride 값 만큼 filter(kernel)을 이동시키면서 겹쳐지는 부분의 각 원소의 값을 곱해서 모두 더한 값을 출력으로 하는 연산이다.

 

output의 가장 첫번째 칸인 8이 나오는 과정은 다음과 같다!!

 

Stride and Padding

stride : filter를 한 번에 얼마나 이동할 것인가 (몇 칸씩 이동할 것인가)

padding : zero-padding 가장자리에 0을 추가한다.

 

Pytorch에서는 nn.Conv2d로 convolution layer 사용이 가능하다.

torch..Conv2d(in_channels, out_channels, kernel_size, stride = 1, padding=o, bias = True ...)

입력채널이 1이고, 출력채널이 1이고, 커널크기가 3x3인 경우,

conv = nn.Conv2d(1,1,3)이 된다.

 

 

<입력의 형태> out = conv(input)할 때 input에 해당하는 것

input type : torch.Tensor

input shape : (NXCXHXW) (batch_size, channel, height, width)

 

 

<Convolution의 output 크기>

 

 

(32 - 5 + (2*2)) / 1 + 1 = 32

소숫점이 발생한다면 버림한다..!

32x32

input image size가 width, height가 다르면 각각 연산해주면 된다!!

import torch
import torch.nn as nnn

conv = nn.Conv2d(1,1,5,stride=1, padding= 2)
inputs = torch.Tensor(1,1,32,32)
out = conv(inputs)
# torch.Size([1,1,32,32])

 

 

Neuron과 Convolution

filter 또한 bias를 가질 수 있다.

 

Pooling

image size를 줄이기 위해 사용하거나, fully-connected 연산을 대체하기 위해서 사용하기도 한다.

torch에서는

torch.nn.MaxPool2d(kernel_size, stride = None, padding=0, dilation=1, return_indices=False, ceil_mode = False)를 통해 사용한다. 

 

 

[CNN implementation]

import torch
import torch.nn as nn
input = torch.Tensor(1,1,28,28)
# input channel : 1개 , output channel : 5개, channel size : 5
conv1 = nn.Conv2d(1,5,5)
# pooling : 2x2
pool = nn.MaxPool2d(2)
out = conv1(input)
out2 = pool(out)
out.size()
# torch.Size([1,5,24,24])
out2.size()
# torch.Size([1,5,12,12])

 

[Conv2d]

torch.nn.Conv2d(in_channels , out_channels, kernel_size, stride = 1,padding = 0, dilation = 1, groups = 1, bias = True)

(=> cross-correlation)

 

--> What is convolution ?

f*g 인 경우 g가 뒤집어서 들어감, 많이 겹칠수록 커짐

 

--> cross-correlation

g*f 에서 g 가 뒤집어서 들어가지 않고, 이 또한 많이 겹칠수록 커진다.

Comments