Transposed Convolution

Jinยท2023๋…„ 5์›” 31์ผ
0

๋”ฅ๋Ÿฌ๋‹

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

Convolution

๐Ÿ’ก Convolution์ด๋ž€?
ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์™€ ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜์ „ ์ด๋™ํ•œ ๊ฐ’์„ ๊ณฑํ•œ ๋‹ค์Œ, ๊ตฌ๊ฐ„์— ๋Œ€ํ•ด ์ ๋ถ„ํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์ˆ˜ํ•™ ์—ฐ์‚ฐ์ž์ด๋‹ค.

์ •์˜๋Š” ์–ด๋ ต์ง€๋งŒ ๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

filter์˜ ๊ฐ€์ค‘์น˜ ๊ฐ’๋“ค์„ input image ํ•ด๋‹น ๋ถ€๋ถ„์˜ ํ”ฝ์…€๊ณผ ํ•˜๋‚˜์”ฉ ๊ณฑํ•ด ๋”ํ•˜๋Š” ํ•ฉ์„ฑ๊ณฑ์˜ ๊ณผ์ •์ด๋‹ค. ์ฆ‰, 0๏ผŠ1 + 0๏ผŠ1 + 0๏ผŠ1 + 1๏ผŠ0 + 1๏ผŠ0 + 1๏ผŠ0 + 1๏ผŠ(-1) + 1๏ผŠ(-1) + 1๏ผŠ(-1)์„ ํ†ตํ•ด feature map์˜ -3์ด๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ’์ด ๋„์ถœ๋œ ๊ฒƒ์ด๋‹ค.

Transposed Convolution

์ด๋Ÿฌํ•œ Convolution ์—ฐ์‚ฐ์„ ์—ญ์ˆœ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด Transposed Convolution์ด๋‹ค.

๐Ÿ’ก Transposed Convolution์ด๋ž€?
Convolution์˜ ์—ญ์ˆœ์œผ๋กœ input feature๋กœ๋ถ€ํ„ฐ output pixel์„ ์—ฐ์‚ฐํ•˜๋Š” ๊ณผ์ •

Transposed Convolution ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ž‘์•„์ง„ feature map ์‚ฌ์ด์ฆˆ๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” Upsampling๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋„ ์กด์žฌํ•˜์ง€๋งŒ ํ•™์Šต์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. Convolution์ด ํ•™์Šต์„ ํ†ตํ•ด feature ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๊ณ  Max Pooling์€ ๋‹จ์ˆœํžˆ feature๋ฅผ ๋ฝ‘์•„๋‚ด์„œ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, Upsamling์€ ๋‹จ์ˆœํžˆ feature๋ฅผ ๋ณต์ œํ•˜๊ฑฐ๋‚˜ ์˜๋ฏธ์—†์ด ์ฑ„์›Œ์„œ ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜๋ฆฌ์ง€๋งŒ Transposed Convolution์€ ํ•™์Šต์„ ํ†ตํ•ด feature๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค.

Transposed Convolution ์—ฐ์‚ฐ ๊ณผ์ •

Transposed Convolution์˜ ๊ธฐ์กด ์—ฐ์‚ฐ ๊ณผ์ •์€ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค. ๊ฐ ํ”ฝ์…€ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ filter์˜ weight์™€ ๊ณฑํ•˜๋Š” ์—ฐ์‚ฐ์„ ํ•˜๊ณ , element-wise summation์„ ํ•˜์—ฌ output pixel๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค. ์™œ 'Transposed'๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™์—ˆ๋Š”์ง€๋Š” Understand Transposed Convolutions ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค! ์˜์–ด์ง€๋งŒ ์„ค๋ช…์ด ์•„์ฃผ ์ž์„ธํ•˜๊ฒŒ ์ž˜ ๋˜์–ด์žˆ๋‹ค๐Ÿ‘

๊ธฐ์กด์˜ ์—ฐ์‚ฐ ๊ณผ์ •์€ ์œ„์™€ ๊ฐ™์ง€๋งŒ, ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ input feature๋ฅผ ๋ณ€ํ˜•ํ•œ ํ›„ Convolution ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ Transposed Convolution์„ ๊ตฌํ˜„ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์™„์ „ํžˆ ๋˜‘๊ฐ™์ง€๋Š” ์•Š์ง€๋งŒ ๊ตฌํ˜„ ๊ณผ์ •์—์„œ ์œ ์‚ฌํ•˜๋‹ค๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด padding์œผ๋กœ feature์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ๊ธฐ์กด์˜ convolution ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ output pixel์„ ์—ฐ์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

Transposed Convolution์€ feature๋กœ๋ถ€ํ„ฐ image๋ฅผ ์ถ”์ •ํ•ด ๋‚˜๊ฐ€๋Š” ์—ฐ์‚ฐ์ด๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋ณ€ํ˜•์œผ๋กœ๋„ ๊ตฌํ˜„ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด pytorch๋ฅผ ํ†ตํ•ด Transposed Convolution์„ ๊ตฌํ˜„ํ•  ๋•Œ ConvTranspose2d ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Conv2d ํ•จ์ˆ˜๋งŒ์„ ์‚ฌ์šฉํ•ด์„œ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

AutoEncoder with CNN

CNN์„ ์ด์šฉํ•˜์—ฌ AutoEncoder๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ, Encoder์—์„œ Convolution์„ ํ†ตํ•ด latent space๋ฅผ ๋ฝ‘์•„๋‚ด๊ณ  Decoder์—์„œ Transposed Convolution์„ ํ†ตํ•ด input image์™€ ๋™์ผํ•œ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ณต์›ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ Encoder์—์„œ๋Š” Conv2d๊ฐ€, Decoder์—์„œ๋Š” ConvTranspose2d๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

ํ•˜์ง€๋งŒ, ์•ž์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ zero padding์„ ์‚ฌ์šฉํ•˜๋ฉด Decoder ๊ณผ์ •์—์„œ๋„ ConvTranspose2d ๋ง๊ณ  Conv2d๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


Transposed Convolution ๋ฟŒ์‹œ๊ธฐ๐Ÿ‘Š

0๊ฐœ์˜ ๋Œ“๊ธ€