2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kolorsを使った驚異の画像生成:初心者ガイド

Last updated at Posted at 2024-07-19

はじめに:Kolorsとは?

Kolorsは、Kuaishou Kolorsチームによって開発された最先端のテキスト-画像生成モデルです。数十億のテキストと画像のペアでトレーニングされており、高品質な画像生成能力を持っています。

Kolorsの主な特徴:

  • 高品質な画像生成
  • 中国語と英語の入力サポート
  • 複雑な意味の正確な理解
  • 優れた文字描画能力

それでは、このすごいモデルを使って画像を生成する方法を、順を追って見ていきましょう!

環境セットアップ

まず、必要なライブラリをインストールします。以下のコードを実行してください。

# 必要なライブラリのインストール
!apt-get install git-lfs
!pip install -U diffusers fire accelerate xformers transformers

このコードは以下の作業を行います:

  1. git-lfs(大容量ファイルの取り扱いに必要)をインストール
  2. 画像生成に必要な Python ライブラリをインストールまたはアップデート

Kolorsのインストール

次に、KolorsのGitHubリポジトリをクローンし、セットアップします。

# Kolorsリポジトリのクローンとディレクトリ移動
!git clone https://github.com/Kwai-Kolors/Kolors
%cd /content/Kolors

# Kolorsのセットアップ
!python3 setup.py install

このステップでは:

  1. GitHubからKolorsのソースコードをダウンロード
  2. ダウンロードしたKolorsディレクトリに移動
  3. Kolorsをインストール

モデルの重みのダウンロード

Kolorsモデルの重みをダウンロードします。これは画像生成に必須です。

# Kolorsモデルの重みをダウンロード
!huggingface-cli download --resume-download Kwai-Kolors/Kolors --local-dir weights/Kolors

このコマンドは:

  • Hugging Faceのリポジトリから Kolors の重みをダウンロード
  • ダウンロードした重みをweights/Kolorsディレクトリに保存

基本的な画像生成

さあ、いよいよ画像生成です!以下のコードで、簡単に画像を生成できます。

# 基本的な画像生成の実行
!python3 scripts/sample.py "A photo of a cat, macro, zoom, high quality, film, holding a sign"Sample""

このコードは:

  • 指定されたプロンプト(ここでは猫の写真)に基づいて画像を生成
  • 生成された画像は "scripts/outputs/sample_test.jpg" に保存されます

カスタム推論関数の作成

より柔軟に画像生成を行うため、カスタム推論関数を作成しましょう。

import os, torch
from kolors.pipelines.pipeline_stable_diffusion_xl_chatglm_256 import StableDiffusionXLPipeline
from kolors.models.modeling_chatglm import ChatGLMModel
from kolors.models.tokenization_chatglm import ChatGLMTokenizer
from diffusers import UNet2DConditionModel, AutoencoderKL
from diffusers import EulerDiscreteScheduler

root_dir = "/content/Kolors"

def infer(prompt):
    # モデルの各コンポーネントを読み込む
    ckpt_dir = f'{root_dir}/weights/Kolors'
    text_encoder = ChatGLMModel.from_pretrained(
        f'{ckpt_dir}/text_encoder',
        torch_dtype=torch.float16).half()
    tokenizer = ChatGLMTokenizer.from_pretrained(f'{ckpt_dir}/text_encoder')
    vae = AutoencoderKL.from_pretrained(f"{ckpt_dir}/vae", revision=None).half()
    scheduler = EulerDiscreteScheduler.from_pretrained(f"{ckpt_dir}/scheduler")
    unet = UNet2DConditionModel.from_pretrained(f"{ckpt_dir}/unet", revision=None).half()
    
    # パイプラインの設定
    pipe = StableDiffusionXLPipeline(
            vae=vae,
            text_encoder=text_encoder,
            tokenizer=tokenizer,
            unet=unet,
            scheduler=scheduler,
            force_zeros_for_empty_prompt=False)
    pipe = pipe.to("cuda")
    pipe.enable_model_cpu_offload()
    
    # 画像生成
    image = pipe(
        prompt=prompt,
        height=1024,
        width=1024,
        num_inference_steps=50,
        guidance_scale=5.0,
        num_images_per_prompt=1,
        generator= torch.Generator(pipe.device)).images[0]
    
    # 生成画像の保存
    image.save(f'{root_dir}/scripts/outputs/sample_test_{prompt}.jpg')

# 関数の実行
infer("A photo of a cat, macro, zoom, high quality, holding a sign"v0.3.0"")

このinfer関数は:

  1. 必要なモデルコンポーネントを読み込み
  2. 画像生成パイプラインを設定
  3. 指定されたプロンプトに基づいて画像を生成
  4. 生成された画像をファイルとして保存

関数を実行すると、指定したプロンプトに基づいた画像が生成されます。

まとめと次のステップ

おめでとうございます!これであなたもKolorsを使って素晴らしい画像を生成できるようになりました。

次のステップとして以下のことに挑戦してみましょう:

  1. さまざまなプロンプトを試して、モデルの能力を探る
  2. 生成された画像の品質や正確さを評価する
  3. 日本語のプロンプトを使用して、モデルの多言語能力をテストする

Kolorsの世界を楽しんでください。素晴らしい創造の旅が、ここから始まります!

📒ノートブック

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?