【画像生成 その1】Stable Diffusion他モデル 〜ailia SDK×Mac×Pythonで20分実装〜

画像生成の実装には様々な手段がありますが、ailia SDK(アイリアSDK)を使えば複数のモデルを数分で簡単に試すことができます。

この記事は、以下のような方におすすめです:

● 画像生成の各種モデルを実際に試してみたい方
● プログラミング初心者でAIに興味がある方
● 画像生成を自社サービスに組み込みたい方

本記事では、Apple Silicon搭載Macを使い、Pythonで環境構築から画像生成モデルの実践までを約20分で実装する手順を解説します。

1. ailia SDKとは?

AIモデルの実装を簡単に行えるSDKです。以下の特徴があります:

  • 高速な推論エンジンによる、スムーズな実行
  • 画像認識、物体検出、姿勢推定など、370以上の豊富な事前学習済みモデル
  • Mac、Windows、Linux、組み込みボード(Jetson、Raspberry Pi)まで対応したクロスプラットフォーム
  • 多言語対応(Python/C++/Unity(C#)/Java(JNI)/Kotlin/Rust/Flutter)
  • GPU対応(CUDA、Vulkan、Metal)

2. 環境構築(所要時間:約1分)

動作条件

  • Python 3.6 以降

インストール手順

  1. まず、ailia SDKをインストールします:
    pip3 install ailia
  2. サンプルコードをダウンロードして、移動します:
    git clone https://github.com/axinc-ai/ailia-models
    cd ailia-models
  3. 依存ライブラリをインストールします:
    pip3 install -r requirements.txt

3. 概要把握

本記事では、以下の4つのモデルを順に紹介します。ぜひ、様々なプロンプトで出力結果を試してみてください:

  • Stable Diffusionモデル
  • Latent Diffusionモデル
  • ControlNetモデル
  • depth_anything_controlnetモデル

注意点:

  • 各モデルの初回起動時には、数GBの関連ファイルがダウンロードされるため、ディスク容量に余裕を持たせ、仮想環境の利用を推奨します。
  • ファイル取得には数分かかる場合があります。
  • 実行中にPCの負荷が高いと感じた場合は、他のモデルへ切り替えて試してください。

4. モデル実装

4.1 Stable Diffusionモデル(所要時間:約5分)

  1. 概要:
    • Stable Diffusionは、「テキストから画像を生成する」技術で知られる深層学習モデルです。2022年にStability AIと共同研究者によって公開され、AI研究者やクリエイターに広く採用されています。拡散モデル(Diffusion Model)を基盤とし、ランダムノイズから段階的に高品質な画像を生成します。
  2. 環境準備:
    • ailia-modelsリポジトリ内の該当フォルダに移動し、必要なライブラリを追加します:
      cd diffusion/stable-diffusion-txt2img
      pip3 install transformers
  3. サンプル実行:
    • 以下を実行します。初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
      python3 stable-diffusion-txt2img.py
    • 成功すると、デフォルトで「宇宙飛行士」の画像が生成され、同一フォルダ内に出力されます。
  4. カスタムテキストで試す:
    • まず、下記がフォーマットとなります。
      python3 stable-diffusion-txt2img.py --input TEXT --savepath SAVE_IMAGE_PATH
    • 試しに白い犬の画像を出力してみましょう。
      python3 stable-diffusion-txt2img.py --input "white dog" --savepath dog
    • さらに複雑な例:
      python3 stable-diffusion-txt2img.py --input "Two small white dogs are walking near Tokyo Tower at night." --savepath dog2

4. 2 Latent Diffusionモデル(所要時間:約5分)

  1. 概要:
    • Latent Diffusionは、潜在空間(Latent Space)を活用した効率的な拡散モデルです。Stable Diffusionもこの一種に該当します。2022年に発表され、画像生成の分野で注目されました。
  2. 環境準備:
    • まずはailia-modelsリポジトリ内の該当フォルダに移動します。そして、環境を整えます。
      cd diffusion/latent-diffusion-txt2img
      pip3 install transformers
  3. サンプル実行:
    • 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
      python3 latent-diffusion-txt2img.py
    • 無事に実行されれば、下記のような「ギターを弾いているウイルスモンスターの油絵タッチな出力画像」を同フォルダ内で確認できるはずです。
  4. カスタムテキストで試す:
    • 下記がフォーマットとなります。
      python3 latent-diffusion-txt2img.py --input TEXT --savepath SAVE_IMAGE_PATH

4. 3 ControlNetモデル(所要時間:約5分)

  1. 概要:
    • ControlNetは、画像生成モデル(特にStable Diffusionなど)の生成プロセスを制御するための技術です。通常の画像生成では、テキストプロンプトだけで画像を作りますが、ControlNetを使うと、追加の「制御画像」を入力として与えることで、生成される画像の形状や構造を細かく調整できます。
  2. 環境準備:
    • まずはailia-modelsリポジトリ内の該当フォルダに移動します。そして、環境を整えます。
      cd diffusion/control_net
      pip3 install transformers
  3. サンプル実行:
    • 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります。
      python3 control_net.py
    • 無事に実行されれば、下記のような、鳥の線画とイラストの出力画像を同フォルダ内で確認できるはずです。
  4. カスタム実行例:
    • 本モデルには3つの出力オプションがあります。それぞれ試してみましょう。
    • Canny Edge (輪郭検出):
      • examplesフォルダ内のbird.png画像の輪郭を検出し、プロンプトに基づいて画像を生成します。今回は、サンプルと異なり、白色を依頼してみます。
        python3 control_net.py --model_type canny --input examples/bird.png --prompt "white"
      • 加工前
      • 加工後
    • Human Pose (人物のポーズ):
      • こちらは、サンプルを試してみましょう。pose1.png画像から人物のポーズを検出し、「Chef in the kitchen」というプロンプトに基づいて画像を生成します。
        python3 control_net.py --model_type pose --input examples/pose1.png --prompt "Chef in the kitchen"
      • 加工前
      • 加工後
    • Semantic Segmentation (セマンティックセグメンテーション):
      • こちらも、サンプルを試してみましょう。house.png画像のセグメンテーション情報を検出し、「house」というプロンプトに基づいて画像を生成します。
        python3 control_net.py --model_type seg --input examples/house.png --prompt house
      • 加工前
      • 加工後

4. 4 depth_anything_controlnetモデル(所要時間:約4分)

  1. 概要:
    • DepthAnythingは、深度推定を行うモデルで、通常の画像から「奥行き情報」を推定して深度画像を作ります。この深度画像をControlNetに渡すことで、奥行きを考慮した画像生成が可能になります。例えば、花畑の写真から深度画像を作り、それを基に「チューリップでいっぱいの美しい花畑」を生成する、といった使い方ができます。
  2. 環境準備:
    • まずはailia-modelsリポジトリ内の該当フォルダに移動します。
      cd diffusion/depth_anything_controlnet
  3. サンプル実行:
    • 以下のコマンドを実行すると、深度画像ファイル(例: depth_flower.png)が入力され、生成画像をoutput.pngとして保存します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります。
      python3 depth_anything_controlnet.py -i depth_flower.png -s output.png
    • 深度画像のサンプル
    • 出力後画像のサンプル

5. 実用上の注意点

  • リソース管理
    • 初回実行時のファイルダウンロードには、数GBのストレージの余裕と、安定したインターネット接続が必要です。
    • Macの機種によっては処理が遅くなる可能性があります。
    • メモリ不足の場合は、まずはモデルを切り替えてみてください。
  • プライバシーへの配慮
    • 個人情報を含む画像やテキストを使用する場合は、事前に同意を取得してください。
    • 生成データの保存には、適切な暗号化とアクセス制限を施しましょう。

6. まとめ

わずか20分で、Stable Diffusionを含む4つの画像生成モデルを実装できました!

ailia SDKでは、この他にも370以上の事前学習済みモデルを活用でき、画像認識、物体検出、自然言語処理など幅広い分野に対応しています。

「高速」「使いやすさ」「豊富なモデル」を特徴とするailia SDKは、AIを実装する際の強力なツールとなるでしょう。ぜひ、ご自身の開発プロジェクトでお試しください。

7. 参考リンク

土橋克寿

証券会社、ビジネス誌副編集長を経て2013年に独立。欧米中印のスタートアップ取材や、各国首脳・テック企業幹部へのインタビューを多数実施。Yahoo!ニュース エキスパートなど国内外メディアで執筆。2018年より株式会社クロフィー代表取締役として、AI開発・PRコンサルティングなどを手掛ける。
https://news.yahoo.co.jp/expert/authors/dobashikatsutoshi
https://x.com/dobatty

SHARE THIS ARTICLE