2022年 09月 07日

Stable Diffusion で prompt 情報を画像に保存しておく

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'])

Stable Diffusion 日記 #1

https://lowreal.net/2022/09/02/1 の元画像から、色を変えて img2img したりいろいろ

Stable Diffusion 日記 #2

関連エントリー (画像)

Stable Diffusion 日記 #3

関連エントリー (画像)

Stable Diffusion 日記 #4


縦位置 AIが描いたサインが入っている (時々入ってきておもしろい)

2022年 09月 02日

Stable Diffusion (AI画家) に描いてもらった絵の顔を修正する (半手動)

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 ができていれば頑張って馴染ませなくても若干ぼかすだけでなじむ。

感想

  • 作風によっては難しいかもしれない
  • 顔だけ大量生成するので効率が良い
  • 顔だから上手くいくが、指の本数が多いとか足が多いとかは無理な気がする
2022年 08月 27日

家庭用ミシンにラッパ(三つ巻き)をつける

うちのミシンは2015年に買った トーヨー JY-1Rという家庭用の安いやつ。(ところでトーヨーはミシン事業を手放したようで、このミシンのサイトは消滅してしまった)

当然(?)、職業用ミシンや工業用ミシンにあるアタッチメント取り付けのねじ穴があいていない。なんとなくアタッチメントで遊んでみたいのでなんとかすることにした。(特に三つ巻きが大量に必要なことがあるわけではない)

針板にねじ穴をつける

養生テープとかで止めるのもよいみたいだけど、つけかえるのが面倒なので、適当にねじ穴をあけることにする。

本来のねじ穴は、針位置から、下に13mm、右に42mm, 56mm ぐらい。ねじは SM 9/64 (T40) だと思う。ねじ外形3.5mmぐらい。持ってないのでちゃんと調べたわけではない。図面も結構検索したが見つからなかったので、適当な写真から距離を測定した。

うちのミシンで該当箇所に穴をあけるのは難しそうだったので、少しずらしてあけることにした。簡単にはずせる針板に、下に13mm、右に35mmのところにφ2.5mmの穴をあけ、M3のタップでねじを切った。M4 だとアタッチメント側の穴がギリギリすぎるので、ミリねじならM3で空けるしかないと思う。

(SMねじというのはミシンねじとかいうインチ系だがUNFでもUNCでもないミシン専用ねじの規格。関わらないことに越したことはない)

取り付けねじ

ノブ付きのM3ねじならなんでもいい。ただ、いまいちいいのが売ってなかったので、オスメスの5mmスペーサーに3Dプリントしたノブをつけてつかっている。

試してみた

Lucky Link8 ミシン 三つ巻き ラッパ 押さえ A11 仕上がり幅 5サイズ セット 工業用 職業用 3mm 6mm 9.5mm 12.5mm 16mm - LuckyLink8

LuckyLink8

4.0 / 5.0

買ったのは2300円ぐらいで 3mm 6mm 9.5mm 12.5mm 16mm の5種類が入っている三つ巻きラッパ。商品ページではミリ表記だが商品本体はインチ表記だった。

3mm にはエッジガイド(?)がない、6mm以上にはある。これがクセモノで、標準の押えだと、3mm はそもそも干渉する部分がなく、9.5mm 以上はエッジガイドが干渉しないぐらい遠くなり、6mm だけどうしても干渉する。

ファスナー押さえなら干渉しないので、最初はこれで試していたが、ラッパ出口から押えまで遠く、全面を押えられないので、ぎりぎりを縫おうとすると、うまく押えられなかった。

結局 2mm 押えだと割と調子が良かった。標準押えが干渉しない他の幅でも、2mm を使ったほうがラッパの出口から押えまでの距離が短いので安定した。

本来は専用の押さえを使うんだと思う。家庭用にはないと思うので、なんらかの妥協がいる。

KAWAGUCHI(カワグチ) ミシンアタッチメント 2mm押え 家庭用(HA) 09-030 - カワグチ(Kawaguchi)

カワグチ(Kawaguchi)

5.0 / 5.0

コツ?

まだ使いこなしているとは言い難いけど、YouTube とかで軽く使いかたを見てもわからなかった点について書いおく

ラッパの入れかた

YouTube で動画検索して見るのが早い。最初は手で巻き、ラッパを外した状態で少し縫う。押さえを下げたまま、そこからラッパを回転させて入れると特に苦労せず勝手に入る。

ラッパの位置調整

これがわからなかったが、ラッパのエッジガイドを布の端にあわせるのが基準だと思う。つまり最初の最初は、針を落としたあと、ラッパを回転させてエッジガイドと布の端をあわせるように左右位置を調整して固定し、それから布を入れる。それから左右に微調整していく

つまり針を落とす位置は任意でいい。ぎりぎりを縫ってもいいし、少し内側を縫ってもいい。少し内側のほうが安定はする。

送りかた

右手でラッパに十分に布の端が供給されるように多少まるめた状態で一定の幅が入るようにする。案外難しい。

左手で送るときあまり左にひっぱるような形になるとラッパから抜けてしまうので、そうならないようにする。

ラッパから押さえまでが遠いほど、右手はしっかりひっぱって布を張っていないと押さえまでに巻きが解けてしまう。

結構練習してみたけどまっすぐにかつ綺麗に巻くのは難しい。

2022年 08月 26日

DreamStudio (Stable Diffusion) に洗濯機と女の子を描いてもらう

手元には入れず、DreamStudio 上で £10 (1700円弱ぐらい?) 払ってしばらく生成していた。ある程度制御できる綺麗な画像ガチャって感じなので中毒性がある。手元に入れたら無限にやりそうなので金払って遊ぶぐらいがちょうどいいかもしれない……

顔を正確に(あるいは正確じゃないがいい感じに)描くのはやはり難しい。クローズアップならそれほど破綻しないけど、雰囲気ある背景と主題みたいな構成で顔を綺麗にする方法は見つからなかった。これ系でうまくいってる感じがするのはだいたい人物が後ろ向き。

顔の要素だと眼が重要なので間接的に眼の色を指定するといい感じになりやすい気がした。

Steps は多くしたからといって良い画像が出てくるわけではなく、こういうイラストなら初回は20~30ぐらいで良さそう。ここから50ぐらいまで増やすと急激に構図が変わることもあって「そうじゃない」となりがち。Steps 増やすと破綻はしにくくなるが没個性がすすむ。特に顔が微妙になっていく……

洗濯機と女の子

誰も描いてなさそうな主題でいくととりあえず描いてもらいたいのがこれなのでいろいろ頑張ったが前述の通りなかなか難しい。人物の描写を細かくしようとすると相対的に弱い洗濯機が無視される。





美少女ガチャ

洗濯機抜きにして、最近流行ってる風の雰囲気の良い環境と女の子を描いてもらおうとしたがむずかしく、結局顔のクローズアップになってしまう。雰囲気はとてもいい

ガチャするときはコストも安くなるし20ぐらいでガンガンやった。好きそうな雰囲気が出たら50ぐらいまで増やし、ベクトルが変化しなければ150ぐらいまで上げてみる、みたいな場合と、50まで増やしてベクトルが変わったら22~30ぐらいを探る場合があった。

良さそうなの出るのは SR ぐらい。そこから Step 加減して良くなるのは SSR