少し使い方が分かってきました。
モデルの生成は,README.md 通りにすれば良いのですが,画像生成時のオプションの指定を間違えていました。
というのは,画像生成時で指定する -i オプションは,モデルの場所だけであって,それしか指定しないと,デフォルトの「stable-diffusion-v1-4
」が読まれちゃう。
そのため,–model-version オプションで,使いたい,生成したモデルを指定しなきゃいけない。
例えば,「stable-diffusion-2-1-base」を使う場合は,下のようになる。
python -m python_coreml_stable_diffusion.pipeline --prompt "Professional orchestra playing symphony at the top of Mt." -i stable-diffusion-2-1-base/ --model-version stabilityai/stable-diffusion-2-1-base -o output --compute-unit CPU_AND_GPU --num-inference-steps 90 --seed 72
私のプロンプトが馬鹿なせいで,良く分からない絵が生成されました。
同様に「trinart_characters_19.2m_stable_diffusion_v1」を使う場合も次のような形になる。
python -m python_coreml_stable_diffusion.pipeline --prompt "High school boy running and passing an automobile" -i trinart_characters_19.2m_stable_diffusion_v1 --model-version naclbit/trinart_characters_19.2m_stable_diffusion_v1 -o output --compute-unit CPU_AND_GPU --seed 92 --num-inference-steps 100
「走りながら,車を追い越す男子」という馬鹿な図が欲しかったのですが,どこにも高校生いないですね。
プロンプト変えてみましょう。
High school students who running on the way then passing automobiles
なんだこの車高。そして,学生がいない(車の中か?)。
プロンプトを単純に。
High school students who running on the road
そこそこうまく生成できたかなと思ったら,左手,なんかえらいことになってない?!(複雑骨折)
ネガティブプロンプトを設定して再生成。
python -m python_coreml_stable_diffusion.pipeline -i trinart_characters_19.2m_stable_diffusion_v1 --model-version naclbit/trinart_characters_19.2m_stable_diffusion_v1 -o output --compute-unit CPU_AND_GPU --seed 113 --num-inference-steps 100 --prompt "High school students who running on the road" --negative-prompt "lowres (bad hands fewer digits bad anatomy mutated limbs extra limbs:1.4)"
寄生獣で,後藤さんが車追いかけてくるシーンを思い出しました。
なんだこれ。ネガティブプロンプト効いてないですね。
そこで,ネガティブプロンプトをカンマ区切りに変更。
足は普通(?)になった。ただ,やっぱ左の子の手が赤いのと,顔が潰れているのが気になる(顔は解像度の問題もあるのか?)。
ネガティブプロンプトに「不明瞭な顔」を追加。
python -m python_coreml_stable_diffusion.pipeline -i trinart_characters_19.2m_stable_diffusion_v1 --model-version naclbit/trinart_characters_19.2m_stable_diffusion_v1 -o output --compute-unit CPU_AND_GPU --seed 113 --num-inference-steps 100 --prompt "High school students who running on the road" --negative-prompt "lowres, (bad hands, fewer digits, bad anatomy, mutated limbs, extra limbs:1.4, Unclear face)"
浮遊してる子がいますが,顔の描画が不明瞭になるのは避けれそう(顔書いてないですね)。
顔を描画させてみましょう。
python -m python_coreml_stable_diffusion.pipeline -i trinart_characters_19.2m_stable_diffusion_v1 --model-version naclbit/trinart_characters_19.2m_stable_diffusion_v1 -o output --compute-unit CPU_AND_GPU --seed 113 --num-inference-steps 100 --prompt "Faces of students on the road" --negative-prompt "lowres, (bad hands, fewer digits, bad anatomy, mutated limbs, extra limbs:1.4, Unclear face)"
怖い。ホラーだ。顔のそれぞれのパーツがある分,ホラー差が増している。左手はなぜ赤い。
プロンプトを変える。
python -m python_coreml_stable_diffusion.pipeline -i trinart_characters_19.2m_stable_diffusion_v1 --model-version naclbit/trinart_characters_19.2m_stable_diffusion_v1 -o output --compute-unit CPU_AND_GPU --seed 113 --num-inference-steps 100 --prompt "A Femal High-School Student, On the Road, Face is Clearly, Beatiful." --negative-prompt "lowres, (bad hands, fewer digits, bad anatomy, mutated limbs, extra limbs:1.4, Unclear face)"
ここまでの流れがあるから,「あ,こいつ,かつて車だった何かしらに腰掛けてるな」って思うけど,ほんと意味不明な絵を生成しますね。
元凶だろう,On the Road を外します。
んー,マシになってきたかと思ったら,右手,どうなってんでしょうね。
もっと具体的なプロンプトじゃないといけないのか。
Girl sitting on a chair, in a classroom at noon, book in her right hand, shoes on, looking up, face in focus
左手が2つと,足が3つありますね。どうなってんだ。
限りなく単純にする(ネガティブプロンプトはそのまま)
Girl sitting on a chair
無難。
ぱっと見,そこまでの違和感はなさそう(服の赤・青がどうなってるのかが気になるけど)。
とりあえず,ここまで。
参考:
[CoreML] Core ML Stable Diffusionを使ってみる
投稿記事のカテゴリやタグと同じ記事をランダム表示します。