요즘 그림 ai가 핫하다.

대부분의 그림 ai들은 입력을 인공지능 처리를 거친 후 후처리까지 거쳐 완성된 그림을 내놓는다.

그 ai스러움과는 별개로 그림의 퀄리티는 이전에 비해 확연히 좋아졌고, 수많은 어플리케이션에 쓰이고 있다.


NovelAI 홈페이지에서 가져온 ai생성된 이미지


그렇다면 이들의 생성 원리는 무엇일까?

정확히 말하자면 이들의 근본은 무엇일까?

현재 이런 생성 모델(Generation model)의 근간이 되는 기술은 다음과 같은 부류들이 있다.


VAE(Variational autoencoder), GAN(Generative Adversarial Networks), Diffusion


최근에 나온 DragGAN

https://vcai.mpi-inf.mpg.de/projects/DragGAN/

위 링크에서 확인 가능


이들의 차이점을 구구절절 설명할 수는 있지만, 대략적으로만 설명하자면 VAE는 조금 더 수학적으로 정확하게 "분포"를 형성하고, 다른 둘은 수학 제끼고 일단 분포를 생성하는 데에만 집중한다는 것이다.


어찌되었든 간에, 이들은 공통적으로 "분포(Distribution)"와 관련된 얘기를 한다.

그럼 과연 이 분포가 어떤 식으로 작용을 하는가.

이를 설명할 수 있게 하는 것이 바로 매니폴드(Manifold) 가정이다.


실제 우리는 3차원에 있고, 우리가 보는 영상은 2차원으로 나타낼 수 있다. 

그러나 어떤 벡터나 행렬에서 차원(Dimension)이란, 그 벡터 혹은 행렬의 원소의 개수를 의미한다.

그래서 256x256 크기의 흑백 이미지가 있다면 그 차원은 65536이 될 것이다.


그렇다면 트루 칼라 색상 공간에서 256x256차원의 공간이 가질 수 있는 모든 종류의 데이터는 트루 칼라가 대략 1700만 개의 색상을 가질 수 있으니, 실제로 약 1조개의 가능성이 존재한다. 


이들을 전부 모으면 하나의 분포, 또는 공간이 만들어질 것이다.

그러나 이런 공간에는, 무의미한 데이터들이 있다.

우리에게 있어서 노이즈밖에 되지 않는 그런 데이터들이 넘쳐난다.

실제로 우리가 의미있다고 생각하는, 인식 가능한 데이터는 전체 분포의 극히 일부분이다.


그리고 그런 의미있는 데이터들은 전체 공간의 한 구석에 모여 있을 것이다. 

이를 우리는 매니폴드 가정이라고 한다.


매니폴드 가정을 대략적으로 나타냈다

전체 공간 중 색칠된 부분만이 우리에게 의미있는 공간이다


이미지 생성에서 매니폴드란 인간이 볼 때 매우 자연스러운, 혹은 실제와 같은 이미지들만 모아 놓은 것이다.

그리고 매니폴드를 학습하는 것을 매니폴드 학습(Manifold Learning)이라고 한다.


이것이 이미지 생성에서 왜 중요할까?

가장 중요한 점은, 저차원의 벡터를 고차원의 이미지로 매핑할 수 있다는 점이다.


만약 우리가 128차원의 벡터를 지니고 있다면, 벡터의 모든 경우의 수를 256x256차원의 이미지에 매핑시킨다면 128차원어치만큼만 할 수 있을 것이다.


그러나 매니폴드 가정에 의해, 우리는 우리에게 "쓸모 있는" 데이터가 있는 매니폴드는 전체에 비해 매우 작을 것이므로, 어느 정도는 손실하더라도 원하는 매니폴드의 상당수를(적어도 전체 분포에 대한 비율보다는 훨씬 많이) 매핑 가능하게 된다는 것이다.


이를 실제 text-to-image 시스템에 적용시켜 보자.

현대 인공지능은 그래프를 쓰지 않는 한 대부분이 고정된 크기의 입력을 사용한다.

따라서 텍스트가 들어오면 그 텍스트를 고정된 크기의 어떤 벡터로 매핑시킬 것이다: 신기하게도 이것 역시 매니폴드 가정이 적용되어 있다고 생각할 수 있다!


그렇게 처리된 특징 벡터(Feature vector)는 웬만하면 생성할 이미지보다 훨씬 낮은 차원을 가진다.

여기서 매니폴드 학습을 통해, 우리는 이렇게 인코딩 된 벡터가 특정 이미지와 대응됨을 알려주고, 그러한 방식으로 학습을 진행할 수 있다는 것이다.


그렇다면 위의 DragGAN처럼 드래그 등을 통해 자연스럽게 이미지가 변하는 것은 무엇일까?

신기하게도, 매니폴드에서 비슷한 특징을 지닌 벡터들은 비슷한 이미지와 매핑된다.

이는 GAN의 가장 중요한 초기 논문 DCGAN에서도 언급되었던 사실이다


위는 DCGAN에서 생성한 연예인 이미지다(CelebA라고 하는 문제 없는 데이터셋임)


이 논문에서 알려진 사실로 선글라스 낀 남자 이미지를 생성한 벡터와 남자 이미지를 생성한 벡터를 빼고, 여자 이미지를 생성한 벡터랑 합하면 신기하게도 선글라스를 낀 여자 이미지를 생성하는 벡터가 나온다는 것이다.


우리는 여기서 매니폴드 내에 남자 사진이 모인 공간, 여자 사진이 모인 공간이 있고, 선글라스를 표현하는 공간이 있기에 이런 일이 일어날 수 있음을 유추할 수 있다.


매니폴드 가정은 이외에도 차원 축소(Dimensionality Reduction) 등 매우 중요한 작업에서도 많이 사용되는 중요한 성질이다.

이제 이미지 생성의 근-본 원리를 알았으니 어디가서 아는 체 할 수 있읍니다.