IP2Pで画像編集

IP2Pで画像編集 Stable Diffusion
IP2Pで画像編集

SNSで画像をアップする際、多くの方は画像編集をすることでしょう。
「足を長く見せたい」、「肌をキレイにしたい」、「余計なものを消したい」などなど。

画像編集ソフトで編集するのではなく、それをAIにやらせてみましょう!
編集したい箇所を手動で修正するのではなく、AIに文章で指示を出して描き変えさせます。
こうすると画像編集の手間が軽くなります。

今回はIP2Pという技術で画像編集します。

IP2Pとは

Instruct-Pix2Pix
条件付き拡散モデル(ControlNet)の一種で、画像に対しプロンプトで指示を出すとその通りに画像を編集します。

入力画像 + 編集指示 → 編集済み出力画像
このように学習させるために451990のデータセットを用いたそうです。

ip2p_buildings_before
入力画像

編集指示プロンプト

building is exploding, melting
(建物が爆発している、溶けている)

ip2p_buildings_after
出力画像

このようにプロンプトのとおりの画像編集ができています。
今までだとPix2Pixで画像A→画像Bの学習モデルを作ってから変換する必要がありました。
これがモデルも作らずテキストだけで編集できるとは、基盤モデルの強さを改めて感じますね!

5/22にアメリカのペンタゴンが爆発しているフェイク画像が拡散されました。
くれぐれもフェイク画像でデマを流さないようにしましょう。

ちなみに上記の画像は元画像も画像生成しています。



IP2PにはGPT-3、Stable Diffusion、CLIPなど多くの技術が使われています。
詳細は公式の情報をご覧ください。

IP2PはStable Diffusion Web UIのControlNetに組み込まれているため、簡単に体験できます。
それでは以下からStable Diffusionでの使い方を紹介します。

Stable Diffusionでの使い方

ControlNetの追加

Stable Diffusion の拡張機能であるControlNetを追加します。
IP2Pで使うモデルは以下からv1.1のファイルをダウンロードしてください。
モデルファイル:https://huggingface.co/ckpt/ControlNet-v1-1/blob/main/control_v11e_sd15_ip2p.pth

Web UIでの手順

Stable Diffusion Web UIでIP2Pを実行する手順は以下の通りです。
image2imageではなくtext2imageで実行します。

IP2Pの実行方法
  1. Stable Diffusion Web UI を起動
  2. ControlNetの設定欄を展開
  3. 編集元画像を入力
  4. Enable にチェック
  5. Preprocessorにnone、Modelにcontrol_v11e_sd15_ip2p_fp16を選択
  6. txt2imageで編集指示のプロンプトを入力
  7. Generate

設定パラメータ

IP2Pの設定パラメータは、ControlNet共通のパラメータと同じように設定します。
デフォルトのままだとうまく変換できないこともあります。
調整するとしたらControl Weightが良いと思います。

#パラメータ内容
1Control WeightIP2Pの強度
 低:プロンプト優先(元画像を多く修正)
 高:IP2P優先(元画像保持)
2Starting Control Step
Ending Control Step
IP2Pを反映させるU-Netのステップ数の割合。
総ステップ数が20で4〜18ステップにIP2Pを反映させたい場合、
 Starting Control Step:0.25
 Ending Control Step:0.9
3Control ModeプロンプトとIP2Pのどちらを優先させるか
anime_ip2p
アニメ調のOLさん

この画像に対し、

turn her into a cyborg(サイボーグにして)」とプロンプトで指示を出してIP2Pしたときの結果を比較します。

Control Weightを変化させた結果です。
1.0が一番サイボーグっぽいですね。

ip2p_weight_0.1
0.1
ip2p_weight_0.5
0.5
ip2p_weight_1.0
1.0
ip2p_weight_1.5
1.5
ip2p_weight_2.0
2.0

今度はControl Modeを変更しています。
IP2P自体がプロンプトに関する機能だからなのか、promptもControlNetも同じような感じで違いがわからないですね。

prompt_important
My prompt is more important
ip2p_weight_1.0
Balanced
controlnet_important
ControlNet is more important

人にIP2Pをすると他人になりますね。
同じ人で少し変更したい場合は、LoRAで生成するかReference onlyで生成するかでしょうか。

有用指示プロンプト

公式によりますと、「make X into Y(XをYに変える)」より「make it X(Xに変える)」の方が効きやすいそうです。
Stable Diffusion におけるIP2Pでは、命令プロンプト説明プロンプトを半々で学習させています。
 命令プロンプト:少女を可愛くする
 説明プロンプト:可愛い少女
ですので、公式と異なり説明プロンプトだけでも画像編集してくれます。
ちなみにNSFWはフィルタリングされています。

日本人
日本人

英文を作れなくても、英単語を知っていれば使えるということか。

服を脱がすのは難しいか。。

どんなプロンプトで指示すればよいのか。
いろいろ試してみます。

ip2p_prompt

この画像に対してIP2Pをします。

make it winter
make it winter

make it winter
(冬にして)

change into a suit
change into a suit

change into a suit
(スーツに着替えて)

grow old
grow old

grow old, aging
(歳をとる、老化する)

she is in Singapore
she is in Singapore

she is in Singapore
(同窓会には行けません。今、私はシンガポールにいます。)

swap apple with flower
swap apple with flower

swap apple with flower
(リンゴと花を交換する)

rain
rain

rain
(雨)

けっこうランダム性があるため、ガチャ要素が高いです。
具体的にここを変更して、というより全体を変更するようなプロンプトの方が効きそうです。

冬だから寒くないように帽子を被らせてあげるAIさん素敵


まとめ

IP2Pは手軽に画像編集できますが、うまく使わないと思い通りの画像は生成されません。
他のControlNetやLoRAなどを組み合わせて使うと面白いかもしれません。
Interrogate CLIPでimage2textをして、どのプロンプトを使って編集指示をするか考えてみるのも良さそうですね。

IP2Pに似たようなものとして同じControlNetのreference onlyというのがあります。
reference onlyは以下で紹介しておりますので、ぜひ両方使いこなしましょう!

コメント

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