여러가지 Convolution연산

2021. 3. 19. 16:35Deep Learning/개념

728x90

GAN을 깊게 공부하다가 DCGAN에서 Transposed Convolution이라는 것을 마주하게 되었다. 

그러한 김에 여러가지 convolition 연산에 대해 정리해보기로 했음 :)

 

1.  Strided Convolution

padding없이 kernel이 지정된 stride에 맞게 이동하면서 conv연산을 진행해줌으로써 너비와 높이가 감소합니다.

2. Dilated Convolution 

 

P = padding

Dilated Convolution은 Convolutional layer에 또 다른 파라미터인 dilation rate를 도입했습니다. dilation rate은 커널 사이의 간격을 정의합니다. dilation rate가 2인 3x3 커널은 9개의 파라미터를 사용하면서 5x5 커널과 동일한 시야(view)를 가집니다.

5x5 커널을 사용하고 두번째 열과 행을 모두 삭제하면 (3x3 커널을 사용한 경우 대비)동일한 계산 비용으로 더 넓은 시야를 제공합니다.
Dilated convolution은 특히 real-time segmentation 분야에서 주로 사용됩니다. 넓은 시야가 필요하고 여러 convolution이나 큰 커널을 사용할 여유가 없는 경우 사용합니다

Dilated Convolution은 필터 내부에 zero padding을 추가해 강제로 receptive field를 늘리는 방법입니다. 위 그림에서 진한 파란 부분만 weight가 있고 나머지 부분은 0으로 채워집니다. (receptive field : 필터가 한번 보는 영역으로 사진의 feature를 추출하기 위해선 receptive field가 높을수록 좋습니다)
pooling을 수행하지 않고도 receptive field를 크게 가져갈 수 있기 때문에 spatial dimension 손실이 적고 대부분의 weight가 0이기 때문에 연산의 효율이 좋습니다. 공간적 특징을 유지하기 때문에 Segmentation에서 많이 사용합니다

 

3. Transposed Convolution

convolition작업을 통해 너비와 높이가 증가한 이미지를 만들어 내는 특이한 convolution 연산입니다. 

auto encoder의 decoding부분이나, 이미지의 해상도를 높이는 경우 등 일반적 convolition과 반대로 이미지의 크기를 늘리는 연산을 해야할 때 적합합니다.

! deconvolition과 다름을 유의 !

convolution의 backward pass라고 볼 수 있는데요,

https://www.slideshare.net/ssuserb208cc1/transposed-convolution

conv일 때의 w를 flip한 filp(W) (flip 된 kernel) 과  Z를 Transconv하는 그림인데요, 이를 다르게 표현하면 다음 그림과 같습니다.

transposed convolution을 행렬곱으로 표현해 준 것인데요, kernel 사이사이에 0을 추가해주고, inverse해서 flatten한 Y(일반 conv의 output)에 곱해주면, 일반 conv의 input x를 구할 수 있다는 표현입니다.

w와 Y는 1개의 값을 여러개의 value로 변환해주는 one to many 관계입니다.

728x90

'Deep Learning > 개념' 카테고리의 다른 글

Receptive Field  (0) 2021.05.06
Batch Normalization  (0) 2021.04.02
GoogleNet(Inception V1)  (0) 2020.12.14
VGG16  (0) 2020.12.14
GAN  (0) 2020.12.14