Interface編集部

ailia SDKを試す<第8回> Anything V3でアニメ風画像の生成
今回は,アニメ・スタイルの高品質な画像生成に特化したテキスト→画像モデルAnything V3を紹介します.Anything V3は,Stable Diffusionをベースとした画像生成モデルであり,Danbooruタグに対応しているため,比較的短いプロンプトでも細部まで描き込まれた画像を生成できます.今回は,このAnything V3モデルをailia SDK上でローカル実行するサンプル・プログラムanything_v3を用い,環境構築から画像生成の手順,さらにプロンプト設計による出力の違いまでを検証しました.
●実行環境
今回使用したシステム構成を表1に示します.今回は,一般的なミドルレンジのWindows環境を用いましたが,メモリを128GBと大容量に確保しており,画像生成のような大規模な推論処理でも安定して動作できるようにしています.
名称 | 内容 |
---|---|
OS | Windows11 Pro |
CPU | インテル® Core(TM) i5-10500 |
RAM | 128GB |
Python | python-3.10.11-amd64 |
ailia-SDK | Version 1.5.0.0 |
ailia-models | v1.4.0 https://github.com/axinc-ai/ailia-models |
表1 システム構成一覧
●環境構築してAnything V3を動かしてみる
ailia SDKおよび画像生成モデルAnything V3を使用するための環境構築手順をリスト1に示します.なお,作業にはPython 3.10環境が必要なので,事前にインストールされていることを確認してください.
******
> python –version
Python 3.10.11
> git clone https://github.com/axinc-ai/ailia-models.git
> cd ailia-models
> python -m venv .venv <―― Pythonの仮想環境 作成
> .venv\Scripts\activate <―― 仮想環境 で作業してください
> python -m pip install –upgrade pip
> pip install setuptools wheel
# matplotlib、scikit-image、pillow に関しては依存するバージョンがあります
> pip install matplotlib==3.8
> pip install “scikit-image<0.20” “pillow<10”
> pip install -r requirements.txt
> pip install onnxruntime
******
リスト1 環境構築手順
初回の起動時には,ailia-modelsに含まれるanything_v3のREADME.mdに従って実行の際には,–onnxオプションを付与して起動し,モデルをONNX形式で利用しました.
******
(.venv) PS ailia-models\diffusion\anything_v3> python anything_v3.py –onnx
INFO arg_utils.py (13) : Start!
INFO arg_utils.py (163) : env_id: 7
INFO arg_utils.py (166) : VulkanDNN-Intel(R) UHD Graphics 630 (FP16)
INFO model_utils.py (74) : Downloading onnx file… (save path: unet.onnx)
INFO model_utils.py (80) : ======================= 100.00% ( 814KB )]
INFO model_utils.py (82) : Downloading prototxt file… (save path: unet.onnx.prototxt)
INFO model_utils.py (88) : ======================= 100.00% ( 1908KB )]
INFO model_utils.py (89) : ONNX file and Prototxt file are prepared!
INFO model_utils.py (74) : Downloading onnx file… (save path: safety_checker.onnx)
INFO model_utils.py (80) : ======================= 100.00% ( 1187689KB )]
INFO model_utils.py (82) : Downloading prototxt file… (save path: safety_checker.onnx.prototxt)
INFO model_utils.py (88) : ======================= 100.00% ( 589KB )]
INFO model_utils.py (89) : ONNX file and Prototxt file are prepared!
INFO model_utils.py (74) : Downloading onnx file… (save path: text_encoder.onnx)
INFO model_utils.py (80) : ======================= 100.00% ( 480854KB )]
INFO model_utils.py (82) : Downloading prototxt file… (save path: text_encoder.onnx.prototxt)
INFO model_utils.py (88) : ======================= 100.00% ( 348KB )]
INFO model_utils.py (89) : ONNX file and Prototxt file are prepared!
INFO model_utils.py (74) : Downloading onnx file… (save path: vae_encoder.onnx)
INFO model_utils.py (80) : ======================= 100.00% ( 133513KB )]
INFO model_utils.py (82) : Downloading prototxt file… (save path: vae_encoder.onnx.prototxt)
INFO model_utils.py (88) : ======================= 100.00% ( 166KB )]
INFO model_utils.py (89) : ONNX file and Prototxt file are prepared!
INFO model_utils.py (74) : Downloading onnx file… (save path: vae_decoder.onnx)
INFO model_utils.py (80) : ======================= 100.00% ( 193388KB )]
INFO model_utils.py (82) : Downloading prototxt file… (save path: vae_decoder.onnx.prototxt)
INFO model_utils.py (88) : ======================= 100.00% ( 183KB )]
INFO model_utils.py (89) : ONNX file and Prototxt file are prepared!
INFO anything_v3.py (112) : Downloading weights.pb…
INFO anything_v3.py (114) : weights.pb is prepared!100.00% ( 3357504KB )]
INFO anything_v3.py (87) : prompt: witch
INFO anything_v3.py (89) : Start inference…
******
リスト2 Anything V3の実行
画像生成に必要なモデル・ファイルは,初回実行時に自動的にダウンロードされます.そのため,最初にスクリプトを実行する際にはインターネット接続が必要です.なお,今回はサンプル・プログラムanything_v3.pyを用いて画像生成を行いました.その際に確認できたGPUの使用状況と環境指定オプションについて補足します.
今回使用したCPU(Core i5-10500)には内蔵GPUであるIntel UHD Graphics 630が搭載されており,ailia SDKではこれを次のように認識しました.また,環境によっては次のように明示的に実行環境を指定できます.
******
–env_id=0:CPU実行
–env_id=1:CPU-IntelMKL実行
–env_id=2〜5:CUDA対応のNVIDIA製GPU(環境により異なる)
–env_id=6〜7:Intel UHD Graphics(環境により異なる)
******
ただし,今回の環境においては,CPU/内蔵GPU/NVIDIA GPUのいずれを指定しても,画像生成に要する時間には大きな差は見られませんでした.
続いて,サンプル・プロンプトを処理したところ,anything_v3の公式リポジトリ(README.md)に掲載されているサンプル画像と同等の出力が得られました(図1).この結果から,初期動作確認としては環境構築が正しく行われており,モデルの推論処理も正常に機能していることが確認できました.
図1 サンプル・プロンプトの実行結果
●さまざまな画像を生成してみる
今回構築した環境を基盤として,今後はより多様なプロンプトを用い,描画対象やスタイルを指定した画像生成を検証していきます.これにより,モデルが持つ表現力やカスタマイズ性をさらに掘り下げて確認できます.
ここからは,実際にプロンプトを変更しながら,生成される画像の変化を順に見ていきます.
▲1,初期状態以外の画像生成
初期状態では,プロンプトとしてwitch(魔女)が使用されていました.そこで,他の職業やキャラクタが生成可能かを確認するために,プロンプトにpoliceを指定して実行します.
******
(.env) PS> python anything_v3.py –onnx –input “police”
******
指定したプロンプトpoliceに対応する画像が正しく生成され,魔女とは異なる服装や雰囲気を持つキャラクタが出力されました(図2).
図2 プロンプトpoliceに対応する生成画像
一部では書類を持つ手の表現が不自然になるなど,画像生成AIにありがちな不具合も見られましたが,全体としてはテーマに沿ったイラストが得られています.
以上の結果から,プロンプトを変更することで,witch(魔女)に限らず,さまざまなテーマやキャラクタの画像を生成できることが確認できました.
▲2,人間以外の画像の生成
人物以外の対象をプロンプトに指定した場合の挙動を確認します.ここではdog を入力し,モデルが動物など非人物系の被写体にどこまで対応できるかを検証します.
******
(.env) PS> python anything_v3.py –onnx –input “dog”
******
結果,プロンプトdogに対応する画像が生成され,人間ではなく犬を描いたアニメ風のイラストが出力されました(図3).
図3 プロンプトdogに対する生成画像
この結果から,Anything V3は人物に限定されず,動物やその他の非人物対象に対しても一定の描画能力を持っていることが確認できました.
▲3,背景を含む画像生成
より複雑なシーン全体を表現できるかどうかを確認します.人物と背景の両方を含むプロンプトを指定し,具体的な状況を英語で記述して実行します.使用したプロンプト(日本語原文)は「白衣を着た一人の女性が建設現場の前に立っている」です.
******
(.env) PS> python anything_v3.py –onnx –input “1woman , white coat , standing , construction”
******
結果,プロンプトに含まれる内容が画像に正しく反映され,白衣を着た女性と工事現場を思わせる背景が一体となったイラストが生成されました(図4).
図4 背景を含む画像生成の結果
人物だけでなく,背景の構造や雰囲気も適切に描写されており,モデルがプロンプトに含まれる複数の要素を理解し,統合的に出力していることが確認できました.
この結果から,Anything V3はキャラクタ単体だけでなく,背景を含めたシーン全体の構成にも対応可能であるといえます.
▲4,描画スタイルの指定
生成される画像の描画スタイルをプロンプトで細かく制御できるかどうかを確認します.今回は子供向けの塗り絵のようなシンプルな線画スタイルを指定し,モデルがどの程度その指示に従うかを確認しました.使用したプロンプト(日本語原文)は「白衣を着た一人の女性が建設現場の前に立っている、塗り絵のような白黒の細線の画」です.
******
(.env) PS> python anything_v3.py –onnx –input “1woman , white coat , standing in front of a construction site , Monochrome, coloring book line art, thin lines”
******
結果,プロンプトの指示どおり,白黒で建設現場を背景に白衣を着た女性を細い線で描かれたイラストが生成されました(図5).
図5 描画スタイルを指定して画像を生成
この結果から,Anything V3は構図や被写体の内容だけでなく,描画スタイルの制御にも一定の柔軟性を備えていることが分かります.プロンプト設計を工夫することで,より多様なスタイルの画像生成も可能と考えられ,応用範囲の広がりが期待されます.
●まとめ
今回はアニメ・スタイルの画像生成モデルAnything V3をailia SDK上のサンプル・プログラムanything_v3を用いて検証し,次の点を確認しました.
******
・環境構築とモデル実行が容易であり,初回起動後すぐに高品質な画像生成が可能
・プロンプトの変更により,人物や動物,背景など多様なテーマの描画に対応
・描画スタイルの指定(塗り絵風など)にも一定の効果があり,表現のカスタマイズが可能
・簡単な英語表現により,より精度の高い制御が可能
******
RAMはやや多めに必要ですが,CPUのみでも動作可能なため,環境構築のハードルは高くありません.画像生成AIに興味のある方や,プロンプト設計による表現制御を試してみたい方は,今回紹介した環境やプロンプトから始め,徐々に複雑な指示や独自のタグ表現を組み合わせることで,画像生成の幅をさらに広げてみてください.
氏森 充(うじもり・たかし)
約30年間,(株)構造計画研究所にてIoT,ビッグデータ,機械学習,AI関連のシステム開発や実務応用に従事.退職後はLLM(大規模言語モデル)関連の情報収集や技術動向の調査・発信に注力し,雑誌「Interface」でもLLM技術に関する記事を執筆中.