Home [Week 09 / Day 038] ํ•™์Šต ๊ธฐ๋ก
Post
Cancel

[Week 09 / Day 038] ํ•™์Šต ๊ธฐ๋ก

๐Ÿ“ ์˜ค๋Š˜ ํ•œ ์ผ

  • ๊ธฐ๋ณธ ๊ณผ์ œ 4, 5
  • ํ€ด์ฆˆ


๐Ÿ‘ฅ ํ”ผ์–ด์„ธ์…˜ ์š”์•ฝ

์ตœ์ข… ํ”„๋กœ์ ํŠธ ์ฃผ์ œ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„์—ˆ๋‹ค. ๋ฐ๋“œ๋ผ์ธ์„ ์ •ํ•ด๋†“๊ณ  ๋…ธ์…˜์—์„œ ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ์„ ํ•ด ๋ณผ ์˜ˆ์ •์ด๋‹ค!


๐Ÿ“š ๊ณผ์ œ ๋‚ด์šฉ ์ •๋ฆฌ

๊ธฐ๋ณธ ๊ณผ์ œ 4 - cGAN (Conditional GAN)

  • ์Šค์ผˆ๋ ˆํ†ค ์ฝ”๋“œ ๋ถ„์„ (batch_size=64 ๊ฐ€์ •)
    • real_imgs ($x$) = [64, 1, 28, 28]
      • MNIST ๋ฐ์ดํ„ฐ์…‹์ด๋ฏ€๋กœ 1ร—28ร—28์ด๋‹ค.
    • labels / gen_labels ($y$) = [64, 10]
      • ์Šค์ผˆ๋ ˆํ†ค ์ฝ”๋“œ์—์„œ ์ด๋ฏธ one-hot vector๋“ค์˜ tensor๋กœ ๋งŒ๋“ค์–ด๋†“์•˜๋‹ค.
      • ๋‹ค๋ฅธ ์ฝ”๋“œ๋“ค์—์„œ๋Š” [64]๋กœ๋งŒ ๋“ค์–ด๊ฐ€์„œ, ๋ชจ๋“ˆ ๋‚ด๋ถ€์—์„œ embedding ๋œ๋‹ค.
    • noise ($z$) = [64, 100]
  • ๊ฒช์—ˆ๋˜ ๋ฌธ์ œ ์ƒํ™ฉ
    • ์ž„๋ฒ ๋”ฉ (embedding)
      • ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ์—ฌ๋Ÿฌ ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๋ณด์•˜์œผ๋‚˜, ์ธํ„ฐ๋„ท์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” cGAN ๊ตฌํ˜„ ์ฝ”๋“œ์™€ ๊ณผ์ œ์˜ ์Šค์ผˆ๋ ˆํ†ค ์ฝ”๋“œ๊ฐ€ ๋‹ฌ๋ผ ํ•œ์ฐธ์„ ํ—ค๋งธ๋‹ค.
      • ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ์ฝ”๋“œ ๋Œ€๋ถ€๋ถ„์€ nn.Embedding์„ ์ด์šฉํ•ด์„œ 1์ฐจ์› tensor label์„ ์ž„๋ฒ ๋”ฉํ•˜๋Š”๋ฐ, ์Šค์ผˆ๋ ˆํ†ค ์ฝ”๋“œ์—์„œ๋Š” ์ด๋ฏธ labels, gen_labels๊ฐ€ 2์ฐจ์› tensor(one-hot vector)๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋˜ nn.Embedding์„ ์ ์šฉํ•˜๋ฉด ์•ˆ๋๋‹ค.
      • ๊ฒฐ๊ตญ, ๊ณผ์ œ์˜ ์„ค๋ช…์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ •๋‹ต์ด์—ˆ๋‹ค. ๊ณผ์ œ์˜ ์„ค๋ช…์— ๋”ฐ๋ฅด๋ฉด ์ž„๋ฒ ๋”ฉ == nn.Linear์— ๋„ฃ๊ธฐ์ด๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋Œ€๋กœ concat ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ nn.Linear์˜ ๋‘ ๋ฒˆ์งธ ์ฐจ์›์„ 1/2์”ฉ ์ค„์—ฌ์„œ ๋„ฃ์–ด์•ผ ํ–ˆ๋‹ค.
    • ์ˆ˜๋งŽ์€ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๐Ÿ˜ฑ
      • ๋„ˆ๋ฌด๋‚˜๋„ ํ•œ์‹ฌํ•œ ์‹ค์ˆ˜๋“ค ๋•Œ๋ฌธ์— ๋ฒŒ์–ด์ง„ ์ผ์ด๋ผ ์„ค๋ช…์€ ์ƒ๋žตํ•œ๋‹คโ€ฆ
    • activation function
      • ๊ณผ์ œ ์„ค๋ช…์— ์ถฉ์‹คํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์งฐ์œผ๋‚˜ generator loss๊ฐ€ ํญ๋ฐœํ•˜๊ณ  discriminator loss๊ฐ€ ์ˆ˜๋ ดํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ์ด ์ •๋„๋Š” ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ผ๊ณ  ํ•ด์„œ, ๋‹ค๋ฅธ ๊ตฌํ˜„๋œ ์ฝ”๋“œ๋“ค์„ ์ฐธ๊ณ ํ•ด๋ดค๋‹ค.

      • ์šฐ์„ , nn.ReLU()๋ฅผ nn.LeakyReLU(0.2, inplace=True)๋กœ ๋ฐ”๊ฟ”๋ณด์•˜๋‹ค. ๊ทธ๋ž˜๋„ ๋”ฑํžˆ ๋‚˜์•„์ง€์ง€ ์•Š์•˜๋‹ค.

      • generator์˜ ๋งˆ์ง€๋ง‰ activation function์ธ nn.Sigmoid()๋ฅผ nn.Tanh()๋กœ ๋ฐ”๊ฟ”๋ณด์•˜๋‹ค. ๊ทธ๋žฌ๋”๋‹ˆ ๋ฐ”๋กœ ์ ์ ˆํ•œ generator loss ๊ฐ’๊ณผ discriminator loss ๊ฐ’์ด ๊ด€์ฐฐ๋˜์—ˆ๋‹ค.

        generator loss์™€ discriminator loss๊ฐ€ ์ˆ˜๋ ดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ํ˜„์ƒ์€ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ˜„์ƒ์ด๋‹ค.

  • ๊ฒฐ๊ณผ (epoch 50) - ๊น”๋”ํ•˜๊ฒŒ ์ž˜ ๋‚˜์˜จ๋‹ค!!!


๊ธฐ๋ณธ ๊ณผ์ œ 5 - CLIP ๋ชจ๋ธ์„ ํ†ตํ•œ Multi-modal ๋ชจ๋ธ์˜ ๋‹ค์–‘ํ•œ ํ™œ์šฉ

  • ๊ธฐ์–ตํ•  ๊ฒƒ
    • torch.topk - ์˜ˆ์ธก ๊ฐ’์—์„œ argmax๊ฐ€ ์•„๋‹Œ top-k ๊ฐœ์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ์–ป์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

      1
      2
      3
      
      # softmax ํ•จ์ˆ˜๋กœ ๊ฐ€์žฅ ๋†’์€ K๊ฐœ์˜ ํ™•๋ฅ ๊ฐ’ ๊ตฌํ•˜๊ธฐ
      K = 10    
      values, indices = torch.topk(similarity.softmax(dim=-1), k=K, dim=-1)
      
  • ๊ณผ์ œ ๋‚ด์šฉ ์ผ๋ถ€

    ๋„ˆ๋ฌด ์‹ ๊ธฐํ•ด์„œ ์‚ฌ์ง„์„ ๊ผญ ๋„ฃ๊ณ  ์‹ถ์—ˆ๋‹ค

    • ํ…์ŠคํŠธ์™€ ์ด๋ฏธ์ง€๊ฐ€ ์ผ์น˜ํ•  ํ™•๋ฅ 

    • zero-shot image classification

    • โ€œa white yacht on the emerald seaโ€ ๋ผ๋Š” ํ…์ŠคํŠธ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€


๐Ÿพ ์ผ์ผ ํšŒ๊ณ 

์˜ค๋Š˜์€ ํ•˜๋ฃจ ์ข…์ผ ๊ณผ์ œ๋งŒ ํ•˜๋Š๋ผ ํ•˜๋‚˜ ๋‚จ์€ ๊ฐ•์˜๋ฅผ ๋งˆ์ € ๋“ฃ์ง€๋„ ๋ชปํ–ˆ๊ณ  ๋‹ค๋ฅธ ํ•  ์ผ๋„ ๋ชปํ–ˆ๋‹คโ€ฆ ํ•˜์ง€๋งŒ ์ˆ˜๋งŽ์€ ์‚ฝ์งˆ๊ณผ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๋์— ๊ณผ์ œ๋ฅผ ์™„์„ฑํ•ด๋ƒˆ๋‹ค๋Š” ์ ๋งŒ์œผ๋กœ๋„ ๋ฟŒ๋“ฏํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ ค ํ•œ๋‹ค. ํŠนํžˆ CLIP์€ ์ข‹๋‹ค๊ณ  ๋“ค์–ด๋ณด๊ธฐ๋งŒ ํ–ˆ์—ˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ๊นŒ ๋„ˆ๋ฌด ๋„ˆ๋ฌด ์žฌ๋ฏธ์žˆ์–ด์„œ ๊ณผ์ œ ์ค‘์— ํž๋ง ํƒ€์ž„์„ ๊ฐ€์ง„ ๋“ฏํ•œ ๋Š๋‚Œ์ด์—ˆ๋‹ค. ์‹ฌํ™” ๊ณผ์ œ๋Š” ์•„์ง ๋‹ค ํ’€์ง€ ๋ชปํ–ˆ๋Š”๋ฐ ๋‚ด์ผ ๋‹ต์ง€๊ฐ€ ์˜ฌ๋ผ์˜ค๊ธฐ ์ „๊นŒ์ง€๋Š” ๋๊นŒ์ง€ ๋ด์•ผ๊ฒ ๋‹ค.


๐Ÿš€ ๋‚ด์ผ ํ•  ์ผ

  • ๊ฐ•์˜ ์ˆ˜๊ฐ• ๋ฐ ์ •๋ฆฌ
    • [CV] 10๊ฐ•
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์‚ถ์˜ ์ง€๋„ Notion์— ์˜ฎ๊ธฐ๊ธฐ
  • ์‹ฌํ™” ๊ณผ์ œ 2, 3
This post is licensed under CC BY 4.0 by the author.

[Week 09 / Day 037] ํ•™์Šต ๊ธฐ๋ก

[Week 09 / Day 039] ํ•™์Šต ๊ธฐ๋ก