「画像内に違和感なく文字を追加したい」
「画像内の文字を修正したい」
このような場合には、UDiffTextがオススメです。
この記事では、UDiffTextについて解説しています。
本記事の内容
- UDiffTextとは?
- UDiffTextのシステム要件
- UDiffTextのインストール
- UDiffTextの動作確認
それでは、上記に沿って解説していきます。
UDiffTextとは?
UDiffTextは、画像内で高品質なテキスト合成を実現するための技術になります。
これは、Stable Diffusion v2.0を基にしています。
画像内の文字編集機能と捉えれば、わかりやすいかもしれません。
編集と言っていますが、新規で文字を追加することもできます。
一応、デモが公開はされているようです。
ただ、このデモはダウンロードして利用可能です。
このダウンロードしたデモを利用して、インストールや動作確認まで行います。
UDiffTextのシステム要件
UDiffTextは、基本的にはPyTorchが動けば大丈夫のようです。
OSは、Windowsでの動作は確認できています。
もちろん、Linuxは問題なく動くでしょう。
macは、わかりません。
それぐらい、公式に情報が不足しています。
とにかく、PyTorchのGPU版はインストール必須です。
おそらく、最新版をインストールしても大丈夫でしょう。
UDiffTextのインストール
UDiffTextのインストールは、Python仮想環境の利用がオススです。
まず、UDiffTextのデモ環境をダウンロードしましょう。
git clone https://huggingface.co/spaces/ZYMPKU/UDiffText
モデルも同時にダウンロードするため、時間はそこそこかかります。
ダウンロードできたら、リポジトリルートへ移動しておきます。
cd UDiffText
ここで次のファイルを確認できます。
requirements.txt
colorlover==0.3.0 einops==0.6.1 gradio==3.41.0 imageio==2.31.2 img2dataset==1.42.0 kornia==0.6.9 lpips==0.1.4 matplotlib==3.7.2 numpy==1.25.1 omegaconf==2.3.0 open-clip-torch==2.20.0 opencv-python==4.6.0.66 Pillow==9.5.0 pytorch-fid==0.3.0 pytorch-lightning==2.0.1 safetensors==0.3.1 scikit-learn==1.3.0 scipy==1.11.1 seaborn==0.12.2 tensorboard==2.14.0 timm==0.9.2 tokenizers==0.13.3 torch==2.1.0 torchvision==0.16.0 tqdm==4.65.0 transformers==4.30.2 xformers==0.0.22.post7
ここでは、つぎのように変更を加えます。
#torch==2.1.0 #torchvision==0.16.0 #xformers==0.0.22.post7 xformers
PyTorchは、事前にインストール済みとします。
あと、xFormersはバージョン指定すると面倒なことが多くなりがちです。
変更できたら、次のコマンドで一括インストールを行います。
pip install -r requirements.txt
処理が終わったら、UDiffTextのインストールは完了です。
UDiffTextの動作確認
デモの起動は、以下のコマンドで行います。
python app.py
起動に成功したら、コンソールに次のように表示されます。
Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`.
ブラウザで「http://127.0.0.1:7860」にアクセスすると、次のような画面が確認できるはずです。
範囲をマーキングして、プロンプトを入力します。
そして、「Run」ボタンをクリックすれば次のような結果となります。
ちなみに、これは1発目の結果です。
今まで、これほどまで文字を精度高く表示できるモノはなかったですね。
ただ、このデモは正方形の画像が対象になります。
正方形にカットされて出力されてしまうのです。
この辺が解消されれば、本当に素晴らしいのですけどね。
もしかしたら、UDiffTextはFooocusに実装されるかもしれませんね。
期待しておきましょう。