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

신고하기

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 기술 연구 - 너 이것도 한번 그려볼래? (Textual Inversion)

      KEANU 22.10.27
      3,772 10 2

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


      어느덧 SKT AI FELLOWSHIP 4기의 종착역에 도착했습니다. 저희도 프로젝트의 추수를 해야 할 시기가 왔네요.


      에이닷에 들어가는 기술을 위해서 앞서 포스팅한 Stable Diffusion에 어떻게 Contribution을 할 지 설명 드리겠습니다.

      Stable Diffusion은 과연 다음과 같은 귀여운 SKT의 에이닷 캐릭터를 그려낼 줄 알까요? 한번 입력해 봅시다!


      결과는 다음과 같습니다!


      음? 전혀 못 그려내고 있습니다. 즉, SKT의 A. 에 대한 정보들이 학습 데이터에 없다는 뜻이죠.

      위와 같은 그림이 그려지는 이유는 다음과 같습니다.

      혹시 League of Lenged ( LOL, 롤 ) 이라는 게임을 아시나요? 해당 게임에 SKT T1 소속의 선수들이 있습니다. 즉, SKT = LOL 게임에 등장하는 선수들이 사용하는 캐릭터들의 skin 이라고 생각하시면 될 거 같아요.

      안타깝습니다... 귀여운 A.은 그러면 영영 그려낼 수 없는 것일까요?

      아닙니다.

      설마... 학습 데이터에 SKT의 에이닷 캐릭터들을 넣어서 새로 학습 시키는 것을 생각하신 건 아니겠죠?

      처음부터 새로 학습은 불필요합니다.

      어떻게 하냐고요? 바로

      Textual Inversion 이라는 기술이 있습니다! 그럼 바로 알아보러 갑시다!


      An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion

      해당 논문은 22년 8월에 게재된 따끈따끈한 논문입니다. 저자들은 어떻게 가능하게 했을까요?

      Abstract

      텍스트 - 이미지 모델은 자연 언어를 통해 창조 할 수 있는 전례 없는 자유를 제공합니다.

      그러나 이러한 자유를 이용해 어떻게 독특한 개념이 이미지를 생성하거나, 그 외관을 수정하거나, 새로운 역할과 참신한 장면에서 구성할 수 있을지는 불분명하죠.

      그렇다면 어떻게 우리의 고양이나 강아지를 그림으로 그려내기 위해 이러한 모델을 사용할 수 있을까요??

      해당 논문에서는 단지 3-5개의 이미지 만으로 사물이나 스타일과 같은 개념, 즉 새로운 "단어"를 통해 해당 단어를 표현 하는 방법을 학습하는 법을 제안합니다.

      바로 단일 단어 임베딩이 독특하고 다양한 것을 capture하기에 충분하다는 점에서 착안했습니다.

      결과물을 하나 볼까요?


      왼쪽의 사진은 특정 개념을 설명하는 사전 훈련된 텍스트-이미지 모델의 임베딩 공간에서 새로운 유사 단어(Pseudo-words)를 찾습니다.

      오른쪽의 사진은 그러한 유사 단어(Pseudo-words)들로 새로운 문장을 구성할 수 있고, 새로운 장면에 배치하고, 스타일이나 구성을 바꿀 수 있다는 것을 보여주는 사례입니다.


      Introduction

      영화 <타이타닉>의 유명한 장면에서 로즈는 잭에게 "당신의 프랑스 소녀들처럼 나를 그려주세요" 라고 부탁하는 장면이 나옵니다.

      간단하지만 이러한 요청에는 풍부한 정보가 포함되어 있죠. 이것은 잭이 밑그림을 제작해야 한다는 것을 나타냅니다.

      특히 로즈의 부탁에서 "나" 라는 한 단어를 통해 이 그림이 특정한 독특한 주제를 묘사해야 한다는 것을 알려줍니다.

      이러한 요청은 광범위하고 구체적이며, 새로운 창작물에 생명을 불어 넣습니다.

      텍스트를 통해 원하는 대상을 설명하는 사용자의 능력에 따라 우리는 로즈에게 해당 모델을 사용하라고 말한다면 그녀가 원하는 그림을 얻을 수 있을까요?

      이처럼 대규모 학습된 모델에 새로운 개념을 도입하는 일은 어려운 일입니다.

      각 새로운 개념에 대해 확장된 데이터 셋을 사용해 모델을 재교욱하는 것은 엄청나게 비용이 많이 들고, 몇 가지 예제에 대한 fine-tuning은 일반적으로 치명적인 망각을 초래합니다.

      따라서 해당 논문의 저자들은 사전 훈련된 텍스트-이미지 모델의 텍스트 임베딩 공간에서 새로운 단어를 찾아 이러한 문제를 극복할 것을 제안했습니다.




      위의 그림을 볼까요? 우선, 텍스트 인코딩 프로세스의 첫 번째 단계를 고려합니다.

      여기서 입력 문자열은 먼저 토큰 셋으로 변환되고, 이후 각 토큰은 자체 임베딩 벡터로 변환되고 이러한 벡터는 다운스트림 모델을 통해 제공됩니다.

      따라서 해당 논문의 목표는

      새로운 것을 나타내는 새로운 임베딩 벡터를 찾는 것이죠.

      S*를 이용해 새로운 Pseudo-word로 새로운 임베딩 벡터를 나타냅니다. 이후 이 Pseudo-word는 다른 단어와 같이 처리되며 생성 모델에 대한 새로운 텍스트 쿼리를 구성하는 데 사용될 수 있죠.

      예를 들어 "해변의 S*가 있는 사진" 혹은 "벽에 걸려있는 S*의 유화"를 요구하는 것과 같은 개념을 구성할 수 있습니다.

      중요한 것은, 이 과정이 생성 모델을 그대로 남겨두어야 한다는 것이죠.

      그렇게 함으로써, 저자들은 새로운 작업에 대한 비전 및 언어 모델을 Fint-tuning 할 때 일반적으로 손실되는 텍스트의 이해 및 일반화 기능을 유지할 수 있게 됩니다.

      이러한 유사단어를 찾기 위해, 여러가지 task 들을 하나로 inversion시켜 프레임화 합니다.

      그리고 우리는 고정되고 사전 훈련된 텍스트와 대응되는 이미지 모델과 개념을 묘사하는 아주 작은 (3-5)장의 이미지 세트를 사용합니다.

      저자들은 "A photo of S* of" 형태의 문장을 설정하여 주어진 작은 데이터셋에서 이미지를 재구성 하는 것으로 이어지는 단일 단어 임베딩을 찾는 것을 목표로 합니다.

      즉, 텍스트 인코더의 임베딩 공간에서 높은 수준의 의미론과 미세한 시각적 detail을 모두 capture할 수 있는 새로운 Pseudo-word를 찾는 것이 목표입니다.

      해당 임베딩은 최적화된 프로세스를 통해 발견되고, 이 과정을 바로 "Textual Inversion"이라고 합니다.

      Method

      저자들의 목표는 프롬프트의 정보에 따라 사용자가 입력하는 새로운 개념을 생성할 수 있도록 하는 것입니다. 😁

      이를 위해, 저자들은 이러한 개념을 사전에 훈련된 텍스트-이미지 모델의 중간 표현으로 인코딩 하는 것을 목표로 합니다.

      이상적으로, 이것은 저자들이 그러한 모델로 대표되는 풍부한 의미와 시작적인 detail을 활용하고 개념을 시각적으로 변환하여 guidance하는데 사용할 수 있는 방식으로 수행 되어야 합니다.

      텍스트 - 이미지 모델에 일반적으로 사용되는 텍스트 인코더의 단어 포함 단계에서 이러한 표현을 위한 후보를 찾는 것은 자연스러운 일입니다.

      Latent Space에서 discrete한 입력 텍스트는 먼저 직접적으로 최적화에 적합한 연속 벡터 표현으로 변환됩니다.

      기존의 접근법은 시각적인 detail들에 대한 손상을 초래하기 때문에, 저자들은 시각적인 재구성 목표를 통해 Pseudo word들을 찾을 것을 제안했습니다!

      Latent Diffusion Models


      저자들은 제시한 아이디어를 LDM(Latent Diffusion Models)를 통해 방법을 구현했습니다!

      AutoEncoder의 Latent Space에서 작동하는 DDPM(Denoising Diffusion Probabilistic Models)라는 최근 연구가 있었습니다.

      LDM은 두 가지 핵심 구성 요소로 구성되는데, 첫번째는 AutoEncoder는 많은 이미지 데이터 셋에 대해 사전 학습을 진행합니다.

      이때 인코더 E는 KL Divergence 또는 벡터의 양자화를 통해 정규화된 공간 Latent Code Z = E(x)에 이미지 x 를 D x 로 매핑하는 방법을 학습합니다.

      디코더 D에서 D(E(x))는 x 값과 유사하게 됩니다.


      두 번째 구성 요소인 Diffusion Model은 학습된 Latent Space내에서 Latent 코드를 생성하도록 훈련됩니다.

      해당 Diffusion 모델은 클래스 레이블, 분할된 mask 또는 공동 훈련된 텍스트 embedding 모델의 출력값으로 조정될 수 있습니다!

      만약, 조건화된 입력 y를 조건화에 매핑하는 모델이 C(y)라고 하면 LDM LOSS는 다음과 같습니다.



      위의 수식에서 t는 시간을 의미하고, Z_t는 시간 t에 대한 Latent noise이며 e는 스케일링 되지 않은 noise 샘플, e_θ 는 noise를 제거하는 network입니다.

      직관적으로 봤을때, 해당 손실 함수의 목표는 이미지의 Latent Representation에 추가된 노이즈들을 올바르게 제거하는 것입니다.

      훈련하는 동안, C_θ 와 e_θ 는 LDM 함수값을 최소화 하기 위해 공동으로 최적화됩니다.

      Inference에는 무작위의 노이즈 텐서가 샘플링되고, 반복적으로 노이즈가 제거되며 새로운 이미지 잠재공간 Z_0를 생성하게 됩니다.


      마지막으로 해당 잠재 코드는 사전에 훈련된 디코더 X = D(Z_0)를 통해 이미지로 변환되는 과정을 거칩니다.

      저자들은 LAION-400M 데이터 셋에서 사전 학습된 공개적으로 사용이 가능한 14억 개의 매개 변수 텍스트-이미지 모델을 활용했습니다.

      다음으로는 이러한 텍스트 인코더의 초기 단계와 Inversion Space의 선택을 검토하는 과정입니다.


      Text Embedding


      Bert와 같은 일반적인 텍스트 인코더 모델은 텍스트 처리 단계로 시작합니다.

      먼저, 입력된 문자열의 각 단어 또는 하위 단어는 미리 정의된 Dictionary에서 index token으로 변환됩니다.

      이후, 각 토큰을 통해 검색할 수 있는 고유한 임베딩 벡터에 연결됩니다.

      Index에 의한 임베딩 벡터는 일반적으로 텍스트 인코더 C_θ 의 일부로 학습되게 되죠. 저자들은 이러한 Space를 Inversion Target으로 삼았습니다.

      보다 구체적으로 말하면, 배우고자 하는 새로운 개념을 나타내기 위해 자리 표시자 문자열인 S* 를 새롭게 지정했습니다.

      그리고 임베딩 process 과장에 개입하고 토큰화된 문자열과 관련된 벡터를 새로운 학습된 임베딩 V*로 대체하여 본질적으로 어휘에 개념을 주입했다고 합니다.

      이렇게 함으로써 저자는 다은 단어와 마찬가지로 개념을 포함하는 새로운 문장을 만들 수 있다고 하네요! 😁


      Textual Inversion


      이러한 새로운 임베딩을 찾기 위해 저자들은 작은 규모의 데이터 셋(일반적으로 3-5장)을 사용하여 다양한 배경 또는 포즈와 같은 여러 설정에 걸쳐 저자들의 목표 개념을 묘사했습니다.

      이러한 작은 데이터 셋에서 LDM loss를 최소화하여 직접 최적화를 통해 V 를 찾았습니다.

      이때 생성되는 이미지를 조절 하기 위해 CLIP Imagenet 템플릿에서 파생된 컨텍스트 텍스트를 무작위로 샘플링 하였고, (프롬프트) 최적화 목표는 다음과 같이 정의됩니다.


      앞에 언급되었던 Loss함수와 매우 유사한 것을 알 수 있죠!

      실제로 LDM 모델과 동일한 학습 방식을 다시 사용하면서 C_θ 와 e_θ 는 고정하여 구현했다고 합니다.

      따라서 저자들은 학습된 임베딩이 개념에 미세한 시각적 datail을 포착할 수 있을 것으로 기대했습니다.


      Qualitative comparisons and applications


      자 그럼 성능 비교를 볼까요?


      비교적 최신 모델인 DALL:E -2와 비교해서도 새로운 개념에 대해 잘 표현 되는 것을 알 수 있습니다.


      가장 대표적인 사진이죠! 입력된 Text들에 대해서도 문맥을 잘 유지하며 새로운 개념에 대해 잘 표현하는 것을 알 수 있습니다.


      개인화된 생성 접근법과 일반적인 비교 입니다.
      Textual Inversion 모델은 새로운 주제에 대해 더 정확하게 개념을 보존하고, 새로운 임베딩과 나머지 캡션들에 대해서도 모두 추론이 가능했습니다.


      다음은 작은 데이터셋의 그림들의 Style 보존을 얼마나 잘 하는지에 대한 그림입니다. 한눈에 봐도 잘 학습됨을 알 수 있죠 !

      또한, 텍스트 임베딩 공간은 스타일을 포함하여 보다 추상적인 개념을 나타낼 수 있습니다. 이를 통해 스타일을 유도할때 사용할 수 있는 단어를 저자들이 발견하였습니다. 위의 경우에는 QinniArt, 아래의 경우에는 David Revoy였습니다.


      학습된 두 개의 Pseudo-words를 사용한 이미지 생성 입니다.




      모델은 두 개념을 결합한 프롬프트를 사용할 때 두 개념의 의미를 결합 할 수 있으며, 두 개념을 나란히 놓는 것과 같이 더 복잡한 관계형 프롬프트에 대해 추론하는 능력은 제한적이었습니다.


      다음은 Bias의 감소 입니다. 사전 훈련된 bias가 있는 임베딩 (왼쪽) 사진 과 Textual Inversion 의 결과(오른쪽)입니다.
      위의 예시는 '의사' 라는 단어에 대부분 남자 의사가 많다는 사실을 알 수 있습니다.
      따라서, Textual Inversion을 통해 여성 의사 임베딩을 추가하여 한쪽으로 치우쳐 지지 않도록 할 수 있습니다.

      Our Textual Inversion Application

      자, 이제 Textual Inversion이 어떤 모델인지 감이 잡히시나요?

      저희가 직접 사용하여 에이닷 캐릭터를 그려봤습니다!!!!!


      Textual Inversion으로 사용하기 위해 위와 같은 4장의 이미지 만으로 학습을 진행했습니다.

      에이닷 캐릭터 모양의 가방을 굿즈로 판매 한다면 어떤 형태가 좋을까요?


      짠~ 어떤가요? 당장 이렇게 굿즈를 판매해도 좋을 것 같지 않나요? 이게 다가 아니죠.

      이를 이용하여 우리는 무엇이든 만들어 낼 수 있습니다! SKT 마크가 들어간 굿즈라던지,

      혹은 '홍길동전' 에 나오는 홍길동의 모습을 데이터 셋으로 넣어 동화책을 한 편 만들 수 도 있죠!

      저희의 최종 발표를 기대해 주세요!

      그럼 이만 글을 줄이며, 다음 글은 'DreamBooth'로 찾아뵙겠습니다.😊

      Team KEANU


      Reference

      • Gal, Rinon, et al. "An image is worth one word: Personalizing text-to-image generation using textual inversion." arXiv preprint arXiv:2208.01618 (2022).


      댓글 0

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

      KEANU 님의 최신 블로그

      더보기
      동영상 기고하기