「Inpaintを行うと画質が下がってしまう・・・」
「高画質化を行うと元画像と若干違った画像になってしまう・・・」
このような場合には、HD-Painterがオススメです。
この記事では、HD-Painterについて解説しています。
本記事の内容
- HD-Painterとは?
- HD-Painterのシステム要件
- HD-Painterのインストール
- HD-Painterの動作確認
それでは、上記に沿って解説していきます。
HD-Painterとは?
HD-Painterとは、拡散モデルを用いたテキストによる画像補完の技術のことです。
Inpaintツールと言えば、わかりやすいかもしれません。
HD-Painterの特徴には、以下が挙げられます。
- 画像の高解像度化
- プロンプトへの高い忠実性
Hugging Face上でデモが公開されています。
確かに、Inpaintツールとしての性能は高いです。
それに加えて、HD-Painterには画像を高解像度にする機能があります。
この高解像度化の機能が、かなり質が高いと言えます。
画像を拡大しても、内容がほぼ変わらないのです。
同じような機能を持つツールには、Real-ESRGANがあります。
ただ、このような高画質化ツールを使うと若干画像が変わってしまいます。
それは仕方がないと諦めているところがありました。
しかし、HD-Painterは画像がほぼ変わらずに高画質化(拡大)できるのです。
左の画像は、高画質化する前の画像です。
そして、右の画像は高画質化(拡大)した後の画像になります。
(※サイズは拡大する前のサイズに縮小しています)
差異があるとわかりますか?
目元や肌の感じも同じです。
高画質化ツールを使うと、変に美肌にされてしまうことがあります。
HD-Painterによる高画質化では、そのようなことはありません。
したがって、HD-Painterは高画質化ツールとしてもかなり使えます。
HD-Painterのシステム要件
システム要件としては、デモを前提に説明します。
OSは、Windowsでも動きます。
そして、GPU版のPyTorchがインストールできることが前提になります。
その際に用いるCUDAのバージョンは、11.8を利用するのが無難だと言っておきます。
「requirements.txt」では、以下のように記載されています。
--extra-index-url https://download.pytorch.org/whl/cu118
あと、Windowsで少しでも高速に動かしたいならPython 3.10の利用を推奨します。
Tritonのインストール方法を含めその辺の詳細は、次の記事内で説明しています。
ただ、HD-PainterではTritonは必須ではありません。
そのため、Tritonを諦めるならPython 3.11などでも構わないのでしょう。
また、GPUメモリはそこそこ必要かもしれません。
その辺りの情報は、明記されていません。
そのため、実際に試してみるしかないと思います。
ちなみに、私はGPU 24GBが搭載されたマシンで検証しています。
HD-Painterのインストール
HD-Painterのインストールには、Python仮想環境をオススメしておきます。
まずは、デモのプロジェクトをそのままダウンロードします。
git clone https://huggingface.co/spaces/PAIR/HD-Painter
リポジトリルートへ移動しておきます。
cd HD-Painter
ここでは、次のファイルを確認できます。
requirements.txt
--extra-index-url https://download.pytorch.org/whl/cu118 einops==0.7.0 gradio==3.47.1 numpy==1.24.1 omegaconf==2.3.0 open-clip-torch==2.23.0 opencv-python==4.7.* Pillow==9.4.0 pytorch-lightning==2.1.2 PyYAML==6.0.1 safetensors==0.3.2 scipy==1.10.0 segment-anything @ git+https://github.com/facebookresearch/segment-anything.git@6fdee8f2727f4506cfbbe553e23b895e27956588 torch==2.1.1 torchvision==0.16.1 tqdm==4.66.1 transformers==4.28.0 xformers==0.0.23
Python 3.10でCUDA 11.8がインストール済みであれば、そのまま実行可能です。
pip install -r requirements.txt
他の環境は試していないので、依存関係でエラーが出る可能性はあります。
その場合は、バージョン指定を外したりしてみましょう。
一括インストール処理が終われば、HD-Painterのインストールは完了です。
HD-Painterの動作確認
HD-Painterの起動は、以下のコマンドで行います。
python app.py
実行後、次のようなエラーが出るかもしれません。
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1. Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
このエラーが出た場合は、app.pyの次の部分を修正します。
上記コードは、GPUが2つある前提になっています。
普通は、1個のGPUしかありませんよね。
そのため、次のように修正します。
これでデモが正常に起動するはずです。
なお、初回起動時にはモデルのダウンロードが実行されます。
Inpaint用のモデルだけでも、3つはダウンロードされますからね。
利用方法としては、次の順番で処理を行う必要があります。
Inpaintしてから、高画質化という流れです。
右側に画像がある状態で「Send to Inpainting-Specialized Super-Resolution (x4)」ボタンをクリックします。
そうすると、高画質化の処理が実行されます。
Inpaint処理をスルーした場合、次のようなメッセージが表示されます。
単純に画像を高画質化したい場合は、次のように処理します。
プロンプトには何も入力せずに、「Inpaint」ボタンを押します。
そして、高画質化を実行します。
これで、ハイレベルな高画質化を実現できます。