構図の中に2人入ってくると難易度があがる。顔の描きかたは細かく指定できるわけではないので、試行回数を増やしてなんとか違和感がないのを選ぶしかない。

顔は顔で生成すると割り切って考えると、服をちゃんと指定するほうが楽しい。frill trim top は希望通りにいきやすい。corset や bodice もいいけど、胸元が開く傾向が強い。

  1. トップ
  2. photoshopped
  3. Stable Diffusion 日記 #11
  1. トップ
  2. stablediffusion
  3. Stable Diffusion 日記 #11
  1. トップ
  2. photo
  3. Stable Diffusion 日記 #11



blonde hair は顔が綺麗になりやすい気がする。

2枚目、手が綺麗に描画されているのはかなり珍しい。

3枚目は bird's eye view で唯一それっぽくなったもの。

waifu diffusion とかのイラストの追加学習をしたモデルをボチボチ試してはいるけど、うまく好みのベクトルがあわせられなくてピンときてなく、使えていない。顔だけバリエーションを増やせたらいいんだけど、画風を伝える手段に乏しい。生成した画像のうち好みのものを集めてファインチューンとかしたほうが効率いいかもしれない。

  1. トップ
  2. photo
  3. Stable Diffusion 日記 #10
  1. トップ
  2. photoshopped
  3. Stable Diffusion 日記 #10
  1. トップ
  2. stablediffusion
  3. Stable Diffusion 日記 #10



場合によっては腰から上、首から上と段階的に解像度を上げていくといいときもある。元絵に書きこみたいときは strength を弱めて (0.25~0.4)、ddim_steps を増やすといいことがある。めっちゃ崩れてるけど雰囲気は維持しつつなんとかしてほしいときは strength を強める (0.75まで)

まったく同じpromptでも、img2img の元がある場合、そこの顔の輪郭で絵柄が決まってくることがあって不思議

  1. トップ
  2. photoshopped
  3. Stable Diffusion 日記 #9
  1. トップ
  2. stablediffusion
  3. Stable Diffusion 日記 #9
  1. トップ
  2. photo
  3. Stable Diffusion 日記 #9



どのベクトルのせいかわからんけど蝶はなんかキモくなる。イラスト的デフォルメをせず蛾っぽく胴が太く描かれることが多い。

urban city はどうも台湾風になる感じがする。台湾に行ったことはないが

日記と書いてるが数日遲れの画像なので、特徴がないとどういう prompt 使ったかわからない。

正面の顔はいいけど、横顔、振り返り顔、上目遣いみたいな感じの角度は Stable Diffusion も苦手で相当ガチャってもうまく生成されず諦めることがある。構図的には正面顔というのは特殊なので不思議な感じはする。

  1. トップ
  2. photoshopped
  3. Stable Diffusion 日記 #8
  1. トップ
  2. stablediffusion
  3. Stable Diffusion 日記 #8
  1. トップ
  2. photo
  3. Stable Diffusion 日記 #8

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画家) に描いてもらった絵の顔を修正する (半手動)