[AI 모델 탐험기] #18 그림 그리는 AI, DALL-E

AI Network
9 min readSep 6, 2021

--

[편집자주] 본 글은 커먼컴퓨터에서 Developer Relations Engineer를 맡고 있는 성창엽님이 오픈소스 AI모델을 정리하고 인사이트를 공유하는 글로 시리즈로 기획돼 발행되고 있습니다. 열여덟 번째 글은 그림 그리는 AI, DALL-E입니다.

오늘 소개해 드릴 모델은 Open AI에서 공개한 텍스트에서 이미지를 생성할 수 있는 AI 모델인 DALL-E입니다. DALL-E는 어떤 데이터로 학습되었고, 어떤 과정을 거쳐 학습을 진행했는지 등에 대해 알아보겠습니다. 또한 Open AI의 DALL-E는 공개하지 않아서 사용할 수 없어, Phil Wang 님이 공개한 DALL-E의 pytorch 버전을 통해 DALL-E를 사용해보겠습니다.

프로젝트를 바로 확인해보고 싶으신 분은 다음 링크를 참고해주세요!

Demo : https://link.ainize.ai/3n2Rd2A

API : https://link.ainize.ai/3n0O1nU

Github : https://link.ainize.ai/3tcrPZ8

Ainize Workspace : https://ainize.ai/workspace/view?ipynb=https://raw.githubusercontent.com/scy6500/dalle-tutorial/main/dalle-tutorial.ipynb&imageId=HQ8gBR4qbSwEEgcoJL4G

학교 미술 시간에 다들 한 번씩 상상화를 그려보셨던 경험이 있을 겁니다. 어떠한 주제가 문장으로 주어지면 이를 가지고 그림을 그려내는 행위는 지금까지 사람만 할 수 있는 일이었습니다. 하지만 Open AI가 DALL-E라는 모델을 공개함에 따라 이러한 생각은 완전히 뒤집혔습니다.

DALL-E는 자연어처리와 컴퓨터 비전을 결합하여 텍스트에서 이미지를 생성할 수 있는 AI 모델로, 어떤 텍스트가 주어져도 그것을 가지고 이미지를 만들 수 있는 모델이라고 합니다. DALL-E라는 이름은 초현실주의 화가 살바도르 달리(Salvador Dali)와 로봇 애니메이션 속 로봇 캐릭터 윌-E(WALL-E)에서 영감을 받아 이름을 DALL-E라고 지었다고 합니다.

살바도르 달리와 월-E

효과적으로 텍스트에서 이미지를 생성하기 위해 GAN(Generative Adversarial Network) 모델을 쌓는 등 다양한 접근들이 있었습니다. 하지만 이러한 접근들은 여전히 물체 왜곡, 논리적이지 않은 개체 배치 등 자연스럽지 못한 부분이 존재했습니다.

이러던 중 최근 GPT-3와 같이 auto regressive transformer를 기반으로 생성 모델이 성공적으로 학습되기 시작했고 이러한 방법을 사용하여 Text-to-Image 생성 모델 또한 연구되었습니다. 그 모델이 바로 DALL-E입니다.

Dataset

  • Conceptual Caption dataset

DALL-E 모델은 크게 보면 2가지로 나눌 수 있는데요, 모델에 대해 알아보기 전에 먼저 학습에 사용된 데이터에 대해 알아보겠습니다. 학습에 사용된 데이터는 250,000,000개의 이미지-텍스트 쌍입니다. 3가지 데이터셋을 모아서 학습한 것으로 알려져 있는데요. 첫 번째는 구글에서 공개한 Conceptual Caption 데이터셋입니다. 약 3,000,000개의 이미지-텍스트 데이터로 구성되어 있습니다.

Conceptual Caption dataset
  • YFCC100M

두번째는 YFCC100M으로 99,200,000 개의 이미지, 800,000 개의 동영상으로 이루어진 데이터셋입니다.

YFCC100M dataset

마지막으로 위키피디아의 이미지와 이미지에 대한 캡션을 데이터셋으로 사용했다고 합니다.

이런 데이터셋을 모두 사용한 것은 아닙니다. 여러 조건으로 필터를 거쳐 조건에 맞는 데이터들만 학습에 사용했는데, 이 조건에는 캡션이 영어이며 짧지 않아야 하고 이미지의 가로세로비가 1/2 ~ 2 사이에 있어야 하는 등 여러 조건을 걸어 데이터를 걸러냈습니다.

Stage 1

이제 모델에 대해 알아보겠습니다. 이미지들을 픽셀 단위로 모델에 넣어 학습을 진행하면 될까요? 아닙니다. 이런 방식은 이미지를 1차원으로 바꿔 진행합니다. 하지만 256 * 256의 이미지를 1차원으로 바꾸게 되면 65,000개의 길이가 나오게 되고 RGB 3 채널까지 고려한다면 길이가 약 200,000가 됩니다.

이걸 모델에 그대로 넣게 된다면 아마 학습이 제대로 안 될 뿐더러 메모리에 올라가지도 않을 것입니다. DALL-E는 이런 문제를 해결하기 위해 VQ-VAE(Vector Quantized Variational AutoEncoder)를 사용하였습니다.

VQ-VAE는 입력받은 이미지를 CNN 모델에 넣어 32 * 32 피쳐맵을 뽑습니다. 뽑힌 피쳐맵을 바탕으로 Embedding Space를 갱신합니다. 그 후, 이 Embedding Space을 통해 다시 디코딩하여 이미지를 얻습니다. 결과적으로 이 과정을 거치게 되면 256 * 256의 이미지가 Embedding Space에 있는 벡터들로 표현된 32 * 32 이미지 토큰으로 변환됩니다.

VQ-VAE 구성

해당 과정을 거치게 되면 공간적인 해상도가 약 8배 정도 줄어듭니다. 이로 인해 물체의 테두리, 질감, 얇은 선 등 일부 정보는 왜곡되거나 손실될 수 있습니다.

이러한 손실을 최소화하기 위해 8192라는 큰 vocabulary size를 사용함으로써 정보의 손실을 최소화하였습니다. 밑에 사진에서 볼 수 있는 거처럼 전반적인 이미지의 특성은 알아볼 수 있는 정도가 됩니다. (위: 원래 이미지, 아래: VQ-VAE 결과)

원본 이미지와 VQ-VAE 결과

Stage 2

이후 이미지 캡션을 BPE 인코딩을 통해 최대 256개의 토큰으로 만든 뒤, 아까 만들어 두었던 이미지 토큰과 합치고 Transformer Decoder에 넣어 학습을 진행하면 끝입니다.

텍스트 토큰와 이미지 토큰을 합친 모습

사용법

Open AI에서 공개한 DALL-E는 사용할 수 없어, Phil Wang님이 공개한 DALL-E의 pytorch 버전을 통해 DALL-E를 사용해보겠습니다.

  • DALL-E Pytorch Demo 사용하기

Ainize가 제공하는 Demo를 이용하여 DALL-E Pytorch를 사용해보겠습니다.

입력창에 생성하고 싶은 이미지에 대한 설명을 입력하고 생성하고 싶은 이미지 개수를 슬라이드로 조정하여 Generate을 누르면 원하는 결과를 얻을 수 있습니다. (이미지 하나를 생성하는데 약 20초 정도 소요됩니다)해당 Demo는 Link에서 사용할 수 있습니다.

  • DALL-E Pytorch API 사용하기

이번에는 Ainize에서 제공하는 DALL-E Pytorch API를 사용하여 DALL-E Pytorch를 사용해보겠습니다. API에 관한 내용은 Link에서 확인할 수 있습니다.

이렇게 하여 DALL-E에 대해 알아보았습니다. 이러한 DALL-E의 성과로 인해 이제 AI가 예술, 디자인과 같은 창의력이 필요한 영역에서도 인간을 대체할 수 있을 것이라는 의견이 있습니다. 점점 시간이 지날 수록 인공지능이 창의력과 같은 인간의 고유의 영역이라고 생각했던 영역에 침범하고 있는 거 같아서 조금은 무섭기도 하네요.

Source

AI 네트워크는 블록체인 기반 플랫폼으로 인공지능 개발 환경의 혁신을 목표로 하고 있습니다. 수백만 개의 오픈 소스 프로젝트가 라이브로 구현되는 글로벌 백엔드 인프라를 표방합니다.

최신 소식이 궁금하시다면 아래 커뮤니케이션 채널을 참고해주시기 바랍니다. 다시 한 번 감사합니다.

AI네트워크 공식 홈페이지: https://ainetwork.ai/

공식 텔레그램: telegram.com/ainetwork_kr

아이나이즈(Ainize): https://ainize.ai

유튜브: https://www.youtube.com/channel/UCnyBeZ5iEdlKrAcfNbZ-wog

페이스북: https://www.facebook.com/ainetworkofficial/

포럼: https://forum.ainetwork.ai/

AIN Price chart: https://coinmarketcap.com/currencies/ai-network/onchain-analysis/

--

--

AI Network
AI Network

Written by AI Network

A decentralized AI development ecosystem built on its own blockchain, AI Network seeks to become the “Internet for AI” in the Web3 era.

No responses yet