서론

이 영상을 봤다.

Dall-E 2. 작년 초에 나왔던 Dall-E의 후속이다.

어떤 녀석인지, 어떤 모델인지를 한번 살펴보는 시간을 가져보자.

Image GPT

일단 먼저 알아봐야 하는 놈이 Image GPT라는 놈이다.

아니 사실 GPT부터 알아봐야하긴 하는데… 별건 아니고 어어어어어어어엄청나게 큰 Language Model이다. Language Model답게 ‘이런이런 단어가 왔을 때 다음 단어는 뭘까요?’를 가지고 학습시켜뒀다.

이후 약간의 파인 튜닝을 통해 다용도로 쓸 수 있게 한 모델이고, 현재 최신 버전은 GPT-3와 Instruction GPT이다. (영어로 블로그 쓰면서 내가 쓰는 대신 GPT한테 맡겨도 될 정도의 성능은 나온다.)

아, 참. Transformer를 기반으로 한 모델이다. 이에 대한 설명은 이전에 했으니 패스.

ImageGPT는 단순하다. GPT가 있는데, 여기에 텍스트를 넣는 대신에 이미지를 넣어보자.

이미지는 2D고 텍스트는 1D인데? 싶은데, 단순하게 2D 이미지를 1차원으로 쭈욱 펼쳐서 학습시키면 된다.

그게 될까? 싶긴 한데, 된다. 그게. Transformer라는 모델이 그만큼 좋은 거일수도.

Dall-E

이번에는 Dall E로 넘어가보자.

GPT나 Image GPT와 같지만, 글이나 이미지를 넣는 대신에 글-이미지 쌍을 넣어준다.

이미지 픽셀 하나 하나를 토큰으로 쓰기엔 고화질 이미지 처리가 너무 힘들어지기 때문에 (메모리를 엄청 잡아먹으니까…) 내가 이해한게 맞다면 마치 글을 벡터화하듯 일정 이미지 조각을 토큰화를 하는 방식을 쓰는 것 같다.

dalle

인터넷에서 퍼왔다.

이미지를 만들어내는 부분 자체는 자동부호기를 이용하는 모양이다. 이거에 대한건 또 나중에 정리할 일이 있지 않을까.

대충 정리하면 이렇다.

  1. 입력할 글과 이미지를 정한다.
  2. 이미지를 어딘가에 넣어서 숫자 벡터(잠재공간)로 바꾼다.
  3. >>>>>트랜스포머««<
  4. 새로운 숫자 벡터가 나온다.
  5. 아까 이미지를 넣은 곳 반대에다가 새로운 숫자 벡터를 넣는다.
  6. 새로운 이미지가 나온다.

Dall-E 2

Dall E의 다음 버전이다. 솔직히 Dall E도 상당히 놀랐는데… 이건 진짜 멋있다.

자세히는 모르겠는데, Autoencoder 대신 Diffusion Model이라는걸 쓰는 모양이다.

생성 모델의 일종인데, 점점 가우시안 노이즈를 더했다가 빼는 식이다. 최근 인기가 좋은 것 같다. 나중에 이거에 대해서도 좀 더 알아보자.

Dall-E 2라는 이름이 붙기는 했지만, Dall-E와는 꽤 다른 모델을 사용한 것 같다.

머지 않아서 Dall-E를 사용한 각종 예제들을 볼 수 있을꺼다. 또 얼마나 많은 사용 예가 보일까?