🐻

Google Colab + DiffusersライブラリでAI画像の生成

2025/01/13に公開

Stable Diffusionを使って画像生成AIを試してみた

1. Stable Diffusionとは何か

Stable Diffusionは、テキストから高品質な画像を生成するAIモデルです。拡散モデルと呼ばれる技術を用いて、ノイズを徐々に取り除きながら画像を生成します。このモデルは、クリエイティブなコンテンツ制作やデザイン、ゲーム開発など幅広い用途で注目されています。

Stable Diffusionはオープンソースで提供されており、研究や実践に活用しやすい点が大きな特徴です。さらに、高性能な画像生成能力とカスタマイズ可能な点も人気の理由です。

2. 実行環境

今回の実行環境として、Google Colabを使用しました。Google Colabは、クラウド上でPythonコードを実行できるプラットフォームで、GPUを利用した計算が無料で行えるのが魅力です。特に画像生成のような高い計算能力を必要とするタスクには最適な環境です。

主な利点:

  • 無料でGPU/TPUを使用可能
  • 手軽にセットアップできる
  • 必要なライブラリを簡単にインストールできる

3. ライブラリのインストール

今回使用した主なライブラリは以下の2つです。

3.1 Transformers

Transformersは、Hugging Faceが提供するライブラリで、自然言語処理(NLP)や生成タスクで使用されるモデルを簡単に扱えるようにします。Stable Diffusionを動かす際にも必要です。

特徴:

  • 幅広いモデルをサポート
  • 簡単なAPIでの操作
  • NLPだけでなく画像生成にも対応

3.2 Diffusers

Diffusersは、Hugging Faceが開発した拡散モデル専用のライブラリです。Stable Diffusionを簡単に扱うための機能が揃っています。

特徴:

  • Stable Diffusionをはじめとする拡散モデルの実行が可能
  • シンプルで柔軟なAPI
  • カスタマイズ可能な構造

4. モデル

今回使用したモデルは、Hugging Faceのモデルハブから提供されているStable Diffusionの事前学習済みモデルです。

Hugging Faceとは

Hugging Faceは、NLPや生成AIモデルを簡単に利用できるプラットフォームを提供しています。モデルハブには多種多様な事前学習済みモデルが公開されており、研究や開発に利用可能です。

Hugging Faceの利点:

  • モデルの検索とダウンロードが簡単
  • コミュニティによるサポート
  • バージョン管理と柔軟なカスタマイズ

5. プログラムの実行

5.1 モデルとパイプラインを用意する

以下のコードでモデルとパイプラインを準備しました。

import diffusers
import torch

# モデルを指定
model = "CompVis/stable-diffusion-v1-4"
device = "cuda"

# モデルのダウンロードとパイプラインの作成
pipeline = diffusers.StableDiffusionPipeline.from_pretrained(
    model,
    torch_dtype=torch.float16
).to(device)

5.2 プロンプトを準備して推論を実行する

次に、生成したい画像の説明(プロンプト)を設定して画像を生成しました。

# プロンプトを指定
prompt = "A dog running in the water"

# 数枚の画像を生成して保存する
for i in range(5):
    # 画像の生成
    result = pipe(
        prompt
    )
    image = result.images[0]
    # 画像の保存
    image.save(f"outputs/{i+1}.png")

出力は以下のようになり、プロンプト内容に沿った画像が生成されていることが確認できました!

6. モデルの変更

モデルを変更して生成結果がどのように変わるか確認しました。

以下のコードで別のモデルを読み込みました。

# 別のモデルに変更
model = "admruul/anything-v3.0"    # モデルを指定
device = "cuda"

# モデルのダウンロードとパイプラインの作成
pipe = diffusers.StableDiffusionPipeline.from_pretrained(
    model,
    torch_dtype=torch.float16
).to(device)

出力は以下のようになり、先ほどのモデルと比較すると表現のスタイルが変化していることが分かります!

結果:
モデルを変更することで、生成される画像のスタイルや品質が大きく異なることを確認できました。特に、解像度や細部の表現がモデルごとに違いがあり、用途に応じたモデル選びが重要であると感じました。

まとめ

今回、Stable DiffusionをGoogle Colab上で実行し、簡単に画像生成を試すことができました。ライブラリやモデルの変更によって生成結果が変わる点が興味深く、画像生成AIの可能性を改めて実感しました。

これからも、様々なプロンプトやモデルを試して、より多くの発見をしていきたいと思います!

Discussion