인공지능 (AI, Deep learning)/[인공지능] 전반적인 개념 🤿

Upsampling - Transpose convolution & Deconvolution

kks2 2023. 5. 30. 00:12
728x90

upsampling 관해서 공부를 하고 있는데, 이것은 sub pixel convolution이 쏘아 올린 공.. 아무튼 그것은 나중에 더 자세히 다루도록 하고, 사실 transpose convolution이 직관적으로 와닿지 않아서 관련 설명을 여기저기서 열심히 찾아본 결과 애니메이션도 있고, 좋은 사이트를 발견해서 공유한다.  + Transpose convolution과 deconvolution이 다르다는 것을 알았는가? 나는 잘 몰랐다.. 

 

아무튼 사이트는 이것이다. 영어이긴한데, 애니메이션 (gif)만 봐도 이해에 도움이 될 것이다. 정보의 바닷속에서 좋은 정보를 찾는 것도 일이니까 링크만 딱 올리는 이 글도 도움이 되는 것이겠지..? 사실 이 글은 내가 나중에 더 정리를 할 수도 있다. 정리를 안 한다 해도 내가 다시 볼 것 같은 사이트라 저장용이기도...! 

https://towardsdatascience.com/what-is-transposed-convolutional-layer-40e5e6e31c11

 

What is Transposed Convolutional Layer?

Explained through animated gifs and python code.

towardsdatascience.com

 

 

사이트 미리 보기용 이미지! https://towardsdatascience.com/what-is-transposed-convolutional-layer-40e5e6e31c11   위에 사진에 p위에 프라임이 빠져있길래 캡쳐하면서 붙였다. 오타인 것 같음

 

 

Transpose convolution 의 output size : O 

input size = I, kernel size = k , padding size = p , stride = s라고하면, 

Transpose convoution 의 ouput size 계산식은 아래와 같다. 

 

O = (I-1) * s + k - 2p 

 

 

Convolution의 output size는 아래와 같다.

 

O = (I - f + 2p ) / s+1 

 

즉, Transpose convolution은 convolution을 반대로 계산하는 것이다. 그런데, 주의해야할 점은 Transpose convolution에서 말하는 stride, padding은 우리가 생각하는게 아니다. 그냥 convolution 입장에서 그렇다는 것이고, 실제로 계산을 할 때는 위에 사진(사이트 미리 보기용 이미지! )처럼 s, p를 이용해서 z와 p'를 계산해서 우리가 아는 padding을 해주고 새로운 계념인, 픽셀 사이에 pad 넣기,를 "z"만큼 해준다. 그리고 우리가 아는 stride는 1로 고정이다. 

728x90