๐ ํด๋น ํฌ์คํ ์ OREILLY์ '๋ฏธ์ ๊ด์ GAN ๋ฅ๋ฌ๋ ์ค์ ํ๋ก์ ํธ' ์์ ์ ์ฝ๊ณ ๊ฐ์ธ์ ์ธ ๋ชฉ์ ํ์ ์์ฑ๋๋ ๊ธ์ ๋๋ค. ํฌ์คํ ์ ์ฌ์ฉ๋๋ ๋ชจ๋ ์๋ฃ๋ ์ ๊ฐ ์ง์ ์ฌ๊ตฌ์ฑํ์์์ ์๋ฆฝ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ๊ทธ๋์ ๋ฐฐ์์จ ๊ธฐ์ด์ ์ธ ์์ฑ ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ์ ํ์ฉํด์ ๊ทธ๋ฆฌ๊ธฐ ์์ ์ ์ ์ฉํด๋ณด๋๋ก ํ์. ์ฌ๊ธฐ์ '๊ทธ๋ฆฌ๊ธฐ'๋ ์๋ณธ ๋ฐ์ดํฐ๋ ์ ์งํ๋ ์ฝ๊ฐ ์คํ์ผ๋ง ๋ค๋ฅด๊ฒ ํ์ฌ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋ํ์ ์ธ ์์๋ก๋ ์คํ์ผ ํธ๋ ์คํผ ์์ ์ด ์๋ค. ์๋ฅผ ๋ค์ด, ํผ์นด์ ๊ทธ๋ฆผ์ด ์๋ณธ์ด์ง๋ง ๋ฐ ๊ณ ํ๊ฐ ํด๋น ๊ทธ๋ฆผ์ ๊ทธ๋ ธ์ ๋์ ์๋ก์ด ๊ทธ๋ฆผ์ ์์ฑํ๋ ๊ฒ์ด๋ค.
์คํ์ผ ํธ๋์คํผ๋ ์ ๋ ฅ๋๋ ์ด๋ฏธ์ง์ ๋ด์ฌ๋ ๋ถํฌ๋ฅผ ๋ชจ๋ธ๋งํ๋ ๊ฒ์ด ์๋๋ผ ์ฆ, ๊ธฐ์กด์ ๋ฐฐ์ ๋ GAN ๋ชจ๋ธ์ฒ๋ผ ์๋ณธ ์ด๋ฏธ์ง๋ ๋น์ทํ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์ ๋ ฅ๋ ์ด๋ฏธ์ง์์ ์คํ์ผ์ ๊ฒฐ์ ํ๋ ์์๋ง ์ถ์ถํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ถ์ถ๋ ์์๋ค์ ๋ค๋ฅธ ์ด๋ฏธ์ง(์ด๋ฅผ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ผ ํจ)์ ์ฃผ์ ํ๋ ๊ฒ์ด๋ค. ์ ๊ทธ๋ฆผ์์ ์คํฐ๋ธ ์ก์ค๊ฐ ๋์์๋ ์ฌ์ง์ ์์๋ก ๋ค์ด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
๋ฐ๋ผ์ ์คํ์ผ ํธ๋์คํผ๋ ์ ๋ ฅ๋ ์ด๋ฏธ์ง๋ค์ ์ ์ฉ๋ ์คํ์ผ์ ํ์ตํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค. ๊ทธ๋์ ์๋ณธ ์ํ์ ์ ์งํ๋ฉด์ ๋ค๋ฅธ ์ํ์ ์คํ์ผ ๊ธฐ๊ต๋ก ์์ฑํ๋ ๋ฏํ ํจ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค. ํด๋น ํฌ์คํ ์์๋ ๋ํ์ ์ธ ์คํ์ผ ํธ๋์คํผ ๋ชจ๋ธ๋ก์ CycleGAN ๊ณผ Neural Style Transfer ๋ชจ๋ธ์ ๋ํด ์๊ฐํ๊ณ , ์ด๋ฅผ pytorch๋ก ๊ตฌํํด๋ณด๋๋ก ํ์.
1. 2๊ฐ์ ์์ฑ์์ 2๊ฐ์ ํ๋ณ์๋ก ๊ตฌ์ฑ๋ GAN : CycleGAN
CycleGAN ๋ชจ๋ธ์ ์คํ์ผ ํธ๋์คํผ ๋ถ์ผ์์ ํฐ ์ง์ ์ ์ด๋ฃจ์ด ๋ธ ๊ฒ์ผ๋ก ํ๊ฐ๋ฐ๋๋ค. CycleGAN์ด ๋ฑ์ฅํ๊ธฐ ์ด์ ์ pix2pix ๊ฐ์ ๋ชจ๋ธ์์๋ ๋ฐ๋์ ํ์ต ๋ฐ์ดํฐ์ ์ ์์ค์ ํ๊น ๋๋ฉ์ธ์ ์(pair) ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์กด์ฌํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์ธ๋ฌผ์ ํ๋ฐฑ ์ฌ์ง๊ณผ ์ปฌ๋ฌ ์ฌ์ง์ด ์๋ค๋ฉด ๊ฐ๊ฐ์ด ์์ค์ ํ๊น์ด ๋๋ค. ๋ค๋ฅธ ์์๋ก๋ ํน์ ์ง์ญ์ ์ง๋ ์ฌ์ง๊ณผ ์์ฑ ์ฌ์ง์ด ์๋ค๋ฉด ์ด ๊ฐ๊ฐ์ด ์์ค์ ํ๊น์ด ๋๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ์์ค์ ํ๊น์ด ๋ชจ๋ ์กด์ฌํ๋ ์ผ์ด์ค๋ ํํ์ง ์๋ค. ์๋ฅผ ๋ค์ด, ๋ญํฌ์ ์ ๊ท๋ผ๋ ๊ทธ๋ฆผ ์ํ์ด ์๋ค๊ณ ํ์. ์ด ๊ทธ๋ฆผ์ ๋ญํฌ๊ฐ ๊ทธ๋ฆฐ ๊ฒ ๋ฐ์ ์๋ค. ์ฆ, ํผ์นด์ ๋๋ ๊ณ ํ์ ๊ฐ์ ๋ค๋ฅธ ์์ ๊ฐ๋ค์ด ๊ทธ๋ฆฐ ์ ๊ท๋ผ๋ ๊ทธ๋ฆผ์ ์ธ์์ ์๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ์ธ์์ ์กด์ฌํ์ง ์๋ ๊ทธ๋ฆผ๋ค์ pix2pix์์ {์์ค - ํ๊น} ์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ง ๋ชปํ๋ ํ๊ณ์ ์ด ์กด์ฌํ๋ค.
ํ์ง๋ง CycleGAN์ ์์ค์ ํ๊น ์์ ๋ฐ์ดํฐ๊ฐ ์์ด๋ ๋ชจ๋ธ์ ํ์ตํ ์ ์๋ค๋ ๊ฒ์ ์ ๋ณด์๋ค. CycleGAN์ [์์ค โก๏ธ ํ๊น] ๊ทธ๋ฆฌ๊ณ [ํ๊น โก๏ธ ์์ค] ์๋ฐฉํฅ์ผ๋ก ๋ชจ๋ ๋์์ ํ์ต์ ํ๋ค. ์ด์ CycleGAN์ ๋ํด์ ์ข ๋ ์์ธํ ์์๋ณด์.
CycleGAN์ 4๊ฐ์ ๋ชจ๋ธ๋ก ๊ตฌ์ฑ๋๋ค. 2๊ฐ์ ์์ฑ์ ๋ชจ๋ธ๊ณผ 2๊ฐ์ ํ๋ณ์ ๋ชจ๋ธ์ด๋ค. 2๊ฐ์ ์์ฑ์ ๋ชจ๋ธ์ 2๊ฐ์ ๋๋ฉ์ธ์์ ์๋ก ๋ณํํ๋ ๋ชจ๋ธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ณ์๋ ์์ฑ์๊ฐ ๋ณํํ ์ด๋ฏธ์ง๊ฐ ์ ๋ง ํ์ง์ด ์ข์ ์ด๋ฏธ์ง์ธ์ง ์๋์ง ์ ํ๋จํ๋๋ก ํ์ตํ๋ค. ๋ง๋ก ํด์๋ ์ ์ดํด๊ฐ ์๋ ์๋ ์์ผ๋ ๊ฐ๋จํ ๋์ํ๋ฅผ ํตํด ์์๋ณด์.
์ด์ CycleGAN์ ๊ตฌ์ฑํ๋ ์์ฑ์์ ํ๋ณ์ ๋ชจ๋ธ์ ๊ตฌ์ถํด๋ณด์.
2. ์์ฑ์ ๋ชจ๋ธ ๋ง๋ค๊ธฐ : U-Net
CycleGAN์์ ์์ฑ์ ๋ชจ๋ธ์ (์ฌ๊ธฐ์์๋) U-Net๊ณผ ResNet ๋ ๋ชจ๋ธ ์ค ํ๋๋ฅผ ์ ํํด ๊ตฌํํ๋ค. pix2pix ๋ ผ๋ฌธ์์๋ U-Net ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ง๋ง CycleGAN ๋ชจ๋ธ์์๋ ResNet์ ์ ํํ๋ค. ์ฑ ์์๋ ๋ ๋ชจ๋ธ ๋ชจ๋ ์ฝ๋๋ก ๊ตฌํํ๋ ๋ฒ์ ์๊ฐํ๋ค. ResNet์์๋ ์์ ํฌ์คํ ์์ ๋ค๋ฃฌ ์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์๋ U-Net ๋ชจ๋ธ์์๋ง ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค.
U-Net ๋ชจ๋ธ์ ๋ง ๊ทธ๋๋ก ์ํ๋ฒณ ๋๋ฌธ์ U ๋ชจ์์ ๊ฐ์ถ๊ณ ์์ด์ ๊ทธ๋ ๋ค. U-Net ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ๋ณด์.
AE, VAE ์ ๋น์ทํ ๋ฐฉ์๋๋ก U-Net์ ๋ค์ด์ํ๋ง๊ณผ ์ ์ํ๋ง์ผ๋ก ๊ตฌ์ฑ๋๋ค. ์ฌ๊ธฐ์ ๋ค์ด์ํ๋ง์ ์ ๋ ฅ๋ ์ด๋ฏธ์ง๋ฅผ ๊ณต๊ฐ ๋ฐฉํฅ ์ฆ, ๋์ด์ ๋๋น ๋ฐฉํฅ์ผ๋ก ์์ถํ์ง๋ง ์ฑ๋ ๋ฐฉํฅ์ผ๋ก๋ ํ์ฅ์ ํ๋ค.(๊ทธ๋์ ๋ค์ด์ํ๋ง ์ ์ฑ๋ ์(ํํฐ ์)๊ฐ ๋์ด๋จ) ๋ฐ๋ฉด์ ์ ์ํ๋ง์ ๊ณต๊ฐ ๋ฐฉํฅ ์ฆ, ๋์ด์ ๋๋น ๋ฐฉํฅ์ผ๋ก ํํ์ ํ์ฅ์ํค์ง๋ง ์ฑ๋ ๋ฐฉํฅ์ผ๋ก๋ ์์ถํ๋ค.
AE, VAE์์ ์ฐจ์ด์ ์ด ์๋ค๊ณ ํ๋ค๋ฉด U-Net์์๋ skip-connection์ด ์กด์ฌํ๋ค. ์ ๊ทธ๋ฆผ์์ ํ์ ํ์ดํ๋ก ๋์ด ์๋ 'copy and crop' ๋ถ๋ถ์ด๋ค. ์ฆ, U-Net์ ๋ค์ด์ํ๋ง ๊ณผ์ ์์ ์ป์ด์ง ์ ๋ณด๋ฅผ ์ ์ํ๋ง ๊ณผ์ ์์๋ ๋ณด์ถฉํด์ค๋ค.
๋ ๊ตฌ์ฒด์ ์ผ๋ก, U-Net์์ ๋ค์ด์ํ๋ง ๊ณผ์ ์์๋ ๋ชจ๋ธ์ด ์ ์ ์ด๋ฏธ์ง๊ฐ ๋ฌด์์ธ์ง๋ฅผ ๊ฐ์งํ๋ค. ์ด๋ฅผ ๊ณ ์์ค ์ถ์ ์ ๋ณด๋ฅผ ์ธ์งํ๋ค๊ณ ํ๋ฉฐ, ์ฌ๊ธฐ์์๋ '์ด๋ฏธ์ง์ ์คํ์ผ'์ ๊ฐ์งํ๊ฒ ๋๋ค. ์ด๋ ๋ณดํต ํํฐ ์ ์ฆ, ์ฑ๋ ์๋ฅผ ํ์ฅํด๋๊ฐ์ผ๋ก์จ ์ป๊ฒ ๋๋ ์ด์ ์ด๋ค. ํ์ง๋ง ๊ณต๊ฐ ๋ฐฉํฅ์ผ๋ก๋ ์์ถํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง ์ ๊ฐ์ฒด๋ค์ ์์น ์ ๋ณด๋ ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ดํ์ ์ ์ํ๋ง ๊ณผ์ ์์ ๋ค์ด์ํ๋ง ์์ ์์ด๋ฒ๋ ธ๋ ์์น ์ ๋ณด๋ฅผ ๋ค์ ํ๋ณต์ํจ๋ค. ์ด ๊ณผ์ ์์ ๋ค์ด ์ํ๋ง ์์ ์ป์๋ ๊ณ ์์ค์ ์ ๋ณด ์ฆ, ์ด๋ฏธ์ง์ ์คํ์ผ์ ์ ์ํ๋ง ์์ ๋ค์ ํ๋ณตํ๋ ๊ณต๊ฐ ์ ๋ณด์ ํจ๊ป ์๋๋ค.
U-Net์ ๊ตฌํํ๋ค๋ณด๋ฉด Instance Normalization ๊ธฐ๋ฒ์ ๋ํด์ ๋ฑ์ฅํ๋ค. ๊ธฐ์กด์ ์ฐ๋ฆฌ๋ Batch Normalization ์ด๋ผ๋ ๊ฒ์ ์ฌ์ฉํด๋ณด์๋๋ฐ, Instance Normalization์ ๋ํด์๋ ์ฒ์ ๋ค์ด๋ณด์๋ค. ์ด์ ๋ํด์ ์ ์ ์์๋ณด์. U-Net์ Batch Normalization ๋์ Instance Normalization ์ ์ฌ์ฉํ๋๋ฐ, ๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด Instance ๊ธฐ๋ฒ์ด ์คํ์ผ ํธ๋์คํผ ๋ถ์ผ์์ Batch ๊ธฐ๋ฒ๋ณด๋ค ๋ ํ๋ฆฌํฐ ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ธ๋ค๊ณ ์๋ ค์ ธ ์๋ค.
Instance ๊ธฐ๋ฒ์ Batch์ ๋ฌ๋ฆฌ ๋ฐฐ์น ๋จ์๊ฐ ์๋๋ผ ๋ฐฐ์น ๋ด์ ๊ฐ ๊ฐ๋ณ ์ํ(์ฌ๊ธฐ์๋ ์ด๋ฏธ์ง ์ํ ํ๋)์ ๊ฐ๊ฐ ์ ๊ทํํ๋ค. ์ฐ์ ๊ฐ ๊ธฐ๋ฒ์ ๋น๊ตํ๋ ์ ๋ช ํ ๋์ํ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด์.
์ ์๋ฏธ์ง๋ ์ด๋ฏธ์ง์ ๋์ด์ ๋๋น(H,W)๋ฅผ ํ๋์ ์ถ์ผ๋ก ํฉ์ณ์ 3์ฐจ์์ผ๋ก ๋ณด์ฌ์ค ๊ทธ๋ฆผ์ด๋ค. ์๋ํ๋ฉด ๋ฐฐ์น ์ฌ์ด์ฆ(N), ์ฑ๋ ์(C), ๋์ด(H), ๋๋น(W)๊น์ง ๊ฐ ์ถ์ผ๋ก ํ ๋ฒ์ ๊ทธ๋ฆผ์ผ๋ก ํ์ํ๋ ค๋ฉด 4์ฐจ์์ผ๋ก ๊ตฌํํด์ผ ํ๋๋ฐ, 3์ฐจ์ ๋ณด๋ค ๋์ ์ฐจ์์ ๊ทธ๋ฆผ์ ์ฌ๋์ ๋์ผ๋ก ํํํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ํ์๋.. ์ ๊ทธ๋ฆผ์ ๋ณด๊ณ ์ง๊ด์ ์ผ๋ก๋ ์ ์ดํด๋์ง ์์๋ค. ๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ์ ๋ฐฉ์๋๋ก ๋ค์ ์ดํดํด๋ณด์!
U-Net์ผ๋ก ๊ตฌํ๋ ์์ฑ์๋ฅผ ๋ง๋๋ ์ฝ๋๋ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์. ๊ทธ๋ฆฌ๊ณ ์์ฑ์๋ฅผ Residual Network๋ฅผ ๊ตฌ์ฑํด์๋ ๋ง๋ค ์ ์๋ค. Residual Network๋ ์์ ํฌ์คํ ์์ ๋ค๋ฃฌ์ ์ด ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์์๋ ์ด๋ก ์ ์ธ ๋ด์ฉ์ ๋ฐ๋ก ์๊ฐํ์ง ์๊ฒ ๋ค. ResNet์ผ๋ก ๊ตฌํ๋ ์์ฑ์ ์ฝ๋๋ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์. ์ฐธ๊ณ ๋ก ๋ฐ์ดํฐ์ ์ ์ค๋ ์ง์ ์ฌ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์๋ค.
3. ํ๋์ ์ซ์๊ฐ ์๋ ๊ฐ ํจ์น๋ฅผ ์์ธกํ์ : ํ๋ณ์ ๋ชจ๋ธ ๋ง๋ค๊ธฐ
๋ค์์ผ๋ก๋ ํ๋ณ์ ๋ชจ๋ธ์ ๊ตฌํํด๋ณด๋๋ก ํ์. ์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊น์ง ๋ฐฐ์ ๋ ์์ฑ ๋ชจ๋ธ๋ง์ ํ๋ณ์ ๋ชจ๋ธ๋ค์ ํ๋์ ์ซ์์ธ ์ค์นผ๋ผ ๊ฐ ํํ๋ก ์์ธกํด ์๋ค. ํ์ง๋ง CycleGAN์ ํ๋ณ์๋ ํ๋์ ์ซ์๊ฐ ์๋๋ผ (๋ ผ๋ฌธ์์๋) 16 x 16 ํ์์ ์ฑ๋ 1๊ฐ(shape: (1, 16, 16))๋ฅผ ๊ฐ์ง ํ ์๋ฅผ ์์ธกํ๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ํ ์๋ฅผ ๊ตฌ์ฑํ๋ ์ซ์๊ฐ์ 0 ~ 1 ์ฌ์ด์ ํ๋ฅ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋๋ ๊ฒ์ ๋์ผํ๋ค. ๋ค์ ๋งํด ํ๋ณ์๊ฐ ์์ธกํ๋ ํ ์์ ํ์์ด 1์ฐจ์์์ 3์ฐจ์์ผ๋ก ๋ณํ๋ ๊ฒ์ด๋ค. ์ค์นผ๋ผ ๊ฐ ํํ๋ก ์์ธกํ๋ ๊ฒ์ ์ด๋ฏธ์ง ์ ์ฒด์ ๋ํด ์์ธกํ๋ ๊ฒ์ผ๋ก ๋ณธ๋ค๋ฉด, CycleGAN์ ์ด๋ฏธ์ง ์ ์ฒด์ ๋ํด ์์ธกํ๋ ๊ฒ์ด ์๋๋ผ ์ค์ฒฉ๋ ํจ์น(Patch)๋ก ๋๋์ด์ ๊ฐ ํจ์น๊ฐ ์ง์ง์ธ์ง ๊ฐ์ง์ธ์ด ์์ธกํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ ๊ฒ ๊ฐ ํจ์น๋ก ์์ธกํ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ๊ฒ์ ์๋ PatchGAN์ด๋ผ๋ ๋ชจ๋ธ์ ํน์ฑ์ ์ด์ฉํ๋ ๊ฒ์ด๋ค. ์ด ํน์ฑ์ ์ด์ฉํจ์ผ๋ก์จ ์ป๋ ์ฅ์ ์ ์ด๋ฏธ์ง ๋ด์ฉ์ด ์๋๋ผ ์คํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ณ์๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ผ๋ง๋ ์ ๊ตฌ๋ณํ๋์ง ์์คํจ์๊ฐ ์ธก์ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ ํฌ์คํ ์์ ๋ฐฐ์ฐ๋ ค๊ณ ํ๋ ๊ฒ์ ์ ๋ ฅ ์ด๋ฏธ์ง์ ๋น์ทํ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์ ๋ ฅ ์ด๋ฏธ์ง์ ์คํ์ผ์ ๋ค๋ฅด๊ฒ ๋ฐ๊พธ๊ธฐ ์ํ ๊ฒ์์ ๋ช ์ฌํ์.
ํ๋ณ์๋ฅผ ๋ง๋๋ ์ฝ๋๋ ์ฌ๊ธฐ, ๊ทธ๋ฆฌ๊ณ CycleGAN์ ํ์ตํ๋ ์ฝ๋๋ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ๋๋ก ํ์. ์ฝ๋๋ก ์ดํด๋ณด๋ฉด ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์๋๋์ง ๋ช ํํ ํ์ ํ ์ ์์ ๊ฒ์ด๋ค.
4. ํ์ต ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์คํ์ผ๋ง ๋ณํ์ํค๊ธฐ : Neural Style Transfer
์ด์ ์คํ์ผ ํธ๋์คํผ์ ๋ ๋ค๋ฅธ ๋ชจ๋ธ๋ก ๋ด๋ด ์คํ์ผ ํธ๋์คํผ์ ๋ํด์ ์์๋ณด๋๋ก ํ์. ๋ด๋ด ์คํ์ผ ํธ๋์คํผ๊ฐ ์์์ ๋ฐฐ์ด CycleGAN๊ณผ ๋ค๋ฅธ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ํ์ต ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์์๋ค๋ ๊ฒ์ด๋ค. ์ด๊ฒ ๋์ฒด ๋ฌด์จ ๋ง์ผ๊น? ๋ชจ๋ธ์ธ๋ฐ ํ์ต ๋ฐ์ดํฐ์ ์ ์ฌ์ฉํ์ง ์์๋ค๋?
์ฐ์ ์์ ๋ฐฐ์ด CycleGAN ๋ชจ๋ธ์ ๋๋ฉ์ธ์ด ๋ค๋ฅธ ๋ฐ์ดํฐ 2๊ฐ๊ฐ ๊ผญ ํ์ํ์๋ค. ์๋ฅผ ๋ค์ด ์ฌ๊ณผ ์ด๋ฏธ์ง๋ฅผ ์ค๋ ์ง ์ด๋ฏธ์ง๋ก ๋ฐ๊พธ๊ณ ์ถ์ CycleGAN ๋ชจ๋ธ์ ๋ง๋ค๊ณ ์ถ๋ค๊ณ ํ๋ค๋ฉด ์ฌ๊ณผ, ์ค๋ ์ง ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ 2๊ฐ๊ฐ ํ์ํ์๊ณ ์ด๋ฅผ ๋ชจ๋ธ์ ํ์ต ๋ฐ์ดํฐ๋ก ์ฃผ์ ์์ผฐ๋ค. ํ์ง๋ง ๋ด๋ด ์คํ์ผ ํธ๋์คํผ๋ ํ์ต ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ์ ์ฃผ์ ์ํค์ง ์๊ณ ๋ ๋ช ๊ฐ์ง ๊ธฐ๋ฒ๋ง ํ์ฉํด์ ์ํ๋ ์คํ์ผ์ด ๋ฐ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค. ์ด์ ๋ด๋ด ์คํ์ผ ํธ๋์คํผ๊ฐ ํ์ฉํ "๋ช ๊ฐ์ง ๊ธฐ๋ฒ"์ ๋ํด์ ํ๋์ฉ ์์๋ณด๋๋ก ํ์.
5. ์ธ ์ข ๋ฅ์ ์์คํจ์๋ฅผ ๋ง๋ค์ : ์ปจํ ์ธ ์์ค, ์คํ์ผ ์์ค, ์ด ๋ณ์ ์์ค(Total variation Loss)
๋ด๋ด ์คํ์ผ ํธ๋์คํผ์์๋ ์ด 3๊ฐ์ง์ ์๋ก์ด ์์คํจ์๋ฅผ ์ ์ํ๋ค. ๋ฐ๋ก ์ปจํ ์ธ ์์ค, ์คํ์ผ ์์ค, ์ด ๋ณ์ ์์ค์ด๋ผ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด 3๊ฐ์ง ์์คํจ์์ ๋ํ ๊ฐ์ค์น ํฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ํฉ์ฑ ์ด๋ฏธ์ง์ ๋ํด ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์ํํด์ ํฉ์ฑ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ ์ํจ๋ค. ๋ด๋ด ์คํ์ผ ํธ๋์คํผ์ ํ์ต ๋จ๊ณ๋ฅผ ์ ์ฐจํ์ํค๋ฉด ์๋์ ๊ฐ๋ค.
- ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํด์ ํฉ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑ(๊ณ ๋ก, ์ต์ด์๋ ๋ฒ ์ด์ค ์ด๋ฏธ์ง = ํฉ์ฑ๋ ์ด๋ฏธ์ง)
- ์ธ ๊ฐ์ง ์์ค ํจ์๋ฅผ ๊ณ์ฐ
- ์์ค ํจ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฝ์ฌ ํ๊ฐ๋ฒ(Gradient Descent)์ ์ด์ฉํด์ ๊ธฐ์ธ๊ธฐ ๋ณํ๋ ๊ณ์ฐ
- ๊ธฐ์ธ๊ธฐ ๋ณํ๋์ ๊ธฐ๋ฐ์ผ๋ก ํฉ์ฑ๋ ์ด๋ฏธ์ง ์ ๋ฐ์ดํธ
์ ๋จ๊ณ์์ 2๋ฒ ๋จ๊ณ๋ถํฐ ์ดํด๋ณด์. 2๋ฒ ๋จ๊ณ์์๋ 3๊ฐ์ง ์์คํจ์๋ฅผ ์์์ผ ํ๋๋ฐ, ํ๋์ฉ ์์๋ณด๋๋ก ํ์.
5-1. ํฉ์ฑ๋ ์ด๋ฏธ์ง๊ฐ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๊ฐ ๊ฐ๋ ์ปจํ ์ธ ๋ฅผ ๋์ผํ๊ฒ ๊ฐ๋๋ก ํ์ : ์ปจํ ์ธ ์์ค
์ฝํ ์ธ ์์ค์ ์ฝํ ์ธ ์ ๋ด์ฉ๊ณผ ์ ๋ฐ์ ์ธ ์ฌ๋ฌผ์ ๋ฐฐ์น ์ธก๋ฉด์์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ ํฉ์ฑ๋ ์ด๋ฏธ์ง ๊ฐ์ ์ผ๋ง๋ ๋ค๋ฅธ์ง๋ฅผ ์ธก์ ํ๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ๋์ผํ ์์น์ ํฝ์ ๊ฐ์ ๋น๊ตํ๋ ๊ฒ๋ง์ผ๋ก๋ ํ์ต์ด ๋ถ๊ฐํ๋ค๋ ๊ฒ์ด๋ค. ๋จ์ ์ธ ์๋ก, ์๋์ฒ๋ผ ๋์ผํ๊ฒ ์ํ ํ ๊ฐ์ฒด๋ฅผ ์ด๋ฏธ์ง์ ๋ด๊ณ ์์ง๋ง, ์ดฌ์ ๊ฐ๋๋ ๋น๊ณผ ๊ฐ์ ์์๋ค์ ์ํด ์กฐ๊ธ์ฉ ๋ค๋ฅธ ์ฌ์ง๋ค์ด ์๋ค.
์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋น๊ตํด๋ณด์์ ๋, ์ํ ํ์ด๋ผ๋ ๋ฌผ์ฒด๋ฅผ ๋์ผํ๊ฒ ๋ด๊ณ ์๋ค. ์ฌ๋์ด ๋ณด๊ธฐ์๋ ๋ ์ด๋ฏธ์ง๊ฐ ๋์ผํ ๋ฌผ์ฒด๋ฅผ ๋ด๊ณ ์๋ค๋ผ๋ ๊ฒ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋์ ๋์ผ๋ก ์ฝํ ์ธ ์์ค์ ๊ณ์ฐํ๋ค๊ณ ํ๋ฉด ์์ค ๊ฐ์ ๋ฎ๊ฒ ๊ณ์ฐํ ์ ์์ ๊ฒ์ด๋ค. ํ์ง๋ง ๋ง์ฝ ์ปดํจํฐ๊ฐ ์ฝํ ์ธ ์์ค์ ๊ณ์ฐํ๋ค๊ณ ํ๊ณ , ์ฌ์ง์ด ๊ณ์ฐ ๊ธฐ์ค์ ๋์ผํ ์์น์ ํฝ์ ๊ฐ๋ง์ ๊ธฐ์ค์ผ๋ก ํ๊ฒ ๋๋ค๊ณ ํ๋ค๋ฉด ์ปจํ ์ธ ์์ค ๊ฐ์ ๋ค์ ๋๊ฒ ๋์ฌ ๊ฒ์ด๋ค. ์๋ํ๋ฉด ์ ๋ ์ด๋ฏธ์ง๋ง ๋ณด๋๋ผ๋ ์ํ ํ์ ์์น๊ฐ ๋ค๋ฅด๋ฉฐ, ์ฌ์ง์ด ์ค๋ฅธ์ชฝ ์ฌ์ง์ ์ฝ๊ฐ ํ์ ๋น์ผ๋ก ์ธํด ๋ถ์ผ์ค๋ฆํ ๋ ธ์ ๋น๋ ํฝ์ ์ ๋ฐ์๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ ์ฝํ ์ธ ์์ค์ ๊ณ์ฐํ ๋๋ ๊ฐ๋ณ ํฝ์ ๊ฐ๊ณผ ๋ฌด๊ดํด์ผ ํ๋ค. ๋ค์ ๋งํด, ๊ณ ์ฐจ์ ํน์ฑ์ ์กด์ฌ(์ ์์์์๋ ์ํ ํ)์ ๋๋ต์ ์ธ ์์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฝํ ์ธ ์์ค์ ์ ์ํ์์ผ์ผ ํ๋ค. ์ด๋ฅผ ๋ฐ์ํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํ ๊น?
์ด๋ฅผ ๋ฐ์ํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋๊ท๋ชจ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ผ๋ก ํ์ต๋ ์ด๋ฅธ๋ฐ, Pre-trained ์ด๋ฏธ์ง ๋ถ๋ฅ ๋ชจ๋ธ์ Backbone์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ์ฌ๊ธฐ์ Pre-trained ์ด๋ฏธ์ง ๋ถ๋ฅ ๋ชจ๋ธ์ด๋ผ๊ณ ํ๋ค๋ฉด 1,400๋ง๊ฐ์ ๋๊ท๋ชจ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ImageNet์ ํ์ตํ VGG16๊ณผ ๊ฐ์ ๋ชจ๋ธ์ ๋งํ๋ค. ์ด๋ ๊ฒ ๊น๊ฒ ์์ ๋ชจ๋ธ, ๊ทธ๋ฆฌ๊ณ ๋๊ท๋ชจ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ผ๋ก ํ์ต๋ ๋ชจ๋ธ์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฃ์์ ๋ ๋ชจ๋ธ ๋ด ๊น์ ๋ ์ด์ด์์ ์์ฐ์ค๋ฝ๊ฒ ์ด๋ฏธ์ง ์์ ๊ณ ์์ค ํน์ฑ์ ํ์ ํ ์ ์๊ฒ ๋๋ค. ๋ด๋ด ์คํ์ผ ํธ๋์คํผ์์๋ ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ ํฉ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ VGG16๊ณผ ๊ฐ์ Pre-trained ๋ชจ๋ธ์ ์ ๋ ฅ์ผ๋ก ๋ฃ์ด ์ถ๋ ฅ์ ๊ณ์ฐํ ๋ค, ์ด๋ฅผ ์ถ๋ ฅ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ค์ฐจ๋ฅผ ๊ณ์ฐํด์ ์ฝํ ์ธ ์์ค์ ๊ณ์ฐํ๊ฒ ๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ ์ค์ํ ์ ์ ์ฝํ ์ธ ์์ค์ ๊ณ์ฐํ ๋ ์ฌ์ฉํ๋ ๋ชจ๋ธ์ ์ถ๋ ฅ์ด ์ต์ข ์ถ๋ ฅ ๋ ์ด์ด๋ก๋ถํฐ๊ฐ ๋์จ ๊ฒ์ด ์๋ ๊น์ ์ธต์ ์ปจ๋ณผ๋ฃจ์ ๋ ์ด์ด๋ฅผ ํต๊ณผํ ์ถ๋ ฅ ๊ฐ(์ด๋ฅธ๋ฐ Feature Map)์ ํ์ฉํ๋ค๋ ๊ฒ์ด๋ค. VGG16์ ์๋ค์ํผ ์ฌ๋ฌ ๊ฐ์ ํด๋์ค๋ฅผ ๋ถ๋ฅํ๋ Multi-class classfication ๋ชจ๋ธ์ด๊ธฐ ๋๋ฌธ์ ์ต์ข ๋ ์ด์ด์๋ Softmax ๋ ์ด์ด์ ์ธต์ด ๋ด๊ฒจ์๋ค. ํ์ง๋ง ๋ด๋ด ์คํ์ผ ํธ๋์คํผ์์ ์ฐ๋ฆฌ๊ฐ ํ์๋กํ๋ ๋ถ๋ถ์ ์ด๋ฏธ์ง๊ฐ "์ด๋ค ํด๋์ค๋ก ๋ถ๋ฅ๋์๋์ง"๊ฐ ํ์ํ ๊ฒ์ด ์๋๋ค. ์ฐ๋ฆฌ๊ฐ ํ์ํ ๋ถ๋ถ์ "์ด๋ฏธ์ง์ ๊ณ ์์ค ํน์ฑ"์ด๋ค. ๋ฐ๋ผ์ Pre-trained ๋ชจ๋ธ์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ ํฉ์ฑ๋ ์ด๋ฏธ์ง ๊ฐ๊ฐ์ ์ ๋ ฅ์ผ๋ก ๋ฃ์์ ๋ ์ถ๋ ฅ๊ฐ์ ์ฌ์ฉํ๋, ํน์ 1๊ฐ์ ๊น์ ์ธต์ ์ปจ๋ณผ๋ฃจ์ ๋ ์ด์ด๋ฅผ ํต๊ณผํ์ ๋์ ์ถ๋ ฅ๊ฐ์ธ Feature Map์ ์ด์ฉํ๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ์ฌ๊ธฐ์ ์ด๋ค ๊น์ ์ธต์ ์ ํํ ์ง๋ ์ผ์ข ์ ํ์ดํผํ๋ผ๋ฏธํฐ๊ฐ ๋๊ฒ ๋ค.
์ด๋ก์จ ๋ฒ ์ด์ค, ํฉ์ฑ ์ด๋ฏธ์ง ๊ฐ๊ฐ์ Feature Map์ ์ป๊ฒ ๋๊ณ , ์ด 2๊ฐ์ Feature Map ๊ฐ์ ํ๊ท ์ ๊ณฑ ์ค์ฐจ๋ฅผ ๊ณ์ฐํ๊ฒ ๋๋ฉด ์ต์ข ์ ์ธ ์ฝํ ์ธ ์์ค๊ฐ์ด ๋๋ค. ์ด ๊ณ์ฐ ๊ณผ์ ์ ๋์ํํ๋ฉด ์๋์ ๊ฐ๋ค.
5-2. ๋ ์ด๋ฏธ์ง ์ฌ์ด์ ์คํ์ผ ์ ์ฌ๋๋ฅผ ๊ณ์ฐํ์ : ์คํ์ผ ์์ค
์์์ ์์๋ณธ ์ฝํ ์ธ ์์ค์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ ํฉ์ฑ๋ ์ด๋ฏธ์ง ๊ฐ์ ์์ค ๊ฐ์ด์๋ค. ์ด๋ฒ์ ์์๋ณผ ์คํ์ผ ์์ค์ ์คํ์ผ ์ด๋ฏธ์ง์ ํฉ์ฑ๋ ์ด๋ฏธ์ง ๊ฐ์ ์์ค ๊ฐ์ ๊ตฌํ๋ ๋ฐฉ์์ด๋ค. ๋ค์ ๋งํด, ์คํ์ผ ์ด๋ฏธ์ง์ ํฉ์ฑ๋ ์ด๋ฏธ์ง๊ฐ์ ์คํ์ผ์ด ์ผ๋ง๋ ๋น์ทํ์ง ๊ณ์ฐ์ ํ๋ ๊ฒ์ด๋ค. ๋ด๋ด ์คํ์ผ ํธ๋์คํผ ๋ ผ๋ฌธ์์๋ ์คํ์ผ์ด ๋น์ทํ ์ด๋ฏธ์ง๋ค ๊ฐ์๋ Feature Map ์ฌ์ด์ ๋์ผํ ์๊ด๊ด๊ณ ํจํด์ ๊ฐ์ง๋ค๋ ์์ด๋์ด๋ฅผ ์ ์ํ๋ฉด์ ์คํ์ผ ์์ค ๊ณ์ฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค. ์๋ฅผ ๋ค์ด์, ์๋์ ๊ฐ์ด 3๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์๊ณ ์ด๋ฅผ Pre-trained ๋ชจ๋ธ์ ๋ฃ์ ํ, Pre-trained ๋ชจ๋ธ์ ๊น์ ์ปจ๋ณผ๋ฃจ์ ์ธต์ ์ถ๋ ฅ๊ฐ์ธ Feature Map์ ์ถ์ถํด๋ณธ๋ค๊ณ ํ์.
ํ์ฌ 3๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์กด์ฌํ๊ณ , ํํฐ๋ ์ด 3๊ฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ์ด๋ก์ ํ์ ๊ฐ์งํ๋ ๋ น์ ๊ฐ์ง ํํฐ, ํ๋์ ๊ฐ์งํ๋ ํ๋์ ๊ฐ์ง ํํฐ, ๊ฐ์ ํ์ ๊ฐ์งํ๋ ๊ฐ์ ๊ฐ์ง ํํฐ๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ฅธ์ชฝ์ ๊ฒฉ์๋ฌด๋ฌ๋ค์ ๋ชจ๋ Feature Map์ ๊ฐ ํํฐ๋ฅผ ์๋ฏธํ๋ค.
๋จผ์ ์ด๋ฏธ์ง A, B๋ ๋ฑ๋ด๋ ๋น์ทํ ์ด๋ฏธ์ง์ด๊ธฐ ๋๋ฌธ์ Feature Map์ ํน์ฑ์ ๋ณด๋ฉด ๋งค์ฐ ๋น์ทํ ๊ฒ๋ ์ ์ ์๋ค. ๋ฐ๋ฉด์ ์ด๋ฏธ์ง C๋ A, B์ Feature Map์ด ๋ค๋ฆ์ ์ ์ ์๋ค. ์ด๋ ๊ฒ ๋ ๊ฐ์ Feature Map ๊ฐ์ ๋์์ ํ์ฑํ๋๋ ๋ถ๋ถ์ ์์น์ ์ผ๋ก ์ธก์ ํ๋ ค๋ฉด ์์ฒ๋ผ Feature Map ๊ฐ์ ์ค์นผ๋ผ ๊ณฑ(scalar product = dot product)์ ์ํํ ํ, ๊ณ์ฐ๋ ๊ฐ์ด ํฌ๋ฉด ๋ Feature Map ๊ฐ์ ์๊ด๊ด๊ณ๊ฐ ํฌ๊ณ , ๊ฐ์ด ์์ผ๋ฉด ์๊ด๊ด๊ณ๋ ์๋ค๋ผ๊ณ ํ ์ ์๋ค. ์ด๋ ๊ฒ ๊ณ์ฐ๋ ํ๋ ฌ ๊ฐ์ ๊ทธ๋ ํ๋ ฌ(Gram matrix)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ค์ ๋ก ๊ฐ๋จํ๊ฒ ๋ํ์ด๋ฅผ ํ์ฉํด์ Feature Map 3๊ฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด๊ณ , ์ด์ ๋ํ ๊ทธ๋ ํ๋ ฌ์ ๊ตฌํด๋ณด๋ฉด ์๋์ฒ๋ผ ๊ตฌํด์ง ์ ์๋ค.
import numpy as np
a = [[1000, 900, 1],
[90, 1000, 1],
[1, 1, 1000]]
b = [[1000, 900, 1],
[900, 1000, 5],
[1, 5, 100]]
c = [[1000, 1, 1],
[1, 1000, 900],
[1, 900, 1000]]
a, b, c = np.array(a), np.array(b), np.array(c)
a_b_scalar = np.dot(a, b)
a_c_scalar = np.dot(a, c)
b_c_scalar = np.dot(b, c)
print(a_b_scalar)
print()
print(b_c_scalar)
print()
print(a_c_scalar)
๊ฒฐ๊ณผ๊ฐ์ ์ฐจ๋ก๋๋ก ์ดํด๋ณด๋ฉด Feature Map์ด ๋น์ทํ A, B ์ด๋ฏธ์ง ๊ฐ์ ๊ทธ๋ ํ๋ ฌ ๊ฐ์ ๋ณด๋ฉด ๋์์ ํ์ฑํ๋๋ ๋ถ๋ถ ๊ฐ์ด ์๋์ ์ผ๋ก ๋งค์ฐ ํผ์ ์ ์ ์๋ค. ๋ฐ๋ฉด์ B, C ๊ฐ์ ๊ทธ๋ ํ๋ ฌ ๋๋ A, C ๊ฐ์ ๊ทธ๋ ํ๋ ฌ์ ๋ณด๋ฉด ์๋์ ์ผ๋ก ๊ฐ์ด ์ ์ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ ๊ณง A, B ์ด๋ฏธ์ง ๊ฐ์๋ ์๊ด๊ด๊ณ๊ฐ ํฌ์ง๋ง C๋ ์ด๋ฏธ์ง A, B์ ์๊ด๊ด๊ณ๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
(์์์๋ ์๋ก ๋ค๋ฅธ Feature Map ์์ฒด๋ฅผ ๊ณฑํ๋ ๊ฑธ๋ก ํ์ง๋ง, ํํ ๋ฆฌ์ผ ์ฝ๋์์๋ ๊ฐ Feature Map ํ๋ ฌ๋ง๋ค 2์ฐจ์์ผ๋ก reshapeํ ํ, Transpose๋ ํ๋ ฌ๊ณผ ๊ณฑํด์ ๊ทธ๋ ํ๋ ฌ์ ๊ตฌํ๊ณ , ์๋ก ๋ค๋ฅธ Feature Map์ ๊ทธ๋ ํ๋ ฌ ๊ฐ์ ๊ณฑํ์๋ค. ์ฝ๋๋ก ์ดํด๋ณด๋ฉด ์ด์ ๊ฐ๋ค.)
์ด๋ ๊ฒ ๊ทธ๋ ํ๋ ฌ์ ์ด์ฉํด์ ์คํ์ผ ์์ค์ ๊ณ์ฐํ๊ฒ ๋๋ฉด ์ฝํ ์ธ ๊ฐ ๋ง์ด ๋ค๋ฅด๋๋ผ๋ Feature Map๊ฐ์ ๊ทธ๋ ํ๋ ฌ์ด ๋น์ทํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์คํ์ผ์ ๋ฐ์ํ ์ ์๊ฒ ๋๋ค.
์ด์ ๊ทธ๋ฌ๋ฉด ์คํ์ผ ์์ค์ ๊ณ์ฐํ๋ ์์์ ์ดํด๋ณด๋๋ก ํ์. ์ฝํ ์ธ ์์ค ๋์ ๋ค๋ฅธ ์ ์ Pre-trained ๋ชจ๋ธ์์ Feature Map์ ํ๋๊ฐ ์๋๋ผ ์ฌ๋ฌ ๊ฐ์ ๊น์ ์ปจ๋ณผ๋ฃจ์ ๋ ์ด์ด์์ ์ถ์ถํ๋ค๋ ์ ์ด๋ค. ์ด๋ก์จ ๋ค์ํ Feature Map์ ์ฌ์ฉํ๊ฒ ๋๋ฉด์ ์คํ์ผ์ ์ ์ ๋ ์ ํํ๊ฒ ๋ฐ์ํ ์ ์๊ฒ ๋๋ค.
5-3. ํฝ์ ์ ๋ถ๋๋ฝ๊ฒ ํด์ฃผ์ : ์ด ๋ณ์ ์์ค
๋ง์ง๋ง์ผ๋ก ๋ฐฐ์ธ ์์ค์ ์ด ๋ณ์ ์์ค์ด๋ค. ์ด ๋ณ์ ์์ค์ ํฉ์ฑ๋ ์ด๋ฏธ์ง์ ํฝ์ ์ ์ฌ๋ ๋์ผ๋ก ๋ณด์์ ๋, ๊ฒฉ์ ๋ฌด๋ฌ ํํ๊ฐ ์๋๊ณ ๋ถ๋๋ฌ์ด ๊ณก์ ํํ๋ก ๋ํ๋๋๋ก ํด์ฃผ๋ ์ญํ ์ ํ๋ค. ์ด๋ฆ์ด ์ด๋ ค์๋ณด์ด์ง๋ง ์ค์ง์ ์ผ๋ก ์ํํ๋ ๋ก์ง์ ํฉ์ฑ๋ ์ด๋ฏธ์ง์ ์๋ ์ก์(noise)์ ์ธก์ ํ๋ ๊ฒ์ด๋ค.
์ข ๋ ๊ตฌ์ฒด์ ์ธ ๋ก์ง์ ๋ค์๊ณผ ๊ฐ๋ค. ์ฐ์ ํฉ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ํฝ์ ์ด๋์ํจ ๋ค, ์ด ์ด๋์ํจ ์ด๋ฏธ์ง์ ์ด๋ ์ํค๊ธฐ ์ ์ ์ด๋ฏธ์ง์์ ํฝ์ ์ฐจ์ด ๊ฐ์ ์ ๊ณฑํ์ฌ ๋ํด์ค๋ค. ์ด๋ฌํ ๋์์ ํฉ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ์๋์ชฝ์ผ๋ก ํ ํฝ์ ์ด๋์ํจ ๋ค, ๋์ผํ๊ฒ ์ํํด์ค๋ค. ์ด ๋ณ์ ์์ค์ ๋ง๋ก ํ๋ ๊ฒ๋ณด๋ค ์ฝ๋๋ก ๋ณด๋ ๊ฒ ์ข ๋ ์ง๊ด์ ์ผ ์ ์๋ค.
6. ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์ํํด์ ํฉ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ์ ๋ฐ์ดํธ!
์ง๊ธ๊น์ง ์ธ ๊ฐ์ง ์ข ๋ฅ์ ์์คํจ์ ๊ฐ์ ๋ํด ์์๋ณด์๋ค. ์ด์ ์์คํจ์๋ฅผ ๊ตฌํ์ผ๋, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์ํํด์ ํฉ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ์ ๋ฐ์ดํธ ํด ๋๊ฐ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ํด์ ๋ด๋ด ์คํ์ผ ํธ๋ ์คํผ์ ๋์์ ๋์ด๋ค. ๋์๊ณผ์ ์ ๋ค์ ๋์ด์ผ๋ณด๋ฉด CycleGAN ์ฒ๋ผ ํ์ต ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ๋ก ํ์ต์ํค์ง ์๊ณ Pre-trained ๋ชจ๋ธ์ ๋จ์ํ Backbone ํํ๋ก ์ฌ์ฉํ๊ณ , ์์คํจ์ 3๊ฐ์ง๋ฅผ ์ ์ํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์ ์ฉํ๋ ๋จ๊ณ๋ก ์ํ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ด๋ด ์คํ์ผ ํธ๋์คํผ์ ๊ตฌ์ฒด์ ์ธ ๋์์ ์ ์ฐจํํ๋ฉด์ ๋ง๋ฌด๋ฆฌํด๋ณด์.
- ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ ๋์ผํ๊ฒ ํฉ์ฑ ์ด๋ฏธ์ง๋ฅผ ์์ฑ(๋จ์ํ ๊ทธ๋ฅ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํจ)
- Pre-trained ๋ชจ๋ธ ํ๋๋ฅผ Backbone ๋ชจ๋ธ๋ก ์ ์ (VGG16 ๊ฐ์ ๋ชจ๋ธ ์ค ํ๋)ํ๊ณ ํด๋น ๋ชจ๋ธ์ ์ด๋ฏธ์ง๋ค์ ์ ๋ ฅ์ํค๊ธฐ
- 3๊ฐ์ง ์์ค ํจ์๋ฅผ ์ ์(์ฝํ ์ธ ์์ค, ์คํ์ผ ์์ค, ์ด ๋ณ์ ์์ค)ํ๊ณ ์์ค ํจ์ ๊ฐ๋ค์ Weighted Sum
- Weighted Sum ๋ ์ต์ข ์์ค๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฝ์ฌ ํ๊ฐ๋ฒ์ ์ํํ๋ฉด์ ํฉ์ฑ๋ ์ด๋ฏธ์ง ์ ๋ฐ์ดํธ
์ถ๊ฐ๋ก ๋ด๋ด ์คํ์ผ ํธ๋์คํผ๋ฅผ ํ์ตํ๋ ์ฝ๋๋ ์ฌ๊ธฐ์๋ค. ๋ฌผ๋ก ํ์์ ์ฝ๋๋ ์ฐธ๊ณ ํด๋ ๋์ง๋ง Pytorch ํํ ๋ฆฌ์ผ์์๋ ๋งค์ฐ ์น์ ํ ๊ฐ์ด๋๊ฐ ์กด์ฌํ์ฌ ๊ณต์ ํ๋ค. ํํ ๋ฆฌ์ผ์ ์๋ ์ฌ์ง ๋ง๊ณ ํ์๊ฐ ๊ฐ์ธ์ ์ผ๋ก ๋ค๋ฅธ ์ฌ์ง์ผ๋ก ๋์ ํด๋ณด์๋ค. ํ๋ผ๋ฏธํฐ์ ๋ง์ด ๋ฏผ๊ฐํ๊ธด ํ์ง๋ง.. ใ ์๋์ฒ๋ผ ํผ์นด์๊ฐ ์ํ ํ์ ๊ทธ๋ฆฐ๋ค๋ฉด ์๋์ฒ๋ผ ๊ทธ๋ ค์ง ๊ฒ์ด๋ค.
์ง๊ธ๊น์ง์ ๋ด์ฉ์ผ๋ก ํด์ ์์ฑํ ๋ชจ๋ธ์ ํ์ฉํ๋ ๊ธฐ๋ฒ ์ค ํ๋์ธ ์คํ์ผ ํธ๋์คํผ์ ๋ํด ๋ฐฐ์๋ณด์๋ค. ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ๋ก ์ผ๋ก๋ ์ฐ๋ฆฌ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํ์ต์ํฌ ์ ์๋ CycleGAN ๋ชจ๋ธ์ด ์์๊ณ , ํ์ต ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ Pre-trained ๋ชจ๋ธ๋ง์ ์ฌ์ฉํ๊ณ ์์ค ํจ์๊ฐ๋ง ์๋กญ๊ฒ ์ ์ํด์ ์ฌ์ฉํ ์ ์๋ ๋ด๋ด ์คํ์ผ ํธ๋์คํผ์ ๋ํด ๋ฐฐ์ ๋ค.
๊ทธ๋ฌ๋ฉด ๋ค์ ํฌ์คํ ๋ถํฐ๋ ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ ์์ฑ ๋ชจ๋ธ๋ง์ด ์๋ ํ ์คํธ ๊ธฐ๋ฐ์ ์์ฑ ๋ชจ๋ธ๋ง์ ๋ํ ๋ฐฐ์์ ์์ํด๋ณด๋๋ก ํ์.
'Data Science > Generative AI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[GenAI] ์์ฑ์ ์ ๋ ์ ๊ฒฝ๋ง: GAN(Generative Adversarial Network), WGAN, WGAN-GP (1) | 2023.11.04 |
---|---|
[GenAI] ๊ธฐ๋ณธ์ ์ธ ์์ฑ ๋ชจ๋ธ: AE ์ VAE (1) | 2023.09.08 |
[GenAI] ์์ฑ ๋ชจ๋ธ๋ง(Generative AI)์ด๋ (0) | 2023.07.22 |