AI 탐구노트

OmniGen : 이미지 생성, 이해를 위한 통합 모델 본문

AI 기술

OmniGen : 이미지 생성, 이해를 위한 통합 모델

42morrow 2024. 10. 24. 09:57

 

 

OmniGen?

 

OmniGen은 텍스트-이미지 생성 외에도 이미지 편집, 주제 기반 생성, 시각적 조건부 생성 등의 작업을 한 번에 처리할 수 있는 통합 이미지 생성모델입니다. 보통 이미지 생성 모델은 특정 작업만 할 수 있어서, 이미지 편집이나 텍스트를 바탕으로 그림을 그릴 때 각각 다른 모델을 사용해야 했죠. 하지만 OmniGen은 하나의 모델로 다양한 작업들을 처리할 수 있습니다. 3.8B의 매개변수를 가지는 상대적으로 작은 모델이지만 높은 성능을 보입니다. 게다가 MIT 라이선스로 공개되어 있다는 장점도 있습니다. 

 

 

지원하는 기능은?

OmniGen은 아래와 같이 다양한 기능을 제공합니다. 

 

  • 텍스트-이미지 생성 : 텍스트 설명에 따라 이미지를 생성. 주어진 텍스트 조건을 기반으로 다양한 스타일과 내용의 이미지를 생성할 수 있습니다.
  • 이미지 편집 : 기존 이미지에서 객체를 추가하거나 제거하고, 색상이나 스타일을 변경하는 등 다양한 편집 작업을 수행할 수 있습니다. 예를 들어, 이미지를 부분적으로 수정하거나 특정 영역을 복구하는 작업이 가능합니다.
  • 시각적 조건 기반 생성 : 참조 이미지의 조건(예: 깊이 지도, 가장자리 맵)을 사용하여 새 이미지를 생성할 수 있습니다. 기존의 여러 단계가 필요한 처리 없이, 입력 이미지에서 시각적 정보를 직접 추출하여 이를 바탕으로 이미지를 생성합니다.
  • 주제 기반 생성 : 참조 이미지에 있는 특정 객체를 기반으로 새로운 이미지를 생성할 수 있습니다. 여러 객체가 포함된 이미지에서 사용자가 텍스트 지시를 통해 생성할 객체를 지정할 수 있습니다.
  • 전통적인 컴퓨터 비전 작업 : OmniGen은 이미지 복원(예: 블러 제거, 비 내림 제거), 인물 자세 인식, 엣지 검출 등 기존 컴퓨터 비전 작업도 수행할 수 있습니다.
  • 새로운 작업에 대한 학습 : OmniGen은 사전 학습된 데이터와 몇 가지 예시만으로도 새로운 작업이나 도메인에 적응할 수 있는 인-컨텍스트 학습 능력을 갖추고 있습니다​​​.

 

 

그림 : OmniGen을 이용해 할 수 있는 작업들

 

사용 기술

 

이 모델은 VAE(변분 오토인코더)와 트랜스포머라는 두 가지 기술을 사용해 이미지를 처리합니다. VAE는 이미지를 잠재 표현(latent representation)으로 단순하게 표현해 컴퓨터가 이해하기 쉽게 만들고, 트랜스포머는 입력 조건에 따라 이미지를 생성합니다. 텍스트와 이미지는 자유로운 형식으로 결합된 시퀀스로 입력되며 주어진 조건에 따라 이미지가 생성됩니다. 

 

그림 : OmniGen 프레임워크

 

 

기존의 모델과 차별화 되는 부분은?

 

1.단일 아키텍처

텍스트-이미지, 이미지 편집, 주제 기반 생성, 이미지에 대한 사유(reasoning) 등 다양한 작업을 하나의 모델로 수행할 수 있습니다. 기존 모델들은 텍스트, 이미지를 따로 처리하거나 각각 다른 인코더를 사용해야 했지만 OmniGen은 하나로 이 모든 것을 통합적으로 다룹니다. 그래서, 추가 모듈(ControlNet, IP-Adapter 등)이 필요치 않습니다. 

그림 : ControlNet을 사용하는 기존 모델 vs OminiGen 처리 방식 비교

 

 

2.자유로운 조건 결합

OmniGen은 입력 형식이 유연하여  텍스트와 이미지가 자유롭게 섞인 형태 혹은 다양한 조건을 결합한 형태가 될 수 있는 멀티 모달 입력을 지원합니다. 조건 자체도 복합적으로 할 수 있는데 예를 들어 "이미지에서 특정 개체를 지우고 새로운 이미지를 추가해 주세요"라는 것과 같이 말입니다.

 

3.효율적 학습과 지식 전이

이미지 편집, 텍스트 기반 이미지 생성 등의 여러 작업을 동시에 학습하면서 그 지식을 공유합니다. 그 덕분에 OmniGen은 단순히 한 분야가 아니라 이전에 학습한 적이 없는 새로운 분야나 기타 다양한 도메인에 적용할 수 있습니다. 

 

 

테스트

 

테스트 환경 구성이 생각보다 간단해서 직접 돌려 봤습니다. 조건을 주고 돌리면 거의 22GB 가량의 GPU 메모리를 사용합니다. 그런데 신기한 것은 이미지 생성 시 GPU 사용률이 98~99%에 달한다는 겁니다. 다른 모델들의 경우, 놀고 있는 GPU core들이 제법 됐던 것 같은데 OmniGen의 경우, GPU를 풀로 사용하는 모양입니다. 특이하네요... 이 때문에 다른 기능을 사용해 볼 엄두가 안 나서 여기서 스탑했습니다. 이 모델을 사용하려면... 아무래도 경량화 버전이 나오기 전까지는 상당한 전기 소모 때문에 좀 골머리를 앓아야 할 것 같습니다. 아래만 봐도 GPU가 348W를 지속적으로 사용하면 흠... 전기밥솥 보온 시킬 때하고 비슷하지 않나 싶거든요.. 저는 아마도 flux 쪽을 더 선호하게 될 것 같습니다.

 

 

 

이미지 생성은 다음과 같은 프롬프트를 이용했는데, 생각보다 결과물이 잘 나왔습니다. 다만, photo-realistic이라고 명시를 해도 카툰 스타일로 생성해 주는 케이스가 종종 발생했었습니다... 

 

a girl with a cute cat, beach, photo-realistic

 

 

 

이번 글에서는 OmniGen이라는 모델에 대해 살펴 봤습니다. 제가 살펴보는 이유는 향후 써먹을 수 있을까 하는 것을 검토하기 위함인데, 아직은 좀 더 기다려야겠다는 생각만 가지게 된 것 같습니다. 다음 번에 경량화 버전이 나오면 다시 한번 시도해 보겠습니다. 

 

 


참고자료

 

OmniGen 논문

https://arxiv.org/pdf/2409.11340

 

 

OmniGen Github 링크

 

 

GitHub - VectorSpaceLab/OmniGen

Contribute to VectorSpaceLab/OmniGen development by creating an account on GitHub.

github.com

 

OmniGen의 HuggingFace Demo

 

 

OmniGen - a Hugging Face Space by Shitao

Running on Zero

huggingface.co