前回まで
今回は不具合への対応を行う。
長いプロンプトを入れるとエラーになる問題対策
オリジナルのプログラムでは、プロンプトを出力フォルダ名として画像を書き出すため、プロンプトが長すぎるとフォルダ作成に失敗してエラーになる。それも画像生成処理が完了し、いざファイルを保存するぞという最後の最後でエラーになるという極悪仕様
プロンプトの代わりに作成日時をフォルダにするように修正する。修正対象のファイルはpython_coreml_stable_diffusion/pipeline.py
7行目あたりに追加
import argparse
+ from datetime import datetime
524行目を以下のように置き換え
- out_folder = os.path.join(args.o, "_".join(args.prompt.replace("/", "_").rsplit(" "))) + out_folder = os.path.join(args.o, datetime.now().strftime("%Y%m%d%H%M%S")
これでOK
黒い画像になる問題対策
stable diffusionはsafety checkerという仕組みでエッチな画像を生成すると真っ黒な画像に変換するようになっている。このsafety checkerはアニメ風画像に対する誤検出率が非常に高く、エロ要素が皆無でもかなりの高確率で黒塗りになってしまう。
というわけでsafety checkerを無効化する。
python_coreml_stable_diffusion/pipeline.py
の552行目を以下のように変更
pytorch_pipe = StableDiffusionPipeline.from_pretrained(args.model_version, - use_auth_token=True) + use_auth_token=True, + safety_checker=None)
これだけでOK
おまけ
全く同じプロンプトとseedでモデルを変えて出力したもの、上がSakuraMix-v2、下がEmiphaV4というモデルを使用している。
最近、イラスト界隈ではAI絵師という言葉で揉めているらしい。AIで出力するだけの人間は絵師と呼べるのかという話で、まあ、AI使いと絵描きの矜持のぶつかり合いで私には関係ないっちゃ関係ない話なのだが私見を述べさせていただく
上の2つの出力結果の差異を見ればわかるように出力される絵の画風・絵柄はモデルに大きく左右される。
絵柄は個性であり言わばIDとして機能するもので、上手かろうと下手だろうと受け手に「お、これはあの人の絵だな」と見分けてもらうことができるのだ。この認知が無いと埋もれるので長期的なイラスト活動において不利。AI使うにしてもまず自分の絵柄を学習させないと論外だと思ってるのはそれが理由だ。
— あぶぶ@健全 (@abubu_newnanka) 2023年5月8日
私はこの意見に賛成で、もしAI絵師という言葉があるのなら、少なくとも自分の絵柄と言えるもの=自分好みに調整した自分専用のモデルを持って初めて名乗れる類のものだと思う。他人の作ったモデルやLoRAを使って出力するだけの人間が絵師と名乗るのはナシだな、というのが私の意見。
あとAI使って絵を出力してる人たちのコミュニティを見てみたのだが、多くのイラストレータたちの成果を使わせていただいているという自覚がなくリスペクトが皆無で、私は彼らを好意的な目で見ることはできなかった。こんな人たちに絵師を名乗って欲しくないという思いも少なからずある。