🚀 Karlo v1 alpha
Karloは、OpenAIのunCLIPアーキテクチャに基づくテキスト条件付き画像生成モデルです。標準の超解像モデルを改良し、64pxから256pxへの拡大を少数のデノイジングステップで行い、高周波の詳細を回復することができます。
🚀 クイックスタート
Karloはdiffusers
で利用可能です!
pip install diffusers transformers accelerate safetensors
💻 使用例
基本的な使用法
テキストから画像へ
from diffusers import UnCLIPPipeline
import torch
pipe = UnCLIPPipeline.from_pretrained("kakaobrain/karlo-v1-alpha", torch_dtype=torch.float16)
pipe = pipe.to('cuda')
prompt = "a high-resolution photograph of a big red frog on a green leaf."
image = pipe([prompt]).images[0]
image.save("./frog.png")

画像のバリエーション
from diffusers import UnCLIPImageVariationPipeline
import torch
from PIL import Image
pipe = UnCLIPImageVariationPipeline.from_pretrained("kakaobrain/karlo-v1-alpha-image-variations", torch_dtype=torch.float16)
pipe = pipe.to('cuda')
image = Image.open("./frog.png")
image = pipe(image).images[0]
image.save("./frog-variation.png")

📚 ドキュメント
概要
Karloは、unCLIPに基づくテキスト条件付き拡散モデルで、事前学習モデル(Prior)、デコーダー(Decoder)、超解像モジュール(SR)で構成されています。このリポジトリでは、標準の超解像モジュールを改良し、64pxから256pxへの拡大をわずか7ステップで行うことができます。下の図はそのアーキテクチャを示しています。
具体的には、DDPMの目的関数で訓練された標準のSRモジュールが、respacing技術に基づいて最初の6つのデノイジングステップで64pxから256pxへの拡大を行います。その後、VQ - GANスタイルの損失関数で訓練された追加の微調整SRモジュールが、最後の逆ステップを行い、高周波の詳細を回復します。このアプローチは、少数の逆ステップで低解像度画像を拡大するのに非常に有効であることがわかりました。
詳細
すべてのコンポーネントは、COYO - 100M、CC3M、CC12Mを含む1億1500万の画像 - テキストペアでゼロから訓練されています。PriorとDecoderの場合、OpenAIのCLIPリポジトリから提供されるViT - L/14を使用しています。unCLIPの元の実装とは異なり、デコーダー内の学習可能なトランスフォーマーをViT - L/14のテキストエンコーダーに置き換えることで、効率を向上させています。SRモジュールの場合、まずDDPMの目的関数を使用して100万ステップでモデルを訓練し、その後さらに23万4000ステップで追加コンポーネントを微調整しています。下の表は、各コンポーネントの重要な統計情報をまとめたものです。
|
Prior |
Decoder |
SR |
CLIP |
ViT-L/14 |
ViT-L/14 |
- |
#パラメータ |
10億 |
9億 |
7億 + 7億 |
#最適化ステップ |
100万 |
100万 |
100万 + 20万 |
#サンプリングステップ |
25 |
50 (デフォルト), 25 (高速) |
7 |
チェックポイントリンク |
ViT-L-14, ViT-L-14 stats, モデル |
モデル |
モデル |
チェックポイントリンクでは、ViT - L/14は元のバージョンと同等ですが、利便性のために含めています。また、ViT - L/14 - statsは、Priorモジュールの出力を正規化するために必要です。
評価
Karlo - v1.0.alphaの性能を、CC3MとMS - COCOの検証データセットで定量的に測定しました。下の表は、CLIPスコアとFIDを示しています。FIDを測定するために、画像の短辺を256pxにリサイズし、中央でクロップします。すべてのケースで、PriorとDecoderの分類器フリーガイダンススケールを4と8に設定しました。Decoderのサンプリングステップが25であっても、モデルは合理的な性能を達成していることがわかります。
CC3M
サンプリングステップ |
CLIP-s (ViT-B/16) |
FID (検証データ13k) |
Prior (25) + Decoder (25) + SR (7) |
0.3081 |
14.37 |
Prior (25) + Decoder (50) + SR (7) |
0.3086 |
13.95 |
MS - COCO
サンプリングステップ |
CLIP-s (ViT-B/16) |
FID (検証データ30k) |
Prior (25) + Decoder (25) + SR (7) |
0.3192 |
15.24 |
Prior (25) + Decoder (50) + SR (7) |
0.3192 |
14.43 |
詳細な情報については、近日公開予定の技術レポートを参照してください。
訓練の詳細
このKarloのアルファバージョンは、COYO - 100Mの高品質サブセット、CC3M、CC12Mを含む1億1500万の画像 - テキストペアで訓練されています。より大規模な高品質データセットで訓練されたKarloのより良いバージョンに興味がある方は、アプリケーションのランディングページB^DISCOVERをご覧ください。
📄 ライセンス
このプロジェクトはcreativeml-openrail-m
ライセンスの下で公開されています。
BibTex
もしこのリポジトリがあなたの研究に役立った場合は、以下のように引用してください。
@misc{kakaobrain2022karlo-v1-alpha,
title = {Karlo-v1.0.alpha on COYO-100M and CC15M},
author = {Donghoon Lee, Jiseob Kim, Jisu Choi, Jongmin Kim, Minwoo Byeon, Woonhyuk Baek and Saehoon Kim},
year = {2022},
howpublished = {\url{https://github.com/kakaobrain/karlo}},
}