no image
[CS224N] Lecture 1 - Introduction and Word Vectors
Human Language and word meaning인간이 다른 동물에 비해 발전할 수 있었던 것은 언어를 통해 의사소통하고, 지식을 전달할 수 있었기 때문 = NLP를 해야하는 이유 과거: Human language 를 통해 지식을 전달했음 상대적을 slow network를 형성(bandwidth 가 작음) -> 내용을 축약해서 전달함 : 대화하는 사람이 어느정도의 배경 지식을 보유하고 있다고 가정하고 대화함-> 그러므로 짧은 단어만 이용해서 더 많이 이해할 수 있음컴퓨터가 자연어 처리를 하기 위해서는 문맥에 맞는 단어, 단어의 뜻을 파악할 수 있어야 함-> meaning이 무엇인가? (what is meaning?) 사전적인 "의미"의 정의 = 단어 혹은 구절, 표현들을 통해 전달하고자 하는 생각..
2024.07.15
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
linux 기초
운영체제(OS)컴퓨터의 하드웨어와 소프트웨어 사이에서 소통을 도와주는 인터페이스. 하드웨어와 사용자 간의 중개자 역할을 하는 소프트웨어. 하드웨어 리소스 관리 & 응용 프로그램이 하드웨어를 효율적으로 사용할 수 있도록 지원함EX) 유닉스, 리눅스, 윈도우, OS, X, 안드로이드 등 컴퓨터는 다양한 장치들이 한데 묶여서 각자의 역할이 상호작용하게끔 한다고 볼 수 있는데, 이 장치들이 상호작용을 하게끔 환경을 만들어 주는 것이 OS라고 할 수 있음 linux유닉스 계열의 운영체제의 운영체제. 대형 컴퓨터에서 사용하는 유닉스 소스 코드를 수정하여 개인 PC에서도 사용할 수 있는 오픈 소스로 개발하고 자신의 이름을 따서 리눅스로 정함즉, 유닉스를 개인 컴퓨터에서 사용할 수 있도록 한 것 = 리눅스EX) 우분투..
2024.07.05
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
Jacobian을 왜 사용하는가
수리통계학(1) Transformation; .. : 네이버블로그 (naver.com)  수리통계학(1) Transformation; 왜 Jacobian인가?수리통계학을 시작하고 처음 '어렵다!'라고 느끼는 곳은 아마 변환 부분일 것이다. 받침(Suppor...blog.naver.com 계산의 용이성을 위해서나, 표본을 더 잘 이해하기 위해 변환을 시행한다. (로그변환 등)근데 이 변한은 그냥 할 수 없는 것. y = g(x)라 하고, 단순히 x 자리에 g-1(y)를 넣는 것으로 끝나지 않는다.함수를 정의하던 X의 영역에서 Y의 영역으로 변화가 일어난 것으로, X의 support를 A라고 했다면, Y의 support를 단순히 A라고 말 할 수 없다. (정의역(support)에 대해 Y를 적분하면 X에 ..
2024.05.14

Human Language and word meaning

인간이 다른 동물에 비해 발전할 수 있었던 것은 언어를 통해 의사소통하고, 지식을 전달할 수 있었기 때문

= NLP를 해야하는 이유

 

과거: Human language 를 통해 지식을 전달했음 

  • 상대적을 slow network를 형성(bandwidth 가 작음)
    -> 내용을 축약해서 전달함 : 대화하는 사람이 어느정도의 배경 지식을 보유하고 있다고 가정하고 대화함
    -> 그러므로 짧은 단어만 이용해서 더 많이 이해할 수 있음

컴퓨터가 자연어 처리를 하기 위해서는 문맥에 맞는 단어, 단어의 뜻을 파악할 수 있어야 함

-> meaning이 무엇인가? (what is meaning?)

 

사전적인 "의미"의 정의 = 단어 혹은 구절, 표현들을 통해 전달하고자 하는 생각

=> 인간이 의미를 인식하는 방법은 Signifier(symbol - 단어)를 보고 그 속에 숨겨진 signified(idea or thing - 의미)를 받아들이는 것

인간의 의미 인식 과정

 

 

컴퓨터가 의미를 인식하는 방법 = WordNet

 

WordNet

: 영어의 의미 어휘목록.  Thesaurus(유의어 반의어 사전) = synonym sets(동의어) + hypernyms(상의어)

  • 영어 단어를 'synset'이라는 유의어 집단으로 분류해 간략하고 일반적인 정의를 제공하고, 이러한 어휘 목록 사이의 다양한 의미 관계를 기록함
    • ex) 컴퓨터는 good이라는 단어를 보고 의미를 파악할 때 good과 비슷한 명사, 형용사, 부사 등을 사람이 기록한 사전을 보고 파악
  • 단어의 synonym 과 hypernyms 를 사용해서 dictionary 를 구성
  • human labor를 통해서 구성된 hand-built resources임
  • 단어에 대한 어느정도의 의미를 제공할 수 있음

 

WordNet의 문제점

  • 어감이나 숨겨진 의미를 인식하기 어려움
  • 단어들의 최신 정보를 유지할 수 없음. 새로운 단어, slang 등에 취약함
  • 사람이 사전을 기록하기에 주관성이 들어가고, 단어의 유사성을 정확하게 계산하지 못함

 

Representing words as discrete symbols

전통적인 NLP에서는 단어를 구별된 의미로 이해했음 = 단어를 discrete하게 인식함

  • hotel, motel은 비슷한 표현이지만 컴퓨터는 둘을 one-hot vector로 바꾸기 때문에 독립된 단어로 인식함

 

단어를 discrete하게 인식하면 생기는 문제점

Seattle motel를 찾으려고 하면, 우리는 비슷한 의미인 Seattle hotel까지 같이 살펴볼 수 있음

하지만, 둘을 discrete하게 인식하게 되면, motel과 hotel은 orthogonal하게 인식하기 때문에 둘 사이의 유사성은 아예 없다고 생각하게 됨

-> motel과 비슷한 hotel이 검색어에 노출되지 않는 문제로 이어짐

-> 문장에서 특정 단어의 의미/단어간 유사도를 잘 반영하도록 벡터화하는 방법으로 확률의 개념을 도입함

-> 문맥에서 특정 단어가 등장할 확률을 학습하는 모델을 만들자!

 

Word vectors

각 단어에 대한 밀집 벡터(dense vector)를 만듦

이는 유사한 맥락(context)에서 나타나는 단어들끼리 유사하게 구성됨

  • word embeddings 혹은 word representations으로 불림
  • 2013년 Skip-gram, CBOW가 나온 이후 많은 사람들은 "단어의 distributional representation = word embedding"으로 생각함

Word vector를 파라미터로 갖는 모델

-> objective function 정의 -> train the model on certain objective

 

분산 표현

: 분포 가설에 기반하여 주변 단어 분포를 기준으로 단어 자체의 벡터 표현을 결정하는 방법

  • 단어의 의미는 주변 단어에 의해 형성됨
  • 비슷한 위치에 등장하는 단어는 비슷한 의미를 지님 => 비슷한 벡터 값을 가짐
    • Distributional semantics의 가정 : '비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가진다.'
    • ex : 강아지는 귀엽다, 강아지는 예쁘다, 강아지는 사랑스럽다. 라는 3가지의 문장에서 귀엽다/예쁘다/사랑스럽다를 비슷한 의미를 가진다라고 인식하는 기법

 

Word2Vec

: 큰 말뭉치로부터 단어 관계성(word vectors)을 학습하는 신경망 모델 알고리즘

  • 충분한 양의 말뭉치를 바탕으로 random vector부터 시작해 각 단어를 잘 표현하는 vector 값을 찾음
  • 단어벡터 간의 유사도를 이용해 맥락에서 특정 단어가 나타날 확률을 계산함 : 

 

핵심 개념 : 단어의 의미를 파악하기 위해 주변의 단어들을 살펴보는 것

  • 단어들의 수치화된 분포표현(distributional representation)은 단어들의 유사도에 기반하여 표현됨
    • 유사도 : 해당 단어와 함께 출몰한 주변 단어(context)를 기준으로 결정됨 -> 결국 단어의 "symbols"를 말하는 것이 아닌 단어가 가지고 있는 문법적, 개념적 "의미" (semantics of word meaning)을 나타낼 수 있게 됨

위 가정을 통해 Word2Vec을 적용하면 원핫 벡터가 아닌 유사도 벡터로 표현된 임베디드된 결과를 얻을 수 있게 됨

 

Word2Vec 추론 처리

중심 단어(center word)로부터 맥락 단어(context word)를 추측하는 용도의 신경망을 사용함
→ 이 모델이 가능한 정확하게 추론하도록 훈련시켜서 분산 표현을 얻어냄

  • 추론 : 중심 단어(center word)가 주어졌을 때, 주변 맥락에 무슨 단어가 들어가는지를 추측하는 작업
  • 모델의 input : 중심 단어(center word)
    • 이 중심 단어를 원핫 벡터로 변환하여 모델이 처리할 수 있도록 준비함
  • 입력층이 은닉층을 거쳐 출력층으로 도달
  • 입력층에서 은닉층으로의 변환은 완전연결계층이 처리함
    • 은닉층의 뉴런은 입력층의 완전연결계층에 의해 변환된 값임
    • 입력층에서의 은닉층으로의 변환은 matrix W에 의해 이루어짐. 가중치 W의 각 행에는 해당 단어의 분산 표현이 담겨져 있음. 학습을 진행할수록 맥락에서 출현하는 단어를 잘 추측하는 방향으로 분산표현들이 갱신됨. 이 과정으로 얻은 벡터에는 '단어의 의미'도 잘 녹아있음
  • 출력층의 뉴런은 총 개 인데, 이 뉴런 하나하나가 각각 단어에 대응함
    • 출력층의 값은 각 단어가 맥락 단어로 나타날 확률을 뜻함

 

Word2Vec : Prediction Function

𝜃가 optimize될 변수이고, 𝐿은 likelihood, 우도를 가리키며, 때때로 𝐿=𝐽' 임
-> objective function을 minimize 시키는 것이 predictive accuracy를 maximize하는 것이 됨

  • 𝑢 𝑤 : 단어가 context word일때 쓰는 벡터
  • 𝑣_𝑤 : 단어가 center word일때 쓰는 벡터
    • c : center word
    • o : context word
  • optimization을 쉽게 하기 위해 2개의 벡터 개념을 도입

 

확률은 아래와 같이 계산함

  • 분모 : 확률분포를 제공하기 위해 전체 단어에 대해 정규화(normalize)
  • 분자
    • exp 사용해 양의 값을 출력하도록 함
    • 괄호 안의 dot product(내적)는 o와 c의 유사도를 계산하는 부분임  -> 대응 단어가 출현할 정도로 해석 가능
    • larger dot product = larger probability
  • 벡터의 내적 계산을 통해 유사도를 측정하며 이후 softmax 과정을 거쳐 확률을 계산함

 

Word2Vec: Objective Function

1. Likelihood (가능도)

  • 각 위치 에서 중심 단어(center word) 가 주어졌을 때, 모든 단어에 대해(t) 고정된 크기의 window만큼(j) 주변의 단어 확률을 곱해 크기 으로 고정된 윈도우 안의 맥락 단어(context word) 예측

 

  • T : 전체 단어의 개수
  • t : 단어의 position
  • m : window size

 

2. Objective function 

가능도를 최대화하는 최적의 파라미터를 찾기 위해 음의 log likelihood를 목적함수(손실 함수)로 만들어 이를 최소화하는 방향으로 단어 벡터를 정함

  • 목적함수 최소화 <=> 다른 단어들의 context에서 중심 단어를 잘 예측함

 

Optimization : Training a model by optimizing parameters

모델을 학습하기 위해, 손실(loss)을 최소화하도록 파라미터를 조정함

=> 최적화 방식을 통해 목적함수를 최소화하는 파라미터 𝜃, 즉 u와 v(word를 나타내는 두 벡터)를 찾음

  • 는 모델의 모든 파라미터를 하나의 긴 벡터로 나타냄
  • 개의 단어가 존재하고 가 -dimension vector일 때, word vector는 를 포함하므로  차원을 가짐
  • 기울기(gradient)를 따라가면서 이 파라미터들을 최적화함

 

기울기 유도

Objective funcion:

  • 목적함수를 최소화하기 위해

 

위 식을 중심 단어(center word), 맥락 단어(context word)로 각각 미분함

 

미분 과정

 

이처럼 objective function을 편미분한 것은 실제 단어와 예측한 단어와의 차이와 같음

-> gradient descent를 통해 실제에 더 가깝게 예측할 수 있음

 

Gradient Desent : 를 최소화하는 알고리즘

  • 우리는 최소화하고 싶은 비용함수 를 가지고 있음
  • Idea: for current value of , calculate gradient of , then take small step in direction of negative gradient. Repeat.
  • Update equation (in matrix notation):
  • Update equation (for single parameter):
While True:
    theta_grad = evaluate_gradient(J, corpus, theta)
    theta = theta - alpha * theta_grad

 

는 corpus의 모든 windows에 대한 함수이기에 수십억 개가 될 수도 있음

-> ∇_θ​ J(θ) 계산 비용 매우 비쌈
-> 해결책으로 Stochastic gradient descent를 사용함

 

Stochastic gradient descent

: 모든 windows 대신 sample window 단위로 update함

  • 전체 data를 가지고 한 번의 loss function을 계산하는게 아니라 batch 단위로 loss function을 계산
While True:
    window = sample_window(corpus)
    theta_grad = evaluate_gradient(J, window, theta)
    theta = theta - alpha * theta_grad

 

  

 


 

Lecture 1 – Introduction and Word Vectors (tistory.com)

 

Lecture 1 – Introduction and Word Vectors

CS224N의 1주차 강의 Introduction and Word Vectors의 강의 순서입니다. 기본적인 인간의 언어에 대해 먼저 이야기를 하고 Wor2Vec와 Gensim에 대해서 이야기를 진행합니다. 1. The course CS224n의 강의를 통해서

eda-ai-lab.tistory.com

스탠포드 자연어처리 강의 2화 (Word Ve.. : 네이버블로그 (naver.com)

 

스탠포드 자연어처리 강의 2화 (Word Vector Representations: word2vec)

이 글은  강의는 Stanford 자연어처리 강의 CS224n: Natural Language Pro...

blog.naver.com

[CS224N] Lecture 1: Introduction and Word Vectors (velog.io)

 

[CS224N] Lecture 1: Introduction and Word Vectors

작성자: 15기 김현지 > Content Human language and word meaning Word2vec introduction Word1vec objective function gradients Optimization basics Looking at w

velog.io

2022-1-Euron-NLP/NLP_week1.pdf at master · hopebii/2022-1-Euron-NLP (github.com)

 

2022-1-Euron-NLP/NLP_week1.pdf at master · hopebii/2022-1-Euron-NLP

🍂 Euron 2기 스터디팀: 자연어처리팀 발표 자료 정리 레포지토리. Contribute to hopebii/2022-1-Euron-NLP development by creating an account on GitHub.

github.com

 

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

 

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)

 

 

 

 

linux 기초

als13w
|2024. 7. 5. 21:01

운영체제(OS)

컴퓨터의 하드웨어와 소프트웨어 사이에서 소통을 도와주는 인터페이스. 하드웨어와 사용자 간의 중개자 역할을 하는 소프트웨어.

하드웨어 리소스 관리 & 응용 프로그램이 하드웨어를 효율적으로 사용할 수 있도록 지원함

EX) 유닉스, 리눅스, 윈도우, OS, X, 안드로이드 등

 

컴퓨터는 다양한 장치들이 한데 묶여서 각자의 역할이 상호작용하게끔 한다고 볼 수 있는데, 이 장치들이 상호작용을 하게끔 환경을 만들어 주는 것이 OS라고 할 수 있음

 

linux

유닉스 계열의 운영체제의 운영체제. 대형 컴퓨터에서 사용하는 유닉스 소스 코드를 수정하여 개인 PC에서도 사용할 수 있는 오픈 소스로 개발하고 자신의 이름을 따서 리눅스로 정함

즉, 유닉스를 개인 컴퓨터에서 사용할 수 있도록 한 것 = 리눅스

EX) 우분투, 레드핫, CentOS, 페도라, 데비안 등

  • 주요 모듈은 패키지 매니저를 통해 설치할 수 있음
  • 패키지 설치 명령 : 패키지간의 의존성을 확인해서 자동으로 설치해주기에 사용이 편리
    • 패키지 매니저
    • yum
      • 레드핫 계열, CentOS
    • apt-get
      • 데비안 계열, 우분투

주요 디렉토리

/bin : 기본 명령어 바이너리 저장

/dev : 장치 파일 저장

/etc : 설정 파일

/home : 사용자의 홈 디렉토리

/lib : 라이브러리 디렉토리

/lib64 : 64bit용 라이브러리 디렉토리

/mnt : 디스크 마운트 디렉토리

/opt : 사용자 응용 프로그램 설치 디렉토리

/proc :CPU, 메모리 등 시스템 정보 특수 파일 저장

/sbin : 필수 시스템 바이너리 파일 저장

/tmp : 임시 파일 저장. 주기적으로 지워지기 때문에 오래 저장할 파일을 보관하면 안됨

/var : 로그 등 시스템 운영중 계속 갱신데이터 저장

  • / : 최상위 디렉토리라고 불리는 기호. 가장 큰 집합체
  • 최상위 디렉토리에 가까울수록 상위디렉토리(반대쪽으로 갈 수록 하위 디렉토리)
  • 윈도우와 리눅스의 차이: 윈도우는 Grahical User Interface(=GUI)인 반면, 리눅스는 Text User Interface(=TUI)

 

커널

하드웨어와 애플리케이션 간에 상호 작용을 도와주는 OS의 핵심 구성 요소

 

유닉스 계열 시스템에서 사용하는 대화형 인터페이스

사용자의 커널 사이에서 사용자의 입력을 받아 명령을 해석해 커널에 전달 & 그 결과를 사용자에게 반환

EX) Bash, Tcsh, Ksh, Zsh, Fish 

 

프로세스(Process)

일반적으로 실행중인 프로그램 의미. 여러 개의 프로그램을 동시에 실행하는 것을 멀티태스킹이라고 하고, 이 프로세스를 관리하는 것이 운영체제의 주요 역할 중 하나임

 

리눅스의 프로세스 실행 방식

리눅스의 프로세스는 포그라운드(foreground)와 백그라운드(background) 방식으로 동작함

  • 포그라운드 방식 : 키보드 입력을 받아서 동작하는 방식. 실행되면 다른 작업을 처리할 수 없어서 작업이 끝날 때가지 대기함
  • 백그라운드 방식 : 사용자와의 대화 없이 실행되는 작업 방식. &를 붙여서 실행하고 다른 명령어를 추가적으로 입력할 수 있음
    • 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됨. 작업시간이 오래 걸리는 경우 nohup 명령어를 이용해 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때가지 프로세스를 실행함
# 포그라운드 방식 
$ sample.sh

# 백그라운드 방식 -- &추가 
$ sample.sh &

# nohup 커맨드(no hang up)
$ nohup sample.sh &

 

 

 

 

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)

 

수리통계학(1) Transformation; .. : 네이버블로그 (naver.com)

 

수리통계학(1) Transformation; 왜 Jacobian인가?

수리통계학을 시작하고 처음 '어렵다!'라고 느끼는 곳은 아마 변환 부분일 것이다. 받침(Suppor...

blog.naver.com


 

계산의 용이성을 위해서나, 표본을 더 잘 이해하기 위해 변환을 시행한다. (로그변환 등)

근데 이 변한은 그냥 할 수 없는 것. y = g(x)라 하고, 단순히 x 자리에 g-1(y)를 넣는 것으로 끝나지 않는다.

함수를 정의하던 X의 영역에서 Y의 영역으로 변화가 일어난 것으로, X의 support를 A라고 했다면, Y의 support를 단순히 A라고 말 할 수 없다. (정의역(support)에 대해 Y를 적분하면 X에 대한 적분과 달리 결과값이 1이 나오지 않을 수 있다.)

  • Ex:

 

이는 변수를 변환한다고 해서 전체 적분값이 1이 된다는 것은 전혀 변하지 않았으나, 어떤 확률변수에 존재하는 '특정한 점'은 속도가 달라지게 움직였기 때문이라고 볼 수 있다.

그래서 Jacobian을 사용하는 것!

 

정리하면, 

변환을 함에 있어서 support를 다시 정의해야 하고, 변수가 연속적인 경우 그 변화의 속도를 반영하기 위한 Jacobian을 사용하게 되는 것이다. 

 

  • 이산(discrete) 변수에 대해서 Jacobian을 정의하지 않는 이유 : 연속적인 변수에 대해서는 변화하는 속도 개념이 존재하지만, 이산적인 변수에서는 이 개념이 존재하지 못한다. 왜냐하면 미분의 정의와 어긋나기 때문이다. 즉, 변화의 속도를 체크하기 위한 아주 작은 ε을 정의할 수 없다. 

 

'Statistics' 카테고리의 다른 글

Likelihood & MLE  (0) 2024.05.14
Likelihood & Score function & Fisher information  (0) 2024.05.14