23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
안녕하세요.😊저희는 이번 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의 에이닷 캐릭터들을 넣어서 새로 학습 시키는 것을 생각하신 건 아니겠죠?
어떻게 하냐고요? 바로
해당 논문은 22년 8월에 게재된 따끈따끈한 논문입니다. 저자들은 어떻게 가능하게 했을까요?
텍스트 - 이미지 모델은 자연 언어를 통해 창조 할 수 있는 전례 없는 자유를 제공합니다.
그러나 이러한 자유를 이용해 어떻게 독특한 개념이 이미지를 생성하거나, 그 외관을 수정하거나, 새로운 역할과 참신한 장면에서 구성할 수 있을지는 불분명하죠.
그렇다면 어떻게 우리의 고양이나 강아지를 그림으로 그려내기 위해 이러한 모델을 사용할 수 있을까요??
해당 논문에서는 단지 3-5개의 이미지 만으로 사물이나 스타일과 같은 개념, 즉 새로운 "단어"를 통해 해당 단어를 표현 하는 방법을 학습하는 법을 제안합니다.
바로 단일 단어 임베딩이 독특하고 다양한 것을 capture하기에 충분하다는 점에서 착안했습니다.
결과물을 하나 볼까요?
왼쪽의 사진은 특정 개념을 설명하는 사전 훈련된 텍스트-이미지 모델의 임베딩 공간에서 새로운 유사 단어(Pseudo-words)를 찾습니다.
오른쪽의 사진은 그러한 유사 단어(Pseudo-words)들로 새로운 문장을 구성할 수 있고, 새로운 장면에 배치하고, 스타일이나 구성을 바꿀 수 있다는 것을 보여주는 사례입니다.
영화 <타이타닉>의 유명한 장면에서 로즈는 잭에게 "당신의 프랑스 소녀들처럼 나를 그려주세요" 라고 부탁하는 장면이 나옵니다.
간단하지만 이러한 요청에는 풍부한 정보가 포함되어 있죠. 이것은 잭이 밑그림을 제작해야 한다는 것을 나타냅니다.
특히 로즈의 부탁에서 "나" 라는 한 단어를 통해 이 그림이 특정한 독특한 주제를 묘사해야 한다는 것을 알려줍니다.
이러한 요청은 광범위하고 구체적이며, 새로운 창작물에 생명을 불어 넣습니다.
텍스트를 통해 원하는 대상을 설명하는 사용자의 능력에 따라 우리는 로즈에게 해당 모델을 사용하라고 말한다면 그녀가 원하는 그림을 얻을 수 있을까요?
이처럼 대규모 학습된 모델에 새로운 개념을 도입하는 일은 어려운 일입니다.
각 새로운 개념에 대해 확장된 데이터 셋을 사용해 모델을 재교욱하는 것은 엄청나게 비용이 많이 들고, 몇 가지 예제에 대한 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"이라고 합니다.
저자들의 목표는 프롬프트의 정보에 따라 사용자가 입력하는 새로운 개념을 생성할 수 있도록 하는 것입니다. 😁
이를 위해, 저자들은 이러한 개념을 사전에 훈련된 텍스트-이미지 모델의 중간 표현으로 인코딩 하는 것을 목표로 합니다.
이상적으로, 이것은 저자들이 그러한 모델로 대표되는 풍부한 의미와 시작적인 detail을 활용하고 개념을 시각적으로 변환하여 guidance하는데 사용할 수 있는 방식으로 수행 되어야 합니다.
텍스트 - 이미지 모델에 일반적으로 사용되는 텍스트 인코더의 단어 포함 단계에서 이러한 표현을 위한 후보를 찾는 것은 자연스러운 일입니다.
Latent Space에서 discrete한 입력 텍스트는 먼저 직접적으로 최적화에 적합한 연속 벡터 표현으로 변환됩니다.
기존의 접근법은 시각적인 detail들에 대한 손상을 초래하기 때문에, 저자들은 시각적인 재구성 목표를 통해 Pseudo word들을 찾을 것을 제안했습니다!
저자들은 제시한 아이디어를 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의 선택을 검토하는 과정입니다.
Bert와 같은 일반적인 텍스트 인코더 모델은 텍스트 처리 단계로 시작합니다.
먼저, 입력된 문자열의 각 단어 또는 하위 단어는 미리 정의된 Dictionary에서 index token으로 변환됩니다.
이후, 각 토큰을 통해 검색할 수 있는 고유한 임베딩 벡터에 연결됩니다.
Index에 의한 임베딩 벡터는 일반적으로 텍스트 인코더 C_θ 의 일부로 학습되게 되죠. 저자들은 이러한 Space를 Inversion Target으로 삼았습니다.
보다 구체적으로 말하면, 배우고자 하는 새로운 개념을 나타내기 위해 자리 표시자 문자열인 S* 를 새롭게 지정했습니다.
그리고 임베딩 process 과장에 개입하고 토큰화된 문자열과 관련된 벡터를 새로운 학습된 임베딩 V*로 대체하여 본질적으로 어휘에 개념을 주입했다고 합니다.
이렇게 함으로써 저자는 다은 단어와 마찬가지로 개념을 포함하는 새로운 문장을 만들 수 있다고 하네요! 😁
이러한 새로운 임베딩을 찾기 위해 저자들은 작은 규모의 데이터 셋(일반적으로 3-5장)을 사용하여 다양한 배경 또는 포즈와 같은 여러 설정에 걸쳐 저자들의 목표 개념을 묘사했습니다.
이러한 작은 데이터 셋에서 LDM loss를 최소화하여 직접 최적화를 통해 V 를 찾았습니다.
이때 생성되는 이미지를 조절 하기 위해 CLIP Imagenet 템플릿에서 파생된 컨텍스트 텍스트를 무작위로 샘플링 하였고, (프롬프트) 최적화 목표는 다음과 같이 정의됩니다.
앞에 언급되었던 Loss함수와 매우 유사한 것을 알 수 있죠!
실제로 LDM 모델과 동일한 학습 방식을 다시 사용하면서 C_θ 와 e_θ 는 고정하여 구현했다고 합니다.
따라서 저자들은 학습된 임베딩이 개념에 미세한 시각적 datail을 포착할 수 있을 것으로 기대했습니다.
자 그럼 성능 비교를 볼까요?
다음은 작은 데이터셋의 그림들의 Style 보존을 얼마나 잘 하는지에 대한 그림입니다. 한눈에 봐도 잘 학습됨을 알 수 있죠 !
또한, 텍스트 임베딩 공간은 스타일을 포함하여 보다 추상적인 개념을 나타낼 수 있습니다. 이를 통해 스타일을 유도할때 사용할 수 있는 단어를 저자들이 발견하였습니다. 위의 경우에는 QinniArt, 아래의 경우에는 David Revoy였습니다.
자, 이제 Textual Inversion이 어떤 모델인지 감이 잡히시나요?
저희가 직접 사용하여 에이닷 캐릭터를 그려봤습니다!!!!!
Gal, Rinon, et al. "An image is worth one word: Personalizing text-to-image generation using textual inversion." arXiv preprint arXiv:2208.01618 (2022).
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.