Upsampling - Transpose convolution & Deconvolution
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
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로 고정이다.