Diffusion 모델의 기본 개념 아주 간단하게 알아보기

1. 목적

 

다음과 같은 이미지 데이터들로부터, 더욱 많은 캐릭터 이미지를 획득

 

 

 

 

이들을 훈련 데이터로 사용하여, 훈련 데이터에 포함되어 있지 않은 다른 캐릭터를 얻고자함

 

이를 diffusion model을 학습시켜 생성할 수 있다.

 

 

2. 과정

 

이런 데이터들을 신경망에 어떻게 학습시켜야할까?

 

생성하고자하는 '캐릭터'가 무엇인지 전반적인 개념에 대해 학습시킨다.

 

이러한 '개념'은 머리 색상, 벨트 여부, 몸 윤곽선 등등이 될 수 있다.

 

이러한 개념을 강조하기 위해 데이터에 noise를 추가할 수 있다.

 

이를 noising process라고 부른다.

 

 

 

 

마치 물에 잉크를 떨어뜨리면, 처음에는 잉크가 어디 떨어졌는지 알 수 있는데

 

시간이 지나면서 잉크가 확산(diffusion)하여 잉크가 어디에 떨어졌는지 알 수 없게 되는 것과 같다.

 

비슷하게 'Bob the Sprite!'에서 시작하여 noise를 추가할수록 나중에는 어떤 형체인지 알아볼 수 없게 된다.

 

각 이미지에서 신경망은 어떻게 행동해야하는가?

 

'Bob the Sprite!'에서는 명백하게 Bob the Sprite라고 말해야한다.

 

Probably Bob 이미지에서는 신경망이 노이즈가 있음을 알고, 그래도 Bob처럼 보이니까 Bob에 가까운 윤곽선을 생성한다.

 

Well, Bob or Fred처럼 더 많은 노이즈가 있는 이미지에서는 Bob이나 Fred 등을 모두 포괄하는 일반적인 윤곽선을 생성할 것이다.

 

No Idea같이 매우 많은 노이즈가 있을 때는 여전히 '캐릭터'로 만들고 싶으므로, 더욱 일반적인 윤곽선을 제시한다.

 

 

3. 학습

 

다양한 노이즈가 있는 이미지들을 가져와서 이를 다시 캐릭터로 변환시키도록 만드는 것이 학습 과정이다.

 

이를 위해 신경망은 이미지에 추가된 노이즈를 제거하는 방법을 학습하게 된다.

 

No Idea의 순수한 noise 이미지에서 시작해서 노이즈를 점점 제거하여 Fred의 완전한 이미지로 바뀐다.

 

 

 

 

여기서 최초 No Idea의 순수한 noise가 Normal distribution을 따른다고 가정한다.

 

이는 각 이미지의 픽셀이 normal distribution에서 sampling된 것이다.

 

신경망에게 'Fred같은 이미지를 생성해라'라고 요청한다면.. 

 

신경망은 normal distribution에서 pixel을 sampling하여 noise를 점점 제거하면서 Fred라는 이미지를 만들게 된다.

 

TAGS.

Comments