AI/Hands-on ML

[ํ•ธ์ฆˆ์˜จ ๋จธ์‹ ๋Ÿฌ๋‹] 17์žฅ(5) - DCGAN, ProGAN, StyleGAN

KIM DEON 2021. 5. 23. 02:59

๐Ÿƒ ์ด์ „ ๊ธ€ # ์ƒ์„ฑ์  ์ ๋Œ€ ์‹ ๊ฒฝ๋ง, GAN์ด๋ž€?

 

[ํ•ธ์ฆˆ์˜จ ๋จธ์‹ ๋Ÿฌ๋‹] 17์žฅ(4) - GAN, ์ƒ์„ฑ์  ์ ๋Œ€ ์‹ ๊ฒฝ๋ง

[AI/Hands-on ML] - [ํ•ธ์ฆˆ์˜จ ๋จธ์‹ ๋Ÿฌ๋‹] 17์žฅ(3) - ๋ณ€์ดํ˜• ์˜คํ† ์ธ์ฝ”๋”, Variational AutoEncoder [ํ•ธ์ฆˆ์˜จ ๋จธ์‹ ๋Ÿฌ๋‹] 17์žฅ(3) - ๋ณ€์ดํ˜• ์˜คํ† ์ธ์ฝ”๋”, Variational AutoEncoder [AI/Hands-on ML] - [ํ•ธ์ฆˆ์˜จ ๋จธ์‹ ๋Ÿฌ๋‹]..

kdeon.tistory.com


17. 9. 2 ์‹ฌ์ธต ํ•ฉ์„ฑ๊ณฑ GAN, DCGAN

2014๋…„ ์›๋ณธ GAN ๋…ผ๋ฌธ์—์„œ๋Š”, ํ•ฉ์„ฑ๊ณฑ ์ธต์„ ํ†ตํ•ด ์ž‘์€ ์ด๋ฏธ์ง€๋งŒ ์ƒ์„ฑํ•˜์˜€๋‹ค. 

๊ทธ ํ›„, ํฐ ์ด๋ฏธ์ง€๋ฅผ ์œ„ํ•ด ๊นŠ์€ ํ•ฉ์„ฑ๊ณฑ ์ธต ๊ธฐ๋ฐ˜์˜ GAN์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜์˜€๊ณ , 

-> 2015๋…„, ์—ฌ๋Ÿฌ ๊ตฌ์กฐ์™€ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์‹คํ—˜ ๋์— ์‹ฌ์ธต ํ•ฉ์„ฑ๊ณฑ GAN (DCGAN) ์ด ์ œ์•ˆ๋˜์—ˆ๋‹ค. 

 

๐Ÿ“ ์•ˆ์ •์ ์ธ ํ•ฉ์„ฑ๊ณฑ GAN์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ด๋“œ๋ผ์ธ

- ํŒ๋ณ„์ž์˜ ํ’€๋ง ์ธต์„ ์ŠคํŠธ๋ผ์ด๋“œ ํ•ฉ์„ฑ๊ณฑ์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

- ์ƒ์„ฑ์ž์˜ ํ’€๋ง ์ธต์€ ์ „์น˜ ํ•ฉ์„ฑ๊ณฑ์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

- ์ƒ์„ฑ์ž์™€ ํŒ๋ณ„์ž์— ๋ฐฐ์น˜ ์ •๊ทœํ™”๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ๊นŠ์€ ์ธต์„ ์œ„ํ•ด ์™„์ „ ์—ฐ๊ฒฐ ์€๋‹‰์ธต์„ ์ œ๊ฑฐํ•œ๋‹ค.

- ์ƒ์„ฑ์ž์˜ ๋ชจ๋“  ์ธต์€ ReLU ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ํŒ๋ณ„์ž์˜ ๋ชจ๋“  ์ธต์€ LeakyReLU ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

-> ํ•ญ์ƒ ๋งž๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ์‹คํ—˜์ด ํ•„์š”ํ•˜๋‹ค. 

๐Ÿ“Œ DCGAN Generator Model

๋…ผ๋ฌธ์—์„œ LSUN ๋ฐ์ดํ„ฐ์…‹์„ ๋ชจ๋ธ๋งํ• ๋•Œ ์‚ฌ์šฉํ•œ Generator ๊ตฌ์กฐ์ด๋‹ค. 

DCGAN์˜ Generator ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ (DCGAN ๋…ผ๋ฌธ Figure 1)

- 100 dimensional uniform distribution Z ๊ฐ€ CNN์„ ๊ฑฐ์น˜๊ธฐ ์œ„ํ•ด image ํŠน์„ฑ ๋งต ํ˜•ํƒœ๋กœ ๋ณ€ํ˜•๋˜๋„๋ก Project and reshape ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. 

- 4๊ฐœ์˜ fractionally-stride convolution ์„ ๊ฑฐ์ณ ๋งŒ๋“ค์–ด์ง„ high level ํ‘œํ˜„์ด  64x64 ํ”ฝ์…€ ์ด๋ฏธ์ง€๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. 

- fully-connected ์ธต๊ณผ pooling์ธต์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. 

 

๐Ÿ“ fractionally-stride convolution 

fractionally-stride convolution  (์ถœ์ฒ˜: https://github.com/vdumoulin/conv_arithmetic)

- input์— padding์„ ํ•˜๊ณ  convolution์„ ํ•จ์œผ๋กœ์จ ๊ธฐ์กด stride convolution๊ณผ ๋ฐ˜๋Œ€๋กœ ์ถœ๋ ฅ์˜ ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 

- ์ „์น˜ํ•ฉ์„ฑ๊ณฑ๊ณผ ๊ฐ™์€ ์˜๋ฏธ๋กœ, keras์˜ Conv2DTranspose ์ธต์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

 


ํŒจ์…˜ MNIST DCGAN ๋ชจ๋ธ

codings_size = 100

# ์ƒ์„ฑ์ž
generator = keras.models.Sequential([
    keras.layers.Dense(7 * 7 * 128, input_shape=[codings_size]),
    keras.layers.Reshape([7, 7, 128]),
    keras.layers.BatchNormalization(),
    keras.layers.Conv2DTranspose(64, kernel_size=5, strides=2, padding="SAME",
                                 activation="selu"),
    keras.layers.BatchNormalization(),
    keras.layers.Conv2DTranspose(1, kernel_size=5, strides=2, padding="SAME",
                                 activation="tanh"),
])
# ํŒ๋ณ„์ž
discriminator = keras.models.Sequential([
    keras.layers.Conv2D(64, kernel_size=5, strides=2, padding="SAME",
                        activation=keras.layers.LeakyReLU(0.2),
                        input_shape=[28, 28, 1]),
    keras.layers.Dropout(0.4),
    keras.layers.Conv2D(128, kernel_size=5, strides=2, padding="SAME",
                        activation=keras.layers.LeakyReLU(0.2)),
    keras.layers.Dropout(0.4),
    keras.layers.Flatten(),
    keras.layers.Dense(1, activation="sigmoid")
])
gan = keras.models.Sequential([generator, discriminator])
์ƒ์„ฑ์ž

- ์ƒ์„ฑ์ž๋Š” ํฌ๊ธฐ 100์˜ ์ฝ”๋”ฉ์„ ๋ฐ›์•„ 6272์ฐจ์›์œผ๋กœ ํˆฌ์˜ํ•˜๊ณ , ์ด ๊ฒฐ๊ณผ๋ฅผ 7x7x128 ํฌ๊ธฐ์˜ ํ…์„œ๋กœ ๋ฐ”๊พผ๋‹ค. 

- ํ…์„œ๋Š” ๋ฐฐ์น˜ ์ •๊ทœํ™”๋ฅผ ๊ฑฐ์ณ stride๊ฐ€ 2์ธ ์ „์น˜ ํ•ฉ์„ฑ๊ณฑ ์ธต์— ์ฃผ์ž…๋œ๋‹ค.

  • 7x7 -> 14x14 ๋กœ ์—…์ƒ˜ํ”Œ๋ง, 128 -> 64 ๊นŠ์ด ๊ฐ์†Œ

- ๋‹ค์‹œ ๋ฐฐ์น˜ ์ •๊ทœํ™”๋ฅผ ๊ฑฐ์ณ stride๊ฐ€ 2์ธ ์ „์น˜ ํ•ฉ์„ฑ๊ณฑ ์ธต์— ์ฃผ์ž…๋œ๋‹ค.

  • 14x14 -> 28x28 ๋กœ ์—…์ƒ˜ํ”Œ๋ง, 64 -> 1 ๊นŠ์ด ๊ฐ์†Œ
  • tanh์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ถœ๋ ฅ ๋ฒ”์œ„๊ฐ€ -1์—์„œ 1 ์‚ฌ์ด -> GAN ํ›ˆ๋ จ ์ „ ํ›ˆ๋ จ ์„ธํŠธ๋ฅผ ๋™์ผ ๋ฒ”์œ„๋กœ ์Šค์ผ€์ผ ์กฐ์ • ํ•„์š”
X_train = X_train.reshape(-1, 28, 28, 1) * 2. - 1. # ํฌ๊ธฐ ๋ณ€๊ฒฝ๊ณผ ์Šค์ผ€์ผ ์กฐ์ •

- ํ›ˆ๋ จ ์„ธํŠธ ์Šค์ผ€์ผ์„ ์กฐ์ •ํ•œ๋‹ค.

  • ํฌ๊ธฐ ๋ณ€๊ฒฝ ๋ฐ ์ฑ„๋„ ์ฐจ์›์„ ์ถ”๊ฐ€
ํŒ๋ณ„์ž

- ์ด์ง„ ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•œ ์ผ๋ฐ˜์ ์ธ CNN๊ณผ ๋น„์Šทํ•œ ๊ตฌ์กฐ์ด์ง€๋งŒ, ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด ์ƒ˜ํ”Œ๋งํ•  ๋•Œ MaxPooling์ด ์•„๋‹Œ stride ํ•ฉ์„ฑ๊ณฑ์„ ์‚ฌ์šฉํ•œ๋‹ค. (+ LeakyRelu ์‚ฌ์šฉ)

 

โœ”๏ธ DCGAN ๊ฐ€์ด๋“œ๋ผ์ธ์—์„œ ๋ณ€๊ฒฝ๋œ ์ 

- ํŒ๋ณ„์ž์˜ BatchNormalization ์ธต -> Dropout ์ธต์œผ๋กœ ๋ณ€๊ฒฝ (ํ›ˆ๋ จ์˜ ์•ˆ์ •์„ฑ์„ ์œ„ํ•จ)

- ์ƒ์„ฑ์ž์—์„œ ReLu๊ฐ€ ์•„๋‹Œ SELU ์‚ฌ์šฉ

-> ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊ฟ”๋ณด๋ฉด์„œ, ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•œ ๋ฏผ๊ฐ์„ฑ์„ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

ํ›ˆ๋ จ ๊ฒฐ๊ณผ

๋ฐ์ดํ„ฐ์…‹ ์ƒ์„ฑ, ๋ชจ๋ธ ์ปดํŒŒ์ผ, ํ›ˆ๋ จ์„ ์œ„ํ•ด ์•ž์—์„œ ์‚ฌ์šฉํ•œ ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (์ด์ „ ๊ธ€ ์ฐธ๊ณ 

epoch 50 ํ›„ DCGAN์ด ์ƒ์„ฑํ•œ ์ด๋ฏธ์ง€

- ํ›ˆ๋ จ epoch 50๋ฒˆ ํ›„์— ์ƒ์„ฑ์ž๊ฐ€ ์ƒ์„ฑํ•œ ์ด๋ฏธ์ง€ ๊ฒฐ๊ณผ์ด๋‹ค. 

 

๐Ÿ“Œ DCGAN์˜ ์ž ์žฌ ํ‘œํ˜„ ํ•™์Šต

DCGAN์€ ๊ฝค ์˜๋ฏธ ์žˆ๋Š” ์ž ์žฌ ํ‘œํ˜„์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋‹ค. 

์‹œ๊ฐ์  ๊ฐœ๋…์˜ ๋ฒกํ„ฐ ์—ฐ์‚ฐ(DCGAN ๋…ผ๋ฌธ Figure 7์˜ ์ผ๋ถ€๋ถ„)

 

- DCGAN์ด ์ƒ์„ฑํ•œ ๋งŽ์€ ์ด๋ฏธ์ง€ ์ค‘ ์ผ๋ถ€์ด๋‹ค. 

- ์„ธ ์นดํ…Œ๊ณ ๋ฆฌ(์•ˆ๊ฒฝ์„ ์“ด ๋‚จ์ž, ์•ˆ๊ฒฝ์„ ์“ฐ์ง€ ์•Š์€ ๋‚จ์ž, ์•ˆ๊ฒฝ์„ ์“ฐ์ง€ ์•Š์€ ์—ฌ์ž)์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋”ฉ์„ ํ‰๊ท ํ•˜๊ณ , ์ด ํ‰๊ท  ์ฝ”๋”ฉ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

-> ์ฆ‰, ์™ผ์ชฝ ์•„๋ž˜ 3๊ฐœ ์ด๋ฏธ์ง€๋Š”, ๊ทธ ์œ„ 3๊ฐœ ์ด๋ฏธ์ง€์˜ ํ‰๊ท ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. 

* ์ด๋•Œ ํ‰๊ท ์€, ํ”ฝ์…€ ์ˆ˜์ค€์˜ ๋‹จ์ˆœํ•œ ํ‰๊ท  ๊ณ„์‚ฐ์ด ์•„๋‹Œ, ์ž ์žฌ ๊ณต๊ฐ„์—์„œ ๊ณ„์‚ฐ๋œ ํ‰๊ท ์ด๋‹ค.

-> ๋”ฐ๋ผ์„œ ์ด๋ฏธ์ง€๊ฐ€ ์ž์—ฐ์Šค๋Ÿฌ์šด ์–ผ๊ตด์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ!

 

- ์•ˆ๊ฒฝ์„ ์“ด ๋‚จ์ž์—์„œ ์•ˆ๊ฒฝ์„ ์“ฐ์ง€ ์•Š์€ ๋‚จ์ž๋ฅผ ๋นผ๊ณ , ์•ˆ๊ฒฝ์„ ์“ฐ์ง€ ์•Š์€ ์—ฌ์ž๋ฅผ ๋”ํ•˜์—ฌ ์ด ์ฝ”๋”ฉ์— ๋Œ€์‘ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์˜ค๋ฅธ์ชฝ ์ค‘์•™๊ณผ ๊ฐ™์€ '์•ˆ๊ฒฝ์„ ์“ด ์—ฌ์ž' ์ด๋ฏธ์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

* ๊ฐ€์šด๋ฐ ์ด๋ฏธ์ง€๋ฅผ ๋‘˜๋Ÿฌ์‹ผ 8๊ฐœ์˜ ์ด๋ฏธ์ง€๋Š”, DCGAN์˜ ์‹œ๋งจํ‹ฑ ๋ณด๊ฐ„ ๋Šฅ๋ ฅ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๋™์ผํ•œ ๋ฒกํ„ฐ์— ์•ฝ๊ฐ„์˜ ์žก์Œ์„ ์ถ”๊ฐ€ํ•ด ์ƒ์„ฑํ•œ ๊ฒƒ์ด๋‹ค. 

 


๐Ÿ’ก ํ•˜์ง€๋งŒ DCGAN์œผ๋กœ ๋งค์šฐ ํฐ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์ผ๊ด€์„ฑ ์—†๋Š” ์ด๋ฏธ์ง€๋ฅผ ์–ป์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. 

DCGAN ์ดํ›„, ๋‹ค์–‘ํ•œ GAN ๋…ผ๋ฌธ์ด ์†Œ๊ฐœ๋˜์—ˆ๋‹ค. 

 


17. 9. 3 ProGAN (PGGAN)

2018๋…„ ์—”๋น„๋””์•„์˜ ๋…ผ๋ฌธ์—์„œ ์ œ์•ˆ๋˜์—ˆ๋‹ค. 

ํ›ˆ๋ จ ์ดˆ๊ธฐ์— ์ž‘์€ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ ์ง„์ ์œผ๋กœ ์ƒ์„ฑ์ž์™€ ํŒ๋ณ„์ž์— ํ•ฉ์„ฑ๊ณฑ ์ธต์„ ์ถ”๊ฐ€ํ•ด ๊ฐˆ์ˆ˜๋ก ํฐ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค

-> ์ ์ธต ์˜คํ† ์ธ์ฝ”๋”๋ฅผ ์ธต๋ณ„๋กœ ํ›ˆ๋ จํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค. 

์ด์ „์— ํ›ˆ๋ จ ๋œ ์ธต์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ , ์ƒ์„ฑ์ž์˜ ๋๊ณผ ํŒ๋ณ„์ž์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ธต์„ ์ถ”๊ฐ€ํ•˜๋ฉฐ ์Œ“์•„๊ฐ„๋‹ค.

 

๐Ÿ“Œ ProGAN ๊ตฌ์กฐ

ํ•œ๋ฒˆ์— ์ „์ฒด ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€ ํŠน์„ฑ๋“ค์„ ํ•™์Šต ์‹œํ‚ค๊ธฐ๋ณด๋‹ค, 4x4 ์ €ํ•ด์ƒ๋„๋กœ large-scale structure๋ฅผ ์ฐพ์•„๋‚ด๋„๋ก ํ•˜๊ณ , ์ ์ฐจ finer-scale detail์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก 1024x1024 ๊ณ ํ•ด์ƒ๋„๋กœ ๋†’์•„์ง€๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค๋Š” ์•„์ด๋””์–ด์ด๋‹ค. 

(ProGAN ๋…ผ๋ฌธ figure 1)

- ์ƒ์„ฑ์ž์˜ ์ถœ๋ ฅ์„ 4x4์—์„œ 8x8๋กœ ํฌ๊ฒŒ ํ•˜๋ ค๋ฉด, ๊ธฐ์กด ํ•ฉ์„ฑ๊ณฑ ์ธต์— ์—…์ƒ˜ํ”Œ๋ง ์ธต์„ ์ถ”๊ฐ€ํ•˜์—ฌ 8x8 ํฌ๊ธฐ ํŠน์„ฑ ๋งต์„ ์ถœ๋ ฅํ•œ๋‹ค.

- ์ด ํŠน์„ฑ ๋งต์ด ์ƒˆ๋กœ์šด ๋‹ค์Œ ํ•ฉ์„ฑ๊ณฑ ์ธต์œผ๋กœ ์ฃผ์ž…๋˜๊ณ , ๋‹ค์‹œ ์ƒˆ๋กœ์šด ์ถœ๋ ฅ ํ•ฉ์„ฑ๊ณฑ ์ธต์œผ๋กœ ์ฃผ์ž…๋œ๋‹ค. 

(์™ผ์ชฝ) ์ƒ์„ฑ์ž๊ฐ€ 4x4 ์ปฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ์ถœ๋ ฅํ•จ / (์˜ค๋ฅธ์ชฝ) ์™ผ์ชฝ์„ 8x8 ์ด๋ฏธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ํ™•์žฅ (์ถœ์ฒ˜: ํ•ธ์ฆˆ์˜จ๋จธ์‹ ๋Ÿฌ๋‹2 ๊ทธ๋ฆผ 17-19)
(ProGAN ๋…ผ๋ฌธ figure 2)

- ๋„คํŠธ์›Œํฌ์— ์ƒˆ๋กœ์šด ์ธต์„ ์ถ”๊ฐ€ํ• ๋•Œ, ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ•ฉ์„ฑ๊ณฑ์ธต์„ fade-inํ•˜๊ณ ,  ์›๋ž˜ ์ถœ๋ ฅ์ธต์„ fade-outํ•œ๋‹ค.

-> ์ž˜ ํ›ˆ๋ จ๋œ ์ธต์— ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์ถฉ๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค

  • ์ƒˆ๋กœ์šด ์ถœ๋ ฅ ๊ฐ€์ค‘์น˜ a ์™€ ์›๋ž˜ ์ถœ๋ ฅ ๊ฐ€์ค‘์น˜ 1-a ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์œผ๋กœ ์ตœ์ข… ์ถœ๋ ฅ์„ ๋งŒ๋“ ๋‹ค. 

- ๋ชจ๋“  ํ•ฉ์„ฑ๊ณฑ ์ธต์€ 'same' stride 1 ์„ ์‚ฌ์šฉํ•˜์—ฌ, ์ž…๋ ฅ์˜ ๋†’์ด์™€ ๋„ˆ๋น„๋ฅผ ๋ณด์กดํ•œ๋‹ค.

  • ์ž…๋ ฅ๊ณผ ๊ฐ™์€ ํฌ๊ธฐ์˜ ์ถœ๋ ฅ์„ ๋งŒ๋“ ๋‹ค. 

- ์ถœ๋ ฅ์ธต์˜ ์ปค๋„ ํฌ๊ธฐ๋Š” 1 -> ์ด๋ฅผ ์‚ฌ์šฉํ•ด ์ž…๋ ฅ์„ ํ•„์š”ํ•œ ์ปฌ๋Ÿฌ ์ฑ„๋„ ์ˆ˜ (ex. 3)๋กœ ํˆฌ์˜ํ•œ๋‹ค. 

 


 

ํ•ด๋‹น ๋…ผ๋ฌธ์—์„œ๋Š” (๋ชจ๋“œ๋ถ•๊ดด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด) ์ถœ๋ ฅ์˜ ๋‹ค์–‘์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ํ›ˆ๋ จ์„ ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋“ค๋„ ์†Œ๊ฐœ๋œ๋‹ค. 

โœ”๏ธ ๋ฏธ๋‹ˆ๋ฐฐ์น˜ ํ‘œ์ค€ํŽธ์ฐจ ์ธต

์ด์ „์— ์–ธ๊ธ‰ํ–ˆ๋˜ GAN ํ›ˆ๋ จ์˜ ์–ด๋ ค์›€ ์ค‘์—, ์ƒ์„ฑ์ž๊ฐ€ ๋ณ€ํ™”๋„๊ฐ€ ์ ์€ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด ๋‚ด๋Š” ๊ฒฝํ–ฅ(๋”ฐ๋ผ์„œ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์— ๋‹ค์–‘์„ฑ์ด ๋ถ€์กฑํ•ด์ง€๋Š” ํ˜„์ƒ)์ด ์กด์žฌํ–ˆ๋‹ค. ์ด๋Š” ๊ณ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด๋‚ด๊ธฐ ์–ด๋ ต๋„๋ก ํ•˜๋Š”๋ฐ, ๋ฏธ๋‹ˆ๋ฐฐ์น˜ ํ‘œ์ค€ํŽธ์ฐจ ์ธต์„ ํ†ตํ•ด ์ด ํ˜„์ƒ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. 

 

- ํŒ๋ณ„์ž์˜ ๋งˆ์ง€๋ง‰ ์ธต ๊ทผ์ฒ˜์— ์ถ”๊ฐ€ํ•œ๋‹ค.

- ์ž…๋ ฅ์— ์žˆ๋Š” ๋ชจ๋“  ์œ„์น˜์— ๋Œ€ํ•ด ๋ชจ๋“  ์ฑ„๋„๊ณผ ๋ฐฐ์น˜์˜ ๋ชจ๋“  ์ƒ˜ํ”Œ์— ๊ฑธ์ณ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

  • S = tf.math.reduce_std(inputs, axis=[0, -1])
  • ์ด ํ‘œ์ค€ํŽธ์ฐจ๋Š” ๋ชจ๋“  ํ”ฝ์…€์— ๋Œ€ํ•ด ํ‰๊ท ํ•˜์—ฌ, ํ•˜๋‚˜์˜ ๊ฐ’์„ ์–ป๋Š”๋‹ค. 
  • v = tf.reduce_mean(S)

- ์ถ”๊ฐ€์ ์ธ ํŠน์„ฑ ๋งต์ด ๋ฐฐ์น˜์˜ ๋ชจ๋“  ์ƒ˜ํ”Œ์— ์ถ”๊ฐ€๋˜๊ณ , ๊ณ„์‚ฐ๋œ ์ด ๊ฐ’์œผ๋กœ ์ฑ„์›Œ์ง„๋‹ค.

  • tf.concat([inputs, tf.fill([batch_size, height, width, 1], v)], axis=-1)

-> ์ƒ์„ฑ์ž๊ฐ€ ๋งŒ๋“  ์ด๋ฏธ์ง€์— ๋‹ค์–‘์„ฑ์ด ๋ถ€์กฑํ•˜๋ฉด, ํŒ๋ณ„์ž์˜ ํŠน์„ฑ ๋งต ๊ฐ„์˜ ํ‘œ์ค€ํŽธ์ฐจ๊ฐ€ ์ž‘์„ ๊ฒƒ

-> ํŒ๋ณ„์ž๋Š” ์ด ํ†ต๊ณ„๋ฅผ ํ†ตํ•ด ๋‹ค์–‘์„ฑ์ด ์ ์€ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์ƒ์„ฑ์ž์—๊ฒŒ ์†์„ ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ ๋‹ค. 

=> ์ฆ‰, ์ƒ์„ฑ์ž๊ฐ€ ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ์„ ๋งŒ๋“ค๋„๋ก ์œ ๋„ํ•ด ๋ชจ๋“œ ๋ถ•๊ดด์˜ ์œ„ํ—˜์„ ์ค„์ธ๋‹ค. 

 

โœ”๏ธ ๋™์ผํ•œ ํ•™์Šต ์†๋„

์ƒ์„ฑ์ž์™€ ํŒ๋ณ„์ž์˜ healthyํ•œ ๊ฒฝ์Ÿ์„ ์œ„ํ•ด์„œ๋Š” ๊ฐ ์ธต์ด ๋น„์Šทํ•œ ์†๋„๋กœ ํ•™์Šต๋˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. 

 

- He ์ดˆ๊ธฐํ™” ๋Œ€์‹ , ํ‰๊ท ์ด 0์ด๊ณ  ํ‘œ์ค€ํŽธ์ฐจ๊ฐ€ 1์ธ ๊ฐ€์šฐ์‹œ์•ˆ ๋ถ„ํฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ชจ๋“  ๊ฐ€์ค‘์น˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

- ํ•˜์ง€๋งŒ ๋Ÿฐํƒ€์ž„์—(์ธต์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค) He ์ดˆ๊ธฐํ™”๋ฅผ ํ†ตํ•ด (๊ฐ€์ค‘์น˜๋ฅผ √(2/n inputs) ๋กœ ๋‚˜๋ˆˆ๋‹ค) ๊ฐ€์ค‘์น˜ ์Šค์ผ€์ผ์„ ๋‚ฎ์ถ˜๋‹ค.

  • ninputs ์€ ์ธต์˜ ์ž…๋ ฅ ๊ฐœ์ˆ˜

- RMSProp, Adam ๊ฐ™์€ ์ ์‘์  ๊ทธ๋ž˜๋””์–ธํŠธ ์˜ตํ‹ฐ๋งˆ์ด์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ด ๊ธฐ๋ฒ•์ด ๋” GAN์˜ ์„ฑ๋Šฅ์„ ๋†’์ธ๋‹ค. 

-> ์ด ์˜ตํ‹ฐ๋งˆ์ด์ €๋“ค์€ ๊ฐ์ž ์ถ”์ •ํ•œ ํ‘œ์ค€ํŽธ์ฐจ๋กœ ๊ทธ๋ž˜๋””์–ธํŠธ ์—…๋ฐ์ดํŠธ๋ฅผ ์ •๊ทœํ™”ํ•œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, 

  • dynamic range๊ฐ€ ํฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ›ˆ๋ จํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.
  • ๋ฐ˜๋Œ€๋กœ dynamic range๊ฐ€ ์ž‘์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š”, ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธ๋˜์–ด ๋ถˆ์•ˆ์ •ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

- ์ฆ‰, ๊ฐ€์ค‘์น˜ ์ดˆ๊ธฐํ™”์—์„œ ์Šค์ผ€์ผ์„ ๋งž์ถ”์ง€ ์•Š๊ณ , ๋ชจ๋ธ์˜ ํ•œ ๋ถ€๋ถ„์œผ๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ํ›ˆ๋ จ ๋‚ด๋‚ด ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ์˜ dynamic range๋ฅผ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

=> ๋ชจ๋“  ๊ฐ€์ค‘์น˜๊ฐ€ ๋™์ผํ•œ ์†๋„๋กœ ํ•™์Šต๋˜์–ด, ํ›ˆ๋ จ ์†๋„์™€ ์•ˆ์ •์„ฑ์ด ๋†’์•„์ง„๋‹ค. 

 

๐Ÿ“ dynamic range

- ๋ณ€์ˆ˜๊ฐ€ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ ์ž‘์€ ๊ฐ’ ์‚ฌ์ด์˜ ๋น„์œจ

 

โœ”๏ธ ํ”ฝ์…€๋ณ„ ์ •๊ทœํ™” ์ธต

- ์ƒ์„ฑ์ž์˜ ํ•ฉ์„ฑ๊ณฑ ์ธต ๋’ค์— ์ถ”๊ฐ€ํ•œ๋‹ค.

- ๋ง ๊ทธ๋Œ€๋กœ ํ”ฝ์…€ ๋‹จ์œ„ ๋ณ„๋กœ ์ •๊ทœํ™”ํ•ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ, ๋™์ผํ•œ ์ด๋ฏธ์ง€์˜ ๋™์ผ ์œ„์น˜์— ์žˆ๋Š” ๋ชจ๋“  ํ™œ์„ฑํ™”๋ฅผ ์ฑ„๋„์— ๋Œ€ํ•ด ์ •๊ทœํ™”ํ•œ๋‹ค.

  • ํ™œ์„ฑํ™”์˜ ์ œ๊ณฑ ํ‰๊ท ์„ ์ œ๊ณฑ๊ทผ์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
  • inputs / tf.sqrt(tf.reduce_mean(tf.square(X), axis=-1, keepdims=True)+1e-8)

=> ์ƒ์„ฑ์ž์™€ ํŒ๋ณ„์ž ์‚ฌ์ด์˜ ๊ณผ๋„ํ•œ ๊ฒฝ์Ÿ์œผ๋กœ ํ™œ์„ฑํ™” ๊ฐ’์ด ํญ์ฃผ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค. 

 

* ์ผ๋ฐ˜์ ์œผ๋กœ GAN์€ ์ƒ์„ฑ์ž์™€ ํŒ๋ณ„์ž์˜ ๋ถˆํ•„์š”ํ•œ ๊ฒฝ์Ÿ์œผ๋กœ ํ™œ์„ฑํ™” ๊ฐ’์ด ํญ์ฃผ๋˜๋Š” ๊ฒƒ์„ ์–ต์ œํ•˜๊ธฐ์œ„ํ•ด Batch Normalization์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ PGGAN์€ ์ด ๋ฐฉ๋ฒ•์ด ํšจ๊ณผ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ”ฝ์…€ ์ •๊ทœํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 


์ด๋Ÿฐ ๊ธฐ๋ฒ•๋“ค์„ ํ†ตํ•ด ๊ณ ํ™”์งˆ์˜ ์–ผ๊ตด ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

ํ•˜์ง€๋งŒ GAN์˜ ํ‰๊ฐ€ ๋Š” ์–ด๋ ค์šด ๊ณผ์ œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. 

๐Ÿค” ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์˜ ํ’ˆ์งˆ์„ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•ด์•ผ ํ• ๊นŒ? ์‚ฌ๋žŒ์ด ์ง์ ‘ ํ‰๊ฐ€ํ•  ์ˆ˜ ๋ฐ–์— ์—†์„๊นŒ?

๋‹ค์Œ ์†Œ๊ฐœ๋˜๋Š” ๋…ผ๋ฌธ์—์„œ๋Š”, ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์™€ ํ›ˆ๋ จ ์ด๋ฏธ์ง€์˜ ์œ ์‚ฌ๋„๋ฅผ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•œ๋‹ค. 

 


17. 9. 4 StyleGAN

2018๋…„, ์—”๋น„๋””์•„ ํŒ€์ด ๋‹ค์‹œ ์ตœ๊ณ  ์ˆ˜์ค€์˜ ๊ณ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์„ ์œ„ํ•œ StyleGAN ๊ตฌ์กฐ๋ฅผ ์†Œ๊ฐœํ–ˆ๋‹ค. 

์ƒ์„ฑ์ž์— Style Transfer ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด, ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๊ฐ€ ํ›ˆ๋ จ๋œ ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ๊ตญ๋ถ€์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค. (์ด๋Š” ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์˜ ํ’ˆ์งˆ์„ ํฌ๊ฒŒ ๋†’์—ฌ์ค€๋‹ค.)

 

๐Ÿ“Œ StyleGAN ๊ตฌ์กฐ

ํŒ๋ณ„์ž์™€ ์†์‹คํ•จ์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ์ด๋ฉฐ, ์ƒ์„ฑ์ž๋งŒ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.

StyleGAN ์ƒ์„ฑ์ž ๊ตฌ์กฐ (StyleGAN ๋…ผ๋ฌธ figure 1)

์ด ๋ชจ๋ธ์€ ๋‘๊ฐ€์ง€ ๋„คํŠธ์›Œํฌ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. 

โœ”๏ธ ๋งคํ•‘ ๋„คํŠธ์›Œํฌ

StyleGAN์€ ์ž ์žฌ ํ‘œํ˜„ z (=์ฝ”๋”ฉ)์œผ๋กœ๋ถ€ํ„ฐ ์ง์ ‘ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ , ๋งคํ•‘ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฑฐ์นœ๋‹ค. 

- 8๊ฐœ์˜ MLP๊ฐ€ z๋ฅผ ๋ฒกํ„ฐ w๋กœ ๋งคํ•‘ํ•œ๋‹ค. 

- ๋ฒกํ„ฐ w๋Š” ์—ฌ๋Ÿฌ ์•„ํ•€ ๋ณ€ํ™˜(A ๋ฐ•์Šค, ํ™œ์„ฑํ™” ํ•จ์ˆ˜๊ฐ€ ์—†๋Š” Dense ์ธต) ์œผ๋กœ ์ „๋‹ฌ๋˜์–ด ๋ฒกํ„ฐ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

- ์ด ๋ฒกํ„ฐ๋Š” ๋ฏธ์„ธํ•œ ํ…์Šค์ฒ˜(ex. ๋จธ๋ฆฌ ์ƒ‰)๋ถ€ํ„ฐ ๊ณ ์ˆ˜์ค€ ํŠน์„ฑ(ex. ์–ด๋ฅธ, ์–ด๋ฆฐ์ด)๊นŒ์ง€ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ˆ˜์ค€์—์„œ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์˜ ์Šคํƒ€์ผ์„ ์ œ์–ดํ•œ๋‹ค.

=> ์ฆ‰, ๋งคํ•‘ ๋„คํŠธ์›Œํฌ๋Š” ์ฝ”๋”ฉ์„ ์—ฌ๋Ÿฌ ์Šคํƒ€์ผ ๋ฒกํ„ฐ๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ

 

โœ”๏ธ ํ•ฉ์„ฑ ๋„คํŠธ์›Œํฌ

์ด๋ฏธ์ง€์˜ ์ƒ์„ฑ์„ ์ฑ…์ž„์ง„๋‹ค. 

- ์ด ๋„คํŠธ์›Œํฌ๋Š” ์ผ์ •ํ•˜๊ฒŒ ํ•™์Šต๋œ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค. 

- ์ด ์ž…๋ ฅ์„ ํ•ฉ์„ฑ๊ณฑ ์—ฌ๋Ÿฌ ๊ฐœ์™€ ์—…์ƒ˜ํ”Œ๋ง ์ธต์— ํ†ต๊ณผ์‹œํ‚จ๋‹ค. 

-> ์ด ๊ณผ์ •์—์„œ

  1. ์ž…๋ ฅ๊ณผ ๋ชจ๋“  ํ•ฉ์„ฑ๊ณฑ ์ธต์˜ ์ถœ๋ ฅ์— ์žก์Œ์ด ์„ž์ธ๋‹ค.

  2. ์žก์Œ์ด ์„ž์ธ ๋‹ค์Œ์— Adaptive Instance Normalization (AdaIN) ์ธต์ด ๋’ค๋”ฐ๋ฅธ๋‹ค. (๋ถˆ์•ˆ์ •ํ•œ ํ•™์Šต์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€)

 

๐Ÿ“ ์ฝ”๋”ฉ์— ๋…๋ฆฝ์ ์œผ๋กœ ์žก์Œ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ด์œ  

์ฃผ๊ทผ๊นจ๋‚˜ ๋จธ๋ฆฌ์˜ ์„ธ์„ธํ•œ ์œ„์น˜์ฒ˜๋Ÿผ ์ด๋ฏธ์ง€์˜ ๋žœ๋คํ•œ ์–ด๋–ค ๋ถ€๋ถ„, ์ฆ‰ ๋ฌด์ž‘์œ„์„ฑ์ด ์ดˆ๊ธฐ GAN์—์„œ๋Š” ์ฝ”๋”ฉ์ด๋‚˜ ์ƒ์„ฑ์ž ์ž์ฒด์—์„œ ๋งŒ๋“  ๋žœ๋คํ•œ ์žก์Œ์—์„œ ์™”๋‹ค. 

- ์žก์Œ์ด ์ฝ”๋”ฉ์—์„œ ์˜จ๋‹ค๋Š” ๊ฒƒ์€, ์ƒ์„ฑ์ž๊ฐ€ ์ฝ”๋”ฉ์˜ ํ‘œํ˜„ ๋Šฅ๋ ฅ์„ ์žก์Œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ํ• ์•  ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. 

- ๋˜ํ•œ ์ด ์žก์Œ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ˜๋Ÿฌ ์ƒ์„ฑ์ž์˜ ๋งˆ์ง€๋ง‰ ์ธต์— ๋„๋‹ฌํ•ด์•ผํ•œ๋‹ค. -> ์ด๋Š” ํ›ˆ๋ จ ์†๋„๋ฅผ ๋Š๋ฆฌ๊ฒŒ ๋งŒ๋“œ๋Š” ์ œ์•ฝ ์‚ฌํ•ญ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. 

- ๋˜ํ•œ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ˆ˜์ค€์—์„œ ๋™์ผํ•œ ์žก์Œ์ด ์‚ฌ์šฉ๋œ๋‹ค. -> ๋”ฐ๋ผ์„œ ์ผ๋ถ€ ์ธ๊ณต์ ์ธ ์š”์†Œ๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋‹ค. 

=> ๋ณ„๋„์˜ ์žก์Œ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด๋Ÿฐ ์ด์Šˆ๋“ค์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

=> ์ฆ‰, ์ถ”๊ฐ€๋œ ์žก์Œ์„ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€์˜ ๊ฐ ๋ถ€๋ถ„์— ์ •ํ™•ํ•œ ์–‘์˜ ๋ฌด์ž‘์œ„์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

* ์žก์Œ ์ž…๋ ฅ์€ ํ•˜๋‚˜์˜ ํŠน์„ฑ ๋งต์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ€์šฐ์‹œ์•ˆ ์žก์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋ชจ๋“  ํŠน์„ฑ ๋งต์œผ๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…๋œ๋‹ค. ๊ทธ ํ›„, ์ถ”๊ฐ€๋˜๊ธฐ ์ „์— ํ•™์Šต๋œ ํŠน์„ฑ๋ณ„ ์Šค์ผ€์ผ๋ง ์ธ์ž๋กœ ์กฐ์ •๋œ๋‹ค. ('B' ๋ฐ•์Šค)

 

โœ”๏ธ ๋ฏน์‹ฑ ๊ทœ์ œ (์Šคํƒ€์ผ ๋ฏน์‹ฑ)

StyleGAN์—์„œ ๋™์ผํ•œ ์ฝ”๋”ฉ z๊ฐ€ ๋งคํ•‘ ๋„คํŠธ์›Œํฌ f๋ฅผ ํ†ตํ•ด์„œ ๋‚˜์˜จ W ํ•˜๋‚˜๋กœ ๊ณ„์† ๋„คํŠธ์›Œํฌ๋ฅผ ํ•™์Šตํ•˜๋‹ค๋ณด๋ฉด, ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

* ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹์—์„œ ๋“œ๋ฌผ๊ฒŒ ๋Œ€๋จธ๋ฆฌ์ธ ์‚ฌ๋žŒ์ด ํ•ญ์ƒ ์„ ๊ธ€๋ผ์Šค๋ฅผ ์ฐฉ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„๋•Œ, 

GAN์€ ํ•™์Šต ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ์™€ ๋น„์Šทํ•œ ๋ถ„ํฌ๋ฅผ ํ•™์Šตํ•˜๋‹ค ๋ณด๋‹ˆ ์ƒ์„ฑ์ž๊ฐ€ "์„ ๊ธ€๋ผ์Šค๋ฅผ ๋‚€ ์‚ฌ๋žŒ -> ๋Œ€๋จธ๋ฆฌ" ๋ผ๊ณ  ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ–๊ฒŒ ํ•™์Šต์ด ๋˜์–ด, ๋ฌด์กฐ๊ฑด ์„ ๊ธ€๋ผ์Šค ๋‚€ ์‚ฌ๋žŒ์„ ๋Œ€๋จธ๋ฆฌ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ณผ๋Œ€ ์ ํ•ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์ • ๋น„์œจ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ์ฝ”๋”ฉ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์ด์šฉํ•œ๋‹ค.  

- ์ฝ”๋”ฉ c1๊ณผ c2๊ฐ€ ๋งคํ•‘ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ต๊ณผํ•ด ๋‘ ์Šคํƒ€์ผ ๋ฒกํ„ฐ w1, w2๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

- ๊ทธ ํ›„, ํ•ฉ์„ฑ ๋„คํŠธ์›Œํฌ๊ฐ€ ์ดˆ๋ฐ˜์—๋Š” ์Šคํƒ€์ผ w1์œผ๋กœ, ํŠน์ • layer ์ดํ›„๋ถ€ํ„ฐ๋Š” ์Šคํƒ€์ผ w2์„ ๋ฐ”ํƒ•์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

* ์ด๋•Œ, ์Šคํƒ€์ผ์ด ๊ต์ฒด๋˜๋Š” layer๋Š” ๋งค๋ฒˆ ๋žœ๋คํ•˜๊ฒŒ ๊ฒฐ์ •๋œ๋‹ค

=> ์ด๋Š” ๋„คํŠธ์›Œํฌ๊ฐ€ ์—ฐ์†๋œ ๋‘ layer๊ฐ„์˜ ์Šคํƒ€์ผ์ด ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ž ์žฌ ํ‘œํ˜„(latent codes) sources A, B๋กœ ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๋‘ ์ด๋ฏธ์ง€ ์„ธํŠธ์™€, source๋กœ ๋ถ€ํ„ฐ ๋ณต์‚ฌํ•œ ์Šคํƒ€์ผ์„ ํ†ตํ•ด ์ƒ์„ฑํ•œ ์ด๋ฏธ์ง€๋“ค   (StyleGAN ๋…ผ๋ฌธ figure 3)

- ๋‘ latent code A, B๋กœ ๋ถ€ํ„ฐ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ๋‘ ์ด๋ฏธ์ง€ ์„ธํŠธ์™€ 

- ๋‚˜๋จธ์ง€ ์ด๋ฏธ์ง€๋“ค์€ B๋กœ ๋ถ€ํ„ฐ ํŠน์ •๋œ ์Šคํƒ€์ผ์„ ๋ณต์‚ฌํ•˜๊ณ , ๊ทธ ์™ธ๋Š” A๋กœ ๋ถ€ํ„ฐ ๋ณต์‚ฌ๋˜์–ด ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋“ค

- B๋กœ๋ถ€ํ„ฐ์˜ Coarse style ์„ ๋ณต์‚ฌํ•˜๋ฉด, B์˜ ํฌ์ฆˆ, ๋จธ๋ฆฌ ์Šคํƒ€์ผ, ์–ผ๊ตด ๋ชจ์–‘, ์•ˆ๊ฒฝ ๋“ฑ high-level์˜ ์ธก๋ฉด์ด ๋‚˜ํƒ€๋‚˜๋Š” ๋ฐ˜๋ฉด, finer ํŠน์ง•์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ์ƒ‰์ƒ(๋ˆˆ, ๋จธ๋ฆฌ์ƒ‰, ๋ฐ๊ธฐ) ๋“ฑ์€ A์™€ ์œ ์‚ฌํ•˜๋‹ค. 

- ๋ฐ˜๋ฉด์— B๋กœ๋ถ€ํ„ฐ Middle style์„ ๋ณต์‚ฌํ•˜๋ฉด, ์–ผ๊ตด์˜ ์„ธ๋ถ€ ํŠน์ง•, ๋จธ๋ฆฌ ์ƒ‰, ๋ˆˆ(๊ฐ๊ฑฐ๋‚˜ ๋œฌ) ๋“ฑ์ด B๋กœ ๋ถ€ํ„ฐ, ํฌ์ฆˆ๋‚˜ ์–ผ๊ตด ๋ชจ์–‘, ์•ˆ๊ฒฝ๋“ฑ์„ A๋กœ๋ถ€ํ„ฐ ๋ณด์กด๋œ๋‹ค. 

- ๋งˆ์ง€๋ง‰์œผ๋กœ B์˜ Fine style์„ ๋ณต์‚ฌํ•˜๋ฉด B๋กœ๋ถ€ํ„ฐ ์ƒ‰ ๊ตฌ์„ฑ๊ณผ ์„ธ๋ถ€ ํŠน์ง•๋“ค์„ ๊ฐ€์ ธ์˜จ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 


๐Ÿ’ก ์ฑ…์—์„œ ์†Œ๊ฐœํ•œ ๋ชจ๋ธ ์™ธ์—๋„, GAN์—๋Š” ์ด๋ฏธ ์•„์ฃผ ๋งŽ์€ ๋ณ€์ข…์ด ์†Œ๊ฐœ๋˜์—ˆ๋‹ค. 

์ด๋ฒˆ ์žฅ์—์„œ๋Š” GAN์˜ ์ฃผ์š” ์•„์ด๋””์–ด๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•˜๊ณ ,

์ถ”๊ฐ€๋กœ GAN์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋งŽ์„ ๊ฒƒ์ด๋‹ค.

 


์ฐธ๊ณ 

 

StyleGAN

https://blog.promedius.ai/stylegan_1/

https://blog.promedius.ai/stylegan_2/

 

PGGAN

https://sensibilityit.tistory.com/508