no image
[논문 리뷰] Llama 2
Meta Llama 2 Meta Llama 2Llama 2 was pretrained on publicly available online data sources. The fine-tuned model, Llama Chat, leverages publicly available instruction datasets and over 1 million human annotations.llama.meta.com Llama : 가장 강력한 오픈 소스 대형 모델이었으나, 오픈 소스 계약으로 인해 상업적 용도로 무료로 사용할 수 없었음-> 무료 상용 버전으로 출시된 Llama 2연구용과 상업용으로 사용 가능한 foundation model(LLALA2) & fine-tuned chat 모델(LLAMA2-Chat) 두 ..
2024.07.30
no image
[논문 리뷰] Textual inversion & Dreambooth
간략하게 정리해두는 게 좋을 거 같아 휘리릭 써봄 stable diffusion을 fine-tuning하는 방법들이다. 간략히 설명하면 아래와 같다. Textual Inversion : text encoder에 새로운 words를 적은 데이터셋으로 학습할 수 있음Dreambooth : UNet을 fine-tunes 할 수 있는 방법Full Stable Diffusion fine-tuning : 충분한 데이터셋이 있을 때 사용즉, Textual Inversion과 DreamBooth는 둘 다 pretrained text-to-image 모델을 personalization하는 기술인데, 그 방법에서 차이가 존재하는 것이다.  1. Textual Inversion : 유저가 object나 style과 같은 c..
2024.07.15
no image
[논문 리뷰] YOLO (You Only Look Once: Unified, Real-Time Object Detection)
paper : [1506.02640] You Only Look Once: Unified, Real-Time Object Detection (arxiv.org)  You Only Look Once: Unified, Real-Time Object DetectionWe present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probab..
2024.07.13
no image
[논문 리뷰] LoRA : Low-Rank Adaptation of Large Language Models
paper : [2106.09685] LoRA: Low-Rank Adaptation of Large Language Models (arxiv.org)  LoRA: Low-Rank Adaptation of Large Language ModelsAn important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes learxiv.o..
2024.07.13
no image
[논문 리뷰] IDM-VTON : Improving Diffusion Models for AuthenticVirtual Try-on in the Wild
paper : [2403.05139] Improving Diffusion Models for Virtual Try-on (arxiv.org) Improving Diffusion Models for Virtual Try-onThis paper considers image-based virtual try-on, which renders an image of a person wearing a curated garment, given a pair of images depicting the person and the garment, respectively. Previous works adapt existing exemplar-based inpainting diffusion modearxiv.orggithub : ..
2024.05.31
no image
[논문 리뷰] NCSN: Generative Modeling by Estimating Gradients of the Data Distribution
paper: Generative Modeling by Estimating Gradients of the Data Distribution (neurips.cc)  score-based generative model의 근본 논문이라고 한다. 논문을  간략히 요약하면 아래와 같다.  1. 저차원 manifold 문제에서 score가 정의되고, score matching이 가능하도록 다양한 종류의 gaussian noise를 데이터 분포에 추가함으로써 데이터 분포의 gradient를 통한 score matching이 가능하게 한다.  generative model을 구현하는데 있어 데이터 분포의 gradient를 근사하는 score function을 학습시키고, Langevin dynamics에서의 MCMC s..
2024.05.24
no image
[논문 리뷰] ControlNet : Adding Conditional Control to Text-to-Image Diffusion Models
paper : https://arxiv.org/pdf/2302.05543.pdf ControlNet은 pretrained text-to-image diffusion model에 대한 extra conditions를 추가함으로써 이미지 생성을 컨트롤하는 neural network이다. prompt 대신 input conditioning images의 sematics (ex_ edges, poses, depth 등)을 직접 인식하는 것이다. ControlNet을 사용해 다음과 같은 작업을 수행할 수 있다. Specify human posesCopy the composition from another imageGenerate a similar imageTurn a scribble into a professio..
2024.05.05
no image
[논문 리뷰] IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models
Paper : 2308.06721.pdf (arxiv.org) github : tencent-ailab/IP-Adapter: The image prompt adapter is designed to enable a pretrained text-to-image diffusion model to generate images with image prompt. (github.com) IP-Adapter (Image Prompt Adapter)는 이미지를 프롬프트로 사용할 수 있는 stable diffusion 애드온이다. IP-Adapter를 사용하면 참조 이미지로부터 스타일, 구도, 얼굴을 복사할 수 있다. IP-Adapter의 경우 2023년 8월 중순에 릴리즈해 9월 5일에 WebUI에서 사용할 수 있게 된..
2024.04.08

Meta Llama 2

 

Meta Llama 2

Llama 2 was pretrained on publicly available online data sources. The fine-tuned model, Llama Chat, leverages publicly available instruction datasets and over 1 million human annotations.

llama.meta.com


 

Llama : 가장 강력한 오픈 소스 대형 모델이었으나, 오픈 소스 계약으로 인해 상업적 용도로 무료로 사용할 수 없었음

-> 무료 상용 버전으로 출시된 Llama 2

연구용과 상업용으로 사용 가능한 foundation model(LLALA2) & fine-tuned chat 모델(LLAMA2-Chat) 두 가지 버전으로 공개

LLAMA 2 (Foundation Model)

  • LLAMA1의 업데이트 버전
    • pretraining corpus(훈련 데이터) 40% 증가 (1.4T tokens → 2T tokens)
    • Context Length 2배 증가 (2K → 4K)
    • Grouped-query attention 채택
  • Variants: 7B, 13B, 70B (*34B 버전도 개발되었지만, red 팀의 시간 부족으로 인해 릴리즈를 연기 중)

LLAMA 2-CHAT (Fined-tuned chat Model)

  • 대화형 use-cases에 최적화된 fine-tuned 버전
  • Variants: 7B, 13B, 70B

 

LLAMA2 & LLAMA2-Chat의 학습 방법

 

LLAMA2를 공개 데이터셋으로 self-supervised learning한 후 생성

-> LLAMA2를 SFT(Supervised Fine-Tuning)하여 LLAMA2-Chat을 생성

-> LLAMA2-Chat은 RLHF(Reinforcement Learning from Human Feedback)으로 반복적으로 튜닝

 

LLAMA1과 LLAMA2의 차이

 

 

Llama2는 Llama1에 대해 sequence 길이를 더 늘리고 pre-training, fine-tuning, safety 측면에서의 차이만 있기 때문에 위의 내용을 보면 크게 다른 점이 보이지 않음

그 외의 차이로는 Llama2가 GQA (Group Query Attention)을 채택하고 있음

 

GQA

Llama2에 적용된 추론 속도 향상 기술

  • MHA(Multi-Head Attention)과 MQA(Multi-Query Attention)의 장점을 결합한 기술
  • LLM 학습에는 오랜 시간과 많은 자원이 투입되므로 모델을 다 만들어놨는데 GQA를 적용해 다시 학습시키는 것은 큰 부담이 되는데, GQA는 이미 학습된 모델에도 적용할 수 있음

 

  • Multi-head Attention은 H(어텐션 헤드 개수)개의 QKV(Query, Key, Value)를 가짐
    • 8개의 각 헤드에 대해서 Q 에 대한 각 key 값 value 를 구해주고 각각 inner product 곱하고 곱하고 즉, 일대일로 대응 했었음
    • 각각의 KV 텐서를 로드하기 위해서는 많은 메모리가 필요
  • Multi-query Attention은 H개의 Q(Query)와 1개의 KV(Key, Value)를 가짐
    • 모든 헤드들의 개수에 대해서 하나만 수행하는 것
    • 모든 Q(Query)는 KV(Key, Value)를 공유함
    • Multi-query Attention으로 메모리를 절약할 수 있음
  • Grouped-query attention
    • 하나의 key로 계산, 하나의 value로 계산하여 컴퓨팅 타임을 줄이는 대안
    • Grouped query attetion 그림에서 보면 멀티 헤드 어텐션 부분에서 2개의 key가 아닌 하나의 key 사용
    • 각 Qeury에 대해서 Value도 마찬가지로 두 개 중 하나만 계산

 

=> GQA : MHA와 MQA의 중간. H개 있던 KV 헤드를 1개로 줄이는 대신 적절한 G개의 그룹으로 줄이는 것

  • GQA는 Multi-query Attention 만큼 빠르며 성능은 Multi-head Attention과 비슷함

 

Structure

normal transformer block의 pre-normalization variant를 사용함

많은 transformer 구조가 layer normalization을 채택해 사용하고 있지만, LLAMA는  RMS Norm(Root Mean Square Layer Normalization)으로 layer normalization을 대체해 사용함

연산이 단순화된 기법이기 때문에 layer normalization에 비해 10~50% 향상된 효율성을 달성함

 

RMS Normalization

RMS Normalization은 배치 정규(γ,β)와 같은 학습 가능한 파라미터가 없음

 

Batch Normalization은 매우 크거나 매우 작은 숫자를 다룰 때 수치불안정으로 인해 어려움을 겪을 수 있음

-> RMS Normalization은 루트 씌우고 n으로 나눠주고 실제 입력 값에 나눠주기 때문에 안정적임

모델에 비선형성을 제공해 데이터에서 더 복잡한 패턴 포착할 수 있음

  • Batch Normalization
    • 배치당 평균과 분산 이용해 데이터의 분포를 정규화하는 과정
    • 학습 파라미터 (γ,β)를 조정함으로써 데이터가 목표 평균(target mean) 및 표준 편차(standard deviation)을 갖도록 보장
    • 학습 파라미터를 사용해 배치들이 중심인 전체 평균으로 끌어올 수 있도록 함

 

 

RoPE : Rotary Positional Embeddings

: LLAMA2와 같은 transformer model에서 위치 정보를 인코딩하는 방법.

모델이 입력 시퀀스의 위치 정보를 더 잘 학습할 수 있도록 돕는 방법

rotary matrix와 rotation matrix 개념이 사용됨

  • 기존의 위치 임베딩이 입력 토큰에 정적 임베딩을 더하는 것과 달리 RoPE는 임베딩에 회전 행렬을 적용하여 위치를 동적으로 인코딩함
  • 위치 정보를 포함하도록 두 차원 각각에 대해 일정 각도만큼 회전시킴

-> 토큰의 상대적 위치를 더 잘 포착할 수 있게 하여, 학습 중에 본 시퀀스보다 더 긴 시퀀스에서도 모델의 일반화 능력을 향상시킴

 

Rotation Matrix

: orthogonal 개념을 이용한 것

 

-> Attention Layer 에서 Query와 Key의 Inner product를 수행할 때, rotation matrix를 곱하여 위치 정보(postional information) 반영함

 

Rotary Matrix

: 입력 임베딩 벡터에 위치 정보를 통합함

임베딩 벡터의 실수와 허수 부분을 각각 회전시키며, 이 과정에서 벡터의 위치 정보가 보존되고 반영됨

여기서는 실수와 허수 두개를 표시해주어 Rotaion Matrix 상에서 대각선으로 표시해준 것

  • Query 와 Key 에 대해서만 Rotary Positional Embedding을 적용하는 것임

 

RoPE 적용 예시

 

  • 로터리 포지션 임베딩은sinusoid 를 이용하여 구한 절대 포지션 값  값을 입력

 

GQA

위에서 설명함

 

SwiGLU - Activation function

LLAMA는 SwiGLU라는 activation function을 사용하며 3개의 행렬 곱을 사용함

-> 일반적으로 사용되는 ReLU에 비해 계산 비용은 더 많이 들지만, 사용 중인 계산량이 일정하게 유지되는 상황에서도 다른 activation 함수에 비해 성능이 향상되는 장점이 존재함

 

SwiGLU = Swish(=SiLU) + GLU : 2개의 activation functions를 섞어 만든 함수

  • (-)값을 잃어버리는 ReLU의 단점을 해결함

 

1) Swish Function

sigmoid에 입력값을 한 번 더 곱해주는 모양 

 

 

Swish function의 특징

1) Unbounded above where 

sigmoid & tanh는 각각 (0, 1), (-1, 1) 범위이지만 ReLU의 범위는 [0, ∞)

-> 이 점이 gradient vanish를 막아줌 (ReLU의 전성기를 가져온 큰 요인)

이러한 장점을 Swish가 이어받음

-> 모든 양수값을 허용함으로써 정보를 살려감

 

2) Bounded below where 

위의 특성은 너무 큰 음수값은 으로 내보내서 일종의 강한 규제(regularize 효과)를 거는 효과를 유도함

하지만 ReLU에서는 음수값에 대해서는 무조건 을 내보내므로 dying ReLU에 직면한다는 단점이 존재

-> 파생형으로 Leaky ReLU나 PReLU 등장

 

< 0 구간에서 값의 상한이 존재하며, 0으로 수렴함

-> Swish는 어느 정도 작은 음수값에 대해서 허용한다는 의미 (3의 non monotonicity와도 이어짐)

 

3) Non monotonicity

약간의 음수를 허용하고 있고 양수 부분이 직선 그래프가 x = ReLU와 비슷하게 생겼지만 표현력이 좋다는 의미

gradient가 작은 음수로 전해지더라도 온전히 이전 layer로 전할 수 있어서 학습이 잘 됨

 

4) Smooth figure

ReLU는 작은 변화에도 민감하게 반응해 학습이 어려워질 수 있는데, Swish처럼 경계가 흐릿하면 ReLU와는 반대로 작은 변화에는 작게, 큰 변화에는 크게 반응해 optimizer가 제대로 minima를 찾아가게 함

 

5) Computationally expensive

sigmoid로 인해 계산 오래 걸림 

 

6) Self-gated

입력의 정보량을 조절하는 기능

  • LSTM에서 나온 아이디어로써, 와 σ(βx)를 분리해 생각할 수 있음
    σ(βx)는 항상 (0, 1) 범위의 값을 가지는데, 그 값을 결국 입력 자기자신 가 결정하기 때문에 self-gating이라고 부름
    -> 이 또한 generalization을 돕고 overfitting을 막아줌

 

2) GLU function : GatedLinearUnits

 

swish와 마찬가지로 σ(xW+b)(xV+c)를 나누어 생각하면 (xV+c)σ(xW+b)의 Element-wise filter라고 이해할 수 있

 

 

 

3) SwiGLU 

위의 두 가지를 결합한 형태

 

 

Architecture

  • LLAMA2는 decoder-based model
    -> 한 번에 하나의 토큰만 생성함
  • 현재 레이어의 output은 다음 레이어의 input token이 됨 (Autoregressive)

 

I am a student -> student라는 output을 예측한다고 하면 아래와 같음

 

 

 

 

Pre-training

Llama1과 같이 공개된 데이터셋만으로 pre-training을 진행함

-> 충분한 컴퓨팅 소스를 갖고 있는 사람들이 pre-trained process를 공개적으로 복제할 수 있도록 하기 위함임
대신, Llama2는 공개된 데이터셋들을 그대로 이용하지 않고, 고품질이면서 사실로 판단된 소스들만 의도적으로 sampling하여 혼합된 데이터셋을 만들어 사용함

-> 여러 데이터셋의 고품질 내용만 혼합하여 pre-training dataset을 이전보다 40% 늘리고, 이로 인해 이전에 비해 보유한 지식의 기반이 더 향상됨

 

Supervised Fine-tuning

독점 모델(GPT-4)과 같이 광범위한 대화의 양과 인간 피드백에 의한 격차를 줄이기 위해 그와 유사한 방식으로 대규모 dataset을 사용해 fine-tuning된 Llama2-Chat을 생성함

= 가능한 완전 오픈소스를 제공하기 위한 노력의 일환

 

SFT의 두 단계를 수행함

STEP 1) 더 많은 양의 공개 데이터에 대해서 학습

STEP 2) 훨씬 더 높은 품질로 선별된 소규모 데이터에 대해서 학습

 

 

또한 LLAMA2-Chat은 위와 같이 alignment된 training 구조로 할루시네이션을 줄이고 unsafe question을 피하고자 함

이때 유용성과 안정성을 위해 SFT와 RLHF를 모두 사용함

 

 

SFT와 LoRA로 LLAMA2를 fine-tuning 시키는 과정은 아래와 같음

  • LoRA를 이용해 LLAMA2를 finetuning하는 과정 설명하고 있음
  • LoRA : pretrained model의 가중치를 frozen하고, 각 transformer blocks에 trainalble한 layer를 주입

How to fine-tune LLaMA 2 using SFT, LORA (accubits.com)

 

How to fine-tune LLaMA 2 using SFT, LORA

Here, we'll learn how to fine-tune LLaMA2 using two exceptional techniques: SFT (Supervised Fine-Tuning for full parameter) and LORA.

blog.accubits.com

 

RLHF

 

SFT는 많은 LLM에서 채택되고 있는만큼 성능은 확실하나 alignment의 목표를 정확히 포착해 선별하고 관리함에 있어서는 부족할 수 있음

-> 직접 인간이 이에 대해 피드백하고 품질 향상에 이용하는 것이 제시됨. 인간이 피드백함으로 그 선호도 점수에 따라 LLM을 최적화하는 것

 

 

Full model

 

하늘색 block : TransformerBlock으로 구성. attention_norm으로 시작해서 feed_forward로 block 마무리됨

 

Input Tokens

llama2의 dictionary는 약 32000개 정도

모델의 차원은 d_model = 4096

헤드를 32개까지 사용할 수 있음 -> 굉장한 다양성 부여됨

d_k = 4096/32 = 128

모델의 차원과 마찬가지로 input size는 최대 4096개까지 가질 수 있음(Llama1은 2048개)

 

1) Embedding

단어 tokenization

 

2)  RMS Norm - 첫번째 정규화

RMS Norm을 거쳐 Input token size와 d_model의 곱으로 이루어진 Output이 나옴

 

 

3) Rotary Position Embedding

Rotation matrix R(θ)는 d_model * d_model

  • d_model은 모델의 embedding 차원
  • rotation matrix는 임베딩 벡터의 각 차원을 회전시키는 역할

 

Rotation Matrix를 쿼리의 Weight Matrix에 곱해주고 (W_q) 그 다음에 Key의 Weight Matrix에 곱해줌(W_K)

-> 각 토큰 위치에 대해 회전 행렬을 적용해 위치 정보를 통합

위치 정보가 포함된 임베딩 벡터는 W_q, W_k와 곱해져서 Postional Encoded Weight Matrix of Query 와 Position Encoded Weight Matrix of Key가 만들어짐

 

4) Masked Self-Attention

 

 

하늘색 부분 각 R과 W는 곱해서 Positional Encoded Weight Matrix of Query와 Position Encoded Weight Matrix of Key를 구함

-> 여기에 인풋 x_m, x_n을 곱해줌

 

Grouped Multi-Query Attention 과정

attention을 구해야 하는데, 이 때 위에서 구한 grouped multi-query attention을 사용함

  • 여러 헤드를 하나의 그룹으로 묶어 공통의 키(Key)와 값(Value) 행렬을 사용하여 계산 효율성을 높임

Step 1) 쿼리 행렬 계산: 각 헤드별로 개별 쿼리(Query) 행렬을 계산

  • Head_1과 Head_2를 하나의 그룹으로 봤을 때, 거기에 곱해주는 뒤의 Key matrix 는 하나임

Step 2) 키 행렬 공유: 같은 그룹의 헤드들은 동일한 키(Key) 행렬을 사용하여 계산함

Step 3) 어텐션 스코어 계산: 쿼리와 공유된 키 행렬을 곱하고, 스케일 다운 후 소프트맥스를 적용하여 어텐션 스코어를 구함

Step 4) 값 행렬 공유: 같은 그룹의 헤드들은 동일한 값(Value) 행렬을 사용하여 계산된 어텐션 스코어를 곱함

  • 첫 번째 Head_1 에서 Value Matrix 계산 후 마찬가지로 Head_2 에서도 동일한 값 Value Matrix 값을 사용하여 attention score에 곱함

Step 5) 결과 합산: 각 헤드의 결과를 합산하여 최종 어텐션 출력을 만듦

  • 각 헤드마다 attention value matrix가 출력됨

 

 

5) Concatenated Heads Matrix

attention layer를 통해 계산된 각 헤드의 attention value matrix를 concat

concatenated matrix에 weight matrix를 한번 더 곱함

  • weight matrix 크기 : d_model * d_model
  • 헤드들이 다 합해진 것이기에 사이즈가 d_k가 아닌 d_model임
  • output은 (input token size) * (d_model) 

 

 

6) RMS Normalization - 두 번째

위에서 output으로 나온 output of grouped query attention과 초반의 embedding layer의 output을 더한 후 두 번째 RMS Norm으로 들어감

 

 

 

 

7) SwiGLU FeedForward

F1 : 컴퓨팅 타임을 줄여주기 위해 가중치 행렬 을 사용하여 입력 차원을 늘림

  • d_ffnn : 사용자가 결정할 하이퍼 파라미터
  • 모델이 입력의 상황 정보를 이해하고 의미 있는 토큰 표현을 생성할 수 있도록 도움 

F2 : F1 아웃풋에 SwiGLU를 적용.

  • SwiGLU의 non linear 특성이 반영되면서 차원은 이전과 똑같음 

F3 : 가중치 행렬 를 사용하여 입력의 차원을 원래 모양으로 줄

 

 

 

 

 

 

8) RMS Norm - 세 번째

앞의 RMS Norm의 결과값과 FFNN(SwiGLU)의 결과 값을더해 정규화함

 

 

9) Linearization

linear layer를 통해 input (앞의 결과)의 차원을 vocab set의 사이즈만큼 키움

  • weight matrix에서 차원을 vocab size로 맞춰주고 곱함

 

 

10) SoftMax (Classification Probability)

최종적으로 softmax를 적용하면 각 vocab마다의 어떤 확률이 나옴

 

 

 

 


Llama 2: Open Foundation and Fine-Tuned Chat Models (velog.io)

 

Llama 2: Open Foundation and Fine-Tuned Chat Models

마지막 주차 논문 리뷰

velog.io

라마2에 적용된 추론 속도 향상 기술인 GQA(Grouped Query Attention)에 대해 (sk.com)

 

라마2에 적용된 추론 속도 향상 기술인 GQA(Grouped Query Attention)에 대해

 

devocean.sk.com

[ Llama 2 ] analyze model and review code. (velog.io)

 

[ Llama 2 ] analyze model and review code.

Llama 2 : analyze model and review code.

velog.io

 

간략하게 정리해두는 게 좋을 거 같아 휘리릭 써봄

 

stable diffusion을 fine-tuning하는 방법들이다. 간략히 설명하면 아래와 같다. 

  • Textual Inversion : text encoder에 새로운 words를 적은 데이터셋으로 학습할 수 있음
  • Dreambooth : UNet을 fine-tunes 할 수 있는 방법
  • Full Stable Diffusion fine-tuning : 충분한 데이터셋이 있을 때 사용

즉, Textual Inversion과 DreamBooth는 둘 다 pretrained text-to-image 모델을 personalization하는 기술인데, 그 방법에서 차이가 존재하는 것이다. 

 


1. Textual Inversion

: 유저가 object나 style과 같은 concept에 대해 제공한 3-5장의 이미지만으로 그것을 표현하는 embedding space에서의 새로운 “단어”들을 학습하는 방법론

  • 특히, 저자들은 single word embedding이 유니크하고 다양한 concept을 capture하기에 충분하다는 증거를 찾아냄

 

새로운 개념을 대규모 모델에 도입하는 것은 어려움

  • retraining은 비용이 많이 들고, fine tuning은 기존의 것을 망각할 위험이 존재함 (Language drift)
    -> 저자들은 pretrained된 T2I model들의 texual embedding space에서 새로운 단어(word)를 찾음으로 이러한 문제를 극복할 것을 제안
  • 새로운 concept인 입력 이미지를 나타내는 S*를 표현하는 방법을 찾는 것이 모델의 목표이며,  생성모델을 변경하지 않은 채로 S*를 다른 일반적인 words처럼 처리하는데, S*을 정의하는 과정을 “Textual Inversion”
    • This embedding is found through an optimization process, which we refer to as "Textual Inversion".

 

 

 

 

text encoding process의 첫 stage를 고려함

"A photo of S*"라는 입력 문자열(input string)은 tokenizer를 지나면서 각각 "508", "701", "73", "*"과 같은 형태의 token set으로 변환되고, 이후 각 토큰은 자체 embedding vector로 변환됨

이러한 벡터는 downstream model로 fed 됨

본 논문은 특정 concept에 대한 새로운 pseudo-words(입력된 모르는 단어)인 S*를 찾아 새로운 embedding vector(V*)를 나타내는 것이 목적!

  • 생성을 가이드할 수 있는 pseudo-word를 찾는 것이 목표
  • S*로 새로운 임베딩 벡터를 표현함. 그 후 이 psedo-word는 다른 단어와 마찬가지로 다루어지고 생성 모델에 대한 새로운 텍스트 쿼리를 작성하는 데 사용됨
    • ex : “ a photograph of on the beach
    • ex2 : “a drwaing of 𝑆∗1 in the style of 𝑆∗2” <- 두 가지 concept으로 구성할 수도 있음
  • 따라서 이 query는 generator에 들어가서 사용자가 의도한 바와 일치하도록 새로운 image를 생성하도록 하는 것
    = 새로운  user-specified concepts에 대한 language-guided generation

 

이러한 pseudo-word(유사단어)를 찾기 위해 본 논문에서는 task를 하나로 inversion시켜 프레임화함

주어진 pre-trained T2I model 모델과 concept을 나타내는 small(3-5) image set가 주어질 때, 저자들은 “A photo of 𝑆∗”과 같은 형태의 문장을 설정해서 주어진 작은 dataset에서 이미지를 재구성하는 것으로 이어지는 single-word embedding을 찾는 것을 목표로 함

이 embedding은 optimization process를 통해 찾아질 수 있고, 이를 Textual Inversion이라 부름

 

  • 이때 이 과정에서 생성모델(본 논문에서는 LDM)은 untouched되어 있음(따로 수정이 들어가지 않음)
    -> 새로운 task에 대한 fine-tuning을 할 때 일반적으로 손실되는 text 이해도나 generalization을 유지할 수 있음

 

  • CLIP-based reconstruction에서, 본 논문의 method가 unique detail과 concept을 잘 capture함

 

context text를 𝑆∗로 대체하여, style transfer 역시 가능

동시에 여러 word를 추론할 수 있지만, 새로운 word간의 관계 추론에는 어려움을 겪음

 

 

2. Dreambooth

: DreamBooth는 3~5장의 이미지를 이용하여 모델을 fine-tuning하고, 주어진 컨셉을 나타내는 Unique Identifier, 즉 고유 식별자([V])를 사용하여 이미지를 합성함

 

기존의 모델들 :  key visual features에 대한 높은 충실도를 유지하면서 새로운 맥락의 사진을 생성하는 것이 어려움

large T2I 모델들은 대규모의 이미지-캡션 데이터셋에서 학습되었기 때문에, strong semantic prior를 가지고 있기 때문

-> 몇 장의  이미지로 T2I 모델을 fine-tuning 하면서도, 기존 모델의 semantic knowledge를 보존하는 것이 DreamBooth의 목적

  • DreamBooth는 기존의 fine-tuning과는 달리 적은 수의 이미지만으로 모델의 오염(overfitting, language drift)없이 학습이 가능하기 때문에 개인이 더 손쉽게 fine-tuning이 가능하다는 장점이 존재함

 

input으로 몇장 이미지와 대상에 대한 class 이름이 주어지며 이를 DreamBooth를 통해 fine-tuning하면, [V]에 대해 학습된 personalized T2I model이 output으로 나오게 되는 것

  • ex : 이미 여러 동물에 대해 학습된 어떤 pretrained model이 존재할 때, 내가 키우는 개를 학습시키고 싶음
    -> 학습 이미지 : 내가 키우는 개 [V] 에 대한 사진, class name : "dog"
    • dog 말고 더 상위 개념인 animal로 정해도 되지만 너무 포괄적이기에 모든 animal의 특성이 [V]와 섞이게 되어 좋지 못한 결과물이 나올 가능성이 높아질 것

 

 

 

모델은 fine-tuning 과정에서 사용자가 생성하고자 하는 특정 subject와 "새로운 단어"(unique identifier)를 함께 학습함

few-shot dataset으로 subject-identifier를 학습하고 아래에서는 기존 모델이 생성한 이미지를 학습하여 사전 지식을 유지함

  • "A [V] dog" 처럼 unique identifier와 클래스 이름이 합쳐진 텍스트 프롬프트를 사용해서 파인튜닝함
  • prompt로 "[identifier] [class noun]" 의 형태를 이용
    • [identifier] : subject를 의미하는 unique identifier
    • [class noun] : subject의 class를 대략적으로 설명하는 단어. 모델의 사전 지식을 활용하여 훈련 시간을 줄이고 성능을 향상시키는 역할  ex) dog, cat, watch
  • 하지만 이렇게만 학습을 진행하면 language drift 현상 발생 
    -> 따라서 논문의 저자들은 이를 방지하기 위해서 클래스에 대한 semantic prior를 활용하는 autogenous, class-specific prior preservation loss도 제안

연구진들은 모델의 vocabulary에서 희귀 토큰을 찾아 text space로 변환하는 방식으로 unique token을 선택함

희귀 토큰 𝑓(𝑉^)를 찾고 대응하는 단어 𝑉를 unique identifier로 사용함

  • 모델이 단어를 원래의 의미로부터 분리하고 컨셉과 연결되도록 학습해야 함
    -> 따라서 특별한 의미를 가지지 않는 단어를 활용하는 것이 효율적임
    • 무작위 알파벳으로 구성된 "xxy5syt00"와 같은 단어는 tokenizer에 의해 각 글자별로 토큰화되기 때문에 마찬가지로 좋지 않은 선택임

 

기존 모델의 내용을 유지하면서 새로운 것을 학습할 때 DreamBooth는 class image(Regularization image, 정규화 이미지)를 사용함

학습하고 싶은 이미지인 A [V] dog에 대한 input image를 학습하과 동시에 기존 모델이 이용해 출력한 A dog라는 class name에 대한 이미지인 class image를 같이 학습해 기존 모델이 가진 class name에 대한 지식을 잊지 않도록 함

  • 학습에 class-specific prior preservation loss라는 자체적인 손실 함수 이용함
    • 기존 diffusion model의 손실함수와의 차이점은 +뒤의 term이 추가되었다는 것인데, lambda와 class image에 대한 손실함수를 곱하였기 때문에 lambda 값을 조절해 가중치에 어느정도로 class image의 손실함수를 추가할지 조절이 가능

 

 

 


Textual Inversion

paper :  [2208.01618] An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion (arxiv.org)

 

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

Text-to-image models offer unprecedented freedom to guide creation through natural language. Yet, it is unclear how such freedom can be exercised to generate images of specific unique concepts, modify their appearance, or compose them in new roles and nove

arxiv.org

 

github :  rinongal/textual_inversion (github.com)

 

GitHub - rinongal/textual_inversion

Contribute to rinongal/textual_inversion development by creating an account on GitHub.

github.com

 

Dreambooth

paper : [2208.12242] DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation (arxiv.org)

 

DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation

Large text-to-image models achieved a remarkable leap in the evolution of AI, enabling high-quality and diverse synthesis of images from a given text prompt. However, these models lack the ability to mimic the appearance of subjects in a given reference se

arxiv.org

 

 

 

[논문리뷰] An Image is Worth One Word: Personalizaing Text-to-Image Generation using Textual Inversion — 차분하고 꾸준하게 성장하기 (tistory.com)

[논문리뷰] An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion (jang-inspiration.com)

[Generative] Diffusion-based Inversion과 Personalization에 대한 생각 (tistory.com)

[논문리뷰] DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation (tistory.com)

 

 

paper : [1506.02640] You Only Look Once: Unified, Real-Time Object Detection (arxiv.org)

 

You Only Look Once: Unified, Real-Time Object Detection

We present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabili

arxiv.org

 

 

YOLO 이전의 방식들은 2-stage detector라고 하여 첫번째 물체를 인식하고, 두번째 인식된 물체의 이미지 영역을 짤라서 Classification 하는 방식으로 처리를 하였다면, YOLO와 SSD 같은 방법들은 그 과정을 딥러닝 모델에서 단 한 번의 과정을 통해서 처리하도록 함

 

 


 

Abstract

YOLO 연구진은 object detection에 새로운 접근 방식을 적용함

  • 기존의 multi-task 문제를 하나의 regression 문제로 재정의함
  • 이미지 전체에 대해 하나의 신경망이 한 번의 계산만으로 bounding box와 클래스 확률(class probability)를 예측함
    = 단일 네트워크가 bounding box와 class probability 예측을 한 번에 수행함
    • bounding box : 객체의 위치를 알려주기 위해 객체의 둘레를 감싼 직사각형 박스
    • 클래스 확률 : bounding box로 둘러싸인 객체가 어떤 클래스에 해당하는지에 관한 확률
  • 모든 파이프라인이 단일 네트워크 => end-to-end 형식임
  • YOLO의 통합된 모델은 굉장히 빠름
  • Localization error는 타 모델에 비해 더 많지만, background에 대한 false positive (배경을 물체로 검출하는 에러)는 더 적음

 

1. Introduction

사람은 이미지를 보면 어디에 무엇이 있는지를 한 번에 파악할 수 있음. 사람의 시각 체계는 빠르고 정확하기 때문

-> 운전을 하면서도 빠르게 지나가는 바깥 환경을 빠르고 정확하게 인식할 수 있음

 

기존의 detection 모델은 분류기(classifier)를 재정의해 검출기(detector)로 사용함

  • 분류(classification) : 하나의 이미지를 보고 그것이 개인지 고양이인지 판단하는 것
  • 객체 검출(object detection) : 하나의 이미지 내에서 개는 어디에 위치해 있고, 고양이는 어디에 위치해 있는지 판단하는 것 => 객체 검출은 분류뿐만 아니라 위치 정보도 판단해야 함

기존의 객체 검출 모델로는 DPM과 R-CNN이 있음

  • DPM(Deformable parts models) : 이미지 전체를 거쳐 sliding window 방식으로 객체 검출을 하는 모델. 전체 이미지를 classifier로 스캔하는 방식 형태의 방법론 사용 
    • sliding window 방식 : 이미지를 격자 또는 창(window)로 나누고, 각 창 내에서 객체의 존재 여부를 확인하고 분류. 객체가 다양한 크기와 위치에 나타날 수 있는 상황에서 유용한 방식. 다양한 크기의 객체 탐지가 가능하며, 작은 객체와 큰 객체 모두 처리할 수 있다는 장점이 존재하나 계산 비용이 높고 연산 부하가 증가할 수 있
  • R-CNN : 이미지 안에 bounding box를 생성하기 위해 region proposal이라는 방법 사용. 그렇게 제안된 bounding box에 classifier를 적용해 분류함
    • region proposal / classification / box regression이라는 3가지의 단계를 거치는데, 각 단계를 개별적으로 학습해야 함. (분류 후 bounding box를 조정하고, 중복된 검출을 제거하고, 객체에 따라 box의 점수를 재산정하기 위해 후처리(post-processing) 진행)
    • 이러한 복잡성으로 인해 R-CNN은 느림 & 각 절차를 독립적으로 훈련시켜야 하므로 최적화 힘듦

 

따라서 YOLO 연구진은 객체 검출을 하나의 회귀 문제(single regression problem)로 보고 절차를 개선함

이미지의 픽셀로부터 bounding box의 위치(coordinates), 클래스 확률(class probabilities)을 구하기까지의 일련의 절차를 하나의 회귀 문제로 재정의한 것

  • End-to-End 방식의 통합된 구조로 되어 있으며, 이미지를 convolutional neural network에 한 번 평가(inference)하는 것을 통해서 동시에 다수의 bounding box와 class 확률을 구하게 됨
  • 기존의 방법론인 Classification모델을 변형한 방법론에서 벗어나, Object Detection 문제를 regression문제로 정의하여 이미지에서 직접 bounding box 좌표와 각 클래스의 확률을 구하는 

=> 이미지 내에 어떤 물체가 있고 그 물체가 어디에 있는지를 하나의 파이프라인으로 빠르게 구해줌

=> 이미지를 한 번만 보면 객체를 검출할 수 있다 하여 YOLO(You Only Look Once)라 명명함

 

하나의 컨볼루션 네트워크(convolutional network)가 여러 bounding box와 그 bounding box의 클래스 확률을 동시에 계산해줌

YOLO는 이미지 전체를 학습해 곧바로 검출 성능(detection performance)를 최적화함

-> YOLO의 이런 통합된 모델은 기존의 객체 검출 모델에 비해 여러가지 장점이 존재함

 

YOLO의 장점

1) 속도가 굉장히 빠름

기존의 복잡한 객체 검출 프로세스를 하나의 회귀 문제로 바꿨기 때문. 그리하여 기존의 객체 검출 모델처럼 복잡한 파이프라인이 필요하지 않음. 단순히 테스트 단계에서 새로운 이미지를 YOLO 신경망에 넣어주기만 하면 쉽게 객체 거출을 할 수 있음

YOLO의 기본 네트워크(base network)는 Titan X GPU에서 배치 처리(batch processing) 없이 1초에 45 프레임을 처리하고, 빠른 버전의 YOLO(Fast YOLO)는 1초에 150 프레임을 처리함

이는 동영상을 실시간으로 처리할 수 있다는 의미임 (25밀리 초 이하의 지연시간으로 처리 가능)

YOLO는 다른 실시간 객체 검출 모델보다 2배 이상의 mAP(mean average precision의 약자로 정확성을 뜻함)를 갖습니다

 

2) YOLO는 예측시 이미지 전체를 봄 -> background error 적음

sliding window나 region proposal 방식이 아닌 convolutional neural network를 사용하는 방식으로 훈련과 테스트 단계에서 이미지 전체를 보기 때문에 클래스의 모양에 대한 정보뿐만 아니라 주변 정보까지 학습해 처리함

  • YOLO 이전의 객체 검출 모델 중 가장 성능이 좋은 모델인 Fast R-CNN은 주변 정보까지는 처리하지 못했음
  • 그래서 아무 물체가 없는 배경(background)에 반점이나 노이즈가 있으면 그것을 물체로 인식함 = background error

YOLO는 이미지 전체를 처리하기 때문에 background error가 Fast R-CNN에 비해 대략 1/2 가량으로 훨씬 적음

 

3) YOLO는 물체의 일반화된 Object 표현을 학습함

실험적으로 자연의 dataset을 학습시킨 후 학습시킨 네트워크에 artwork 이미지를 입력했을 때, DPM, R-CNN 대비 많은 격차로 좋은 detection 성능을 보임

단, SOTA 객체 검출 모델에 비해 정확도(mAP)가 다소 떨어짐. 작은 물체에 대해 detection 성능이 떨어짐

 

2. Unified Detection

YOLO의 핵심 = Unified Detection

 

YOLO에서 주장하는 Unified Detection의 개념

= 원본 이미지를 입력으로 받은 모델이 object detection에 필요한 모든 연산을 수행할 수 있다는 의미. YOLO는 단일 convolutional neural network 모델 하나로 (object detection 문제를 풀기 위한) 특징 추출, 바운딩 박스 계산, 클래스 분류를 모두 수행함

 

YOLO는 기존의 모델에는 없었던 다양한 이점들이 존재함

1) 모델이 이미지 전체를 보고 바운딩 박스를 예측할 수 있음

2) Unified Detection이라는 용어 그래도 bounding box regression과 multi-class classification을 동시에 수행할 수 있음

이러한 이점들로 인해 높은 mAP를 유지하면서, end-to-end 학습이 가능하고, 실시간의 inference 속도가 가능함

 

YOLO는 input images를  S x S 그리드로 나눔

만약 어떤 객체의 중점이 특정 그리드 셀 안에 존재한다면, 해당 그리드 셀이 그 객체를 검출해야 함.

각 그리드 셀은 B개의 바운딩 박스를 예측하고, 각 바운딩박스 마다 confidence scores를 예측함

  • confidence scores: 해당 바운딩 박스 내에 객체가 존재할 확률을 의미하며 0에서 1 사이의 값을 가짐
    confidence scores 수식

    • IOU(Intersection over union) : 객체의 실제 bounding box와 예측 bounding box의 합집합 면적 대비 교집합 면적의 비율. 즉, IOU = (실제 bounding box와 예측 bounding box의 교집합) / (실제 bounding box와 예측 bounding box의 합집합). 예측된 bounding box가 그 클래스(class) 객체에 얼마나 잘 들어맞는지를 의미
    • 만약 그리드 셀 안에 아무 객체가 없으면 Pr(Object) = 0 -> confidence scores = 0
    • 그리드 셀에 어떤 객체가 확실히 있다고 예측했을 때, 즉 Pr(Object)=1일 때가 가장 이상적 -> confidence score가 IOU와 같다면 가장 이상적인 score임

 

각각의 바운딩 박스는 5개의 예측치(x, y, w, h, confidence)로 구성되어 있음

  • (x, y) : 바운딩 박스의 중심점. 각 그리드 셀마다 상대적인 값으로 표현됨
    • 절대 위치가 아니라 그리드 셀 내의 상대 위치이므로 0~1 사이의 값 가짐 
    • (x, y)가 정확히 그리드 셀 중앙에 위치한다면 (x, y)=(0.5, 0.5)
  • (w, h) : 바운딩 박스의 width, height. 전체 이미지에 대해 상대적인 값으로 표현됨
    •  이미지 전체의 너비와 높이를 1이라고 했을 때 bounding box의 너비와 높이가 몇인지를 상대적인 값으로 나타냄. (w, h) 0~1 사이의 값을 가짐
  • confidence : 앞서 다룬 confidence score

 

Conditional Class Probabilities (C)

= 그리드 셀 안에 객체가 있다는 조건 하에 그 객체가 어떤 클래스(class)인지에 대한 조건부 확률

 

각각의 그리드 셀은 conditional class probabilities(C)를 예측함

 

 YOLO에서는 그리드 당 예측하는 바운딩 박스의 갯수(B)와 상관없이 그리드 당 오직 하나의 클래스 확률만 예측함

= 하나의 그리드 셀에서는 클래스 하나만 예측

 

Class-specific Confidence Score

Test 단계에서는 conditional class probability(C)와 개별 bounding box의 confidence score를 곱해주는데, 이를 각 bounding box에 대한 class-specific confidence score라 부름

 

해당 바운딩 박스에서 특정 클래스 객체가 나타날 확률(Pr(Class_i)과 객체에 맞게 바운딩 박스를 올바르게 예측했는지(IOU_pred^truth)를 나타냄

 

논문에서는 PASCAL VOC를 이용하여 Evaluation을 진행함 (S = 7, B = 2, C = 20 으로 설정)

(PASCAL VOC에는 20개의 레이블 존재하기에 C = 20)

  • S = 7 -> input image는 7*7 그리드로 나뉨
  • B = 2 -> 하나의 그리드 셀에서 2개의 bounding box를 예측하겠다는 의미

-> 따라서 모델의 최종 output tensor의 dimension은 7 x 7 x 30

 

2.1 Network Design

YOLO는  convolutional neural network로 디자인된 모델임 -> 앞단은 컨볼루션 계층(convolutional layers)이고, 이어서 뒷단의 fully connected layers로 구성됨

  • convolutional layers는 이미지에서 특징을 추출
  • fully connected layers는 추출된 특징을 기반으로 클래스 확률과 바운딩 박스의 좌표를 추론함

 YOLO의 신경망 구조는 이미지 분류에 사용되는 GoogLeNet에서 따왔으며, 24개의 convolutional layers와 2개의 fully connected layers로 구성됨

 

 

GoogLeNet의 인셉션 구조 대신 YOLO는 1 x 1 축소 계층(reduction layer)과 3 x 3 컨볼루션 계층의 결합을 사용함

  • 1 x 1 축소 계층(reduction layer)과 3 x 3 컨볼루션 계층의 결합이 인셉션 구조를 대신함 

모델의 최종 아웃풋은 7 x 7 x 30의 예측 텐서(prediction tensors)임

 

FastYOLO : 좀 더 빠른 객체 인식 속도를 위해 YOLO보다 더 적은 convolutional layer(24개 대신 9개)과 필터를 사용. 크기만 다를 뿐이고 훈련 및 테스트 시 사용하는 나머지 파라미터는 YOLO와 모두 동일함

 

2.2 Training

YOLO의 학습 과정은 아래와 같음

2.2.1 Pretraining Network

YOLO 모델의 convolutional layers는 ImageNet Dataset으로 Pretrain함

24개의 convolutional layers 중 앞단의 20개의 convolutional layers를 pretrain하고 이어서 fully connected layer를 연결함

20개의 convolutional layers 뒷단에 average-pooling layer와 fully connected layer를 붙여서 ImageNet의 1000개의 class를 분류하는 네트워크를 만들고 이를 학습시킴

  • 논문 기준 1주일간 학습 후 ImageNet 2012 validation set 기준 top-5 accuracy 88%

 

ImageNet은 분류(classification)를 위한 데이터 셋이라 사전 훈련된 분류 모델을 객체 검출(object detection) 모델로 바꾸어야 함

연구진은 사전 훈련된 앞단 20개의  pretrained convolutional layer 뒤에 4개의 convolutional layer 및 2개의  fully connected layer을 추가하여  성능을 향상시켰음

  • 4개의 컨볼루션 계층 및 2개의 전결합 계층을 추가할 때, 이 계층의 가중치(weights)는 임의로 초기화함
  • 또한, 객체 검출을 위해서는 이미지 정보의 해상도가 높아야 하기에 입력 이미지의 해상도를 224 x 224에서 448 x 448로 증가시킴

 

2.2.2 Normalized Bounding Boxes

이 신경망의 최종 아웃풋(예측값) = 클래스 확률(class probabilities) & bounding box 위치정보(coordinates)

 

bounding box의 위치정보에는 bounding box의 너비(width)와 높이(height)와 bounding box의 중심 좌표(x, y)가 존재하는데, YOLO 연구진은 너비, 높이, 중심 좌표값(w, h, x, y)을 모두 0~1 사이의 값으로 정규화(normalize)함

  • 바운딩 박스의 width와 height는 각각 이미지의 width와 height로 정규화시킴 -> 0에서 1 사이의 값
  • 바운딩 박스의 중심 좌표인 x와 y는 특정 그리드 셀에서의 offset으로 나타냄 -> 0에서 1 사이의 값

 

2.2.3 Nolinearity

YOLO 신경망의 마지막 계층에는 선형 활성화 함수(linear activation function)을 사용하고, 나머지 모든 계층에는 leaky ReLU를 적용함

  • ReLU는 0 이하의 값은 모두 0
  • leaky ReLU는 0 이하의 값도 작은 음수 값을 가짐 

 

2.2.4 고려해야 할 사항들

1) SSE의 문제

YOLO의 loss는 SSE(sum-squared error)를 기반으로 함 -> 최종 아웃풋의 SSE(sum-squared error)를 최적화(optimize) 해야 함

  • SSE를 사용한 이유 : SSE가 최적화하기 쉽기 때문
  • 하지만 SSE를 최적화하는 것이 YOLO의 최종 목적인 mAP(평균 정확도)를 높이는 것과 완벽하게 일치하지는 않음

YOLO의 loss에는 bounding box의 위치를 얼마나 잘 예측했는지에 대한 loss인 localization loss와 클래스를 얼마나 잘 예측했는지에 대한 loss인 classification loss가 존재하는데, localization loss와 classification loss의 가중치를 동일하게 두고 학습시키는 것은 좋은 방법이 아님

하지만 SSE를 최적화하는 방식은 이 두 loss의 가중치를 동일하게 취급함

 

또한 SSE를 사용하면 바운딩 박스가 큰 객체와 작은 객체에 동일한 가중치를 줄 때도 문제가 생길 수 있음

작은 bounding box가 큰 bounding box보다 작은 위치 변화에 더 민감하기 때문

  • 큰 객체를 둘러싸는 bounding box는 조금 움직여도 여전히 큰 객체를 잘 감싸지만, 작은 객체를 둘러싸는 bounding box는 조금만 움직여도 작은 객체를 벗어나게 됨

-> 이를 개선하기 위해 bounding box의 너비(widht)와 높이(hegith)에 square root를 취해줌.

너비와 높이에 square root를 취해주면 너비와 높이가 커짐에 따라 그 증가율이 감소해 loss에 대한 가중치를 감소시키는 효과가 있기 때문

 

 

2)  λ_coord와 λ_noobj로 가중치 조절

또 다른 문제로는 이미지 내 대부분의 그리드 셀에는 객체가 없다는 것임(배경 영역이 전경 영역보다 더 크기 때문)

그리드 셀에 객체가 없다면 confidence score=0 -> 대부분의 그리드 셀의 confidence socre=0이 되도록 학습할 수밖에 없는데, 이는 모델의 불균형을 초래함

-> YOLO는 이를 개선하기 위해 객체가 존재하는 bounding box 좌표(coordinate)에 대한 loss의 가중치를 증가시키고, 객체가 존재하지 않는 bounding box의 confidence loss에 대한 가중치는 감소시킴

= localization loss와 classification loss 중 localization loss의 가중치를 증가시키고, 객체가 없는 그리드 셀의 confidence loss보다 객체가 존재하는 그리드 셀의 confidence loss의 가중치를 증가시킨다는 뜻

이를 위해  λ_coord와 λ_noobj라는 두 가지의 파라미터 사용함 (논문에서는 λ_coord=5, λ_noobj=0.5로 가중치를 줌)

 

2.2.5 Multiple bounding boxes per gridcell

YOLO는 하나의 그리드 셀 당 여러 개의 bounding box를 예측함

훈련(training) 단계에서는 객체 하나당 하나의 바운딩 박스와 매칭시켜야 하므로, 여러 개의 바운딩 박스 중 하나를 선택해야 함

-> 따라서 여러 개의 bounding box 중 하나만 선택해야 함

 

이를 위해 예측된 여러 bounding box 중 실제 객체를 감싸는 ground-truth boudning box와의 IOU가 가장 큰 것을 선택함

  • ground-truth boudning box와의 IOU가 가장 크다 = 객체를 가장 잘 감싼다

이렇게 훈련된 bounding box predictor는 특정 크기(size), 종횡비(aspect ratios), 객체의 클래스(classes of object)를 잘 예측해 overall recall을 상승시킬 수 있음

 

 

2.2.6 Loss function

훈련 단계에서 사용하는 loss function은 다음과 같음

 

  • 1_obj^i : i번째 그리드 셀 에 있는 j번째 바운딩박스에 객체가 존재하는지 여부
    • 1_obj^i = 1인 바운딩 박스는 해당 객체를 검출해 내야 함
  • 1_ij^obj는 그리드 셀 i의 j번째 bounding box predictor가 사용되는지 여부
  • 수식의 classification loss의 경우에는 1_obj^i = 1인 바운딩 박스에만 적용이 되는 loss임(이는 Pr(Class_i|Object)를 반영한 결과).
  • 또한 borunding box coordinate loss의 경우에도 위와 마찬가지임

 

위 loss function의 5개 식은 차례대로 아래와 같은 의미를 가짐 

1) Object가 존재하는 그리드 셀 i의 bounding box predictor j에 대해, x와 y의 loss를 계산.
2) Object가 존재하는 그리드 셀 i의 bounding box predictor j에 대해, w와 h의 loss를 계산.

  • 큰 box에 대해서는 작은 분산(small deviation)을 반영하기 위해 제곱근을 취한 후, sum-squared error를 구함 (같은 error라도 큰 box의 경우 상대적으로 IOU에 영향을 적게 줌)

3) Object가 존재하는 그리드 셀 i의 bounding box predictor j에 대해, confidence score의 loss를 계산. (Ci = 1)
4) Object가 존재하지 않는 그리드 셀 i의 bounding box predictor j에 대해, confidence score의 loss를 계산. (Ci = 0)
5) Object가 존재하는 그리드 셀 i에 대해, conditional class probability의 loss를 계산. (p_i(c)=1 if class c is correct, otherwise: p_i(c)=0)

 

 

2.2.7 학습 및 하이퍼 파라미터

 PASCAL VOC 2007 / 2012를 이용해서 총 135 epochs를 학습시킴

하이퍼 파라미터 세팅은 아래와 같음

  • batch size = 64
  • momentum of 0.9
  • decay = 0.0005

초반에는 학습률(learning rate)을 0.001에서 0.01로 천천히 상승시킴

  • 처음부터 높은 learning rate로 훈련시켰다면 기울기 폭발(gradient explosion)이 발생하기 때문

이후 75 epoch 동안에는 0.01, 30 epoch 동안에는 0.001, 그리고 마지막 30 epoch 동안은 0.0001로 learning rate를 설정함

learning rate를 처음에는 점점 증가시켰다가 다시 감소시킴

 

YOLO에서는 오버피팅을 방지하기 위해 dropout과 data augmentation 기법을 사용함

  • dropout : 첫 번째 fully connected layer에 붙으며 dropout rate = 0.5로 설정
  • Data augmentation : scaling, translation, exposure, saturation을 조절하는 방식으로 다양하게 진행하며, 원본 이미지의 20%까지 랜덤 스케일링(random scaling)과 랜덤 이동(random translation)을 적용함

 

2.3 추론(Inference)

훈련 단계와 마찬가지로, 추론 단계에서도 테스트 이미지로부터 객체를 검출하는 데에는 하나의 신경망 계산만 하면 됨

 

파스칼 VOC 데이터 셋에 대해서 YOLO는 한 이미지 당 98개의 bounding box를 예측해주고, 그 bounding box마다 클래스 확률(class probabilities)을 구해줌

R-CNN 등과 다르게 하나의 신경망 계산(a single network evaluation)만 필요하기 때문에 입력 이미지를 네트워크에 단 한 번만 통과시키면 되므로 속도가 굉장히 빠름

 

YOLO의 그리드 디자인의 단점 : 다중 검출(multiple detections) 문제

: 하나의 객체를 여러 그리드 셀이 동시에 검출하는 경우가 존재함

객체가 그리드셀들의 경계에 위치하거나 여러 그리드 셀을 포함할 만큼 큰 객체인 경우 그 객체에 대한 bounding box가 여러 개 생길 수 있음

= 하나의 그리드 셀이 아닌 여러 그리드 셀에서 해당 객체에 대한 bounding box를 예측할 수 있다는 뜻

-> 비 최대억제(Non-maximal suppression) 로 다중 검출 문제 개선 가능 (YOLO는 NMS를 통해 mAP를 2-3% 가량 올릴 수 있었음)

 

 

2.4 YOLO의 한계

1) 공간적 제약(spatial constraints)

YOLO는 하나의 그리드 셀마다 두 개의 bounding box를 예측 & 하나의 그리드 셀마다 오직 하나의 객체만 검출할 수 있음

-> 공간적 제약(spatial constraints)을 야기

  • 공간적 제약: 하나의 그리드 셀은 오직 하나의 객체만 검출하므로 하나의 그리드 셀에 두 개 이상의 객체가 붙어있다면 이를 잘 검출하지 못하는 문제
  • ex) 새 떼와 같이 작은 물체가 몰려있는 경우 객체 검출이 제한적일 수 밖에 없음(오직 하나의 객체만 검출하는데 여러 객체가 몰려있으면 검출하지 못하는 객체도 존재)

 

2) 훈련 단계에서 학습하지 못한 종횡비(aspect ratio, 가로 세로 비율)를 테스트 단계에서 마주하면 고전함

바운딩 박스를 데이터로부터 학습하기 때문에 일반화 능력이 떨어지고, 이로 인해 train 단계에서 보지 못했던 종횡비의 객체를 잘 검출하지 못함

 

3) 부정확한 localization 문제

YOLO 모델은 큰 bounding box와 작은 bounding box의 loss에 대해 동일한 가중치를 둔다는 단점이 존재함

-> 크기가 큰 bounding box는 위치가 약간 달라져도 비교적 성능에 별 영향을 주지 않는데, 크기가 작은 bounding box는 위치가 조금만 달라져도 성능에 큰 영향을 줄 수 있음

  • 큰 bounding box에 비해 작은 bounding box가 위치 변화에 따른 IOU 변화가 더 심하기 때문

 


01). You Only Look Once 논문리뷰 · GitBook (deepbaksuvision.github.io)

 

01). You Only Look Once 논문리뷰 · GitBook

No results matching ""

deepbaksuvision.github.io

논문 리뷰 - YOLO(You Only Look Once) 톺아보기 (tistory.com)

 

논문 리뷰 - YOLO(You Only Look Once) 톺아보기

본 글은 YOLO 논문 전체를 번역 및 설명해놓은 글입니다. 크게 중요하지 않은 부분을 제외하고는 대부분의 글을 번역했고 필요하다면 부가적인 설명도 추가했습니다. 내용이 긴 섹션 끝에는 요약

bkshin.tistory.com

 

paper : [2106.09685] LoRA: Low-Rank Adaptation of Large Language Models (arxiv.org)

 

LoRA: Low-Rank Adaptation of Large Language Models

An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes le

arxiv.org

github : microsoft/LoRA: Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models" (github.com)

 

GitHub - microsoft/LoRA: Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models"

Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models" - microsoft/LoRA

github.com

 

2021년 마이크로소프트에서 제시한 PEFT(parameter-efficient fine-tuning) 기법인 LoRA를 제안한 논문!

원래 우리가 업데이트해야 할 모델의 파라미터 행렬 크기가 3 by 3이라고 하면, full-fine tuning을 진행할 경우 3 by 3 matrix의 모든 값을 계산해야 한다. 

하지만 LoRA 기법을 이용하면 3 by 3 matrix를 3 by R(Rank) matrix와 R(Rank) by 3 matrix로 나누어 두 행렬을 각각 업데이트 한다. 

그 후 업데이트가 완료된 두 행렬을 곱해줘 3 by 3 matrix로 크기를 복구해준다.

  • 여기서 R(Rank)의 값을 우리가 임의로 정해줘 랭크를 얼마나 반영해 업데이트 할 지 정해줄 수 있다.

즉, 기존의 pre-trained layer의 가중치는 고정을 한 채, 새로운 레이어의 가중치만을 학습시키는 것이다. 

이렇게 하면 full fine-tuning 대비 아주 적은 양의 파라미터만 훈련시키면서, full Fine-tuning과 같거나 심지어 더 좋은 성능을 내기도 한다고 한다. 

 

BERT, RoBERTa와 같이 그렇게 크지 않은 모델을 사용할 때는 굳이 LoRA를 사용하지 않고 full fine- tuning을 진행했으나, Llama 등의 모델이 나오며 이 모델들을 full fine-tuning 하기에는 컴퓨팅 소스가 매우 크기 때문에 LoRA를 사용한다. 

기존 LLM 모델은 RAM에 저장하고, CPU inference만 진행하고, LoRA 가중치는 GPU에 저장해 학습을 진행한다. 

 

 


Abstract

LoRA는 GPT와 같은 LLM을 특정 task에 fine-tuning(adaptation)하는 데 있어서 time과 resource 비용이 너무 크다는 단점을 해결하기 위한 방법으로 제시됨

  • pre-trained model의 weight를 freeze한 뒤 Transformer 아키텍처의 layers에 훈련 가능 rank decomposition matrices을 inject하여 downstream tasks의 훈련가능한 parameters를 줄일 수 있음
  • GPT-3와 비교하여 LoRA는 훈련 가능한 parameters를 약 10,000배 줄일 수 있었음 & GPU 메모리 요구량 3배 줄이기 가능 
  • LoRA는 다양한 모델에서 기존 혹은 그 이상의 성능을 보여줌
  • 기존 adapters의 inference latency 문제가 LoRA에는 적용되지 않음

 

1. Introduction

pretrained language model은 모델의 모든 파라미터를 업데이트 하는 finetuning 방법을 통해 다양한 task에 적용되어 왔음

하지만 정작 업데이트에 사용되는 파라미터는 극히 일부이기 때문에 비효율적으로 자원을 사용하게 됨

ex) GPT-2, RoBERTa large model의 경우 fine-tuning만 몇 달이 걸림

 

이에 downstream task를 위해 external module을 학습 or 몇몇 파라미터만 adapt하는 방식이 제안되어 왔으며, 각가의 task를 수행하기 위한 pretrained model에 적은 양의 task-specific parameter를 저장하고 로드하는 것이 제안되어 왔음

하지만 이러한 방식도 inference latency가 유도됨 or 모델의 입력 가능한 문장 길이 줄여야함(trade off 고려)

-> Low-Rank Adapation(LoRA)를 제안

  • downstream task : 사전 학습된 모델을 사용하여 특정 작업을 수행하는 것을 의미. 즉, 사전 학습(pre-training)된 모델의 가중치를 고정(frozen)한 상태에서, 저차원 매트릭스(LoRA의 (A)와 (B))를 학습하여 특정 작업에 맞게 모델을 조정하는 것

 

LoRA

LoRA는 low "intrinsic rank"의 weight를 학습하는 것

pre-trained된 weight를 고정시키는 대신, dense layers의 rank decomposition matrices를 optimization함으로써 기존 dense layers를 간접적으로 학습시

  • Low-Rank 방법의 motivation : "over-parameterized model은 low intrinsic dimension으로 존재하고 있다"는 사실
    -> model adaptation 동안 weight의 변화도 low intrinsic rank를 가질 거라고 가정

 

fine-tuning시에 pre-trained weights W는 frozen시켜두고, low rank decomposition된 weights A, B만 학습하고 W에 summation함

  • Low-rank decomposition된 weights는 기존의 W보다 훨씬 작은 크기의 weight이기 때문에 time과 resource cost를 줄일 수 있음
  • 또한 pretrained model을 가지고 있는 상태에서 특정 task에 adaptation하기 위해 A와 B만 storage에 저장하면 되고 다른 task에 adaptation하기 위해 또 다른 A', B'만 갈아 끼우면 되므로 storage, task switching면에서도 효율적임
    • adaptation : 사전 학습된 모델을 특정 작업에 맞게 조정하는 과정
  • inference시에도 fine-tuned model의 latency 성능이 낮아지지도 않음

 

LoRA의 advantages

1) Trainable 파라미터의 개수가 크게 줄어드므로 줄어든 비율만큼 checkpoint 저장 공간의 줄어든게 됨

  • checkpoint는 frozen 파라미터는 저장하지 않고 오직 trainable 파라미터만 저장하기 때문임

2) 작은 low-rank matrices만을 optimize함

-> 학습 효과적으로 할 수 있음 & 요구되는 하드웨어 성능도 줄이기 가능

  • adaptation 옵티마이저를 사용해서 대부분의 매개변수에 대한 옵티마이저 상태를 유지하거나 그래디언트를 계산할 필요가 없기 때문
  • Trainable 파라미터의 개수가 크게 줄어드므로 fine-tuning 시 필요한 GPU 메모리 공간이 줄어든게  (fine-tuning 시 학습을 위해 필요한 추가적인 메모리 공간은 trainable 파라미터의 개수에 의존하므로)

3) Adaptation module(gradient=BA) 가 그대로 본래 weight에 더해지는 심플한 선형 구조로 inference latency가 없음

  • inference latency : input이 들어가서 모델이 예측을 하기까지 걸리는 시간

4) 기존의 모델 등에 다양하게 적용 가능함

  • downstream task에 맞춰 학습된 BA를 손쉽게 교체할 수 있음
 

Terminologies and Conventions

  • 𝑑_model : transformer 구조 상의 입력과 출력 차원 크기
  • 𝑊𝑞: 쿼리 행렬
  • 𝑊𝑘: 키 행렬
  • 𝑊𝑣: 값 행렬
  • 𝑊𝑜: 출력 행렬
  • 𝑊 또는 𝑊_0 : pre-trained된 weight 행렬
  • Δ𝑊 : adaptation 동안의 가중치 변화의 총량(accumulated gradient update)
  • 𝑟 : LoRA의 rank
  • 모델의 최적화 알고리즘으로 Adam 사용
  • transformer MLP feedforward 차원 : 𝑑_ffn = 4 × 𝑑_model

 

2. Problem Statement

문제 정의

1) 기존의 LLM 모델(ex: GPT)을 하나의 확률 함수 PΦ​(yx) 라고 함

  • 각 downstream task는 context-target pair의 training dataset Z = {(x_i, y_i)}_i = 1,...,N 을 가짐

 

2) fine-tuning 과정에서 LLM이 튜닝되는 Φ가 최적화되는 식은 아래와 같음

equation 1

 

  • 기존의 full fine-tuning이라면 모델은 pre-trained weights Φ_0으로 initialized될 것이고, 위와 같은 conditional language modeling objective를 minimize하기 위해 Φ_0 + ΔΦ를 update 함
    • 직관적으로 backpropagation할 때의 모델을 나타내면, Φ = Φ_0 + ΔΦ가 됨

 

위의 full fine-tuning을 사용할 경우 각 down stream task를 위해 | Φ_0 | dimension과 같은 크기의 | ΔΦ |를 매번 재학습해야 한다는 문제점을 가짐

-> LoRA는 update해야하는 파라미터를 ΔΦ = ΔΦ(Θ)와 같이 encode해 훨씬 작은 size의 파라미터 Θ로 대체 학습함 (|Θ| << |Φ_0|)

-> 최적의 ΔΦ를 찾는 task는 Θ를 optimization하는 것으로 대체됨

 

3) equation 1에 근거해 만약 accumulated gradient values( ΔΦ)를 기존보다 훨씬 적은 파라미터인 Θ로 치환하여 ΔΦ(Θ)로 나타내면 아래와 같이 바뀌게 됨

 

위와 같은 LoRA 방식으로 GPT-3을 fine-tuning할 경우 기존 full fine-tuning보다 학습해야 할 파라미터 수가 전체의 0.01%로 줄어들게 됨

 

3. Aren't Existing Solutions Good Enough?

기존의 방법론들은 large-scale과 latency에 민감한 production들에 한계가 존재했음

 

1) Adapter Layers Introduce Inference Latency

어댑터 레이어는 추가 연산을 필요로 하므로 지연 시간을 피할 수 없는 구조임

대형 신경망 모델에는 하드웨어 병렬화를 사용해 지연 시간을 줄이는 반면, adapter layer는 순차적으로 처리되어야 함
-> 어댑터를 사용할 때 latency가 존재

 

2) Directly Optimizing the Prompt is Hard
Prefix Tuning은 학습이 어려우며, 학습 가능한 파라미터의 변화가 항상 일정하지 않다는 점에서 최적화가 쉽지 않음

 

4. Our Method

4.1 Low-Rank-Parameterized Update Matrices

1) pre-trained weight matrix W_0가 (d, k) dimension이라고 가정 (= W_0 ∈𝑅𝑑×𝑘)

2) accumulated gradient values(Δ𝑊) 또한 (d, k) dimension을 최종적으로 가지게 됨

-> 이를 row-rank 𝑟을 이용해서 Δ𝑊 = 𝐵𝐴로 나타냄

  • 𝐵∈𝑅𝑑×𝑟, 𝐴∈𝑅𝑟×𝑘
  • 𝑟 : 𝑑와 𝑘 중 작은 값과 비교할 때 훨씬 작도록 정의
  • W_0는 frozen되고 low rank로 decomposition된 B와 A만 학습하는 것

3) 훈련 과정에서 W_0는 gradient update를 하지 않고, 오히려 BA를 학습하는 과정으로 이루어짐

  • W_0과 Δ𝑊 = 𝐵𝐴는 같은 input에 곱해지고 그들의 output vector는 coordinate-wise하게 summation됨

4) 즉 forward passing 과정을 표현하면 아래와 같음

  • A : random Gaussian initialization됨
  • B : 0으로 initialization됨
  • 따라서 training 시작 시의 초깃값은 Δ𝑊 = 𝐵𝐴 = 0 
  • Δ𝑊x 는 𝛼/𝑟 으로 scaling 됨
    • Adam으로 optimization할 때 𝛼를 tuning하는 것은 learning rate를 tuning하는 것과 같이 함 -> 𝛼를 처음 𝑟 값으로 정함
  • scaling은 r값을 변화시킬 때 하이퍼파라미터를 재조정할 필요를 줄이는 데 도움이 됨

 

A Generalization of Full Fine-tuning

adaptation 중 full-rank가 필요하지 않고 LoRA의 rank를 pre-trained weight matrices의 rank 𝑟로 설정하면 full fine-tuning 훈련과 거의 수렴하게 됨

 

No Additional Inference Latency

inference시 기존 pre-trained weight W_0에 학습한 BA를 더해주고 사용하면 되므로 inference latency 성능 하락이 전혀 없음

W_0을 기반으로 또 다른 task로 학습한 B'A'가 있을 경우 BA를 빼주고 B'A'를 더해줘 사용하면 되므로 resuability가 좋음

  • Task A를 위한 adaptiation module를 BA, Task B를 위한 adaptiation module를 B'A' 이라고 할 때, Task A에서 Task B로 교체하기 위해서는 W0+BA에서 BA를 빼 준후 B'A'를 더해주면 됨

 

4.2 Applying LoRA to Transformer

LoRA는 LLM의 weight matrix 들 중 any subset에 적용 가능함 (Transformer에 LoRA를 적용할 때는 Wq, Wk, Wv, Wo 중 몇개를 훈련시킴)

  • 본 논문에서는 LoRA를 transformer에 적용할 때  오직 self-attention block의 weight matrix들 중 𝑊𝑞 또는 𝑊𝑘와 𝑊𝑣에만 LoRA를 적용함

 

 


[LoRA 논문 리뷰] - LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS (tistory.com)

 

[LoRA 논문 리뷰] - LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

*LoRA를 위한 논문 리뷰 글입니다! 궁금하신 점은 댓글로 남겨주세요! LoRA paper: https://arxiv.org/abs/2106.09685 LoRA: Low-Rank Adaptation of Large Language Models An important paradigm of natural language processing consists of larg

kyujinpy.tistory.com

LoRA 논문 리뷰 (velog.io)

 

LoRA 논문 리뷰

LoRA에 대해 알아보자

velog.io

[논문리뷰] LoRA: Low-Rank Ada.. : 네이버블로그 (naver.com)

 

[논문리뷰] LoRA: Low-Rank Adaptation of Large Language Models

너무나 유명한 PEFT(paremeter-efficient fine-tuning) 기법인 LoRA(low-rank adpation)을 제안한 ...

blog.naver.com

LoRA: Low-Rank Adaptation of Large Language Models 논문 리뷰 — da2so (tistory.com)

 

 

 

 

paper : [2403.05139] Improving Diffusion Models for Virtual Try-on (arxiv.org)

 

Improving Diffusion Models for Virtual Try-on

This paper considers image-based virtual try-on, which renders an image of a person wearing a curated garment, given a pair of images depicting the person and the garment, respectively. Previous works adapt existing exemplar-based inpainting diffusion mode

arxiv.org

github : yisol/IDM-VTON: IDM-VTON : Improving Diffusion Models for Authentic Virtual Try-on in the Wild (github.com)

 

GitHub - yisol/IDM-VTON: IDM-VTON : Improving Diffusion Models for Authentic Virtual Try-on in the Wild

IDM-VTON : Improving Diffusion Models for Authentic Virtual Try-on in the Wild - yisol/IDM-VTON

github.com

 

 

 

현재 데모 버전으로 제공 중

IDM VTON 플레이그라운드 - IDM VTON 온라인을 무료로 사용해 보세요 | idmvton.com

 

IDM VTON 플레이그라운드 - IDM VTON 온라인을 무료로 사용해 보세요 | idmvton.com

✨ Upgrade to Premium Plan to enjoy a better unlimited wardrobe experience!

idmvton.com

 

데모 사용해서 써봄. 예시로 올라와있는 사진을 사용했는데 대략 10초 좀 오버되게 걸리는 듯 하다

 

 


 

Abstract

Image VTON = image-based virtual try-on = 이미지 기반 가상 착용

: 사람과 의상을각각 묘사한 한 쌍의 이미지가 주어지면 큐레이션된 의상을 입은 사람의 이미지를 렌더링

 

기존 연구

-  exemplar-based inpainting diffusion model을 virtual try-on(가상 착장)에 적용해 다른 방법(GAN 기반)에 비해 생성된 비주얼의 자연스러움을 개선함

-  의상의 정체성을 보존하지 못한다는 단점 존재

=> 의상의 충실도 개선(세부 사항 더 잘 보존함) & 실제와 같은 가상 착장 이미지를 생성하는 새로운 diffusion model인 'IDM-VTON' 제안

 

IDM-VTON

-  두 가지 모듈 사용해 의복 이미지의 semantics을 인코딩

-  UNet이 base로 주어지면 1) visual encoder에서 추출한 high-level의 semantics을 cross-attention layer에 융합한 다음 2) parallel UNet에서 추출한 low-level semantics을 self-attention layer에 융합함

-  생성된 visual의 사실성을 높이기 위해 의상과 인물 이미지 모두에 상세한 text prompt를 제공함

-  pair로 구성된 사람과 의상의 이미지(person-garment images)를 사용 -> 충실도와 사실성 향상시키는 커스터마이징 기법 제공

 

 

Introduction

Image-based VTON

-  주어진 특정 의상을 임의의 인물에게 입힌 이미지를 시각적으로 렌더링하는 것이 목표인 CV 작업

-  VTON의 핵심 과제 : 의상의 패턴과 질감에 왜곡을 일으키지 않으면서 다양한 포즈나 제스처를 취하는 인체에 의상을 맞추는 것

-  이때 GAN 기반의 방법은 왜곡을 발생하기 쉬움 -> 최근의 diffusion 모델은 GAN에 비해 우수한 성능 보임

 

Diffusion model

-  의상의 세부 사항을 식별하기 위해 의상의 semantics를 psedowords로 인코딩하거나 명시적 warping network를 사용함

-  그러나 이러한 방법은 패턴, 질감, 모양 또는 색상 등의 의상의 세밀한 디테일을 보존하는데 부족함

=> 논문에서는 이러한 한계를 극복하기 위해 IDM-VTON을 제안함

 

IDM-VTON의 특징

1)  의상의 high-level semantics을 인코딩하는 image prompt adapter = IP-Adapter

2)  세밀한디테일을 보존하기 위해 low-level semantics을 추출하는 UNet encoder = GarmentNet

3)  single pair of garment and person images를 사용해 모델을 커스터마이징하는 방법을 제안함 -> 이미지의 시각적 품질 향상(특히 wild scenario에서)

4)  의류 이미지에 대한 상세한 캡션 제공 -> T2I diffusion model의 prior knowledge를 유지하는 것의 중요성을 보임

  • 상세한 캡션(예: 소매 길이, 목선 모양, 아이템 종류 등). 모델이 더 정확하고 자연스러운 이미지를 생성하는 데 기여함. 

 

Method

1. Backgrounds on Diffusion Models

Diffusion models

: 데이터에 Gaussian noise를 점진적으로 추가하는 forward process & 무작위로 noise를 점진적으로 제거해 샘플을 생성하는 reverse process로 구성되는 generative model

-  x_0 : data point (예: image or output of autoencoder인 latent)

-  noise schedules

-  forward process

 

이때 충분히 큰 sigma_t와 x_t는 pure random Gaussian noise와 다르지 않다. 

-  reverse process

: data distribution에 따라 x_t에서 initialized되고 x_t에서 x_0로 denoise된다. 

 

Text-to-image (T2I) diffusion models

: pretrained text encoder (ex: T5, CLIP text encoder)를 사용해 임베딩으로 인코딩된 텍스트에 조건부 이미지의 분포를 모델링하는 diffusion model

-  diffusion model을 위해 convolutional UNet이 개발되었지만, 최근 연구에서는 UNet을 위해 transformer architectures를 융합할 수 있다는 가능성을 보여줌

-  diffusion model의 training은 perturbed data distribution의 score function과 동등(equivalent)한 것으로 나타났는데, 이는 ϵ-noise prediction loss으로 드러남

-  data x_0와 text embedding c가 주어졌을 때, T2I diffusion model의 training loss 

  • classifier-free guidance (CFG) 사용 <- unconditional과 conditional 함께 학습 

-  training 단계에서 text conditioning은 무작위로 dropped out되고(=input에 null-text를 제공), inference 단계에서 CFG는 조건부 및 무조건 noise output을 보간해 text conditioning의 강도를 제어함

 

Image prompt adapter

본 논문에서는 reference image로 T2I diffusion model을 conditioning하기 위해 image encoder(예: CLIP image encoder)에서 추출한 feature를 활용하고 text conditioning에 추가적인 cross-attention layer를 attach하는 image prompt adapter (IP-Adapter)를 제안함

cross-attention layer 삽입

  • 원본 UNet을 고정하고(freezes), image embedding의 key & value값 매트릭스의 projection layer와 CLIP image embedding을 매핑하는 linear projection layer만 fine-tuning함
  • 𝑄 : UNet의 중간 표현으로부터 추출된 쿼리 행렬
  • 𝐾𝑐𝑉𝑐 텍스트 임베딩 𝑐로부터의 키 및 값 행렬
  • IP-Adapter는 이미지 임베딩 𝑖로부터의 키 및 값 행렬 𝐾𝑖𝑉𝑖를 계산하고, 이를 cross-attention layer에 삽입함 

 

2. Proposed Method

VTON을 위한 diffusion model을 설계하는 방법

-  x_p : 사람 이미지 (image of a person)

-  x_g : 의상 이미지 (image of a garment)

-  x_tr : 사람 x_p가 의상 x_g를 입은 이미지

=> x_tr을 생성해내는 것이 목표

 

masked image를 reference image로 채우는 것을 목표로 하는 exemplarbased(예시 기반) image inpainting 문제로 VTON을 캐스팅하는 것이 일반적인 관행임

-> 의상의 정보를 추출하고 diffusion model에 conditional controls를 추가하는 것이 중요함

 

이를 위해 IDM-VTON은 아래의 세 가지로 이루어져있다. 

1) TryonNet : masked person image를 pose information으로 처리하는 기본 UNet

2) IP-Adapter : 의상의 high-level semantics을 추출하는 image prompt adapter

  • high-level semantics :이미지의 전체적인 context나 특징 설명함.
    • 예: 의류 종류(티셔츠, 바지...), 스타일(캐주얼, 정장...), 소매 길이(반소매, 긴 소매 등) 

3) GarmentNet : 의상의 low-level semantics를 추출하는 garment UNet feature encoder

  • low-level semantics : 이미지의 세부적인 텍스처, 미세한 특징
    • 예: 질감(면, 실크...), 텍스처 세부 사항(의류의 재질감, 표면 디테일)

=> GarmentNet이라는 추가 UNet 인코더로 추출된 low-level feature들은 TryonNet의 self-attention layer에서 융합되고, cross-attention layer를 통해 IP-Adapter의 feature들과 함께 처리됨

 

Overview of IDM-VTON

 

(a) Overview of IDM-VTON

x_p를 처리하는 메인 UNet인 TryonNet, x_g의 high-level semantics를 인코딩하는 IP-Adapter, x_g의 low-level features를 인코딩하는 GarmentNet으로 구성돼있음.

1) UNet에 대한 input으로 noised latent x_t를 segmentation mask m, masked image, densepose와 연결함

  • 의상에 대한 자세한 캡션(위의 [V]) 제공 (예: [V]: “short sleeve round neck t-shirts”) 

2) 그 후 GarmentNet(예: “a photo of [V]”)과 TryonNet(예: "Model is wearing [V]”)의 입력 프롬프트에 사용됨

  • GarmentNet 입력 프롬프트: "A photo of [V]"
  • TryonNet 입력 프롬프트: "Model is wearing [V]"

(b) Attention Block

1) TryonNet과 GarmentNet의 중간 피처를 연결하여 self-attention layer로 전달하고 output으로 나온 전반부(주로 TryonNet의 피처를 포함함. fist half) 피처를 IP-Adatper의 input으로 사용함

  • TryonNet의 중간 피처 : 주로 인체의 모양과 포즈 정보 포함
  • GarmentNet의 중간 피처 : 의상의 low-level detail(예: 텍스처, 패턴)을 포함
  • 연결된 중간 피처는 사람 이미지와 의상 이미지 정보를 모두 포함함 

2) cross-attention layer를 통해 text encoder과 IP-Adapter의 피처와 output을 융합함

  • IP-Adatper는 텍스트 인코더와 CLIP 이미지 인코더로부터 추출된 high-level semantics를 결합해 최종 피처를 생성함. high-level semantics과 low-level features를 효과적으로 융합함. 의류 이미지의 고수준 의미론적 특성을 추출하고 이를 모델에 융합하는 역할을 함 
  • TryonNet과 IP-Adapter 모듈을 finetuning하고 다른 components는 freeze시킴

 

TryonNet

기본 UNet 모델로서, 본 논문에서는 latent diffusion model을 고려함

-  diffusion generative modeling은 VAE의 latent space에서 수행되고, output은 디코더 D로 전달되어 이미지를 생성함. 

-  기본 UNet의 input으로 아래의 네 가지 구성 요소를 결합함

1. latent of person image (사람 이미지의 잠재 표현)

 

2. mask m that removes the garment on the person image (사람 이미지에서 의류를 제거한 크기가 조정된 마스크 m)

3. the latent of masked-out person image (마스크된 사람 이미지)

4. the latent of the Densepose [9] xpose of a person image (사람 이미지의 densepose인 x_pose의 잠재 표현)

-  그 후 잠재 표현들을 채널 축을 따라 정렬함

  • 이떄 UNet의 합성곱 층을 13 채널로 확장하고 초기값은 모두 0으로 설정함

-  기존의 VTON diffusion model과 달리 본 논문에서는 SDXL inpainting model을 활용함

 

Image prompt adapter

high-level semantics를 의상 이미지에 조건화하기 위해 image prompt adapter(IP-Adapter)를 사용함

1) CLIP image encoder(OpenCLIP ViT-H/14)로 의상 이미지의 피처 추출

2) feature projection layers와 cross-attention layers를 fine-tune -> pretrained된 IP-Adapter로 초기화됨

-> 텍스트 임베딩과 이미지 임베딩을 결합함

3) 최종적으로 결합된 이 feature는 UNet의 중간 피처와 융함되어 high-level semantics를 반영함

 

GarmentNet

-  IP-Adapter로 이미 의상 이미지를 조건화했지만, 복잡한 패턴이나 그래픽 프린트가 있는 의상의 세부 사항을 보존하는 데에는 한계가 존재함 -> 의상 이미지의 low-level feature를 추출해 모델의 정확도를 높이는 역할 = GarmentNet

  • CLIP image encoder가 의류의 low-level feature를 추출하는 데 한계가 있기 때문

=> 추가적인 UNet encoder (GarmentNet)을 사용해 의상 이미지의 세부 사항을 인코딩함

 

1)  의상 이미지의 잠재 표현 epsilon(x_g)가 주어진 상태에서 pretrained UNet encoder를 통해 중간 표현(representation)을 얻고, TryonNet의 중간 표현과 결합함

  • SDXL의 UNet을 활용해 pretrained T2I diffusion model의 prior 지식을 최대한 활용함 

2)  결합된 특징에서 self-attention을 계산함. 이과정에서 TryonNet의 첫 번째 절반 차원만을 사용해 중요한 feature를 강조함

 

Detailed captioning of garments

대부분의 diffusion-based VTON

: pretrained T2I diffusion model을 활용하지만, text prompt를 input으로 사용하지 않거나 단순한 text prompt(예: "upper garment")를 사용함

=> 본 논문에서는 T2I diffusion model의 prior 지식을 사용하기 완전히 활용하기 위해 의류의 디테일(예: 형태나 이미지)을 설명하는 포괄적인 캡션을 제공함

 

-  상세한 캡션을 제공함으로써 모델이 의류의 high-level semantics를 더 잘 이해하고, 더 정밀하고 자연스러운 이미지를 생성할 수 있도록 도움

 

Customization of IDM-VTON

본 모델이 의류의 detail을 잘 캡쳐할 수 있지만, 사람 이미지 x_p와 의류 이미지 x_g가 training distribution와 다른 새로운 데이터일 때 어려움이 발생할 수 있음

-> 한 쌍의 의류-사람 이미지를 TryonNet에서 사용해 fine-tuning함으로 IDM-VTON을 효과적으로 커스터마이징해 새로운 데이터에서도 잘 작동함을 확인함

-  한 쌍의 x_p와 x_g 이미지를 모두 가지고 있을 때 : IDM-VTON 간단히 fine-tune

-  $x_p$만 존재 : 의상 $x_g$를 segment하고 배경 하얗게 처리해 x_g 얻음(생성)

  • TryonNet의 디코더 레이어만 파인튜닝하며, 이는 실험적으로 잘 작동함

 

Experiment

dataset : VITON-HD & DressCode & In-the-Wild 데이터셋 사용

  • VITON-HD는 11,647개의 훈련 이미지 쌍과 1,224개의 테스트 이미지 쌍을 포함하고 있으며, 주로 간단한 포즈와 단색 배경을 특징으로 함
  • DressCode는 17,032개의 훈련 이미지 쌍과 2,041개의 테스트 이미지 쌍을 포함하며, 다양한 패턴과 복잡한 배경을 특징으로 함
  • In-the-Wild 데이터셋을 사용하여 다양한 패턴과 로고가 포함된 복잡한 배경에서의 성능을 평가함

정량적 평가 결과, IDM-VTON은 모든 평가 지표에서 기존 방법들보다 우수한 성능을 보였으며, 정성적 평가 결과에서도 다양한 상황에서 고품질의 가상 착용 이미지를 생성하는 데 성공함.

특히, GarmentNet과 커스터마이징 기법이 모델의 성능 향상에 크게 기여함을 확인함.


왜 내 tistory에는 LATex가 적용이 안될까....

 

 

paper: Generative Modeling by Estimating Gradients of the Data Distribution (neurips.cc)

 

score-based generative model의 근본 논문이라고 한다.

 

논문을  간략히 요약하면 아래와 같다. 

 

1. 저차원 manifold 문제에서 score가 정의되고, score matching이 가능하도록 다양한 종류의 gaussian noise를 데이터 분포에 추가함으로써 데이터 분포의 gradient를 통한 score matching이 가능하게 한다. 

  • generative model을 구현하는데 있어 데이터 분포의 gradient를 근사하는 score function을 학습시키고, Langevin dynamics에서의 MCMC sampling을 활용

 

2. 모든 level의 noise를 추가한 데이터 분포의 gradient를 활용해 score network를 학습시킨 후 annealed Langevin dynamics를 통해 데이터를 sampling한다. 

  • sampling 과정에서 활용되는 brownian motion의 hyperparameter인 gaussian distribution의 variance를 고정하는 것이 아니라 geometric sequence를 이루는 순열을 사용해 annealing하는 방법을 사용함 

 

이 방법론은 DDPM과 같은 프레임워크(SDE)에서 설명되어, score-based diffusion을 구성하는 한 축이 된다. 

  • DDPM, NCSN 후 DDIM이 나왔다고 보면 된다고 함

 


Introduction

기존의 Generative Model은 크게 두 가지로 나뉜다. 

1. Likelihood-based models(우도 기반 모델) - normalizing flow models, VAE 등

  • PDF(확률밀도함수)를 직접 학습함. PDF를 정의하고 해당 PDF의 likelihood를 최대화하는 방법
    • 데이터의 distribution 자체를 모델링(데이터의 PDF 자체를 모델링해서 그 PDF로부터 sampling하면 생성이 되는 것) 
  • 한계 : 확률의 직접적인 계산이 가능하도록 하기 위해 tractable normaling constant가 보장되어야해서 아키텍처에 대한 제약이 있으며, 실제 데이터의 분포를 모르기 때문에 surrogate objectives(대리 목표)에 의존함 

 

2. Implicit generative models(암시적 생성 모델) - GAN

  • 직접적으로 PDF를 모델링하지 않고, Sampling process의 model에 의해 확률 분포를 암시적으로 표현함
  • 한계 : 모드 붕괴 등의 문제가 있는 불안정한 적대적 학습 기법에 의존함 -> 학습 불안정 or 성능 떨어짐 

 

이러한 문제를 해결하기 위해 Score-based Generative model은 Score matchingLangevin Dynamics를 활용한다.  

Score matching으로 훈련된 신경망을 사용해 데이터에서 vector field를 학습하고, Langevin dynamics를 사용해 sample을 생성한다.

 

하지만 이러한 방법도 문제점이 존재한다. 

1. 실제 세계에서의 데이터 세트가 그러하듯, 데이터 분포가 low dimensional manifold에 존재한다면 score는 ambient space에서 정의되지 않고 score matching도 일관된 score 추정치를 제공하는 데 실패한다. 

  • score는 데이터 분포의 log gradient라고 생각하면 된다. 

2. low data density 영역에서의 훈련 데이터의 희소성(ex: manifold로부터 멀어진 경우)는 score estimation의 정확도를 방해하고 Langevin dynamics sampling의 mixing을 느리게 한다. 

 

그래서 이 문제들을 해결하기 위해 위 논문에서는 

1. 다양한 크기의 random Gaussian noise를 data에 perturb한다. 

  • random noise를 주입함으로 결과 분포가 low dimension manifold에 국한되지 않게 한다.
    • noise의 수준이 크면 원래(unperturbed) 데이터 분포의 low density 영역에 샘플이 생성되어 score estimation이 개선된다.
  • 결정적으로 모든 noise level로 조건화된 단일 score network를 학습하고 모든 noise 크기에 대해 score를 추정한다. 

2. annealed version of Langevin dynamics를 제안한다. 

  • 처음에는 가장 높은 noise level에 해당하는 score를 사용하고, 점차적으로 원래 데이터 분포와 구별할 수 없을 정도로 작아질 때까지 noise level을 낮추는 an annealed version Langevin dynamics를 제안한다. 

 

이를 통해 제안한 objective는 score network의 모든 파라미터가 tractable하고 어떠한 구조적 제약을 받지 않도록 한다. 

또한 다른 모델들과의 정량적 비교도 가능하다. 

 

Score-based generative modeling(SBGM)

score-based generative modeling의 framework의 두 가지 요소로는 Score-matching, Langevin dynamics가 존재한다. 

Score 

: log-likelihood에 관한 1차 미분

  • 이 논문에서는 data density p(x)에 대한 log likelihood의 미분 의미
  • s_θ(x)로 표현함
  • 파라미터가 아닌 입력 데이터 x에 대한 미분임
  • 입력 데이터와 score의 input dimension은 동일해야 함

[논문 Summary] NCSN (2019 NIPS) "Generative Modeling by Estimating Gradients of the data distribution" (tistory.com)

 

  • D : a neural network parameterized by θ, which will be trained to approximate the score of p_data(x).
  • generative modeling의 목표 : 데이터 세트를 사용해 p_data(x)에서 새로운 samples를 생성하기 위한 모델을 학습하는 것

 

만약 PDF가 아래와 같은 형태로 정의된다고 할 때, normalizing constant Z는 복잡한 적분을 통해서 구해야 하기 때문에 계산이 쉽지 않다.

θ로 parameterize된 energy based model

 

하지만 score function을 이용해 log-likelihood를 계산한다고 하면, log-likelihood에 대해 미분을 취하기 때문에 아래 식과 같이 input에 independent한 normalizing constant 부분이 날아가고 계산이 더 쉬워진다.

 

score network 

논문에서는 Denoising score matching을 이용해 score network를 학습한다.

  • input : 데이터(x˜) / output: 데이터의 score

 

+)

데이터 생성을 모집단에서부터 sampling되는 것이라고 봤을 때, 모집단(MNIST)에서 sampling된 데이터들을 관측해서 분석을 진행하는 것.

  • 모집단에서 sampling된 데이터 = 데이터 분포에서 높은 확률값을 갖는 위치에 있는 데이터
  • 해당 데이터들이 높은 확률값을 갖기 때문에 sampling을 진행함에 있어서 자주 sampling이 되고 우리가 해당 데이터들을 관측하게 되는 것임

 

Score-based generative model의 기본적인 아이디어

간단한 score-based generative model

 

1. 데이터 공간 상에서 random한 noise 생성

2.  Score function(log PDF의 미분(gradient)) 계산

  • 데이터 분포의 PDF를 알고 있다고 가정함! 
  • score function은 데이터가 존재할 확률이 높은 방향을 가리킴

3. 초기 노이즈 상태에서 score function을 이용해 확률 값이 높아지는 방향으로 데이터를 점진적으로 업데이트 -> 데이터 포인트가 점점 실제 데이터 분포에서 높은 확률 밀도를 가지는 영역으로 이동함 

4. 업데이트 과정을 반복하면 초기 조이즈는 점차 샘플링된 데이터 와 유사한 데이터 생성 가능

  • = random한 noise가 실제 데이터와 유사한 샘플로 변환됨 => 우리가 원하는 데이터를 생성하는 것이 가능해지는 것

 

Score matching for score estimation

Score matching : score function을 학습함으로써 실제 PDF를 구하는 것이 아닌, score 값을 활용해 PDF를 추정하는 것을 의미한다. 데이터 분포의 log 확률 밀도의 경사를 학습해 해당 분포를 모델링하는 방법이다. 

    • 목표 : 주어진 데이터 x에 대한 score 값을 계산해주는 모델(Score Network)을 만드는 것
    • 원리 : 데이터 분포의 score 함수와 모델의 score 함수를 일치시키는 것

 

증명

score matching은 다음과 같은 목표함수를 최소화하여 달성된다.

Score matching을 사용하면 먼저 p_data(x)를 추정하는 모델을 훈련하지 않고도 score network s_θ(x)를 직접 훈련해 ∇x log p_data(x)를 추정할 수 있다. 

아래의 식에서 true data distribution의 score function(빨간색)과 estimate한 score function(파란색)간의 fisher divergence를 최소화해야 한다. (min Loss가 목표)

  • fisher divergence : 두 확률 밀도 함수 p(x)와 q(x) 사이의 차이를 측정하는 방법

score matching의 목표 함수(loss)

 

하지만 실제 data distribution(빨간색)을 알지 못하기 때문에 직접적으로 위 함수를 최소화하는 것은 불가능하다.

그래서 대신 부분 적분을 활용한 대리 손실 함수를 사용해 score matching을 진행한다.

대리 손실 함수 사용한 버

 

하지만 trace를 계산하는 과정에서 매우 큰 연산량이 요구된다는 단점이 존재한다.

  • score matching의 objective에 있는 trace를 계산하고 학습을 진행하려면 항상 dimension의 개수만큼 backpropagation을 진행해야한다는 문제점이 존재함 (계산 복잡) → 이미지와 같이 높은 dimension을 지니는 데이터에 score matching을 적용하는 것이 현실적으로 불가능해짐
  • 1024 X 1024 해상도의 이미지라면 총 1024번의 backpropagation을 수행해야 trace를 구할 수 있음

그래서 trace 연산을 효율적으로 수행하기 위한 방법으로 large scale score matching에 아래의 두 가지 방법을 사용한다. 

 

1. Denoising score matching

데이터 x를 입력받았을 때 x에 약간의 Gaussian noise를 추가한 x˜의 score를 예측한다. 

 

추가한 noise가 충분히 작으면 perturbated data distribution의 score가 원래 데이터의 score와 거의 같아서 원래 데이터의 score를 예측할 수 있다는 원리이다.

주어진 데이터의 분포에 대한 score를 직접 구하는 것이 아니라, 데이터에 주어진 noise에 대한 score를 구하는 것으로 문제를 변환한다. data point에 noise를 줘서 perturb(동요) 시키고 그 noise를 제거하는 방식으로 학습을 진행한다.

 

trace 부분을 대체하는데 아래의 distribution을 이용한다.

  • 사전 정의된 noise distribution :

  • noise perturbed data distribution :

→ 즉, 어떤 데이터 x가 주어졌을 때, 이것의 perturbed 데이터인 x˜의 분포를 학습하는 것

 

이때 위의 distribution을 바탕으로 objective function을 아래와 같이 수정해 모델을 학습할 수 있다.

 

즉, denoising score matching에서는 주어진 데이터의 분포에 대한 score를 직접 구하는 것이 아니라, 데이터에 주어진 noise에 대한 score를 구하는 것으로 문제를 변환하는 것!

 

2. Sliced score matching

random projection을 사용해 score matching의 tr(∇xsθ(x))의 근사치를 구한다. 

  • p_v : 다변량 표준 정규분포와 같은 random vector의 simple distribution
  • random projection의 과정: 무작위로 방향 벡터 v 선택 → 방향으로 projection 진행 → 그 point에 대해 score 계산

Denoising score matching과 달리 original의 unperturbed data distribution에 대한 score 추정값을 제공한다. 하지만 forward mode auto-differentiation으로 인해 4배 더 많은 계산을 필요로 한다. 

 

Sampling with Langevin dynamics - sampling

Langevin dynamics를 통해 score function log p_data(x)만을 사용해 PDF p(x)로부터 샘플을 생성할 수 있다. 

앞의 과정들을 통해 score network가 잘 학습되었다면 모든 데이터 공간 상에서의 score를 계산할 수 있는 것이다. 

  • 이전 시점의 data에 score값을 더해 다음 시점의 data를 추정. 이때 local maximum 등을 벗어나기 위해 random noise를 더해준다.

임의의 데이터(random noise)에서 시작을 해서 score를 타고 올라가다 보면, 높은 확률값(샘플링 데이터와 유사한)의 데이터를 생성하는 것이 가능해진다. 

다음 x˜값을 update하는 과정을 반복함으로써 true data distribution을 따르는 샘플링이 가능해지는 것이다.

 

즉, p_data(x)에서 sample을 얻으려면 먼저 sθ(x) ≈ ∇x log pdata(x) 가 되도록 score network를 훈련한 다음 이 score function  sθ(x)을 사용해 Langevin dynamics로 샘플을 대략적으로 얻는 것이다. = score-based generative modeling의 framework의 핵심 아이디어

 

Chanllenges of score-based generative modeling

하지만 나이브한 score-based generative model은 몇 가지의 문제점이 존재하는데, 논문에서는 Manifold Hypothesis, inaccurate low data density data, slow mixing of Langevin dynamic 총 3가지를 지적하고 있다. 

 

1. The manifold hypothesis

: 실제 데이터 분포는 low dimensional manifold에 집중되는 경향이 있다고 주장하는 가설

  • manifold : dataset을 잘 표현하는 subspace

 

이 가설에 의하면 SBGM은 아래 두 가지의 문제점을 갖게 된다. 

1. 데이터 x가 low dimensional manifold에 국한될 때 데이터의 score를 정의할 수 없다

  • score는 ∇x log pdata(x) 이므로 gradient를 구할 수 없으니 정의가 불가능함

2. 데이터의 분포가 whole space일 경우에만 일관된 score estimate를 얻을 수 있다

  • 본 논문에서는 Gaussian noise를 더함으로써 perturbated data distribution의 support를 whole space로 확장시켜 score matching이 일관되게 진행될 수 있도록 하였다. 



  • Figure 1 (좌)은 ResNet을 CIFAR-10에서 sliced score matching을 통한 score 추정을 진행했을 때의 결과로, noise를주지 않고 score function을 학습할 때 manifold hypothesis 하에서 어려움을 겪는 것을 확인할 수 있다.
  • (우) 에서는 약간의 Gaussian noise를 perturb줄 때 loss curve가 수렴하는 것을 보인다. 이는 Gaussian noise를 넣어줌으로 low demensional manifold에서 벗어나 perturbed data distributino이 온전히 R^D로 support 되기 때문이다. 

 

2. Inaccurate score estimation with score matching

: 자연 상태에서 가져온 데이터 분포가 우리가 알고자 하는 분포와 유사하다면, 실제 분포의 low density 영역의 data는 많이 없을 것이다.

즉, 데이터 분포가 sparse하기 때문에 특히 low density region에서 데이터의 희소성으로 score matching이 정확하게 이루어지지 않는 현상을 의미한다. (score function의 정확도가 낮아질 수 있다.)

 

사진에서 데이터 분포에 대한 실제 score와 예측된 score(noise가 주어지지 않은 상태에서 학습한 모델이 예측한 score)가 다르게 나타남을 확인할 수 있다.

  • 데이터가 주어진 부분(빨간색 점선) 내부의 예측은 정확하지만, 그 외 부분에 있어 오차가 발생한다.
  • (좌)에 비해 (우)의 중앙을 보면, 데이터가 적은 부분의 score가 제대로 구해지지 않는 것을 볼 수 있다. 

이는 실제로 score function이 수렴하는지에 대한 이슈이며, sampling이 정상적으로 이루어지고 있는가에 대한 의문을 갖게 만든다. 

 

3. Slow mixing of Langevin dynamics

low density의 score는 또 다른 문제가 있는데, 만약 data distribution이 low density regions로 나뉘게 된다면 Langevin dynamics가 제대로 작동하지 않을 수 있다는 것이다. 

 

예로 아래와 같은 mixture distribution이 있다고 가정해보자. 

 

  • π : data의 sampling을 결정하는 베르누이 분포 
  • p1(x)와 p2(x)는 각각 정규화된 분포이며, 서로 다른 support를 가짐

 

 

  • (a) : 실제의 iid sampling 결과
  • (b) : Langevin dynamics를 사용할 때의 결과

 이는 score function의 방식 때문에 나타나는 차이로, 설명하면 다음과 같다. 

p1(x)의 support에서 p_data(x)는 아래와 같이 근사된다.

이 경우, score function은 다음과 같이 계산된다.

따라서 p1(x)의 support에서 score function은

에 의존한다. 

마찬가지로, p2(x)의 support에서 score function은

에 의존한다. 

위의 두 경우 모두에서 스코어 함수 ∇x log p_data(x)는 π에 의존하지 않는다. 이는 이론적으로 π 값이 샘플링에 영향을 미치지 않는다는 것을 의미한다. 즉, 실제 분포와 상관없이 균일하게 sampling이 된다는 것이다.

⇒ Langevin dynamics는 결국 원본(a)과 정확하지 않은 것(b)을 생성하게 되는 것이다.

 

원래 데이터의 score인 ∇x log pdata(x)는 π에 의존하지 않기 때문에 MCMC sampling의 진행 과정에서 low density를 반영하지 못한다고 할 수 있다. 이론적으로는 수렴하게 하기 위해선 Langevin dynamics는 작은 step size와 많은 수의 step을 사용해야 한다고 한다. 

 

Noise Conditional Score Networks(NCSN): learning and inference

위 세 가지의 문제점을 극복하기 위해 논문에서는 perturbated data의 distribution을 이용하는 것이 score-based generative model에 적합하다고 결론을 내렸다.

  • perturb시킬 때 위 논문에서는 gaussian noise를 사용함

 

그 이유로는 아래와 같다. 

1. Gaussian distribution은 whole space에서 정의되기 때문에, low demension manifold에 국한되지 않으며, 이는 manifold가설에 위배되지 않는다. 

  • 가우시안 분포는 전체 공간에서 확률 밀도를 가지며 모든 방향으로 확산되어 있음. 이는 가우시안 분포가 저차원 구조에 국한되지 않음을 의미함.

2. Large noise가 unperturbated data distribution에서 low density region을 채우는 효과가 있어 더 향상된 score estimation이 가능하다. 

3. multiple noise level을 사용하여 실제 데이터 분포로 수렴할 수 있는 noise-perturbed distribution의 sequence를 얻을 수 있다. 

 

또한, simulated annealing과 annealed importance sampling의 정신으로 intermediate distribution을 활용해서 Langevin dynamics를 향상시킬 수 있다고 한다.

 

이러한 관점에서 논문의 저자는 아래의 두 가지 시도를 하였다. 

1. 다양한 레벨의 noise를 사용해 perturbated data를 만든다. 

2. single conditional score network로 모든 noise level에 대해 학습을 진행했다. 

 

이 두 목적을 이루기 위해 다음과 같은 score network, the training objective, annealing schedule for Langevin dynamic을 설명한다. 

 

Noise Conditional Score Networks

1. sigma scheduling

noise의 variance가 점점 커지는 형태로 이를 정의해서 이전 단계의 σ와 이후 단계의 σ비를 같게 설정하는 기하적 순열(=등비수열)(geometric sequence)를 이용했다.

 

시간에 따라 변화하지 않는 고정된 크기의 sigma(σ)를 사용하면 trade off 관계가 발생한다.

  • noise(= σ)가 크면 low density region에서의 score가 잘 정의되지만, 실제 data distribution을 너무 많이 perturb해 정확도가 낮아진다는 단점을 가진다.
  • 반대로 noise가 작으면 original data distribution에 비교적 작은 corruption을 할 수 있지만 sparse region에서의 score가 잘 정의되지 않아 오차가 발생하는 것이다. 

이러한 두 상황의 장점을 모두 취하기 위해 σ를 scheduling해서 변화시키며 넣어줘서 모든 noise level에 관해 학습을 진행하는 것이다. 기존의 Langevin dynamics로는 low density 부분을 accurate 할 수 없기에, data의 density의 σ(분산)를 키워서 low data density 부분에도 data가 존재하게끔 하는 것이다.

  • low data density가 있을 때의 score function의 경우

 

  • σ 를 키웠을 때의 score function의 경우 

 

 

그러나 σ 가 너무 크면 data의 정확한 density를 추정할 수 없으므로, σ 를 계속해서 바꿔주는 것이다.

σ를 계속해서 바꿔주는 이 방법을 annealed Langevin dynamics라고 하는 것이고, score function에 σ 를 조건부로 넣어주는 모델을 NCSN이라고 정의한다.

 

아래 그림에서 보이듯, σ가 작으면 low density를 잘 맞추지만, score function이 존재하지 않는 부분이 생기고, σ가 클 수록 모든 부분에 대해서 score function이 구해지는 것을 볼 수 있다. 이를 통해 NCSN 모델은 σ_large를 σ_small로 바꾸면서 sampling 결과를더 좋게 만드는 것이다. 

multiple scales of noise perturbations

 

하지만 이렇게 noise의 scale이 단계마다 다르면 각 단계마다의 obejective의 크기가 달라질 수 있다. 그렇기에 각 단계마다 적절한 weight를 가해서 objective를 더해줄 필요가 있다. 

 

즉, NCSN은 기존의 에 대해서 조건부로 noise를 주는 것인데, 여기서의 noise를 로 정의하여 score function을 새롭게 정의한다.

기존의 데이터에 noise가 더해지는 방식

 

 

2. Training NCSN via score matching

score function의 학습은 score matching을 활용한다고 언급했는데, 본 논문에서는 denoising score matching 기법으로 score function을 학습시켰다.(sliced score matching도 작동함)

  • 기존 score matching과의 차이점은 다수의 σ에 대응할 수 있도록 σ를 인자로 갖는 score function으로 정의하였다는 것이다. 

 

이때 noise distribution을 아래와 같이 정의한다. 

 

따라서 이때의 score function은 아래와 같이 정의할 수 있다. (가우시안의 미분)

 

즉 아까의 denoising score matching함수에 위 score function을 대입할 수 있다. 결론적으로 σ가 주어질 때 denoising score matching objective(loss function)는 아래(5)와 같다. 

이때 σ를 time step에 대해 정의하기 위해 최종적인 수식을 다음(6)과 같이 정의할 수 있다. 

 

  • (5) : σ가 주어질 때 denoising score matching objective
  • (6) : 모든 σ에 대해 합친 최종적인 objective

이때 λ 함수는 loss 값들의 크기 (Amplitude)를 균등하게 만들어주기 위하여 사용되었고, 주로 λ(σ)=σ^2으로 정의된다. 이는 score network가 실험적으로 1/ σ에 비례하기 때문에 이를 보정하기 위해서이다. 

이러한 사실까지 반영한 최종적인 수식은 아래와 같다. 

 

위 식은 아래와 같은 조건을 만족하기에  에 not dependent 하다고 한다.

 

 

3. NCSN inference via annealed Langevin dynamics

NCSN을 통한 데이터의 생성은 다음과 같이 진행된다. L개의 서로 다른 sigma에 대해 내림차순으로 적용하여, 각 sigma에 대해 Langevin dynamics를 활용한 MCMC 과정을 진행하게 된다.

이때 업데이트 되는 정도 (η)와 noise의 크기를 별도로 정의된 step size를 활용한 식으로 바꾸어 "signal-to-noise" ratio를 유지할 수 있도록 하였다. 최종적인 inference algorithm은 아래와 같다.

 

 

이중 루프를 통해 sampling이 진행되는데 outer loop는 perturbation step의 총 step수인 L만큼, inner loop는 우리가 설정한 T step만큼 돌게되며 step size는 alpha_i로 설정이 된다.

 

Experiments

NCSN을 통해 이미지를 생성하면 GAN과 비슷한 성능의 높은 퀄리티의 이미지를 생성할 수 있다.

  • 지금이야 GAN이 좀 오래된 모델로 여겨지지만, 당시 NCSN이 발표될 시점에서 GAN은 이미지 생성에서 성능이 가장 뛰어나다고 평가받고 있었기에 이러한 성능은 생성 모델계에서 괄목할 만한 성과였다고 할 수 있다.

 


[논문 리뷰]Generative Modeling by Estimating Gradients of the Data Distribution (velog.io)

 

[논문 리뷰]Generative Modeling by Estimating Gradients of the Data Distribution

Review

velog.io

[논문 Summary] NCSN (2019 NIPS) "Generative Modeling by Estimating Gradients of the data distribution" (tistory.com)

 

[논문 Summary] NCSN (2019 NIPS) "Generative Modeling by Estimating Gradients of the data distribution"

[논문 Summary] NCSN (2019 NIPS) "Generative Modeling by Estimating Gradients of the data distribution" 목차 논문 정보 Citation : 2022.12.08 목요일 기준 531회 저자 Yang Song, Stefano Ermon - Stanford University 논문 링크 Official https:/

aigong.tistory.com

NCSN 설명 (Noise conditional score network 설명) - 유니의 공부 (tistory.com)

 

NCSN 설명 (Noise conditional score network 설명)

NCSN은 noise conditional score network의 줄임말로, 데이터를 점점 더 작아지는 노이즈로 perturb함으로써 기존 score matching의 문제를 해결한 최초의 높은 성능의 score-based diffusion model이다. Yang Song의 Generativ

process-mining.tistory.com

Generative Modeling by Es.. : 네이버블로그 (naver.com)

 

Generative Modeling by Estimating Gradients of the Data Distribution

사실 이 논문을 이해하기까지 굉장히 오랜 시간이 걸렸다. 생소한 용어들도 많이 있었기 때문에 생성 모델 ...

blog.naver.com

Generative Modeling by Estimating Gradients of the Data Distribution (Noise Conditional Score Network) (glanceyes.com)

 

Generative Modeling by Estimating Gradients of the Data Distribution (Noise Conditional Score Network)

Diffusion Model의 시초인 Diffusion Probabilistic Models부터 Score-based Generative Model(NCSN), Denoising Diffusion Probabilistic Models(DDPM) 그리고 Denoising Diffusion Implicit Models(DDIM)까지 정리하는 시리즈의 세 번째 글에서는

glanceyes.com

Score-based model에 대한 이해 (corelinesoft.com)

 

paper : https://arxiv.org/pdf/2302.05543.pdf

 

ControlNet은 pretrained text-to-image diffusion model에 대한 extra conditions를 추가함으로써 이미지 생성을 컨트롤하는 neural network이다. prompt 대신 input conditioning images의 sematics (ex_ edges, poses, depth 등)을 직접 인식하는 것이다. ControlNet을 사용해 다음과 같은 작업을 수행할 수 있다. 

  • Specify human poses
  • Copy the composition from another image
  • Generate a similar image
  • Turn a scribble into a professional image

ControlNet을 간략하게 설명하자면, large image diffusion model의 weights를 trainable copy와 locked copy로 복제한 다음 trainable copy를 input condition에 대해 훈련시키는 것이다. 이 두 block은 zero convolution으로 연결된다. 


Abstract

본 연구에서 소개하는 ControlNet은 pretrained된 대규모 text-to-image diffusion model에 공간적인 conditioning을 추가하는 신경망 아키텍처이다. ControlNet은 대규모 diffusion model을 잠그고(lock), 수십억 개의 이미지로 pretrained된 깊고 강력한 인코딩 레이어를 백본으로 재사용해 다양한 조건부 제어 세트를 학습한다.

neural architecture는 0에서 점진적으로 파라미터를 증가시키는 "zero convolutions" (zero-initialized convolution layers)로 연결되어 있어서 유해한 노이즈가 finetuning에 영향을 미치지 않도록 한다. 또한 edges, depth, segmentation, human pose 등 다양한 conditioning controls를 단일 또는 여러 조건을 사용해 프롬프트 유무에 관계없이 SD로 테스트한다. 또한 소규모(50k미만) 및 대규모(1m 이상) dataset에서도 robust함을 보인다. 

 

Introduction

text-to-image model은 이미지 공간을 제어하는 데 한계가 존재했고,텍스트 프롬프트만으로는 복잡한 레이아웃, 포즈, 모양, 형태를 정확하게 표현하기가 어려웠다. 머릿속의 이미지와 정확히 일치하는 이미지를 생성하기 위해 프롬프트를 편집하고 결과 이미지를 검사한 다음 프롬프트를 다시 편집하는 수많은 시행착오를 반복해야 하는 경우가 많았다.

머신러닝과 컴퓨터 비전에서는 사용자가 원하는 이미지 구성을 직접 지정할 수 있도록 추가 이미지(예: edge maps, human pose skeletons, segmentation maps, depth, normals 등)를 이미지 생성 프로세스의 condition으로 처리하는 경우가 많다. image-to-image model은 컨디셔닝 이미지에서 목표 이미지로 매핑을 학습한다. 

이미지 변형 생성, inpainting과 같은 몇 가지 문제는 학습이 필요없는 기술(training free techniques)로 해결할 수 있지만, depth-to-image, pose-to-image 등과 같은 더 다양한 문제에는 end-to-end 학습과 데이터 기반의 솔루션이 필요하다.

  • 학습이 필요없는 기술의 예 : denoising diffusion process, editing attention layer activations

하지만 대규모 text-to-image diffusion model에서 conditional controls를 end-to-end 방식하는 것은 쉽지 않다. 특정 조건에 대한 학습 데이터의 양이 일반적인 text-to-image 학습에 사용할 수 있는 데이터보다 훨씬 적을 수 있기 때문이다. 제한된 데이터로 pretrained된 대규모 모델을 직접 finetuning하거나 계속 훈련하면 과적합 및 catastrophic forgetting이 발생할 수 있다.

  • catastrophic forgetting(파괴적 망) : 새로운 데이터에 학습을 지속할 때 이전에 학습한 정보를 심각하게 잊어버리는 것

이러한 문제는 훈련 가능한 파라미터의 수나 순위를 제한함으로써 완화할 수 있으나, 본 연구에서는 복잡한 shape과 다양한 high-level semantics를 가진 conditioning image를 처리하기 위해 더 심층적이거나 맞춤화된 신경 아키텍처를 설계하였다. 

 

논문에서 제안하는 ControlNetpretrained text-to-image diffusion model(본 논문의 inplementation에는 SD)을 위한 conditional controls를 학습하는 end-to-end neural network architecture이다. 

  • end-to-end : 시스템의 모든 구성 요소를 통합해 전체 프로세스를 한 번에 처리하는 방식. 입력 데이터가 시스템에 입력되면 출력 결과가 나올 때까지 모든 중간 단계를 포함해 완전한 처리를 수행함. 개별적으로 최적화된 서브시스템을 별도로 통합하는 것이 아니라, 전체 시스템이 한 번에 최적화되도록 설계됨. 입력부터 출력까지 '파이프라인 네트워크'가 없이 한 번에 처리한다는 뜻. 
    • 파이프라인 네트워크 : 전체 네트워크를 이루는 부분적인 네트워크

ControlNet은 두 개의 neural network block을 가진다. 본 논문에서는 그 중 하나를 locked copy라고 부르고, 또다른 하나를 trainable copy라고 부른다. 이 둘은 original model의 weigts들의 copy들로, locked copy는 파라미터를 frozen시켜 훈련에 사용하지 않고, trainable copy만 훈련에 사용한다. 파라미터를 lock(frozen)하고 trainable copy를 만들어서 대규모 모델의 품질과 성능을 보존하는 것이다. 이 아키텍처는 pretrained 대규모 모델을 다양한 조건부 학습을 위한 강력한 백본으로 취급한다. 그리고 이 두 neural net block은 특별한 종류의 convolution layer인 zero convolution layers로 연결되어 훈련동안 0에서 점진적으로 증가한다. 

  • 0으로 initialize하는 이유? : noise된 conv layer라면 condition을 받고 trainable copy로 전달해줄 때 초반 몇 step 만에 trainable copy가 condition을 잘 이해하지 못하고 망가질 가능성이 높기 때문

이 아키텍처는 훈련 초기에 대규모 diffusion modeld의 deep features에 유해한 노이즈가 추가되지 않도록 하며, trainable copy의 대규모 pretrained 백본이 이러한 노이즈로 인해 손상되지 않도록 보호한다. zero convolution이 새로운 노이즈를 더하지 않기 때문에 학습 역시 diffusion model의 finetuning만큼 빠르다. 

  • zero convolution layer : weight, bias가 모두 0으로 initialize된 layer

위 논문에서 ControlNet이 다양한 conditioning inputs(예: Canny edges, Hough lines, user scribbles, human key points 등)으로 SD를 제어할 수 있음을 확인했다. 텍스트 프롬프트가 있든 없든 단일 conditioning image를 사용해 테스트했고, multiple conditions을 어떻게 서포트하는지 입증한다. 또한 다양한 크기의 데이터 세트에서 ControlNet의 훈련이 강력하고 확장 가능하며, depth-to-image conditioning과 같은 일부 작업의 경우 단일  NVIDIA RTX 3090Ti GPU에서 컨트롤넷을 훈련하면 대규모 컴퓨팅 클러스터에서 훈련된 산업용 모델과 경쟁할 수 있는 결과를 얻을 수 있음을 보였다.

  • depth-to-image conditioning : 컴퓨터 비전과 관련된 기술로서, 특정 깊이 데이터를 기반으로 이미지 생성 프로세스를 조건화하는 과정. 주어진 깊이 정보에 따라 이미지를 생성하도록 모델을 학습시키는데 이용됨.

 

따라서 본 논문을 요약하면,

1. 효율적인 finetuning을 통해  pretrained text-to-image diffusion model에 공간적으로 국소화된 input conditions를 추가할 수 있는 신경망 아키텍처인 ControlNet을 제안

2. Canny edges, Hough lines, user scribbles, human key points, segmentation maps, shape normals, depths, cartoon line drawings를 조건으로 SD를 제어하는 pretrained ControlNet을 제시

3. 여러 대안 아키텍처와 비교한 실험을 통한 검증 & 다양한 작업에 걸쳐 이전의 여러 기준에 초점을 맞춘 user studies

의 내용이 담겨있다 .

 

Related Work

Finetuning Neural Networks

neural network를 finetuning하는 방법은 학습 데이터를 추가해 직접 학습을 계속하는 것이다. 하지만 이 방식은 과적합, mode collapse, catastrophoc forgetting으로 이어질 수 있어서 이러한 문제를 막기 위한 finetuning 전략 개발이 광범위하게 진행되어왔다. 

  • HyperNetwork : NLP 커뮤니티에서 시작된 접근 방식으로, 작은 순환 신경망을 훈련해 더 큰 신경망의 가중치에 영향을 미치는 것을 목표로 함. 
  • Adapter : pretrained transformer model에 새로운 모듈 레이어를 삽입해 다른 작업에 맞게 사용자 정의하기 위해 NLP에서 널리 사용됨. 사전 학습된 백본 모델을 다른 작업으로 전송하기 위해 CLIP과 함께 자주 사용됨. 연구에서 사용되는 T2IAdapter는 외부 조건에 따라 SD를 조정함. 
  • Additive Learning : 원래 모델의 가중치를 frozen하고 학습된 weight masks, pruning(가지치기), hard attention을 사용해 소수의 새로운 파라미터를 추가함으로써 망각을 방지함. 
  • LoRA : 매개변수화된 많은 모델들이 low intrinsic dimension subspace에 존재한다는 결과에 기반해 lowrank 행렬로 매개변수의 오프셋을 학습함으로써 catastrophic forgetting을 방지함.
  • zero-initialized layers : ControlNet에서 네트워크 블록들을 연결하는 데에 사용됨. 

 

Image Diffusion

  • Image Diffusion Models : LDM은 latent image space에서 수행해 계산 비용을 절감함. text-to-image diffusion models은 CLIP과 같은 pretrained 언어 모델을 통해 텍스트 입력을 latent vector로 인코딩함. Glide는 이미지 생성 및 편집을 지원하는 텍스트 유도 확산 모델임. Disco diffusion은 clip guidance와 함꼐 텍스트 프롬프트를 처리함. Stable Diffusion은 latent diffusion을 대규모로 구현한 것임. Imagen은 latent image를 사용하지 않고 피라미드 구조를 사용해 픽셀을 직접 확산함. 
  • Controlling Image Diffusion Models : image diffusion process는 색상변화 및 인페인팅에 대한 일부 제어 기능을 직접 제공함. Text-guided control methods 방법도 존재함. MakeAScene은 세그멘테이션 마스크를 토큰으로 인코딩해 이미지 생성을 제어함. SpaText는 분할 마스크를 localized token embedding으로 매핑함. GLIGEN은 diffusion model의 attention layer에서 새로운 매개변수를 학습함. Textual Inversion과 DreamBooth는 image diffusion model을 finetuning함으로써 생성된 이미지의 콘텐츠를 개인화할 수 있음. Promptbased image editing은 프롬프트를 사용해 이미지를 조작할 수 있는 실용적인 도구를 제공함.

Image-to-Image Translation

Contidional GANs와 transformer는 서로 다른 이미지 도메인 간의 매핑을 학습할 수 있음. 

 

Method

ControlNet은 공간적으로 국소화된 task-specific image conditions으로 pretrained text-to-image diffusion models을 향상시킬 수 있는 신경망 아키텍처다.

ControlNet

ControlNet은 신경망의 블록에 추가적인 conditions을 주입한다. 

 

(a) : neural network block : feature map x를 입력으로 받아 다른 feature map y를 출력

(b) : (a)에 ControlNet 추가한 bolck. neural network block을 locked한 것인 locked copy와 trainable copy를 만든 다음 zero convolution layer(가중치와 바이어스가 모두 0으로 초기화된 1× 1 convolution)을 사용해 서로 연결한다. 

  • ControlNet은 large diffusion model의 weights를 trainable copy와 locked copy로 복제함
    • trainable copy : conditional control을 배우기 위해 task-specific 데이터셋에 대해 학습된 것
    • locked copy : 기존 network의 capability를 보존함

output y_c의 c는 네트워크에 추가하고자 하는 conditioning vector이다.

 

(a)를 diffusion process에 접목시키게 되면 특정 시점의 noised latent vector z_t가 input으로 들어가서 다음 시점의 noised latent vector z_(t-1)을 예측하는 것과 같다.

(b)의 locked neural network block은 원래의 diffusion model로 파라미터가 고정된채 변하지 않게끔 하면 하면 사전 학습된 디퓨전 모델의 이미지를 만드는 성능을 해치지 않고 가만히 놔둘 수 있다. 회색의 locked는 가만히 놔두고 우측의 trainable copy만 condition에 대해 학습하는 것이다. 

 

구체적으로 어떻게 해당 학습이 효과적으로 conditioning을 할 수 있는지 수식적으로 살펴볼 수 있다. 

 

(a) neural network block

 

2D feature에서 feature map x가 정의되어 있다면, neural network block F(; Θ)는 블록에 포함되는 파라미터 Θ를 통해 input feature map x를 y로 transform하게 된다. 

  • network block : 신경망의 단일 unit을 형성하기 위해 조합되는 neural layer들(ex: "resnet" block, "conv-bn-relu" block, multi-head attention block, transformer block 등)을 지칭함

equation 1

  • F(; Θ) : 파라미터 Θ를 사용해 feature map x를 다른 feature map y로 변환하는 훈련된 neural block - Figure 2. (a)
    • Θ : 파라미터들의 집합
  • feature map x : R {h, w, c} height, width, number of channels in the map

 

(b) (a) + ControlNet

 

pretrained neural block에 ControlNet을 추가하려면, 원본 block의 파라미터 Θ를 lock하고(학습하지 않을 것) 이를 복사한 파라미터 Θ_c를 사용해 trainable copy에 블록을 복제한다.  (Θ_c는 Θ를 똑같이 복제한 것)

  • trainable copy parameter  Θ_c 는 external conditioning vector(input condition) c를 input으로 받아 학습에 사용

이 구조를 SD와 같은 대규모 모델에 적용하면 locked parameters는 수십억 개의 이미지로 훈련된 production-ready model을 보존하고, trainable copy는 이러한 large pretrained models을 재사용해 다양한 input conditions를 처리하기 위한 깊고 견고한 백본을 구축한다. 

 

Zero convolution

 

훈련 가능한 copy를 Z라 할 때, 이 Z는 zero convolution layers로 locked model에 연결된다. 구체적으로 Z는 가중치와 바이어스가 모두 0으로 초기화된 1×1 convolution layer이다. 각 neural block의 앞 뒤로 하나씩 붙는다고 생각하면 된다. 

  • zero convolution은 feature map의 크기를 변화시키면 안되기 때문에 1×1 크기를 가지는 convolution이고, weight와 bias모두 0으로 초기화된 상태로 학습이 시작된다. input에 상관없이 처음엔 모두 0으로 output을 내뱉는다. 

ControlNet을 구축하기 위해 각각 파라미터 Θ_z1, Θ_z2를 갖는 두 개의 zero convolutions 객체를 사용한다. 그러면 완전한 ControlNet은 ControlNet block의 output인 y_c를 계산한다. 

 

equation 2
equation 2를 z_ Θ1, z_ Θ2로 했을 때의 식

 

즉 위 식에서 +로 붙은 부분이 ControlNet에 해당하는 부분이고, 그 앞의 F(x; Θ)가 (a)에 해당하는 부분인 것이다. 

 

첫 번째 훈련 단계에서는 zero convolution layer의 가중치와 바이어스 파라미터가 모두 0으로 초기화되므로 위 식의 Z 항이 모두 0으로 평가된다. 따라서 아래와 같은 식을 얻을 수 있다. 

 

첫 번째 식이 y, 마지막 줄이 y_c를 의미한다. 위 식은 다음과 같이 해석된다. 

 

이 내용이 암시하는 것은, training이 시작되는 당시에는 ControlNet 구조에 의한 input/output 관계가 사전학습된 diffusion의 input/output과 전혀 차이가 없다는 것이다. 쉽게 말해 ControlNet이 기존 neural network block에 적용되더라도 optimization되기 전에는 neural network 깊이가 증가해도 영향을 미치지 않는다는 것이다. 

 

이렇게 하면 훈련이 시작될 때 유해한 노이즈가 훈련 가능한 copy Z의 신경망 레이어의 hidden states에 영향을 줄 수 없다. 또한, Z(c; Θ_z1) = 0 이고, Z도 input 이미지 x를 받으므로 Z는 완전히 작동하며 pretrained model의 기능을 유지해 추가 학습을 위한 강력한 백본 역할을 할 수 있다. 기존 모델 neural block의 capability, functionality, result quality는 완벽히 보존되며, 이후의 optimization 과정은 finetuning만큼 빠르다. (scratch부터 해당 layer들을 학습시키는 것보다 훨씬 빠르다. )

 

zero convolutions는 초기 훈련 단계에서 random noise를 gradients로 제거하여 이 백본을 보호한다. 근데 weight, bias를 0으로 주면 학습이 안되는거 아니냐라는 질문을 할 수 있는데, 이는 아래의 간단한 미분식으로 아니라는 것이 증명된다. 

 

즉 w=0이고 input x는 0이 아닐 때 편미분 값이 0이 아니므로 backpropagation을 통해 0이 아닌 값으로 업데이트가 되는 것이다.

좀 더 일반화해서 설명을 하면 

forward process

zero convolution의 forward process가 위와 같을 때 (W = weight, B= bias) gradient는 아래와 같다. 

gradient

 

 

0이 아닌 weight를 만들기 때문에 다음 step에서는 0이 아닌 어떠한 다른 값으로 update가 된다.  

 

ControlNet for Text-to-Image Diffusion

> SD를 예로 ControlNet이 어떻게 pretrained diffusion model에 조건부 제어를 추가할 수 있는가?

 

ControlNet 부분은 Stable diffusion encoder block을 그대로 복사하여 encoder 부분만 학습을 시켜서 condition이 포함된 encoding을 하는 것이다.

 

(a) Stable Diffusion

  • 기본적으로 인코더, 디코더, 중간 block, skip-connected decoder가 있는 U-Net 구조
  • 인코더와 디코더는 모두 12개의 블록을 포함하며, 전체 모델에는 중간 블록을 포함해 25개의 블록이 포함됨
    • 25개 블록 중 8개 블록은 다운샘플링 또는 업샘플링 컨볼루션 레이어
    • 나머지 17개 블록은 각각 4개의 리셋 레이어와 2개의 ViT를 포함하는 메인 블록임
    • 각 ViT에는 여러 개의 cross-attention self-attention mechanism이 포함됨

  • 위 그림에서 (a)는 4개의 리셋 레이어와 2개의 ViT가 포함되어 있으며, “×3” 은 이 블록이 세 번 반복됨을 나타낸다. 
    • 잠긴 회색 블록 : SD V1.5(또는 동일한 U-Net 아키텍처를 사용하는 V2.1)의 구조 보여줌
    • 훈련 가능한 파란색 블록과 흰색 제로 컨볼루션 레이어가 추가되어 ControlNet을 구축함
  • text prompt : CLIP text encoder 사용해 인코딩함
  • diffusion timesteps : positional encoding을 사용하는 time encoder 사용해 인코딩함

(a)와 같이 사전 훈련된 diffusion model(ex: SD의 latent UNet)의 파라미터(가중치)를 복제해 "trainable copy"와 "locked copy"로 나눈다. locked copy는 대규모 데이터셋에서 학습한 방대한 지식을 보존하고, trainable copy는 과제별 측면을 학습하는 데 사용된다. trainable copy와 locked copy의 매개변수는 zero convolution layer로 연결된다. 

 

ControlNet 구조는 UNet의 각 encoder level에 적용된다. 특히 12개의 인코딩 블록과 1개의 SD 중간 블록의 훈련 가능한 copy를 생성하는 데 ControlNet을 사용한다. 12개의 인코딩 블록은 4개의 해상도(64×64, 32×32, 16×16, 8×8)로 구성되며, 각 블록은 3번씩 복제된다.

output은 12개의 skip-connections과 1개의 중간 블록에 추가된다. SD는 UNet 구조이므로 이 제어망 아키텍처는 다른 모델에도 적용될 수 있다. locked copy parameters가 frozen되어있기 때문에 finetuning을 위한 원래의 locked encoder 기울기 계산이 필요하지 않으므로 계산적으로 효율적이다. (GPU 메모리 절약에 좋은 방식임)

  • skip-connections : 딥러닝에서 사용되는 네트워크 구조 중 하나로, 입력 데이터가 네트워크의 여러 layer를 건너뛰어 출력 layer에 직접 연결되는 방식을 의미. 그래디언트 소실 문제를 완화하는 데 사용됨 ex) ResNet, UNet
    • UNet에서는 skip-connection을 통해 downsampling 과정에서 발생하는 정보의 손실을 보충함. UNet은 구조상 하이레벨 feature를 뽑는 과정에서 feature에 대한 정보는 얻지만, 정확한 detail적인 측면에서는 손실이 발생함. 이런 문제를 Upsampling 이후 skip connection을 만들어서 detail을 보충하는 방식으로 해결함
      좌 : 평범한 블록 / 우: skip-connection을 이용한 블록
    • 위에서 보면 알 수 있듯 일반 블록과 다르게 2개의 conv layer를 뛰어넘어버리는 것을 볼 수 있다.

Image Diffusion models: 점진적으로 이미지 노이즈를 제거 & 훈련 도메인에서 샘플 생성하는 방법 학습함

노이즈 제거 과정은 pixel 공간 또는 훈련 데이터에서 인코딩된 잠재 공간에서 발생할 수 있음

SD는 잠재 이미지를 훈련 도메인으로 사용함 & VQ-GAN과 유사한 전처리 방법을 사용해 이미지를 더 작은 잠재 이미지로 변환함

 

SD는 학습 과정의 안정화를 위해  512 × 512 이미지로 이루어진 전체 dataset을 64 × 64 latent images로 변환하는 pre-processing method를 사용한다. (VQ-GAN과 유사) 

이는 ControlNet 역시 convolution size를 맞추기 위해 image based condition을 64 × 64 feature space로 보내야 함을 의미한다. 논문에서는 tiny network ε()를 사용해 encode 한다. 

 

따라서 SD에서 ControlNet을 추가하는 과정을 정리하면 아래와 같다.  

1. 각 input conditioning image(ex: edge, pose, depth 등)를 512 × 512의 크기에서 SD의 크기와 일치하는 64 × 64 feature space vector로 변환함

2. 4 × 4 kernels과 2 × 2 strides로 구성된 4개의 convolution layer로 구성된 tiny network ε()를 사용해 image space condition ci를 feature space conditioning vector c_f로 encode함

 

encoder는 512 × 512 condition을 64 × 64 feature map으로 만든다. 

 

latent diffusion process는 conditioning part와 실제디퓨전 모델 학습이 end-to-end가 아닌 분리된 형태를 가진다는 특징이 존재했다. 따라서 end-to-end 학습을 할 수 있는 방법을 강구하게 되었고, 그 방법으로 ControlNet이 제안된 것이다. 

 

 

앞의 내용들을 간단하게 요약하면 아래와 같다. 

  • diffusion model의 parameter를 복사해 새로운 학습 프레임워크를 원래 parameter와 병렬로 구성
    • 이를 trainable(학습가능한) copy와 locked(학습 불가능한) copy라 칭함
    • locked copy는 기존 network의 성능인 이미지 생성에 필요한 representation을 유지하고 있음
    • trainable copy는 conditional control을 위해 여러 task-specific dataset에 대해 학습되는 프레임워크임
  • locked copy와 trainable copy는 zero convolution을 통해 서로 연결됨
    • zero convolution 또한 학습 가능한 레이어에 속한다. 

 

Training

입력 이미지 z_0이 주어지면 image diffusion 알고리즘은 이미지에 노이즈를 점진적으로 추가해 노이즈가 있는 이미지 z_t를 생성하고, t는 노이즈가 추가된 횟수를 나타낸다. time step t, text prompt c_t, task-specific condition c_f를 포함한 conditions들이 주어지면 image diffusion 알고리즘은 아래의 loss를 이용해서 네트워크 ϵ_θ를 학습해 노이즈 이미지 z_t에 추가된 노이즈를 예측한다. 

  • loss는 기존 diffusion 알고리즘에 task specific condition c_f만 추가한 형태임

loss

 

위의 learning objective는 ControlNet으로 diffusion model을 finetuning하는 데 직접 사용된다. 

 

훈련 과정에서 text prompt c_t의 50%는 빈 문자열로 무작위로 대체된다. 훈련 과정에서 zero convolution은 네트워크에 노이즈를 추가하지 않기 때문에 모델은 항상 고품질 이미지를 예측할 수 있어야 한다. 

 

 

Experiments

 

 

 

 

input image & scribble map

 

  • Prompt: Professional high-quality wide-angle digital art of a house designed by frank lloyd wright. A delightful winter scene. photorealistic, epic fantasy, dramatic lighting, cinematic, extremely high detail, cinematic lighting, trending on artstation, cgsociety, realistic rendering of Unreal Engine 5, 8k, 4k, HQ, wallpaper
  • Negative Prompt: longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality

자세히 프롬프트를 줬을 때 ControlNet을 쓰지 않고 SD만으로도 퀄리티있는 이미지가 생성됨을 알 수 있다. 하지만 ControlNet을 사용함으로 이미지의 레이아웃이 잡힌 채로 생성이 되는 것을 볼 수 있다.

 

 

 


 

Skip connection과 LSTM에 대하여 : 네이버 블로그 (naver.com)

 

Skip connection과 LSTM에 대하여

skip connection(=residual architecture)를 이용하면 layer가 깊어져도 안정적으로 gradient를 업데...

blog.naver.com

ControlNet: A Complete Guide - Stable Diffusion Art (stable-diffusion-art.com)

 

ControlNet: A Complete Guide - Stable Diffusion Art

ControlNet is a neural network that controls image generation in Stable Diffusion by adding extra conditions. Details can be found in the article Adding

stable-diffusion-art.com

Welcome to JunYoung's blog | ControlNet 논문 이해하기 및 사용해보기 (junia3.github.io)

 

Welcome to JunYoung's blog | ControlNet 논문 이해하기 및 사용해보기

들어가며 ControlNet의 논문 제목 풀네임은 ‘Adding conditional control to text-to-image diffusion models’이다. 이른바 ControlNet이라고 불리는 이번 연구는 사전 학습된 large diffusion model을 어떻게 하면 input condit

junia3.github.io

[논문리뷰] ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models (jang-inspiration.com)

 

[논문리뷰] ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models

depth, canny, segmentation 등으로 pretrained diffusion model을 컨트롤 하는 ControlNet을 알아보자

jang-inspiration.com

 

+) 이건 앞에서 리뷰했던 IPAdapter과 ControlNet의 차이점

Difference/use case between ipadapter and control net? : r/StableDiffusion (reddit.com)

 

From the StableDiffusion community on Reddit

Explore this post and more from the StableDiffusion community

www.reddit.com

Adding Conditional Control to Text-to-Image Diffusion Models (ControlNet) (tistory.com)

 

Adding Conditional Control to Text-to-Image Diffusion Models (ControlNet)

https://arxiv.org/abs/2302.05543 Adding Conditional Control to Text-to-Image Diffusion Models We present ControlNet, a neural network architecture to add spatial conditioning controls to large, pretrained text-to-image diffusion models. ControlNet locks th

bigdata-analyst.tistory.com

 

Paper : 2308.06721.pdf (arxiv.org)

github : tencent-ailab/IP-Adapter: The image prompt adapter is designed to enable a pretrained text-to-image diffusion model to generate images with image prompt. (github.com)


 

IP-Adapter (Image Prompt Adapter)는 이미지를 프롬프트로 사용할 수 있는 stable diffusion 애드온이다. IP-Adapter를 사용하면 참조 이미지로부터 스타일, 구도, 얼굴을 복사할 수 있다. 

IP-Adapter의 경우 2023년 8월 중순에 릴리즈해 9월 5일에 WebUI에서 사용할 수 있게 된 어댑터이다.

  • 애드온(add-on) : 컴퓨터의 성능을 향상시키기 위해 회로나 메모리를 추가하는 것

기존에는 퀄리티 좋은 그림을 뽑아 내기 위해 아주 힘들게 positive, negative prompt를 직접 작성하거나, 그것도 안되면 어디서 PNG 정보를 긁어오거나 해야만 했다. 그렇게하여 이미지를 생성한다 하더라도, 원하는 화풍과 구도로 입맛에 맞는 그림을 뽑아 내기란 쉽지 않다. 

하지만 IP-Adapter 기능을 사용하면, 직접 생성 혹은 촬영한 이미지 뿐만 아니라 인터넷에 있는 수많은 이미지를 prompt화 할 수 있으며, 원한다면 여기에 text prompt를 추가해 text-to-image, image-to-image, inpainting 탭에서 퀄리티 있는 그림을 손쉽게 뽑아낼 수 있게 되는 것이다. 

추가로 기존의 베이스모델(SDXL 버전까지 지원), 그리고 파인튜닝된 커스텀 모델들 또한 사용 가능하다는 점이 장점이다 .

 


 

Abstract

최근 몇 년 동안 대규모의 text-to-image diffusion model은 고화질 이미지 생성에 강력한 성능을 보임이 입증되었다. 하지만 text prompt만 사용해 원하는 이미지를 생성하는 것은 복잡한 프롬프트 엔지니어링을 수반하는 경우가 많기에 매우 까다로운 작업이다. 이때 text prompt의 대안으로 사용되는 것이 image prompt이다. 

기존의 방법은 pretrained model에서 직접 fine-tuning을 거치는 것으로, 효과적이지만 대규모 컴퓨팅 리소스가 필요하고 다른 기본 모델과 text prompt, structural control과 호환되지 않는다는 단점이 있었다. 이때 위 논문은 pretrained text-to-image diffusion model의 image prompt의 기능을 향상시키기 위한 IP-Adapter를 소개한다. 

 

IP-Adapter의 핵심 설계로는 text feature과 image feature에 대한 cross-attention layer를 분리하는 cross-attention 메커니즘이다. 이 방식은 간단할 뿐만 아니라 2200만 개에 불과한 파라미터로 완전히 미세 조정된 (fully fine-tuned) image prompt model과 비슷하거나 더 나은 성능을 달성할 수 있다는 장점을 가진다. 기존의 pretrained diffusion model은 고정되어 사용되는데, 이와 달 IP-Adapter는 base model에서 fine-tuned된 다른 custom model 뿐만 아니라 기존의 제어 가능한 도구들을 이용해 제어 가능한 생성에도 일반화해서 사용할 수 있다는 이점을 가진다. 분리된 cross-attention 전략은 멀티모달 이미지 생성에도 사용될 수 있다. 

  • '기존의 pretrained diffusion model은 고정되어 사용된다' = 'pretrained diffusion model의 가중치를 변경하지 않고 고정한다' -> 모델의 핵심 구조와 학습된 패턴을 유지할 수 있음. 
  • '기존의 제어 가능한 도구' = '특정 속성을 조절하는 메커니즘'.
    ex) 특정 색상, 스타일 또는 이미지 내 객체의 배열과 같은 요소들을 사용자가 직접 조정하고 조절할 수 있음을 의미함.

 

Introduction

사용자는 강력한 text-to-image diffusion model (ex: GLIDE, DALL-E, Imagen, Stable Diffusion, eDIFF-I, RAPHAEL 등)을 사용해 text prompt를 작성해 이미지를 생성할 수 있다. 하지만 원하는 이미지를 생성하기 위해서 좋은 text prompt를 작성하는 것은 쉽지 않다. 복잡한 프롬프트 엔지니어링이 필요한 경우도 많고, 또한 텍스트만으로 복잡한 장면이나 개념을 표현하기에는 정보가 부족할 수도 있기 때문이다. 

이러한 text prompt의 단점을 극복하기 위해 사용될 수 있는 것이 바로 image prompt이다. 이미지는 텍스트에 비해 더 많은 내용과 디테일들을 표현할 수 있기 때문이다. "이미지는 천 마디 말보다 가치 있다"는 말처럼 말이다. 

그러나 대부분의 기존 text-to-image diffusion model은 텍스트에서 이미지를 생성하기 위해 텍스트를 조건화(conditioned)한다. 그 예로 SD model은 고정된 CLIP text encoder에서 추출한 text feature를 조건화한다. 이 때 위 논문의 IP-Adapter는 이러한 text-to-image diffusion model에 image prompt를 사용해 간단한 방식으로 생성 기능을 활성화하려고 시도한다. 

  • 고정된 CLIP text encoder를 사용하면, 인코더의 가중치나 파라미터가 학습 과정에서 업데이트 되지 않고 초기 상태 그대로 유지된다. 인코더의 학습이 더 이상 진행되지 않는 이러한 접근 방식은 특정 도메인이나 맥락에 대해 더 잘 최적화될 수 있는 기회를 제한시킬 수 있다. (유연성의 제한)

 

prior work

1) SD Image Variations2 & StableunCLIP3

: image prompt의 구현을 향상시키기 위햇는 이미지 임베딩에 직접 text-conditioned diffusion model을 fine-tuning하는 것이 효과적이다는 사실이 드러났다. 하지만 이러한 방식은 다음과 같은 단점이 존재한다. 

  • 텍스트를 사용해 이미지를 생성하는 원래의 기능이 제거되고, 이러한 fine-tuning에는 많은 컴퓨팅 리소스가 필요한 경우가 많다.
  • fine-tuning된 model은 재사용할 수 없다.
    • fine-tuning된 text-to-image model은 특정 작업에 대해서는 우수한 성능을 보이지만, 그 능력이 다른 custom model로 쉽게 전달되거나 재사용되기 어려움
  • 새로운 모델은 downstream application에 상당한 문제를 야기할 수 있다. 
    • downstream application : 특정 기술, 프로세스, 데이터셋 또는 시스템을 기반으로 개발된 응용 프로그램이나 작업. 'downstream'이라는 용어는 원래의 출발점이나 기본 기술로부터 파생된 후속 작업을 의미함.

이러한 fine-tuning의 단점 때문에 일부 연구에서는 diffusion model의 fine-tuning을 피하면서 text encoder를 image encoder로 대체하는 방법을 선택하기도 한다. 

 

2) Prompt-free diffusion: Taking" text" out of text-to-image diffusion models

: fine-tuning의 단점 때문에 diffusion model의 fine-tuning을 피하면서 text encoder를 image encoder로 대체하는 방법을 선택한 연구이다. 하지만 이러한 방식도 아래와 같은 단점이 존재한다 .

  • 처음에는 image prompt만 지원되므로 사용자가 텍스트와 이미지 prompt 둘을 동시에 사용해 이미지를 만들 수 없다.
  • image encoder를 fine-tuning하는 것만으로는 이미지의 품질을 보장할 수 없고, 일반화 문제가 발생할 수 있다. 

 

따라서 위 IP-Adapter 논문에서는 원본 text-to-image model을 수정하지 않고도 image prompt 기능을 구현할 수 있는지에 의문을 가졌다. 기존의 다른 adapter들의 연구에서 얻을 수 있는 내용은 아래와 같다. 

 

 

3) ControlNet & T2I-adapter

: text-to-image diffusion model에 추가적인 네트워크를 효과적으로 연결해 이미지 생성을 더 효과적으로 할 수 있게끔 해주었다. 특히 레퍼런스 이미지에서 제공하는 스타일이나 콘텐츠를 적용한 이미지 생성에도 성공적으로 사용된다. 이러한 작업을 위해 CLIP image encoder엣 추출한 image feature를 학습 가능한 network를 통해서 새로운 feature에 매핑한 다음, text feature와 연결한다. 이렇게 원본 text feature를 대체함으로써 병합된 feature들은 diffusion model의 UNet에 공급되어 이미지 생성을 안내한다. 이러한 adapter는 image prompt를 사용할 수 있는 기능으로 볼 수 있지만, 생성된 이미지는 image prompt로 제시된 원본 이미지의 특정 측면만을 반영하고 전체적으로는 다를 수도 있다. 

  • ControlNet : SD 기반으로 구축된 인공신경망 모델. SD의 가장 기본적인 형태는 text-to-image로 텍스트 프롬프트에 조건부여(conditioning)로서 입력하면, 이를 바탕으로 이미지를 생성하는 것임. ControlNet은 조건부여를 하나 더 추가하는 것. 

 

 

위 논문에서는 위 방법들의 주 문제점은 text-to-image diffusion model의 cross-attention 모듈에 있다고 주장한다. pretrained 된 diffusion model에서 cross-attention layer의 key와 value 값을 정사영하는 가중치는 텍스트의 피쳐를 잘 적용하도록 학습된다. 그 결과 이미지 특징(파쳐)과 텍스트 특징을 cross-attention layer에 병합하면 이미지 피쳐를 텍스트 피쳐에 정렬하는 작업만 수행되지만, 일부 이미지별 정보가 누락될 가능성이 있으며 결국에는 reference image로 제어 가능한 세분화된 정보(예: 이미지 스타일)만 생성될 수 있다. 

 

이러한 단점을 피하기 위해 논문에선 IP-Adapter라는 이미지 프롬프트 어댑터를 제안한다. IP-Adapter는 가볍지만 효율적인데, 아래와 같은 특징을 지닌다. 

  • 텍스트 피쳐와 이미지 피쳐에 대해 분리된(decoupled) cross-attention 메커니즘 사용
    • diffusion model 속 UNet의 모든 cross-attention layer에 대해 이미지 피쳐에 대해서만 추가적인 cross-attention layer를 추가함.
    • 훈련 단계에서 새로운 cross-attention layer의 파라미터만 훈련되고, 원래의 UNet 모델은 고정된 상태로 유지됨.
    • 이미지 프롬프트와 텍스트 프롬프트가 호한되어 멀티모달 이미지 생성이 가능함.
  • 2200만 개의 매개변수만 존재 -> 성능은 text-to-image diffusion model에서 완전히 finetuned된 이미지 프롬프트 모델과 비슷함.
  • 일반화 기능이 뛰어나고 text prompt와 호환됨. 
  • ControlNet과 같은 다른 제어 가능한 어댑터와 호환됨.

pretrained text-to-image diffusion model에 제안한 IP-Adapter를 적용한 다양한 스타일의 이미지 합성

 

 

Related Work

Text-to-Image Diffusion Models

대규모의 text-to-image model은 크게 autoregressive model과 diffusion model의 두 가지 범주로 나뉜다. 

1. Autoregressive model - ex) DALLE, CogView, Make-A-Scene

: VQ-VAE와 같은 이미지 tokenizer를 사용해 이미지를 token으로 변환한 다음, text token을 조건으로 하는 autoregressive transformer(자동 회귀 트랜스포머)를 학습시켜 이미지 token을 예측한다. 하지만 고품질 이미지를 생성하기 위해 많은 양의 파라미터와 컴퓨팅 리소스가 필요한 경우가 많다. 

 

2. Diffusion model - ex) GLIDE, DALL-E 2, Imagen, Re-Imagen, SD

: 현재 텍스트만 조건으로 하는 text-to-image diffusion model에 이미지 프롬프트를 지원하기 위한 작업이 진행중이다. fine-tuning model은 이미지 프롬프트를 사용해 이미지를 성공적으로 생성할 수 있지만 상대적으로 많은 학습 비용이 필요하고, 기존 도구(예: ControlNet)과 호환되지 않는 경우가 많다. 

 

Adapters for Large Models

사전 학습된 대규모 모델을 fine-tuning하는 것은 비효율적이므로, 훈련 가능한 매개변수를 몇 개 추가하되 원래 모델을 고정하는 어댑터를 사용하는 것이 그에 대한 대안이 될 수 있다. 어댑터(Adapter)는 NLP 분야에서 오랫동안 사용되어 왔는데, 최근에는 대규모 언어 모델에 대한 시각 언어 이해를 달성하기 위해 사용되고 있다. 

또한 최근 text-to-image model이 인기를 끌면서 text-to-image model 생성을 위한 추가적인 control을 제공하는 데도 어댑터가 사용되었다. 

  • ControlNet : pretrained text-to-image diffusion model로 어댑터를 훈련해 작업별 입력 조건을 학습할 수 있음을 증명함. 사용자가 제공한 이미지로 생성 유도 & 학습 없이 간단한 피쳐 삽입을 통해 SD 모델에서 이미지 변형 가능
  • T2I-adapter : 생성된 이미지의 색상과 구조를 간단한 어댑터로 제어 가능함을 증명함. 스타일 어댑터가 CLIP Image encoder에서 추출한 이미지 피쳐에 텍스트 피쳐를 추가해 reference image를 사용해 생성된 이미지의 스타일을 제어할 수 있도록 설계됨
  • Uni-ControlNet : fine-tuning 비용을 줄이기 위해 multi-scale condition injection 전략을 제시 

어댑터는 위의 구조 제어용 역할 외에도 제공된 이미지의 콘텐츠와 스타일에 따라 제어 가능한 생성을 위해서도 사용된다. 위의 어댑터들은 가볍지만 fine-tunedimage prompt model과 성능면에서 한참 떨어진다. IP-Adapter의 decoupled cross-attention mechanism은 간단하고 작지만 이전 어댑터 방법보다 성능이 뛰어나고 심지어 fine-tuned model과 비슷한 성능을 보인다. 

 

 

Method

Prelimiaries

Diffusion model은 두 가지의 프로세스로 구성된 생성 모델의 한 종류로, 고정된 Markov chain의 T step을 사용해 데이터에 가우시안 분포를 점진적으로 추가하는 diffusion process(forward process)와 학습 가능한 모델을 사용해 가우시안 노이즈에서 샘플을 생성하는 denoising process로 구성된다. 이때 diffusion model은 text-to-image diffusion model의 경우 텍스트와 같은 다른 입력에 따라 조건이 설정될 수도 있다. 

일반적으로 노이즈를 예측하는 diffusion model의 training object(훈련 목표)는 ϵ_θ로 표시되며, 이는 변형 바운드(variatioal bound)의 단순화라고 정의된다. 

 

  • 변형 바운드(variational bound) 

 

  • x_0 : 추가 조건 c가 있는 실제 데이터
  • t∈ [0, T] : diffusion process의 time step
  • xt = αtx0 + σtϵ : t step의 noisy data
    • αt , αx : diffusion process를 결정하는 predefined functions

모델 ϵ_θ가 trained되면 random noise로부터 이미지를 생성한다. 일반적으로 inference 단계에서는 생성 과정을 가속화하기 위해 DDIM, PNDM, DPM-Solver등의 고속 sampler를 사용한다.

 

conditional diffusion model에서의 classifier guidance는 별도로 trained된 분류기의 기울기를 활용해 이미지의 충실도와 샘플 다양성의 균형을 맞추는 데 사용되는 간단한 기법이다 .분류기를 독립적으로 훈련할 필요를 없애기 위해 분류기 없는 guidance(classifier free guidance)가 대체 방법으로 사용된다. 

  • classifier-free guidance : conditional diffusion model과 unconditional diffusion model을 jointly trained(동시에 훈련)하는 과정에서 훈련 중에 무작위로 c(예: 텍스트 설명)를 생략함으로써 독립적인 분류기를 훈련할 필요가 없어짐
    • 조건부 확산 모델 : 특정 조건(예: 텍스트 설명)에 기반하여 샘플(예: 이미지)를 생성하는 모델
    • 비조건부 확산 모델 : 조건 없이 샘플을 생성하는 모델. 일반적인 데이터 분포에서 샘플 생성
    • text-to-image diffusion model에서 classifier free guidance는 생성된 샘플의 image-text alignment를 향상시키는 데 중요한 역할을 함

classifier-free guidance에서 조건부와 비조건부 예측을 가중 평균해 최종 예측을 얻는 formulation

 

  • w : guidance weight(scale)
    • 조건 c에 따라 정렬을 조정하는 스칼라
  •  ϵ_θ(x_t,c, t) : 조건 c가 주어졌을 때의 예측
  • ϵ_θ(x_t, t) : 조건 없이 만들어진 예측

본 연구의 IP-Adapter는 오픈 소스 SD 모델을 기본 모델로 활용해 구현됐다. SD는 고정된 CLIP 텍스트 인코더에서 추출한 텍스트 특징에 다라 조건이 설정된 latent diffusion model을 의미한다. architecture는 UNet을 기반으로 하고, Imagen과 같은 pixel-based 확산 모델에 비해 pretrained auto-encoder의 latent space에 구축되기에 더 효율적이다. 

 

Image Prompt Adapter

image prompt adapter : pretrained text-to-image diffusion model이 image prompt가 있는이미지를 생성할 수 있도록 설계되었다. 

현재의 어댑터는 fine-tuned image prompt model이나 처음부터 trained된 모델의 성능을 따라잡는 데 어려움을 겪고 있다. 그 가장 큰 이유로는 사전 학습된 모델에 이미지 피쳐를 효과적으로 임베드할 수 없기 때문이다. 대부분의 방법은 단순히 연결된 피쳐를 고정된 cross-attention layer에 공급하기 때문에 diffusion model이 image prompt에서 세분화된 특징을 포착하지 못한다. 이 문제를 해결하기 위해 IP-Adapter는 새로 추가된 cross-attention layer에 이미지 피쳐를 임베드하는 decoupled cross-attention (분리된 cross-attention) 전략을 제시한다.

  • decoupled cross-attention mechanism : 텍스트 피쳐와 이미지 피쳐에 대한 cross-attention layer를 분리
    • 텍스트와 이미지 프롬프트를 모두 사용해 이미지 생성 과정을 유도하는 다중 모드 이미지 생성에 유용함
    • 사전 훈련된 텍스트에서 이미지로 변환하는 확산 모델에 이미지 프롬프트 기능을 제공하기 위해 설계

IP-Adapter의 전체 아키텍처

 

IP-Adapter는 Image encoder과 decoupled cross attention이 적용된 모듈 두 부분으로 크게 구성되어있다. 

  • Image encoder : 이미지 프롬프트에서 이미지 피쳐 추출
  • decoupled cross-attention : 이미지 피쳐를 pretrained text-to-image diffusion model에 임베드 

 

1. Image Encoder

 

IP-Adapter는 pretrained된 CLIP image encoder model을 사용해 이미지 프롬프트에서 이미지 feature를 추출한다. CLIP image encoder의 global image embedding을 활용하는데, 이는 이미지의 풍부한 콘텐츠와 스타일을 표현할 수 있게 해준다. 

  • CLIP model : 이미지와 텍스트 쌍이 포함된 대규모 데이터 세트에 대해 대조 학습으로 훈련된 멀티모달 모델. 이미지를 고차원 벡터로 변환하는 역할을 함. 
    • global image embedding : 이미지가 변환된 고차원 벡터. 이미지의 전체적인 내용과 구조를 압축적으로 담고 있음. 이미지와 텍스트 사이의 의미적 유사성을 학습하고 이를 기반으로 임지를 분류하거나 특정 쿼리와 관련된 이미지를 검색하는 데 활용될 수 있음. 

학습 단계에서는 CLIP image encoder가 고정된다. global image embedding을 효과적으로 분해하기 위해 훈련가능한 작은 projection network를 사용해 임베딩을 길이 N의 특징 시퀀스로 투영한다. 이때 이미지 피쳐의 차원은 pretrained diffusion model의 텍스트 피쳐의 차원과 동일하다. 본 연구에서는 N=4로 설정했으며, projection network는 linear layer과 Layer normalization으로 구성된다. 

 

2. Decoupled Cross-Attention

이미지 피쳐는 decoupled cross-attention modeule에 적응된 pretrained된 UNet model에 통합된다. 원래의 SD 모델에서는 CLIP text encoder의 텍스트 피쳐가 cross-attention layer에 공급되고 UNet 모델에 연결된다. cross-attention output Z ′는 아래와 같다. 

text cross attention output

  • Z : 쿼리 피쳐
  • c_t : 텍스트 피쳐
  • Q, K, V : attention 연산의 쿼리,키, 값 행렬
  • W_q, W_k, W_v : 훈련가능한 linear projection layer

이미지 피쳐를 넣는 가장 간단한 방법은 이미지 피쳐와 텍스트 피쳐를 연결한 다음 cross-attention layer에 공급하는 것이다. 하지만 논문에서 제안한 decoupled cross-attention mechnism은 이미지 피쳐에 대한 cross-attention layer를 분리한다.

기존 UNet 모델에 이미지 피처를 삽입하기 위해 각 cross-attention layer에 새로운 cross-attention layer를 추가한다. 이미지 피처 c_i가 주어지면 새로운 cross-attention output Z ′은 아래와 같다. 

image cross-attention에도 text cross-attention과 동일한 쿼리(Q)를 사용한다는 점을 유의해야 한다. 이에 따라 각 cross-attention layer에도  W ′ _k, W ′ _v 두 개의 매개변수만 추가하면 된다. 수렴 속도를 높이기 위해 두 매개변수는 W_k, W_v에서 초기화된다. 

  • 동일한 쿼리를 사용하는 이유? -> 이미지와 텍스트 정보를 모두 통합하여 처리할 때 모델의 일관성을 유지하면서도 두 유형의 데이터 간의 상호작용을 효과적으로 학습할 수 있게 도와줌

 

 

image cross attention output

 

그 후 최종 decoupled cross-attention 공식은 아래와 같이 Z ′와 Z ′′의 합으로 구성된다.

 

 

 

 

3. Training and Inference

training은 pretrained diffusion model의 파라미터를 고정한 상태로 유지하면서 IP-Adapter만 최적화한다. 또한 원본 SD와 동일한 training objective를 사용해 image-text pairs1으로 데이터 세트에 대해 훈련된다. 

변형바운드

 

inference 단계에서 classifier-free guidance로 training할 수 있도록 image conditions를 무작위로 drop한다. 

 

여기서는 이미지 condition이 삭제되면 CLIP image embedding을 0으로 처리한다. 

text cross-attention과 image cross-attention이 분리되어 있기 때문에 inference 단계에서 아래와 같이 이미지 조건의 가중치를 조정할 수도 있다. 

 

  • λ : 가중치 계수. λ=0이면 원본 text-to-image diffusion model(Attention(Q, K, V)이 된다. 

 

Experiments

 

 

 

 

 

 

IP-Adapter: 너무 많아서 정리한다 (internetmap.kr)

 

IP-Adapter: 너무 많아서 정리한다

IP-adapter(Image Prompt adapter)는 이미지를 프롬프트로 사용할 수 있는 스테이블 디퓨전 애드온입니다. IP-adapter를 사용하면 참조 이미지로부터 스타일, 구도, 얼굴을 복사할 수 있습니다. 이 글에서는

www.internetmap.kr

스테이블디퓨전 IP-Adapter 완벽 튜토리.. : 네이버블로그 (naver.com)

 

스테이블디퓨전 IP-Adapter 완벽 튜토리얼 1편

안녕하세요. 오늘은 스테이블디퓨전 WebUI 에 최근 추가된 어뎁터인 IP-Adapter의 기능에 대해 설명...

blog.naver.com

ControlNet 익스텐션 - 이미지 생성 AI 활용 (wikidocs.net)

 

ControlNet 익스텐션

[ControlNet](https://github.com/lllyasviel/ControlNet)은 복잡한 모델을 제어하는 신경망 구조다. 사용자가 원하는 추가 입력 조건을 받아…

wikidocs.net

Stable diffusion, Control.. : 네이버블로그 (naver.com)

 

Stable diffusion, ControlNet 용어공부

ComfyUI 가지고 깨작깨작하다가 남의 노드 갖다 쓰려니 아는게 없어서 공부 중 뭐하나 수정하면 에러를 ...

blog.naver.com