1.はじめに
今回ご紹介するのは、絵画の枠外をテキストに沿って描き足す Stable diffusion infinity という技術です。
2.Stable diffusion infinity とは?
画像生成器(拡散モデル)と画像とテキストの類似度計算器(CLIP)を組み合わせると、空白を初期値としてテキストから画像生成出来ます(Stable diffusion)。
このモデルを使って、絵画の一部+枠外の空白を初期値としてテキストから画像生成すると、枠外の画像も生成出来るわけです(Stable diffusion infinity)。
言葉だけで説明するのは難しいので、以下の操作の仕方を見て頂けると、分かりやすいと思います。
3.コード(2022.10.25更新)
コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Open in Colab」ボタンをクリックすると動かせます。
まず、セットアップを行います。実行ボタンを押して3分くらい待つとログの最後にリンク先が表示されますので、赤枠内のリンク(毎回変更になります)をクリックします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#@title #**set up** # install library !nvidia-smi -L !pip install -qq -U diffusers==0.6.0 transformers ftfy !pip install -q gradio==3.6 !pip install -q fpie timm # git clone !git clone --recurse-submodules https://github.com/lkwq007/stablediffusion-infinity %cd stablediffusion-infinity !cp -r PyPatchMatch/csrc . !cp PyPatchMatch/Makefile . !cp PyPatchMatch/travis.sh . !cp PyPatchMatch/patch_match.py . # program start !python app.py --share |
・・・
すると、下記Webページが表示され、これ以降はWebのU Iに従って操作を行います。
もし、今までHugging Face のアクセス・トークンを取得したことがない場合は、このリンクを参照し事前に取得して下さい。
今回、Hugging face の新しいModel card を使用するので、さらにこのリンクから追加使用申請をして下さい。
Huggingface token の赤枠内にアクセス・トークンをペーストし、setup(may take a while)をクリックします。
3分くらい経つと、このような画像が表示されます。市松模様がキャンバス、実線の四角が画像生成する領域です。
次に、自分のPCから絵画をアップロードします。Upload Image(赤枠)をクリックし、絵画を選択します。
自分のPCから絵画がアップロードされました。ここでは、「真珠の耳飾りの少女」を使用しています。
絵画の大きさや位置を変更します。自分の設定したい大きさや位置になったら、Confirmを押します。
今度は、四角の位置を調整し、Promptに英文を記入したらConfirmで決定し、Outpaintを押します。ここでは、Promptには「a girl holding an apple」と記入しています。
四角の大きさを調整したい場合は、Resize Selection を押して行います。
すると、絵画の一部+空白とテキストから、画像が生成されます。つまり、絵画の一部と強い関連性があり、かつテキストと強い関連性がある画像が、空白部分に生成されるわけです。
ここで、promptに何も記入しない場合は、既存の画像の延長線上で画像を生成します。
生成された画像のままでよければ Accept で決定します。繰り返し同様な生成をしたい場合は Retry、動作をキャンセルする場合はCancel を押して下さい。
後は、この操作を繰り返すことで画像を完成させます。
完成した画像は、左の赤枠でダウンロードできます。また、画像編集中に、右の赤枠で生成した画像の一部を消しゴムを使うように削除することができます。
今回、ポイントとなる操作方法のみに絞って説明しましたが、いかがだったでしょうか。ご説明したもの以外にも色々な機能がありますので、色々触ってみて下さい。
では、また。
(オリジナルgithub)https://github.com/lkwq007/stablediffusion-infinity