【簡単】ローカル環境へのERNIE-ViLGのインストール

【簡単】ローカル環境へのERNIE-ViLGのインストール 機械学習

「二次元キャラの生成に強い画像生成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.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年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の動作確認を説明しました。

タイトルとURLをコピーしました