AI 이미지/Stable Diffusion

스테이블 캐스케이드(Stable Cascade)

하늘이푸른오늘 2024. 2. 21. 14:14

10일 전쯤 스테이블 디퓨전을 개발한 Stability.ai 사가 새로운 이미지 생성 인공지능 모델인 스테이블 캐스케이드(Stable Cascade)를 공개했습니다. 불과 얼마전에 SDXL을 공개해서 1024x1024 해상도의 고품질 이미지를 생성할 수 있게되었다고 놀라워했고, 아직 완전히 정착되지도 않은 듯 싶은데 새로운 모델이 공개된 것입니다.

이번에 공개된 모델은 잠재 공간을 더욱 압축시킴으로써, 학습 및 추론 속도가 매우 빨라지면서도 생성되는 이미지의 품질은 매우 높고, 게다가 프롬프트를 이해하고 따르는 능력이 향상되었다고 합니다. 

아래는 보도자료에 포함된 주요 요점이고, 목차 아래쪽은 Stability Github 페이지에 있는 내용입니다. 아주 기대되면서도 또 새로 배워야 할 것이 늘어나서 즐거운 한숨이 나오네요~ ㅠㅠ

주요 요점:
- 오늘 Würstchen 아키텍처를 기반으로 하는 새로운 Text-to-Image모델인 스테이블 캐스케이드(Stable Cascade)를 연구용 미리보기로 공개합니다. 이 모델은 비 상업용 목적만 허용되는 비 상업용 라이선스하에 출시됩니다.
- 스테이블 캐스케이드는 3단계 접근 방식덕분에 소비자용 컴퓨터에서 매우 쉽게 학습시키고 미세조정할 수 있습니다.
- 체크포인트 모델과 추론 스크립트를 제공하는 외에도 미세조정, ControlNet, LoRA 학습용 스크립트를 공개하여, 사용자들이 Stability Github 페이지에 있는 새로운 아키텍처를 시험할 수 있습니다.

개요

여기는 Stable Cascade의 공식 codebase입니다. 여기에서는 사용할 수 있는 여러가지 모델과 더불어, 학습 및 추론 스크립트를 제공합니다.

스테이블 캐스케이드과 스테이블 디퓨전 등의 다른 모델과의 중요한 차이점은 스테이블 캐스케이드가 Würstchen 아키텍처를 기반으로 한다는 점으로서, 훨씬 적은 잠재 공간에서 작동합니다. 왜 이것이 중요할까요? 사용하는 잠재 공간이 적을 수록, 추론이 빠르고, 따라서 학습이 쉬워진다는 것입니다. 잠재 공간이 얼마나 작을까요? 스테이블 디퓨전은 압축률이 8로서 1024x1024 이미지를 128x128로 인코딩합니다. 스테이블 디퓨전은 압축률 42를 달성하였습니다. 즉, 선명하게 재구성하면서도 1024x1024 이미지가 24x24 로 인코딩할 수 있게 되었다는 뜻입니다. 따라서 텍스트-조건부여 모델은 매우 압축된 잠재 공간에서 학습되었습니다. 이 아키텍처의 과거버전의 경우, 스테이블 디퓨전 1.5에 비해 16배의 비용 절감을 이루었습니다.

따라서, 이런 종류의 모델은 효율성이 중요한 곳에 잘 사용될 수 있습니다. 게다가 미세조정, LoRA, IP-Adapter, LCM 등 널리 알려진 확장도 이 모델에서 함께 사용할 수 있습니다. 이중 일부(미세조정, ControlNet, LoRA)는 이미 제공되었습니다. 학습추론을 확인해 주세요.

게다가, 스테이블 케스캐이드는 시각적으로 훌륭하다는 평가를 받았습니다. 우리의 평가에 따르면, 스테이블 캐스케이드는 프롬프트를 따르는 부분과, 심미적인 품질 면에서 거의 모든 평가에서 최고의 성능을 발휘합니다. 다음 그림은 parti-prompt 와 aesthetic prompt 의 혼합을 사용한 인간의 평가 결과입니다. 특히 스테이블 케스케이드 (추론 단계 30)는 Playground v2(추론 단계 50), SDXL(추론 단계 50), SDXL Turbo(추론 단계 1), Würstchen v2 (추론 단계 30) 와 비교한 것입니다.

Stable Cascade의 초점은 효율성으로, 아키텍처 및 고압축 잠재 공간을 통해 증명됩니다. 아래의 그림에서  볼 수 있는 것처럼, SDXL 보다도 더 많은 14억개의 매개변수를 포함하는 큰 모델임에도 불구하고, 추론 시간은 더 빠른 것이 특징입니다. 

모델 개요

스테이블 캐스케이드는 3가지 모델로 구성됩니다. 각각 스테이지 A, 스테이지 B, 스테이지 C 로서, 이미지를 생성하기 위한 단계(Cascade)를 표현합니다. 이 때문에 "스테이블 캐스케이드"란 이름을 사용하게 되었습니다. 스테이지 A와 스테이지 B는 이미지를 압축하는데 사용됩니다. 스테이블 딮전에서 VAE 역할과 비슷합니다. 하지만, 위에서 언급한 것처럼, 훨씬 더 압축률이 높습니다. 스테이지 C는 주어진 텍스트 프롬프트에 따르는 24x24 잠상을 생성하는 책임이 있습니다. 아래는 이를 간략히 표현한 것입니다. 참고로 스테이지 A는 VAE이며, 스테이지 B와 C는 디퓨전 모델입니다.

이번 릴리즈에서 우리는 스테이지 C에 대해 2개, 스테이지 C에 대해 2개, 스테이지 A에 대해 1개의 체크포인트 모델을 제공합니다. 스테이지 는 10억개 파라미터 버전과 36억개 파라미터 버전이 제공되지만, 대부분의 작업이 미세좆조에 투입되었으므로, 36억개 파라미터 버전을 사용할 것을 적극적으로 추천합니다. 스테이지 B의 경우, 7억개 및 15억개의 파라미터 버전이 있습니다. 두가지 모두 훌륭한 결과물을 생성하지만, 15억개 버전이 작고 미세한 디테일을 구성하는데 탁월합니다. 따라서 스테이지 A 및 B의 경우 용량이 큰 버전을 사용하면 최상의 결과를 얻을 수 있을 것입니다. 마지막으로 스테이지 A의 경우, 2천만개의 마라미터를 포함하며, 크기가 작기 때문에 하나의 버전만 제공됩니다.

사용 방법

이 절에서는 스테이블 캐스케이드 사용방법을 간단하게 소개합니다.

추론(Inference)

모델 실행은 추론에서 제공된 노트북을 통해 실행시킬 수 있습니다. 모델 다운로드, 실행 자원, 모델 사용을 위한 튜토리얼 등의 좀 더 상세한 내용도 보실 수 있습니다. 특히, 다음과 같은 유스케이스를 위해 4가지 노트북이 올려져 있습니다.

txt2img

노트북은 text-to-imga, 이미지 변형, image-to-image 에 대한 기본 기능을 제공하는 간략한 노트북입니다.

  • Text-to-Image
    프롬프트: Cinematic photo of an anthropomorphic penguin sitting in a cafe reading a book and having a coffee

  • 이미지 변형
    스테이블 캐스케이드 모델은 이미지 임베딩을 이해하여, 주어진 이미지(맨 좌측)의 변형을 생성할 수 있습니다. 아무런 프롬프트도 입력하지 않은 결과입니다.

  • Image-to-image
    이미지에 특정 지점까지 잡음을 추가한 뒤 모델로 하여금 이미지를 생성하는, 일반적인 방식으로 작동합니다. 아래 맨 좌측은 입력 이미지 이며, 나머지는 80%의 잡음을 추가한 후, 프롬프트를 "A person riding a rodent"로 지정한 결과입니다.

아울러 캐스케이드 모델은 diffusers 라이브러리에서도 접근 가능합니다. 문서 및 사용방법은 여기를 참고하세요.

콘트롤넷(ControlNet)

노트북에는, Stability.ai 에서 학습시킨 콘트롤넷의 사용방법과, Stable Cascade 용으로 직접 학습시킨 콘트롤넷을 사용하는 방법이 들어 있습니다. 이번 공개에는 아래와 같은 콘트롤넷을 제공합니다.

  • 인페인트/아웃페인트

  • Face Identity

참고 : Face Identity 콘트롤넷은 다음에 공개될 예정입니다.

  • Canny

  • Super Resolution

이러한 콘트롤넷은 동일한 노트북에서 사용될 수 있으며, 각 ContrelNet을 위한 config만 바꾸면 됩니다. 자세한 내용은 추론 가이드를 참고하세요.

LoRA

우리는 아울러, 텍스트 조건부여 모델(스테이지 C)를 미세조정하는 데 사용될 수 있는, 스테이블 캐스케이드용 LoRA를 학습시키고 사용할 수 있는 자체 구현을 제공합니다. 특별히, 새로운 토큰을 추가 및 학습시켜서  LoRA 레이어를 모델에 추가시킬 수 있습니다. 이 노트북에는 학습된 LoRA를 사용하는 방법이 포함되어 있습니다. 예를 들어, 아래의 학습 이미지들로 우리집 강아지에 대해 LoRA를 학습시킬 수 있습니다.

아래는 "Cinematic photo of a dog [fernando] wearing a space suit"라는 프롬프트를 사용하여 우리집 강아지 이미지를 생성한 예입니다.

이미지 복원

마지막으로, 여러분들이 흥미로워할 것을 한가지 말씀드리겠습니다. 여러분만의 조건부여 모델을 완전히 새로 학습시키는 경우, 심지어는 스테이지 C와 완전히 다른 아키텍처로 학습시키는 경우에도, (디퓨전)자동 인코더를 사용하여 스테이블 캐스케이드가 고압축 공간에서 작동하도록 할 수 있다는 것입니다. 사람들이 스테이블 디퓨전의 VAE를 사용하여 자신만의 모델(예: DALL-E 3)을 학습시키면, 고 압축의 잇점을 누리면서도 스테이지 A와 B를 같은 방법으로 사용함으로써, 모델을 빠르게 학습시키고 작동시킬 수 있습니다. 이 노트북에는 이미지를 인코드하고 디코드하는 방법 및, 얻을 수 있는 잇점이 들어 있습니다. 예를 들어, 다음과 같은 (4x3x1024x1024 차원의) 이미지가 있다고 가정해보겠습니다.

이들 이미지를 4x16x24x24 로 압축 인코딩할 수 있어, 1024/24 =42.67 배의 공간 압축률을 달성할 수 있습니다. 이후, 스테이지 A와 B를 사용하여 해당 이미지들을 다시 4x3x1024x1024로 디코딩하면 아래와 같은 이미지를 얻을 수 있습니다.

보시는 것처럼, 아주 세밀한 디테일까지도 놀랍게도 비슷하게 복원되어 있습니다. 이러한 복원은 표준 VAE 등을 사용해서는 불가능합니다. 이 노트북을 보시면 보다 자세한 정보가 있으며, 쉽게 시험용 코딩이 가능합니다.

학습

우리는 맨바닥부터 스테이블 케스케이드를 학습시키고, 미세조정하고 ControlNet 및 LoRA를 학습시키기 위한 코드를 제공합니다. 이 학습 폴더에 그 방법을 자세하게 설명하고 있으니 참고하세요.

참고

이 코드베이스는 초기 개발 단계입니다. 예상치 못할 오류가 발생할 수있거나, 학습이나 추론 코드가 완벽하게 최적화되어 있지 않습니다. 미리 죄송하단 말씀 드립니다. 관심이 있으시다면, 최신 개선사항과 최적화를 목표로 계속 업데이트를 출시하겠습니다. 아울러, 아이디어나 피드백을 주시거나, 기여하고자 하는 분들로부터 업데이트를 받을 수 있으면 감사하겠습니다.

===