「二次元キャラの生成に強い画像生成AIを探している」
「Stable Diffusion以外の画像生成AIを試してみたい」
このような場合には、ERNIE-ViLGがオススメです。
この記事では、ローカル環境へERNIE-ViLGをインストールする方法を解説しています。
本記事の内容
- ERNIE-ViLGとは?
- ERNIE-ViLGのシステム要件
- ERNIE-ViLGのインストール
- ERNIE-ViLGの動作確認
それでは、上記に沿って解説していきます。
ERNIE-ViLGとは?
ERNIE-ViLGは、中国語のテキストから画像を生成する最先端のtxt2imgです。
開発元は、中国のBaidu(百度)になります。
Stable Diffusionと同じモノと言えば、同じモノです。
ただし、現状での評価(評判)はStable Diffusionが圧倒していますね。
ERNIE-ViLGの特徴は、「2次元キャラに強い」と言われています。
あと、Stable Diffusionよりも低スペックで動くことは利点になります。
ERNIE-ViLGの導入は、簡単な部類です。
そのため、画像生成の選択肢として用意しておくのは全然アリだと思います。
Stable Diffusionで上手く作成できない画像を、ERNIE-ViLGがサクッと作成できる可能性もあります。
以上、ERNIE-ViLGについて説明しました。
次は、ERNIE-ViLGのシステム要件を説明します。
ERNIE-ViLGのシステム要件
現時点(2022年9月)でのERNIE-ViLGの最新バージョンは、1.0.0となります。
この最新バージョンは、2022年8月2日にリリースされています。
ERNIE-ViLGのシステム要件は、以下となります。
- OS
- Pythonバージョン
- PaddlePaddle
- PaddleHub
それぞれについて以下で説明します。
OS
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
Pythonバージョン
Pythonバージョンが、ポイントになります。
通常であれば、上位互換が働いて新しいバージョンでは問題なく動きます。
しかし、ERNIE-ViLGに関してはそうではないのです。
現状であれば、Python 3.8以前しか動きません。
それは、他のシステム要件であるPaddleHubが関係しています。
このことは、PaddleHubのところで説明します。
また、Python公式開発サイクルは次のようになっています。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Python公式開発サイクル準拠を前提にするなら、次のバージョンがERNIE-ViLGのシステム要件となります。
- Python 3.7
- Python 3.8
PaddlePaddle
PaddlePaddle(パドルパドル)は、Baidu(百度)の開発するディープラーニングフレームワークです。
TensorFlowやPytorchと同じようなモノと考えればよいでしょう。
PaddlePaddleでも、GPU版とCPU版が存在します。
画像を扱う以上は、GPU版を利用したいところです。
なお、ERNIE-ViLGは8GB程度のGPUメモリで問題なく動きます。
詳細は、インストールの際に説明しています。
PaddleHub
PaddleHubは、PaddlePaddleの利用を前提としたツールキットです。
PaddleHubを使えば、学習済みモデルの管理・転移学習をより効率的に始めることが可能になります。
例えば、モデルをダウンロードして設置するという作業をする必要がありません。
このような作業をPaddleHubが自動的にやってくれます。
PaddlePaddleを利用する上では、必須ツールと言えます。
そして、このPaddleHubがPython 3.9以降ではインストールできないのです。
PaddleHubのバージョンが上がれば、この問題は解決すると思います。
でも、現状ではPaddleHubが原因で新しいバージョンのPythonを利用できません。
以上、ERNIE-ViLGのシステム要件を説明しました。
次は、ERNIE-ViLGのインストールを説明します。
ERNIE-ViLGのインストール
ERNIE-ViLGのインストールは、以下の作業を順番に行います。
- PaddlePaddleのインストール
- PaddleHubのインストール
- ERNIE-ViLGのインストール
ERNIE-ViLGは、Python仮想環境にインストールしましょう。
作業前に、現状のインストール済みパッケージを確認しておきます。
> pip list Package Version ---------- ------- pip 22.2.2 setuptools 65.3.0 wheel 0.36.2
そして、pipとsetuptoolsの更新も実施しておきましょう。
python -m pip install --upgrade pip setuptools
それでは、それぞれのインストール作業を以下で説明します。
PaddlePaddleのインストール
PaddlePaddleには、CPU版とGPU版が用意されています。
GPU版を利用したい場合は、次のツールを利用しましょう。
PaddlePaddleインストール支援ツール
https://www.paddlepaddle.org.cn/
上記ページでは、次のような画面のツールが提供されています。
PyTorchのサイトでも、同じようなツールを見たことがあります。
各自の環境に合った条件を選択していきます。
選択していくと、PaddlePaddleの最適なインストールコマンドを取得できます。
なお、私の環境ではCUDA11.1がヒットしました。
対応するCUDAが存在しない場合は、新しい方のCUDA 11.6をインストールしましょう。
CUDAのインストールは、次の記事で解説しています。
今回は、次のようなコマンドを取得することができました。
python -m pip install paddlepaddle-gpu==2.3.2.post111 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
このコマンドをそのまま実行します。
少し待てば、PaddlePaddleのインストールは完了です。
PaddleHubのインストール
バージョンは指定せずに、最新バージョンのPaddleHubをインストールします。
pip install paddlehub
Pythonのバージョンが適切であれば、インストールは問題なく進みます。
もし次のようなエラーが出たら、Pythonのバージョンを確認しましょう。
Failed to build onnx ERROR: Could not build wheels for onnx, which is required to install pyproject.toml-based projects
エラーの原因は、PaddleHubで利用されているonnxバージョンが古いことが関係しています。
Python 3.9以降のwheelが、古いonnxに対応していないということです。
ERNIE-ViLGのインストール
PaddleHubのインストールまで済ませていれば、次のコマンドが利用できます。
> hub version ~省略~ 2.3.0
ただ、次のような警告も表示されるかもしれません。
DeprecationWarning: BILINEAR is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.BILINEAR instead.
現状では、無視しても問題ありません。
とりあえず、PaddleHubのバージョンが確認できれば準備はOKです。
PaddleHubを利用して、ERNIE-ViLGをインストールします。
そのためのコマンドが、以下。
hub install ernie_vilg
ここでも、先ほどのPillow関係の警告がたくさん出てきて一瞬ビビります。
次のようなメッセージが表示されると、ERNIE-ViLGのインストールは完了です。
Successfully installed ernie_vilg-1.0.0
インストールは、これですべて完了となります。
最後に、インストールされたパッケージを確認しておきます。
> pip list Package Version ------------------ ------------- aiohttp 3.8.1 aiosignal 1.2.0 astor 0.8.1 async-timeout 4.0.2 attrs 22.1.0 Babel 2.10.3 bce-python-sdk 0.8.74 certifi 2022.6.15 charset-normalizer 2.1.1 click 8.1.3 colorama 0.4.5 colorlog 6.7.0 cycler 0.11.0 datasets 2.4.0 decorator 5.1.1 dill 0.3.4 easydict 1.9 filelock 3.8.0 Flask 2.2.2 Flask-Babel 2.0.0 fonttools 4.37.1 frozenlist 1.3.1 fsspec 2022.8.2 future 0.18.2 huggingface-hub 0.9.1 idna 3.3 importlib-metadata 4.12.0 itsdangerous 2.1.2 jieba 0.42.1 Jinja2 3.1.2 joblib 1.1.0 kiwisolver 1.4.4 MarkupSafe 2.1.1 matplotlib 3.5.3 multidict 6.0.2 multiprocess 0.70.12.2 numpy 1.23.2 opencv-python 4.6.0.66 opt-einsum 3.3.0 packaging 21.3 paddle-bfloat 0.1.7 paddle2onnx 1.0.0 paddlefsl 1.1.0 paddlehub 2.3.0 paddlenlp 2.4.0 paddlepaddle-gpu 2.3.2.post111 pandas 1.4.4 Pillow 9.2.0 pip 22.2.2 protobuf 3.20.0 pyarrow 9.0.0 pycryptodome 3.15.0 pyparsing 3.0.9 python-dateutil 2.8.2 pytz 2022.2.1 PyYAML 6.0 pyzmq 23.2.1 rarfile 4.0 requests 2.28.1 responses 0.18.0 scikit-learn 1.1.2 scipy 1.9.1 sentencepiece 0.1.97 seqeval 1.2.2 setuptools 65.3.0 six 1.16.0 threadpoolctl 3.1.0 tqdm 4.64.1 typing_extensions 4.3.0 urllib3 1.26.12 visualdl 2.4.0 Werkzeug 2.2.2 wheel 0.36.2 xxhash 3.0.0 yarl 1.8.1 zipp 3.8.1
これだけの数のパッケージが、インストールされます。
だからこそ、Python仮想環境の利用を推奨しています。
以上、ERNIE-ViLGのインストールを説明しました。
次は、ERNIE-ViLGの動作確認を説明します。
ERNIE-ViLGの動作確認
ERNIE-ViLGは、次の方法で利用可能です。
- コマンドラインツール
- Python API(モジュール)
それぞれを以下で説明します。
コマンドラインツール
入力するテキストは、中国語を用います。
日本語も使えるようですが、精度的にはイマイチのような気がします。
中国語と言っても、DeepLを使えば恐れる必要はありません。
DeepL翻訳:世界一高精度な翻訳ツール
https://www.deepl.com/translator
では、「奇瓦瓦」を「油画」スタイルで描いてもらいましょう。
hub run ernie_vilg --text_prompts "奇瓦瓦" --style "油画" --output_dir cmd_output
上記を実行すると、「cmd_output」ディレクトリに画像が作成されます。
「奇瓦瓦」は、日本語だと「チワワ」になります。
作成された画像は、確かにチワワを油絵で描いています。
Python API(モジュール)
コードは、以下を利用します。
import paddlehub as hub module = hub.Module(name="ernie_vilg") text_prompts = ["奇瓦瓦"] images = module.generate_image(text_prompts=text_prompts, style='蜡笔画', output_dir='./api_output/')
上記を実行した結果、「api_output」ディレクトリに画像が作成されます。
「蜡笔画」は、日本語だと「クレヨン画」になります。
作成された画像は、確かにチワワをクレヨンで描いたように見えます。
以上、ERNIE-ViLGの動作確認を説明しました。