0.0~1.0 まで指定する。イメージとしては 0.75 なら元画像の75%をノイズに変えた状態から復元をするという感じ。

顔が支配的な画像に対して img2img をする場合、0.5 なら輪郭はほぼそのままで顔の内部が変わる。0.75 なら輪郭も結構変更するし、場合によっては向いてる方向も変わる。

  1. トップ
  2. stablediffusion
  3. img2img の strength

800円弱ぐらいで買えてしまうカーボンノギス。スペック上は器差±0.2mm、表示上は0.1mm。安いアナログノギスの変わりには十分だろう。

センサは静電容量式のようだ。

良いところ

  • 電源オフ状態で動かすと起動する (表示がでる)
    • というか電池を入れている間はずっと測定しっぱなしのようだ
  • そこそこ早く動かしても値飛ばしがない
  • 表示がデカい
  • すべりも悪くない
  • 軽い
  • 安い

悪いところ

今のところない。電池持ちが心配。

PNG にはメタデータを保存するチャンクがある。Python からも簡単に読み書き可能なので、ここに prompt を保存しておくと、あとから参照したいときに便利になる

img が PIL の Image だとして、save を呼びだしているとこに pnginfo というのを足してあげる。

from PIL.PngImagePlugin import PngInfo

# ...

metadata = PngInfo()
metadata.add_text("prompt", "foo bar baz")
img.save("./outputs/0.png", pnginfo=metadata)

読み出し

#!/usr/bin/env python
import sys
from PIL import Image
from PIL.PngImagePlugin import PngInfo

img = Image.open(sys.argv[1])
print(img.text['prompt'])
  1. トップ
  2. stablediffusion
  3. Stable Diffusion で prompt 情報を画像に保存しておく
  1. トップ
  2. tech
  3. Stable Diffusion で prompt 情報を画像に保存しておく

AI画家はもちろん顔を描くことはできるのだが、大きなシーンに含まれる顔を描くのは手を抜いた感じになってしまう。これは顔のピクセル数が少なすぎ、情報量が不足していることに起因していると思われる。人間が絵を見るときは特定領域に注視するが、AIは全体を構成する。

顔がそれっぽくなるまで生成しまくるという手や、そもそも後ろ姿にするという手もあるが、どうしても「この構図がいい」という場合に顔だけ修正することを試してみた。

やってることは

  1. 元画像をアップスケールする
  2. 顔の部分を周辺を多少含めて切り抜く
  3. 切り抜きを元に img2img で顔ガチャする
  4. 当たりが出たら Photoshop で合成する

いわゆる inpainting を手動でやるという方法になっている。inpainting がうまくできるものがあれば良さそうだけど、とりあえず見つけられなかった。(basujindal/stable-diffusionにinpainting機能が含まれているがあまり良い成果がでなかった)

元画像

こういう感じで顔がほぼ描画されいない。この画像では試していないが、こうなると steps 数を増やしても時間がかかるだけであまり改善しないことが多い。

アップスケール

約8倍にアップスケールし (NightmareAI/Real-ESRGANをつかっている)、顔部分を周囲を含めて切りにく。

img2img

切りぬいた画像を元に、prompt はあまり変えずに顔を描いてもらう。face close-up とかつけたほうがいいと思うけど、顔ならプロンプトそのままでも割と良さそう。

strength (元画像をどのぐらい残すか) は 0.75 でやった。

合成

アップスケールした画像に顔を乗せる。

Photoshop もこういった合成が進化しており手動でやっても早い。合成写真をすばやく自然に仕上げる方法 というチュートリアルもある。

うまく img2img ができていれば頑張って馴染ませなくても若干ぼかすだけでなじむ。

感想

  • 作風によっては難しいかもしれない
  • 顔だけ大量生成するので効率が良い
  • 顔だから上手くいくが、指の本数が多いとか足が多いとかは無理な気がする
  1. トップ
  2. photoshopped
  3. Stable Diffusion (AI画家) に描いてもらった絵の顔を修正する (半手動)
  1. トップ
  2. stablediffusion
  3. Stable Diffusion (AI画家) に描いてもらった絵の顔を修正する (半手動)
  1. トップ
  2. photo
  3. Stable Diffusion (AI画家) に描いてもらった絵の顔を修正する (半手動)
  1. トップ
  2. tech
  3. Stable Diffusion (AI画家) に描いてもらった絵の顔を修正する (半手動)