HD-Painterによるハイレベルな高画質化とInpainting

HD-Painterによるハイレベルな高画質化とInpainting ツール

「Inpaintを行うと画質が下がってしまう・・・」
「高画質化を行うと元画像と若干違った画像になってしまう・・・」

このような場合には、HD-Painterがオススメです。
この記事では、HD-Painterについて解説しています。

本記事の内容

  • HD-Painterとは?
  • HD-Painterのシステム要件
  • HD-Painterのインストール
  • HD-Painterの動作確認

それでは、上記に沿って解説していきます。

HD-Painterとは?

HD-Painterとは、拡散モデルを用いたテキストによる画像補完の技術のことです。
Inpaintツールと言えば、わかりやすいかもしれません。

HD-Painterの特徴には、以下が挙げられます。

  • 画像の高解像度化
  • プロンプトへの高い忠実性

Hugging Face上でデモが公開されています。

HD-Painter - a Hugging Face Space by PAIR
Discover amazing ML apps made by the community

確かに、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」ボタンを押します。
そして、高画質化を実行します。

これで、ハイレベルな高画質化を実現できます。

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