데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Language-Image Multi-modal AI 기술 연구 - 연구계획(2)

      KEANU 22.07.22
      6,521 8 0

      안녕하세요.😊저희는 이번 SKT AI Fellowship 4기에서 "Language-Image Multi-modal AI" 연구과제를 수행중인 Team KEANU입니다.

      이번 포스트에서는 지난 포스트에 언급했던 VQGAN 과 DALL:E의 여러가지 베이스 라인을 소개합니다.

      1. 기존 DALL:E 모델의 문제점

      기존의 Dall:E 모델에서는 dVAE(discrete Variational AutoEncoder)를 사용하여 이미지의 생성(복원)을 진행합니다. 그러나, dVAE는 다음과 같은 문제점을 가지고 있습니다.

      KEANU_1.png

      DALL:E는 이미지의 해상도가 큰 경우, 이미지 압축(Compression)을 위해 dVAE로 post-processing을 한다고 말씀드렸습니다.

      (top)의 그림은 원본 이미지이고, (bottom)의 그림은 압축 후 이미지 입니다. dVAE로 compression하는 과정에서 이미지의 디테일한 부분들이 사라지는 것을 볼 수 있습니다.

      해당 논문의 저자분들은 굉장히 큰 Vocabulary size (8192)를 사용하여 정보의 손실을 최소화 했다고 합니다만, 여전히 미흡한 것을 알 수 있습니다.

      정보 손실을 최소화 했지만, 손실되는 detail (high frequency)가 고해상도의 이미지 (high-resolution image)를 만들기에는 당연히 부족합니다. 왜냐하면 고해상도 일수록 이미지의 detail들이 살아 있기 때문이죠.

      해당 논문이 발표된 이후, 많은 연구를 통해 다른 방법을 고안해냈습니다. 그 방법이 바로 VQGAN과 Diffusion모델 입니다.

      2. Diffusion? VQGAN?

      DALL:E 논문 발표 이후 가장 좋은 두가지 방법이 제시되었습니다. 바로 최근에 조명받고 있는 diffusion 모델과 vqgan 모델입니다.

      (1) Diffusion 모델

      정확하게는 'Diffusion Probabilistic Models' 입니다.

      해당 모델은 열역학에서 idea를 가져온 모델이며, 크게 2stage로 나뉘게 됩니다.

      먼저 입력으로 들어오는 데이터를 x 라고 가정한다면, x 에 noise를 점진적으로 추가합니다. 이 과정을 Forward Diffusion Process라고 합니다. 제일 끝 단계에 가면 noise만 있는 상태가 되겠죠?

      딥러닝을 이용해 noise data에서 원래 데이터 x로 복원하는 과정을 Reverse diffusion process라고 합니다.

      1. Forward Process

      KEANU_2.png

      2. Reverse Diffusion Process

      KEANU_3.png

      위의 두가지 방법을 통틀어 Diffusion 모델이라고 합니다.

      해당 방법이 적용된 Generative 모델인 Dall:E 2 를 한번 살펴봅시다.

      3.DALL:E 2 : Hierarchical Text-Conditional Image Generation with CLIP Latents.

      DALL:E 2에서 Diffusion 모델은 다음과 같이 동작합니다.

      KEANU_4.png

      점선 아래의 Prior 부분을 보시면 2가지 방법이 있습니다. 위의 모델은 Autoregressive 방법이고, 아래의 방법은 Diffusion입니다.

      저자들은 Diffusion 모델에서 만들어진 이미지의 퀄리티가 Autoregressive 방법보다 훨씬 좋았다고 합니다.

      이부분은 다음과 같이 해석할 수 있습니다.

      Transformer는 Autoregressive 한 방법을 사용하는 모델이죠. 최근 들어 VIT가 소개됨에 따라 점차 Computer Vision 영역에서도 Transformer가 많이 사용되고 있습니다.

      그러나 Transformer는 단점이 있습니다. 바로, CNN에 비해 global 한 relation을 잘 이해하고 있지만, 작은 부분의 detail feature는 잘 이해하지 못하기 때문입니다.

      따라서, Autoregressive 방법보다 Diffusion 방법의 결과물의 Quality가 좋은 것입니다.

      자, 그럼 Diffusion 모델의 장점을 잘 알 수 있는 결과물의 예시들을 살펴보도록 하겠습니다

      KEANU_5.png

      가장 위에 있는 그림은 입력으로 들어간 이미지이고, 아래의 9개 그림들은 Diffusion 모델이 원본 이미지의 특징과 스타일을 잘 살리면서 변형하여 만든 새로운 이미지입니다. 이미지의 Quality가 잘 확보 된 것을 알 수 있습니다.

      자 그럼 GAN과 Diffusion를 비교해보겠습니다.

      GAN vs Diffusion

      KEANU_6.png

      GAN은 일종의 BLACK BOX라고 합니다. 왜냐하면 중간 과정을 확인 할 수 없기 때문입니다.

      즉, 텍스트를 입력해서 이미지를 생성하는 과정에, Hidden Latent에서 암호화된 텍스트 벡터의 방향으로 이동하여 이미지를 의미적으로 수정할 수 없다는 뜻입니다.

      그러나 Diffusion 모델은 위의 그림을 보면 알 수 있듯이, x0->x1->...->z 과정이 점진적으로 이루어 지기 때문에 중간과정을 확인해 볼 수 있다는 장점이 있으며,

      GAN과 다르게 암호화된 텍스트 벡터의 방향을 쉽게 찾을 수 있고, 인위적인 수동 검사를 할 필요가 없다는 장점이 있습니다.


      자, 그러면 Diffusion 모델의 장점을 잘 활용한 DALL:E 2의 결과물 예시를 보면서 설명하도록 하겠습니다.

      (1) Image Interpolation

      KEANU_7.png

      위의 그림에서 맨 왼쪽과 맨 오른쪽 그림은 섞을 두 가지 원본 이미지입니다. 섞여질 두 이미지는 CLIP의 이미지 임베딩을 통해 interpolation 하고 나서 diffusion 모델로 decoding된 예시입니다.

      이미지가 섞이는 과정이 잘 나와있죠? 특히, 중간 부분을 보면 두 이미지가 서로의 스타일을 보존하면서 완벽하게 섞여진 것을 볼 수 있습니다.

      즉, Diffusion 모델은 사용자가 두 이미지를 interpolation 할 때 보다 많은 Diversity를 제공합니다. 두 이미지에서 한 이미지에 더 많은 가중치를 줄 수 도 있고, 많은 선택지를 제공합니다.

      자, 이미지를 interpolation 하는 것을 보여드렸으니 이제 text prompt와 관련된 부분을 한 번 볼까요?

      (2) Text diffs applied to images

      KEANU_8.png

      위의 사진은 텍스트가 이미지에 어떻게 diffusion 되는지 과정을 잘 보여줍니다. CLIP의 이미지 임베딩과 두 가지 설명(a photo of [ 설명 ] ) 에서 생성된 텍스트 임베딩의 정규화된 차이 사이를 interpolation 하여 이미지에 적용됩니다.

      Q. GAN에 비해 Diffusion은 장점이 엄청나게 많은데 왜 안쓰나요? (Trade - OFF)

      왜냐하면 모든 Generative Model은 이미지를 생성하는데 걸리는 시간 과 이미지의 Quality 사이의 Trade-off 관계가 있기 때문입니다.

      GAN 모델은 속도가 매우 빠르지만 Diffusion 모델은 매우매우 느립니다... (한 번 써보세요)

      DiscoDiffusionv5.6 이라는 모델을 직접 사용해 볼 수 있는 코랩 주소입니다.

      https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb

      여러가지 파라미터를 선택할 수 있지만, 그냥 실행만 하셔도 동작합니다. 총 50 epochs 로 기본값으로 되어있으니, 시간이 없으시면 epoch를 줄여서 사용하셔도 됩니다!

      따라서, 저희의 최종 목표는 A.어플리케이션에 탑재하는 것이므로, 속도를 고려하여 Diffusion 모델 대신에 VQGAN을 사용하기로 했습니다!

      3. VQVAE

      VQGAN을 설명하기 앞서서, VQVAE 에 대한 지식이 있어야 이해하기 쉽기 때문에 VQVAE 먼저 설명 드리겠습니다.😊

      KEANU_9.png

      왼쪽 그림을 보시면 embedding space에 들어가는 e 들이 discrete 한 것을 확인 할 수 있습니다. (not continous vector) 이러한 embedding space를 Codebook 이라고 합니다. NLP에서 Dictionary와 같은 의미를 가지고 있습니다.

      Autoencoder의 구조를 활용하지만, 데이터 x에 대한 posterior를 추정하기 위해 변분추론을 활용한 다른 tractable한 분포 q(z|x)를 추정하게 됩니다.

      그리고, posterior는 사후확률 p(z|x)를 의미하며, prior는 p(z)를 의미합니다. VQVAE는 가우시안 분포를 따르지 않고, Categorical한 분포로 정의합니다.(discrete distribution) 그리고, Embedding Table의 특정 위치를 index 라고 하며, index를 부여하는 과정을 거칩니다. RMSE(Root Mean Square Error)기반이며, 인코더를 통과한 latent ze(x)를 얻고, ze(x)와 Codebook의 K개의 embedding(e)간의 거리 비교를 통해 가장 거리가 짧은 embedding으로 입력된 벡터를 가장 유사한 벡터 index로 변환합니다.

      즉, 결과적으로는 각 임베딩 값이 RMSE에 의해 가장 유사한 임베딩 벡터로 바뀌고, 이 값을 디코더에 입력하여 이미지를 생성(복원) 하는 과정을 거치게 됩니다.

      VQVAE의 훈련과정

      Indexing를 부여하는 과정 및 Codebook에서 embedding으로 대치하는 과정에서 gradient의 역전파 (back propagation)이 어렵습니다. 왜냐하면 not continous. 즉 discrete하기 때문에 미분이 불가능하기 때문이죠.

      따라서, 저희는 대신 decoder의 gradient를 encoder로 back propagation 하게 됩니다. 이러한 과정을 straight-through 라고 합니다. 이것이 가능한 이유는, 인코더의 결과값과 Codebook의 embedding 이 동일한 차원에 있기 때문입니다.

      SG(Stop Gradient)

      KEANU_27.png

      embedding loss와 commitment loss를 계산할 때 특정한 Term에 의해 gradient를 back propagation하지 않도록 합니다. 코드 상으로는 detach()로 작동하게 설계되어 있습니다.


      Loss에 대해 설명 드리면, 1. recon 2. vector quant 3. commitment 로 구성되어 있습니다.

      Reconstruction Loss 항은 정답 이미지(ground truth)와 비교하여 생성된 이미지와 얼마나 차이가 나는지 비교하는 항입니다.

      Vector quant Loss 항은 Embedding loss(VQ objective)입니다. 코드북의 embedding을 인코더의 결과물과 유사하게 만들어줘서 Codebook을 최적화 하는 항입니다.

      Commitment Loss 항은 인코더의 출력값에 제약을 걸어주는 부분입니다. 아무값이나 넣어주는것이 아니고 Codebook의 벡터와 가까운 값을 출력하도록 하여 Encoder를 최적화하는 과정입니다. 일종의 Regularization이라 할 수 있습니다.


      이러한 세 가지 항을 더하여 VQVAE 의 Loss로 사용하게 됩니다.

      다음으로는 VQGAN을 설명하도록 하겠습니다.😊

      4. VQGAN

      VQGAN는 어떤 idea로 만들어 진 것일까요?😀

      기존의 CNN은 locality bias (inductive bias) 를 가지고 있습니다. 즉, feature를 매우 잘 뽑는 것이죠.

      Transformer 모델은 어떨까요? Global relation modeling이 가능하다는 장점이 있습니다. 즉, 전역적인 관계를 잘 읽고 feature를 이해한다는 것이죠.

      그리고, Transformer는 큰 물체의 Feature를 잘 뽑아내지만 작은 물체의 Feature는 잘 뽑아내지 못하고, CNN은 그 반대입니다.

      이 두 모델의 특성을 보완한다면, High resolution image를 생성 할 수 있습니다.

      KEANU_10.png

      위의 그림은 VQGAN의 구조도 입니다.

      CNN에서 feature map를 뽑아내어 codebook Z를 만들게 됩니다. 만들어진 codebook를 통해 Transformer가 global적으로 relation을 계산하는 과정을 거칩니다.

      다시말해, CNN을 통해 Codebook이 중요한 Local Structure를 잡아내고, Transformer가 Long-Range Relation 모델링을 맡아서 High-resolution image 를 생성합니다.

      추가적으로, CNN Discriminator가 사용되며, 생성된 이미지가 real/fake 중 real에 해당 하도록 유도하는 역할을 합니다.


      그리고 Adversarial Training에서 idea를 가져왔습니다. VQVAE와 다르게 Perceptural loss를 추가로 사용합니다.

      Perceptural loss에 대해 간단하게 설명하자면, CNN에서 feature map를 만들 때, map끼리도 Loss를 계산하게 됩니다. 이 부분을 reconstruction에 추가하여 성능 향상을 도모한 것이죠.

      KEANU_11.png

      첫째항은 Reconstriction Loss 로써, 복원된 결과물과 입력값을 비교함으로써 encoder와 decoder를 최적화 하는 항입니다. ( + Perceptual Loss)

      두번째 항과 세번째 항은 VQVAE와 같습니다.

      KEANU_12.png

      VQGAN 에 추가적으로 들어온 Loss입니다. 생성된 결과물에 대해 patch 단위로 real/fake를 구별하는 Discriminator입니다. 해당 loss를 사용하게 되면, 더욱 많은 feature들을 인코딩 할 수 있게 됩니다.


      따라서, VQGAN의 전체 Loss 는 다음과 같습니다.

      KEANU_13.png

      이때, 파라미터 계수가 붙어 있는 것을 볼 수 있습니다. 람다값은 다음과 같습니다.

      KEANU_14.png

      여기서 GL은 마지막 Layer를 의미합니다. 해당 파라미터는 Reconstruction과 GAN loss 간의 균형을 조절하기 위한 term입니다.

      만약, GAN loss의 영향력이 높아지는 경우 GAN의 가중치를 줄이고, REC의 영향력이 높아지게 되면서 적절한 균형을 유지하게 하는 역할을 합니다.


      Transformer for image synthesis ( Unconditional )

      Sliding window attention을 사용하여 quadratic하게 연산이 증가하는 특성을 방지합니다. 아래 그림을 첨부해 드리겠습니다!

      KEANU_15.png

      기존의 한 줄로 만드는 과정이 아니고, Pooling 처럼 window안에서만 attention하기 때문에 연산량의 증가를 예방 할 수 있습니다.😁

      Codebook의 Index집합이 산출되면 Transformer를 autoregressive하게 활용하여 다음 단계의 index를 predict하는 task로 image synthesis를 수행합니다.

      이때, Index prediction에서 ground truth는 이미지에 대해 미리 구한 codebook의 index가 되고, NLL(Negative Log-Likelihood) loss를 활용하여 학습을 수행하게 됩니다.


      Transformer for image synthesis ( conditional )

      KEANU_16.png

      Conditional 일 경우에는, 이미지의 segmentation map 또한 codebook으로 학습하게 됩니다. 이후, codebook 두 가지 (Z + Z_c)를 condition으로 하고, Transformer와 concat 하는 과정을 통해 결과를 출력합니다!

      서론이 많이 길었네요... 이제 저희가 Test해본 모델들과 결과물 예시를 보여드리겠습니다! 😉

      DALL:E Baseline with output ( VQGAN Decoder )

      저희가 사용할 Baseline들을 선정하여 여러가지 text prompt를 통해 성능을 확인 해 봤습니다.

      테스트한 text prompt는 다음으로 모두 동일합니다.

      prompts = [

          "k-pop stars sing on the stage with back dancers",

          "Children wearing hanbok are playing in a tile-roofed house",]

      (1) DALL:E mini (Optional with clip score O) - Huggingface

      KEANU_31.pngKEANU_32.pngKEANU_33.pngKEANU_34.png

      위 사진들은 "k-pop stars sing on the stage with back dancers" 을 입력했을때 나오는 결과값입니다. CLIP Score는 최대 31.93 최저 30.37 을 기록했습니다.

      KEANU_35.pngKEANU_36.pngKEANU_37.pngKEANU_38.png

      위 사진들은 "Children wearing hanbok are playing in a tile-roofed house" 을 입력했을 때 나오는 결과값이며, CLIP Score는 최대 41.09 최저 34.77을 기록했습니다.

      (2) minDALL:E (Optional with clip score O) - KakaoBrain

      KEANU_19.png

      위 사진들은 "k-pop stars sing on the stage with back dancers" 을 입력했을때 나오는 결과값입니다.

      KEANU_20.png

      위 사진들은 "Children wearing hanbok are playing in a tile-roofed house" 을 입력했을 때 나오는 결과값입니다.

      (3) DALL:E FLOW(Optional with clip score X) - flow team

      KEANU_21.png

      위 사진들은 "k-pop stars sing on the stage with back dancers" 을 입력했을때 나오는 결과값입니다. CLIP Score는 계산하지 않았습니다. 이 모델의 흥미로운 점은, diffusion을 통해 이미지의 변형이 가능합니다.


      저는 0번째 사진을 diffusion하여 변형된 결과값들을 출력해 보았습니다.

      KEANU_22.png

      위와 같이 다양한 결과물을 얻을 수 있었습니다.


      KEANU_23.png

      위 사진들은 "Children wearing hanbok are playing in a tile-roofed house" 을 입력했을 때 나오는 결과값입니다. 마찬가지로 0번을 diffusion을 통해 변형시켜 봤습니다.

      KEANU_24.png

      위와 같이 다양한 결과물을 얻을 수 있었습니다.


      결론

      얼굴이 기괴하게 나오는 현상은 VQVAE에서 발생하는 고질적인 문제입니다.😂

      무섭게 생겼죠? 저희도 만들면서 무서웠습니다...


      저희는 DALL:E mini의 성능이 가장 좋다고 판단하여, DALL:E mini를 사용하기로 했습니다.

      여러분은 보시기에 어떠신가요? 세가지 모델 중 어떤 모델이 더 좋다고 생각 되시나요?

      다음주에는 베이스 라인으로 선정한 DALL:E mini에 대해 설명 드리겠습니다. 감사합니다.

      KEANU_25.png

      Reference

      • Aditya Ramesh, Prafulla Dhariwal, Alex Nichol, Casey Chu, and Mark Chen. "Hierarchical Text-Conditional Image Generation with CLIP Latents." In arXiv, 2022.

      • Chitwan Saharia, William Chan, Saurabh Saxena, Lala Li, Jay Whang, Emily Denton, Seyed Kamyar Seyed Ghasemipour, Burcu Karagol Ayan, S. Sara Mahdavi, Rapha Gontijo Lopes, et al. "Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding." In arXiv, 2022.

      • Van Den Oord, Aaron, and Oriol Vinyals. "Neural discrete representation learning." Advances in neural information processing systems 30 (2017).

      • Esser, Patrick, Robin Rombach, and Bjorn Ommer. "Taming transformers for high-resolution image synthesis." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021.

      • Dhariwal, Prafulla, and Alexander Nichol. "Diffusion models beat gans on image synthesis." Advances in Neural Information Processing Systems 34 (2021): 8780-8794.

      • https://www.youtube.com/watch?v=xR6Uw_3Huss

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      KEANU 님의 최신 블로그

      더보기
      동영상 기고하기