見出し画像

Daz 3D の画像をDreamBoothでAI学習、Stable Diffusionで生成

うちはVRAM4GBなのでトレーニングだけGoogle Colab使います。

今でこそアジア系モデルもそれなりに多いDAZ3Dですが、Genesis8の初期の頃は種類も限られていて、日本人ユーザーならかなりの人が持っているであろうSueさん。角度を変えて 512 * 512 pixels サイズで5枚ほど出力します。

https://www.daz3d.com/sue-character-and-hair-for-genesis-8-female

素材として用意した画像

学習するオブジェクトの名前とクラスを設定する必要があります。
ここで何度か試行錯誤を繰り返してましたが、学習するのに1回20分ほど。Textual Invationみたいに学習に3時間もかからないのでやりやすいです。
3時間かけてうまく行かなかった時の徒労感を思えば。

デフォルト設定では動物・及び人間を学習させる例として
sks dog (sksはユニーク名なので、他と被りにくい名前に変更できます)
ukj person (同様にukjはユニーク。キャラクタ名などに変更可)
と記述されており、dog , personがそれぞれのクラス名となってます。
クラスにどんな語句を選ぶべきかがいつも悩み所でした。

デフォルトはdogになってるのでコメントアウトでpersonと入れ替えます

Personだとガチャで男性や老人が出てくる確率が上がるんですよね。
ちなみにCedroさんが、こちらの記事の中で使われているColab Notebookではportraitクラス でした。

Portraitは肖像画を生成する時にはピントもクッキリしてて綺麗。ただ、カメラがひいた時、Personと同じく、おばちゃんが出てくる率が妙に増える気がして。やはりこの場合のクラスは girlwoman だろうか?
という訳でgirlを初期クラスに設定。

5枚の画像を投入し、約20分。
スクリプトを進めていくと、約2GBのchkpファイルに変換できます。
Automatic1111 Stable Diffusion webuiなどでモデルフォルダにダウンロードし、学習モデルを切り替えて使用します。

Stable Diffusionで生成した画像

何となく表情も自然になったような。
でも、どの画像も口をポカーンと空けてる。よく見りゃ元画像も皆そうだ。
表情設定するの面倒くさかったから。

最近、danbooru系のタグばかり触ってた物で、あっちは1girl,soloで大概被写体を一人に絞り込めるのですが、こちらで画像サイズなど変えるとしばし双子になったり頭が2つ生えたりしてしまう。
もう少しこちらも構図の扱いに慣れないと。

でも、Daz Studioでレンダリングすると、30分から数時間かかる事がざらなので、構図だけ決めてImg2Imgでディテール描いてもらうのもありかなと。

※追記
もしNAI等を利用していて、「クリップモデルの最後のレイヤーで停止する」2にしている場合は1に戻してください。結果が大分変わります。
モデルが 1 でトレーニングされた場合は 1 を使用する必要があり、2 でトレーニングされた場合は 2 を使用します。

これがうまく学習できたので、知人の写真などで試してみたのですが、高解像度のデジカメ写真などはともかく、紙焼きプリントのスキャンではなかなかうまく学習できませんでした。
(別人の顔にもなるし、ピンボケ画像や白黒写真になるなど。またどの角度からでも揃えられるCGと違い、正面向いた写真が多かったせいもあり。横顔大事)
そこで試行錯誤した末、一旦CodeFormerで超解像度化してから学習させるとかなり綺麗に出力できるようになりました。

上記ページからColab デモ、及びHugging Faceのオンラインデモへのリンクがありますので、試してみるのも一考かと思います。
ただし、クォリティを上げ過ぎると別人になってしまいます。

※11/13 追記
下記サイトのお薦め構成
・10~20枚
・全身3枚、胸から上のショット5枚、クローズアップ10枚
・バリエーションが重要。ポーズ・天候・背景・視線の向き(目を閉じた写真もあればいい)
・man womanを使う人もいるが、Personの方が適切なバリエーションになる。


この記事が気に入ったらサポートをしてみませんか?