皆さま、こんばんは。
このような辺境まで、お越し頂き、ありがとうございます。
Twitterやネットでの情報を追っている皆様は既にご存じかと思いますが、日々、画像描画AIの進歩が止まりません。
一応、今は画像描画AIの祖ともいえる「Stable Diffusion」だけでなく、沢山のモデルが世に出ておりますが、私は敬意を表して今後も描画AIの事を表す言葉として、Stable Diffusionとして語りたいと思います。
で、そちらを何とかローカル環境で使おうと奮闘したのが、前回までの記事の内容になります。
いやぁ、相変わらずわからない事だらけで苦戦しております。
そして何度も書いておりますが私のやっていることはあくまで基礎レベルなのですが、毎日のように一定数の迷い子達が訪れてくれておりまして、相変わらず私が思ってもみなかったレベルで読まれているようです。
と言うか、多い、多すぎないか? いや読んでもらうために書いているから良いんだけど。
やはり皆さん、気にはしているし潜在的な需要自体は非常に高いんだなぁという事を改めて感じます。
そこで、今回は更に次のステップのお話をする記事を書きました。
前回でトレーニング(ファインチューニング)という、ある意味禁忌の扉を開ける記事を書きました。
それは、記事に書いた通り避けて通れない事だと改めて私が感じた上で、その技術を特に絵師の皆様にちゃんと知っておいて欲しいと感じたからです。
しかし実は、まだ前回の記事の内容はトレーニングの序盤です。
私の認識では、今回の記事をもって現在のトレーニング系の二大柱を制することになります。
それで初めて十全にトレーニングを生かすことができるようになるので、毎度ながらこの記事を書くかは迷ったんです(いつもの
何故なら今回のトレーニング方法は、割と成果が手軽に得られる上に再現率が凄いんです。
前の記事までの状況を知らないまま、この記事だけ見ると場合によっては絵師さんは絶望するでしょうし。
勿論、触った本人の感触としては、全然そんな簡単な話じゃないですけど、ぱっと見はそう思ってしまうようなレベルの絵が出てきます。
なので、出てくる絵だけ見れば、そう思っても仕方ない出来であるとは思います。
そう言う所も含めて、今回も語りながらも相変わらずのポンコツな私が使用できるようになるまで苦労したことや、思うところについて書き残しておきたいと思います。
【注意】
今回は、トレーニングについての記事になります。
その為、著作権や絵師様への配慮等、様々な問題に絡みますので、くれぐれもこの技術の使用には細心の注意をもって対峙して下さい。
また、この記事は主に、プログラム関係に馴染みのない方に向けて作成しております。
私はあまり知識が深くないので、今回も凄ーくどうでもいい事で苦労していますので、既にその手の方面に知識のある方には理解できない部分で躓いているためイラっと来る人もいらっしゃると思います。
知識の深い方には、素人が右往左往する姿を楽しむ位しかできない記事かと思いますので、そのつもりでお進みください。
また、最近のAI技術の進歩が速すぎて、サクッとこの記事の内容が古くなる可能性が高いです。
その点を念頭に置いた上で、お楽しみくださいませ。
このような辺境まで、お越し頂き、ありがとうございます。
Twitterやネットでの情報を追っている皆様は既にご存じかと思いますが、日々、画像描画AIの進歩が止まりません。
一応、今は画像描画AIの祖ともいえる「Stable Diffusion」だけでなく、沢山のモデルが世に出ておりますが、私は敬意を表して今後も描画AIの事を表す言葉として、Stable Diffusionとして語りたいと思います。
で、そちらを何とかローカル環境で使おうと奮闘したのが、前回までの記事の内容になります。
いやぁ、相変わらずわからない事だらけで苦戦しております。
そして何度も書いておりますが私のやっていることはあくまで基礎レベルなのですが、毎日のように一定数の迷い子達が訪れてくれておりまして、相変わらず私が思ってもみなかったレベルで読まれているようです。
と言うか、多い、多すぎないか? いや読んでもらうために書いているから良いんだけど。
やはり皆さん、気にはしているし潜在的な需要自体は非常に高いんだなぁという事を改めて感じます。
そこで、今回は更に次のステップのお話をする記事を書きました。
前回でトレーニング(ファインチューニング)という、ある意味禁忌の扉を開ける記事を書きました。
それは、記事に書いた通り避けて通れない事だと改めて私が感じた上で、その技術を特に絵師の皆様にちゃんと知っておいて欲しいと感じたからです。
しかし実は、まだ前回の記事の内容はトレーニングの序盤です。
私の認識では、今回の記事をもって現在のトレーニング系の二大柱を制することになります。
それで初めて十全にトレーニングを生かすことができるようになるので、毎度ながらこの記事を書くかは迷ったんです(いつもの
何故なら今回のトレーニング方法は、割と成果が手軽に得られる上に再現率が凄いんです。
前の記事までの状況を知らないまま、この記事だけ見ると場合によっては絵師さんは絶望するでしょうし。
勿論、触った本人の感触としては、全然そんな簡単な話じゃないですけど、ぱっと見はそう思ってしまうようなレベルの絵が出てきます。
なので、出てくる絵だけ見れば、そう思っても仕方ない出来であるとは思います。
そう言う所も含めて、今回も語りながらも相変わらずのポンコツな私が使用できるようになるまで苦労したことや、思うところについて書き残しておきたいと思います。
【注意】
今回は、トレーニングについての記事になります。
その為、著作権や絵師様への配慮等、様々な問題に絡みますので、くれぐれもこの技術の使用には細心の注意をもって対峙して下さい。
また、この記事は主に、プログラム関係に馴染みのない方に向けて作成しております。
私はあまり知識が深くないので、今回も凄ーくどうでもいい事で苦労していますので、既にその手の方面に知識のある方には理解できない部分で躓いているためイラっと来る人もいらっしゃると思います。
知識の深い方には、素人が右往左往する姿を楽しむ位しかできない記事かと思いますので、そのつもりでお進みください。
また、最近のAI技術の進歩が速すぎて、サクッとこの記事の内容が古くなる可能性が高いです。
その点を念頭に置いた上で、お楽しみくださいませ。
トレーニングの方法は多数ある
前回の記事で触れた、Stable Diffusion web UI(AUTOMATIC1111版)にデフォルトで搭載されているトレーニング機能ですが、こちらは「Textual Inversion」ベースの技術となります。
こちらの機能はStable Diffusionが世に出てから初期の段階で登場したトレーニング方法です。
それに対して、今回ご紹介するのは「Dream Booth」というものです。
こちらは、Stable Diffusionが話題になって少しして世に出てきました。
名前さえ分かれば検索で幾らでも情報は出てくる……と思いきや、割とここから先の話はよー分からんという状況になっていきます。
なんせ概念なら上のHPで何となくわかるのですが、実際に使ってみるとかなり癖が強いんです。
私が使い方をよくわかってないというのもあるんですけど、未だにこれ単体だとうまく使えません。
なので色々な方法を取り入れて試行錯誤していくことになります。
その入り口の技術として、今回のトレーニング方法であるDreamBoothを紹介です。
勿論、へっぽこな私なので思い違いをしていたり、そもそも使い方を間違っている可能性もありますので、その辺りは織り込んで参考程度にお読みください。
私が触った感じだとこんなイメージです。
では、細かくメリットとデメリットについて、書いていきますね。
〇 Textual Inversion
メリット :
・細かい調整に向いている
・必要メモリはトレーニング環境としては少なめ
・ptファイルで出力されるため、ファイルサイズが少なく容量の管理が楽
デメリット:
・設定を細かくしようとするとファイルをいじるので凄く面倒くさい
・とにかく時間がかかる
・試す場合はptファイルを移動するので、そこだけちょっと面倒
〇 DreamBooth
メリット :
・新しい概念を焼き付けるのに向いている
・所要時間は短いので気軽に試せる
・ckptファイルで出るので、試すのが楽
デメリット:
・設定や素材によって学習の仕方に強いムラが生じる
・めっちゃ強烈に焼き付けるので融通が利かない
・ckptファイルで出るので、数をこなすとファイル容量をめっちゃとる
私から見ると、以上のような感じです。
細かい話は、後でまたご説明します。
このトレーニングを行うには、当たり前ですがAIちゃんにその概念を教える教材が必要です。
そして例えばですが、私が大好きな花騎士のシクラメンちゃんを描きたいと思っていたとしましょう。
では、その絵を片っ端から集めて学習させるのは、良いのでしょうか?
私は、現時点で絵師の許可なしにAIをトレーニングすることはお勧めしません。(って言うかやめた方が良い)
いちオタクとしましては、絵師さんの心境や尊厳を思うと、それで筆を折ってしまう事も十分に考えられるからと言う理由が一番大きいです。
折角素敵な絵を描いて下さっているのに、それを邪魔してしまったら本末転倒です。
あくまでAIの本質は真似をすることが基本なので、絵師さんの存在はとても重要なのです。
ですが、私の意見に関わらずそう思わない人はやるでしょうし、その流れが止まらないとも思っています。
何より、じゃあ、何で私はこの記事を出したんだ? と言う話になる訳ですが、それはむしろ絵師さんにこそ、このAIの可能性とできる事、できない事を知って欲しいからなんですよね。
そしてそれを更に乗り越えて、自分自身の在り方をもう一度見直してほしいと思っております。
詳しい事は他の場所で細かく書いておりますので、ここでは割愛しますが、究極言えば「好き」を突き詰める事が必須になるという事です。
丁度、この番組で「山田玲司」さんが私と方向性が同じ事を仰ってくれてましたので、ご紹介しておきます。
後半部分で仰っておりますが、最終的に読者や皆様に伝わる創作というのは、自分の魂と読者の魂の共振であり、それを起こすのは自分が伝えたいという思いを作品に籠めてないと起こりえません。
私はそれを「好き」という一言で表現しておりますが、本質的な所は同じだと思っています。
確かに画力を追い求めることで、自分の価値を高めていくのはありだと思います。
事実、今の時点ではそれはとても有力な武器となるはずです。
しかし、一方で更にここ数か月で進歩してモデルの進化が止まりません。
別の技術体系としてより洗練化されてきた印象を受けます。
今はまだ使い方に癖があるため一般的にはあまり浸透していませんが、これがこなれてくれば話は別です。
既にもうお分かりの方も多いかと思いますが、画力の神話が崩れてきています。
私はその昔、神絵師の力が手に入ったらあなたは何を描きますか? と言う問いを見た事があります。
その比喩であった神絵師の力が、誰でも使える時代が目の前に来ています。
それ自体は、方法も含めて法と言う観点で論じられる話ではあるでしょう。
しかし、もしその力が貴方に与えられた時、あなたはその力で何を成しますか?
それは、あなたの好き(魂)でしか語れない事だと私は思います。
そうして作品に否応なしに向き合わされてしまう時、心を折らずに向き合って欲しいからこそ、このような記事を書いてます。
同時にこれは、私のような絵の描けない創作者の創作活動の幅を広げるツールにもなります。
今まで手の出せなかった分野が開拓されることで、更に多種多様なコンテンツが生まれる事でしょう。
私はその可能性の方を重視しているという立場でもあるので、今回の記事を書くに至りました。
ちなみにどれだけAIが進歩しても、絵を描ける人の方が、私のような絵を描けない人に比べてはるかに有利なのはこれからも変わらないでしょう。
何故なら私は、ちょっとだけ手を入れての修正すらできませんが、絵心のある方は、それが可能です。
神絵師達と皆様の差は凄く埋まるでしょうが、私のような絵心の無い人と、少しでも絵が描ける人の差は変わらないと思います。
AIの出来る事、できないこと。導入の苦労や使いこなす難易度の高さ。
そう言ったもの全てを踏まえた上で、どうやってAIと向き合っていくかを考える指標になってくれればと思います。
では、例の如く私のPC環境をある程度こちらに記載しておきたいと思います。
・CPU
Core i7-12700
・グラボ
Palit NE63060T19K9-190AD (GeForce RTX 3060 Dual OC 12GB) LHR版
※ドスパラ購入サイト
・OS
Windows 11
・メモリ
48G
・私の知識レベル
Java ScriptやGASなら書けるくらい
Python?最近流行ってるよねーくらい
開発環境? 何それ美味しいの?(テキストベタ打ち)
ちなみに、前回の記事でもお話した通り、ネックとなるのはグラボでした。
そして、前の記事をお読みの皆様の中には不思議に思った方もいらっしゃったのではないでしょうか?
Textual Inversionを使うならギリギリ8Gでなんとかなるのです。
なのになぜ、わざわざ12Gのグラボにこだわったのかと?
答えは今回の記事の通りです。
この記事を書いている時点においても、DreamBoothを安定動作させる要件が10Gっぽかったからです。
実際、使って見た感じとして10Gないとかなり厳しい戦いを強いられることになりそうです。
つまり、トレーニングをローカル環境で最大限にこなすには、グラボのメモリ12Gは最低ラインだったという訳ですね。
結論から申し上げますと、3060(12G)でなら、何の問題もなくトレーニングできてます。
ちなみに後程書きますが、8G程度でもDreamBoothを使える方法もありますが、私の環境では検証できません。
数値的にはOKでも実際に8Gメモリのグラボで回してみないと確証は持てませんので。
ああ、メモリーオーバーフローのエラーが出ないって素晴らしい(ぁ
確かに、コマンドプロンプトに慣れていない方は、このインストール時点でめっちゃ躓きそうです。
最近は、他のサイトでもインストール方法を紹介している記事が増えてきた印象です。
なのでこちらでは、そう言った記事のご紹介と、簡単な設定方法だけ再度、書いておきたいと思います。
まず、うちの超見ずらい(自覚はある)サイトよりは、とても良い記事がありました。
モデルの紹介もありますので、基本はこちらのサイトで見ていけばいいかと思います。
では、その上で一応、こちらのサイトでも軽く書いておきますね。
とりあえず、注意点としては前の記事から変わらず、以下の部分です。
① Pythonは3.10.9を使いましょう
実は新しいバージョンで3.11.0が来てるのですけど、そちらだと上手く動きませんでした。
多分、ソースでバージョンを縛る部分があるっぽいです。
なので、3.10.9を選んでインストールしましょうね。
ちなみに前回の記事では3.10.8で紹介していましたが、バージョンが上がっていたので一応、こちらに差し替えてます。
とりあえず問題なく動いているっぽいので、どちらでも良いかなーとは思います。
〇 Download Windows installer (64-bit)
インストールの際には、下部の「Add Python 3.10 to PATH」にチェックを入れる事をお忘れなく。
最悪間違ったらアンインストールからの再インストールでもOKです。
② Git は最新のものでOK CUDAは必要なし
逆にGitは、最新のものでOKです。
Git 2.38.1 Download
前回の記事ではCUDAも入れるようにご案内しておりましたが、どうやらWebUI側で対応したらしく、PCへ個別に入れる必要はなくなりました。
上手くインストールできたか確認したい場合は、コマンドプロンプトで以下のコマンドを使ってみましょう。
コマンドプロンプトの起動方法が分からないという方は、以下のサイトを参考にしてみて下さいね。
簡単に説明すると「Windows(四つの🔲が集まったマーク)」+Rで「ファイル名を指定して実行」を開き、「cmd」と入力します。
〇 Ptythonのバージョン
なおコマンドをこちらでコピーしたら、コマンドプロンプト上で右クリックすることでペーストできます。
なお、コマンドプロンプト上の文字をなぞって色を付け右クリックをすると、その文字列をコピーできます。
貼り付けた後、エンターキーで、コマンドを実行できますので、覚えておきましょう。
〇 nvccのバージョン
※注 Vは大文字
〇 gitのバージョン
① Stable Diffusion web UI(AUTOMATIC1111版)をインストール
まずはStable Diffusion web UI(AUTOMATIC1111版)をインストールするのですが、実は今はめちゃくちゃ楽です。
まず、インストールするフォルダを作っておきましょう。
今回はCドライブ直下にTrainというフォルダを作りました。
C:\Train
コマンドプロンプトを起動し、その場所に移動します。
前の記事で書いたように、エクスプローラー上でファイルの場所を右クリックして「アドレスをテキストとしてコピー」をした後、コマンドプロンプト上で右クリックするとその場所を貼り付けられます。
cd を前に書いてファイルパスを貼り付けたあと、エンターキーを押しましょう。
C:\Train>
※ファイルの場所
となっていたら準備OKです。
以下のコマンドをコピーして貼り付けエンターキーを押します。
② モデルの配置
その後は、モデルを配置します。
C:\Train\stable-diffusion-webui\models\Stable-diffusion
上記のフォルダにモデルを入れておきます。
今回は「wd-1-4-anime_e1」を置いておきました。
モデルが無いという方は、先ほど紹介したサイトから追うか、Wife1.4を使う事をお勧めします。
「 」と「 」の両方が必要です。
この二つを上記フォルダに配置しましょう。
※実はこの記事を書いている最中に、更に新しい「 」が来ております。
なので、そちらを使っても良いと思います。
その際、yamlファイルは上記の物を落として、名前を「wd-1-4-anime_e2.yaml」に合わせましょう。
③ webui-user.batから起動する
なお、トレーニングするにあたって起動batである「webui-user.bat」内の「COMMANDLINE_ARGS」に以下の設定をしておきましょう。
「stable-diffusion-webui」フォルダ内の下の方に「webui-user.bat」というファイルがあると思います。
右クリックで編集を選択し、メモ帳などで開きます。
Windows11は編集が隠れておりますので、Shiftキーを押しながら右クリックをしましょう。
ちなみに「git pull」を入れておくと「webui-user.bat」で起動した際に、更新をかけてくれるようになります。
最新状態にしておきたい方で、私のようなものぐさな人は入れておきましょう。
逆に、環境をなるべく変えたくない人は入れないでおきましょう。
「webui-user.bat」をダブルクリックして起動します。
トレーニングする場合の起動は「webui.bat」ではなく「webui-user.bat」ですのでお間違いないように。
起動すると新しいコマンドプロンプトが立ち上がり、暫く固まります。
見た目には動きが少ないので心配になりますが、そのまま根気強く待ちましょう。
最後の方に「http://127.0.0.1:7860」等のリンクが出ればOKです。
コマンドプロンプト上のリンクを「ctr」を押しながらクリックすれば、すぐに開くと思います。
仮にエラーが出て止まった場合、大抵の場合はモデルの配置忘れです。
正しい場所にモデルが配置されているか、確認しましょう。
これにて基本構成の構築は終了です。
ただ使うだけならばこれで十分なので、使いたいだけの方は参考にしてみて下さいな。
Stable Diffusion web UI(AUTOMATIC1111版)へDreamBoothを導入する方法を解説します。
「Extention」タブにある「Available」から「Localization」にチェックを入れて「Load from」ボタンを押します。
以下のような画面が出ると思いますので、DreamBoothの右にあるInstallボタンを押しましょう。
ちなみに、本来なら「localization」だと出ないはずなのですが、何でかでてます。
仮にアップデートで表示されなくなった場合は「script, tab」にチェックをして「Load form」を押してみましょう。
「Ctr+F」で検索画面を開いて「Dreambooth」で検索してみるのが良いと思います。
右側のInstallボタンを押すと、コマンドプロンプト上で処理が走ります。
初期のインストールの時と同じく、最初は何も動きがありません。
気長に待ちましょう。
ただ、これは私の環境だけかもしれませんが、途中で以下のエラーが起きて止まります。
そうしましたら、コマンドプロンプトをいったん閉じます。
Ctr+Cで止めた後に、Yを押して閉じるか、そのまま右上の×ボタンで閉じてしまいましょう。
その後、再度「webui-user.bat」をダブルクリックして起動します。
今までには出てなかった「DreamBooth」用のコマンドラインが出てきます。
見たら一発でわかると思うのですが、左側の [ ] が [ + ] となっていれば問題ありません。
もし+が入ってない場所があれば、そのモジュールのインストールに失敗しています。
大抵の場合は、X-formersのインストールを忘れているパターンでしょうから、「webui-user.bat」内の「COMMANDLINE_ARGS」にX-formersが入っているか確認しましょう。
問題なく起動していれば、タブに新しく「Dreambooth」の項目が出来ているはずです。
これでDreamBoothを使う準備が整いました。
ただしここまでならメモリ8G未満のグラボでもこれます。
問題はこの先なんですよね……。
特に昨年末に出たStable DiffusionV2.0の登場によって、モデルそのものが更に進化を遂げております。
正直、私の力量では追いきれませんので、投げ出しておきたいのですが、それでは困る人もいらっしゃるでしょう。
なのでここでは大筋と以後、私が使っているモデルについてのみ言及しておきます。
まずモデルには大きく分けてV1とV2があります。
これは不勉強で申し訳ないのですが、Stable DiffusionV1の技術体系をベースにしたか、V2をベースにしたかという事かなと理解しております。
最近出ているモデルはV2モデルが多いです。
なので時間が経てば気にする必要はなくなると思いますが、後述のトレーニングにおいて、私の環境ではV2モデルでトレーニングしようとするとエラーが出ます。
もし私と同じように、V2モデルでうまくできない場合はV1モデルを使ってみましょう。
現在、私がトレーニングに使っているのは以下のモデルです。
〇 Elysium Anime V2
使って見た感じで一番私の好みの絵に近く、ウマ娘(umamusume)のプロンプトを内包していることから、こちらを使って試行錯誤しております。
ただ、本来はウマ娘自体の語が入っていること自体があまり良い事ではなさそうなので、ご利用はご自身の判断でお願いします。
〇 VAEについて
実は多くのモデルは、そのまま使っても掠れたような、ぼんやりとした絵しか出てきません。
それは、元々の作りとしてVAEというのものの補正を前提として調整されているからです。
なので、多くのモデルがあるように、それに合わせてVAEも一緒に組み合わせて使う必要があります。
モデルによっては、VAEだけでなくネガティブプロンプトも指定しているものがありますので、画像出力の際には参考にしてみて下さい。
今回ご紹介しております、Elysium Anime V2においては、以下のVAEを推奨しています。
以下、公式より引用
・VAE: 'vae-ft-mse-840000'
・VAE: 'kl-f8-anime2.ckpt'
推奨されるネガティブプロンプト
また細かいモデルの種類やVAEにつきましては、こちらのサイト様が参考になります。
興味があれば、こちらでご自分の好みのものを追ってみても良いかと思いますよ。
ただし、ご判断はご自分でしっかりと行いますよう、お願い致します。
ですが、この記事が実際にこうして表に出るまで、実に2か月の月日を要しています。
それはもちろん、私がDreamboothでのトレーニングの仕方が良くわからんというのもあるのですが、それ以上にStable Diffusion web UI(AUTOMATIC1111版)の更新頻度が早すぎて、しょっちゅう使えなくなっていたからです。
実は、この2か月の間でも何度もバグとの戦いで、トレーニングができなくなる事態が続きました。
先日まで普通に使えてたのに、いきなりダメになる、という事もしょっちゅうなのです。
この記事を書いている現在(1月30日)においても、またもトレーニングが使えなくなってます。
最初はエラーを吐く状態から始まり、現在はエラーこそ吐かない物の何をしてもプロンプトがモデルに覚えこませられてないっぽく、トレーニングが無意味になってます。
その状況で記事を出しても意味が無いと思ったので、保留にしておりましたが原因と対処療法ではありますが対策がわかりましたので、こちらに置いておきます。
こちらのフォーラムで議論されておりましたが、どうやら「torch」と「xformers」がバージョンアップしたことによる弊害のようです。
なので、対策としてはトレーニングをしたければ前の安定していたバージョンに強制的に戻すという作業が必要になります。
コマンドプロンプトを開いて、cdコマンドで以下の場所まで行きます。
C:\Train\stable-diffusion-webui\venv\Scripts
※ご自分の環境でパスが変わりますのでご注意ください。
以下のコマンドを上からひとつづつ、コピペで入力していきます。
全部をいっぺんに張り付けるととんでもないことになるので気を付けて下さいね。一行ずつです。
出てきたら「y」を入力して先に進みましょう。
その後終了したら、「webui-user.bat」をダブルクリックして起動します。
途中に注意書きが入るようになりますが、これは推奨されているバージョンと違うものを使ってますよーという事なので、気にしなくて大丈夫です。
起動した後、一番下の方に各種バージョンが記載されておりますので、
ここが、ダウングレードできていればひとまずの応急処置は完了です。
コマンドプロンプトを扱うのに慣れてない方や、もっと楽に終わらせたい場合は、バッチファイルを作ると良いです。
私と同じフォルダ環境であれば、以下の内容をメモ用紙に張り付けて、「好きな名前.bat」と言う名前で保存すれば完成です。
アンインストールの際に、「y」ボタンを押すのは避けられませんので、そこだけは頑張って下さいね!
暫くすれば対策されて、普通にトレーニングできるようになると思いますので、その時はまたこちらの記事を修正しますね。
長くなりすぎてお忘れの方も多いと思いますので、再度、釘を刺しておきますが、
許可の取れていない絵師さんの絵でトレーニングするのはやめましょう。
と、ここまで口を酸っぱくして言ったのと、ここに来るオタクの皆様は基本的に紳士淑女(意味深)なので、信じております。
あ、まず、再度、前回の記事同様に最初に宣言しておきますが、
私は、今までお世話になった絵師様の絵を勝手に使ってトレーニングしないと誓います
じゃあ、何を使うんだ?と言う話ですが、前回と同じハルウララで行きましょう。
と言うか、その為にAIちゃんをいじってるだけなので。
とりあえず、現時点においては運営さんから怒られてませんので、静かに楽しみたいと思います。
しかし、ウララ可愛いのぉ……(しみじみ
過去、色々と試した時の名残で、なんとなーく基本的な工程は理解しているのつもりだったのですが、いざ動かしてみると意味が分かりませんでした(相変わらずの情弱
そんな中で、こちらのサイトがとても分かりやすかったので紹介しておきますね。
本当に助かりました。いや、このサイトを読み込んでなお、意味わからんですけど。
では、今回もやり方を追っていきましょう。
① 学習元になる画像ファイルを用意する
今回もウララの可愛い姿を集めました。
他のモデルでそれっぽいウララも出てるので、それも混ぜてみてます。
後程書きますけど、「Dreambooth」は「Textual Inversion」と違って、テキスト的な設定がそれほど必要ありません(私が使い方を理解してないからかもしれませんが)
また、背景を抜かなくてもかなり正確にキャラを抜き出して覚えます。
その代わり絵の特徴をそれはもう強く焼き付けますので、そういう意味で注意が必要です。
② Modelを作成する(Create Model)
ここがまず最初のポイントです。
最初に元になるモデルを変換して、トレーニング用モデルを作ります。
Dreamboothの「Create」タブを選ぶと上のような画面になります。
ここに必要な設定をしていきます。
〇 Name
モデルの名前になります。
自分の管理しやすい好きな名前を入れましょう。
今回は「EAV3 Haru Urara V1」としてます。
〇 Source Checkpoint
上記、トレーニングの元になるモデルをこちらで選びます。
こちらは上のStable Diffusion checkpointで現在選べるモデルがそのまま出ますので、もし使うモデルが無かったら、指定の場所(今回なら C:\Train\stable-diffusion-webui\models\Stable-diffusion)に置きましょう。
今回は、お試しで「Elysium_Anime_V2.ckpt」を使ってみました。
理由としては、絵柄が好みなものが多いのと、ウマ娘(umamusume)のプロンプトを理解しているからです。
〇 Scheduler
とりあえずデフォルトの「.ddim」で設定しましょう。
上記の通り設定したら「Create Model」ボタンを押します。
そうすると裏のコマンドプロンプトに処理が出てきます。
初回のCreateでは、必要なものをダウンロードするため時間がかかります。
ノンビリ待ちましょう。
左側の「Model Selection」に情報が出てきたら、元になるモデル変換が終了です。
※2月1日修正
③ Conceptsタブから学習パラメータを設定
このタブは、トレーニング画像の参照場所や、トレーニングに必要なパラーメータを設定するところです。
あまりにも多くのパラメータがあり、私の知識も全く追いつけてないので、とりあえずは動かせる状態に持っていく私なりのやり方をご紹介しておきます。
なおセオリーや、本来のやり方と一部違う部分もあり、またその辺りの検証は途中ですので、あらかじめご了承ください。
〇 Directories
絶対に設定が必要な部分です
・Dataset Directory
こちらに学習させたい絵が入ったフォルダのパスを入れます。
私は別ドライブHにあるTraningと言うフォルダに、トレーニング用のフォルダを一元管理してます。
今回は「H:\Training\Dataset directory\face」と言う場所に入れておきました。
パス? どうするの?と言う方は、エクスプローラー(ファイルを見るウィンドウね)の、上の方にある場所が書いているところで右クリック>アドレスをテキストとしてコピーを選んでそのまま、貼り付けましょう。
・Classification Dataset Directory
こちらは正規化用の画像を入れているフォルダのパスを指定します。
正規化とは、新しい概念を覚えさせる時の比較対象になるデータの事で、今回はウララの下地になる画像を選んでいます。
つまり今回の場合は、ウマ娘達の画像です。
ウマ娘の特徴である馬の耳と尻尾がちゃんと出ているうえで、好みの絵を他のモデルで出してここにまとめておいてます。
画風やキャラの構図なんかも吸収するので、多様なファイルを置いておくと良い感じに仕上がると思いました。
正規化画像は無くても良いのですが、その場合はトレーニング元のモデルを使って勝手に作りますので、思ったものと違った方向に学習することが多くなります。
お試しでまずはトレーニングしてみる位なら良いのですが、慣れてきたらこの辺りも気にして絵を選んでみましょう。
〇 Filewords
ぶっちゃけよくわからんので空のままです(こら
とりあえず、まだ私は卵の殻が付いたままのひよっこなので、あまり難しい事をせずに、何も入れずそのままでいます。
最初はここにも色々とぶち込んでましたが、凄く安定しませんでした、はい。
〇 Prompts
超重要部分です。
・Instance Prompt
私は、そのまま呼び出したいプロンプトを入れてます。
今回の場合は「Haru Urara」となります。
何か吸収されやすい3文字でうんたらかんたらとかあるんですけど、それだとプロンプトで制御するとき、イマイチ気分が乗らないという極個人的な理由と、後々の管理が大変なことになりそうなのでそうしてます。
まぁ、とりあえずちゃんと学習してプロンプトでも出てくるから良いかーと言う感じです(適当
・Class Prompt
地味に重要だったりします。
上記の「Instance Prompt」と紐づけるための語を入れます。
例えば、今回はハルウララと紐づけたいのでumamusumeを入れてます。
本来であれば一語でgirlなどが推奨されてますが、とある理由で意図的に外してます。
仮に正規化の画像が無い場合は、このプロンプトで正規化画像を勝手に作るっぽいです。
・Sample Image Prompt
上記ClassPromptで正規化画像を作る際に、恐らく使用されるのと、おまじない的に入れてます。
多分、省略しても問題ないと思います。
以上のパラメータを設定したら、上の方にある「Traning Wizard(Person)」ボタンを押します。
勝手に人物用のパラメータに調整してくれるっぽいです。
とりあえず、自分で設定する技量はまだないので、こちらで自動設定してます。
まぁ、とりあえずこれでトレーニングできてるからまずはOKという事で!(適当
④ Settingsタブからパラメータを設定
何で先にこっちを設定しないのかと言えば、Wizardを使う場合は、まずConseptsタブの「Directories」を設定しておかないと2度手間になるからです。
こちらは、既にConseptsで設定が終わっていれば、とりあえず上の「Performance Wizard(WIP)」を押すだけです。
勿論、細かいところの調整は必要になるので、こだわりたい人はそこから設定しなおしていきましょう。
〇 General
基本設定の部分が詰まってます。
特に「LORA」を使ってトレーニングしたい場合は、ここでチェックを入れましょう。
ちなみに私はまだLORAの使い方が分からないので、この記事の時点ではスルーしております。
次回の記事を書く機会があれば、触れられたらいいなぁと思ってます。
私の環境では、ここにチェックは入りません。
〇 Intervals
トレーニングの各種パラメータを設定します。
・Training Steps Per Image (Epochs)
学習元画像1枚に対して、どれくらい学習ステップを踏むか設定する場所です。
多くやればいいというものでもないので、慣れるまではWizardの提案する数値で良いと思います。
初期設定は150になることが多いのですが、後述のLearning Rateを下る場合は上げてます。
・Save Preview(s) Frequency (Epochs)
既定のタイミングでプレビュー画像を出します。
細かくチェックしたいなら初期の数値で良いのですが、その分処理に時間を取られるので、上の「Save Model Frequency (Epochs)」と同じ数値で良いと思います。
私は25で設定してます。
・Learning Rate
恐らく初期設定は「0.000002」ですが、もし時間に余裕があれば「0.000001」に落としてます。
その方が時間はかかりますが、学習の幅が広がっているように感じます。
イマイチわかって無いので、皆さんで試してみて下さい(丸投げ)
〇 Advanced
設定が必要な超重要部分です。
設定するのは以下の場所のみで、後はWizard通りです。
〇 Tuning
・Use EMA
メモリに余裕があるときはチェックを入れます。
ただ時々、これが原因でエラーが出ることがあるので、時間に余裕を持てるなら外します。
・Use 8bit Adam
・Mixed Precision fp16(注意)
・Memory Attention xformers
残念ながら上三つは必須項目です。
無いと、オーバーフローエラーが出る事があります。
Mixed Precisionは、私の環境だとbf16が優先して選ばれます。
しかし、今までトレーニングした感じだとfp16の方が動作が安定しているのでそちらで進めます。
Settingsに関してはこれだけです。
環境次第ではもっと柔軟に対応できるようになると思いますので、色々と試してみて下さいね。
⑤ トレーニング開始!(Train)
右上の「Train」ボタンを押せばトレーニングが開始されます。
クラスファイルの読み込みや、モデルの読み込みが終了し、設定が正常に完了していれば、そのままトレーニングに入れるはずです。
Cancelボタンを押せばトレーニングは中断できますので、必要なときはそこで止めましょう。
今回の設定では、約1時間半(90分)でトレーニングが完了しました。
以上、簡単ではありますが最低限のトレーニングに必要な操作でした。
以前ご紹介した「Textual Inversion」も使い方でかなりいい感じになるのですが、なんせ時間がかかるのがネックです。
それに比べると「Dreambooth」は、かかる時間が圧倒的に少ないです。
ちなみに、上記のフォルダでDatasetを26枚、Classimageを189枚読み込んだ場合ですら、1時間半ぐらいです。
これを「Textual Inversion」でやると一日かかります。
また、使用されているVRAMも10.6Gとかなり微妙なラインから始まるため、12Gの3060でないと厳しいと思いました。
私の設定では枚数を少なくしないと8Gをギリギリ超えますので、場合によってはLORAを使った方法や、数値の最適化が必要になりそうです。
とりあえず現時点においては、やはり12G積んでいる3060ちゃんで良かったようです。
さて、ではそんな感じで軽く流してトレーニングしたモデルはどんな感じになったでしょうか?
早速できたばかりのモデルで出力して見ます。
使用したプロンプトは以下の通りです。
〇 Prompt
〇 Negativ Prompt
ウララ? と言う感じでちょっと思っていたより硬いというか雑な感じになります。
私のやり方がまずいせいもあるのでしょうが、どうもこれがDreamboothの特徴なのかなと。
ただ、再現率は割と高く、サクッとトレーニングした割には得られるものが大きいと私は感じてます。
しかし、絵柄的に微妙なのも否めません。
と言いますのも、全く同じプロンプトで、トレーニング前に出力したものがこちらになります。
おわかりいただけただろうか?(某番組風
実はトレーニングすると、そのモデルは必ずと言っていいほど画風や構図が劣化する傾向にあります。
ですから、最初私も色々とやってみて、そのあまりの差に絶望しました。
まぁ、確かにモデルに短時間で強烈に学習させるとその弊害も大きいのだろうなぁと言うのは、何となく納得なのです。
ですが、巷を見れば皆様、とても綺麗に好きなキャラたちを描かせています。
私のやり方がまずいのを差し引いても、やり方が何かあるはずです……多分。
今まで軽く嗜んだ程度の私でも、他の所でも言われております通り、以下の事が重要だと感じました。
・学習元のデータは数より質が大事
この質と言うのが曲者ではありますが、具体的には次の事になります。
① 解像度が高い画像
② キャラの特徴をしっかりと捉えてる画像
③ 腕や他の物が顔の近くにないもの
例えば、今回のウララの学習元データのうち、トレーニングさせてみて以下の物はあまりよくないと感じました。
こちらは解像度不足です。
実際にこうして表示してみるとわかるのですが、ガタガタですね。
この位まで鮮明じゃないと、学習した時に崩れ気味になるようです。
なので、この辺りを意識して学習しなおすと質が上がります。
またこちらの画像は、解像度は問題ないのですが……
水の中だったため、どうやらウララ=水と言う属性が勝手に読み取られたらしく、生成時に水辺の景色が混じるようになりました。
そうか、そういう学習の仕方をしたのかー、なるほどねーと言う感じです。
なのでそういう極端な構図の絵も外した方が良さそうですね!
・学習先のデータ(モデル)との相性も考える
実は表現の仕方によっては、モデルによって得手不得手が存在します。
また学習の仕方と言う意味でも、ある意味モデル個々に癖の様なものがあります。
私はアニメ調の絵を好んでいるので今は「Elysium Anime」系のモデルを好んで使っております。
ですが、もっと違った絵柄が好みの方もいらっしゃるでしょう。
なので、この辺りは実際に自分で様々なモデルを触ってみて、感触として実感していく他ないと思います。
または自分の好みの絵柄を出すため、日々、研鑽されておられる方もいらっしゃるので、そのような術師様を追っていくのも良いかと思いますよ。
と言う感じで、以上の事を踏まえて、改めて学習し直しました。
なお、モデルは「Elysium_Kuro_Anime_V1」に差し替えました。
枚数は半分ほどの13枚です。
学習元の枚数が減ったため、トレーニング時間は1時間ほどになりました。
それで完成したモデルを使用し、同じプロンプトで出した絵がこちら。
細かいところで気になる部分はありますけど、雰囲気はとても私好みですね!
とりあえず、こういう感じで煮詰めていったり、更に好みの方向性を探していくことになります。
試行錯誤しつつ、多くのモデルが積みあがる事でしょう。
そんな中にはトレーニングを長時間行っても、全く納得がいかない内容になるもの多いです。
また惜しいんだけど満足できないというものだったり、お気に入りなんだけどモデルの革新にすぐに置いていかれてしまったモデルちゃんも出来る事でしょう。
そんなあまたのモデルたちはゴミ箱に入るだけの存在なのか?
実はそうでもなかったりします。
特に強烈に焼き付けすぎて、帰って崩壊し始めたようなモデルは実は可能性を秘めています。
その可能性を引き出してくれるのはマージ(Merge)と言う手段です。
これはモデル同士を混ぜ合わせて新しいモデルを作る手法です。
実はトレーニングはあくまで自分のこだわり部分の中でも足りない場所を補う方法で、実際の作業はほぼマージに費やされることになると思います。
では、実際の方法をご紹介です。
と言っても、この機能は元から「Stable Diffusion web UI(AUTOMATIC1111版)」に内包されているので簡単です。
① 「Checkpoint Merger」タブを選択
② Primary model(A)にベースとなるモデルをセット
③ Secondaty model(B)付け加えるモデルをセット
④ 新しくできるモデルの名前を指定したい場合はCustom Name(Optional)に入力
⑤ Multiplier(M) -set to 0 to get model A の数値をセット
※0.3にした場合は、モデルAが70% モデルBが30%でマージされる
⑥ Interpolation Method 初期設定 Weighted sum のまましか試してないです
これだけなので、割と簡単に使えます。
しかし、その影響は割とシャレになってません。
では、実際に先ほどちょっと画像が多すぎて微妙な感じとなったモデルを「Elysium_Kuro_Anime_V1」へとマージしてみました。
ちなみに「Multiplier(M) -set to 0 to get model A」の数値は0.85で設定してます。
どうでしょうか?
雰囲気はかなり変わりましたよね?
吸収する側のモデルいかんよって、割と化けますので色々と試すことになると思います。
そして多分、最終的には皆様、ここに行きつくんでしょうね。
夜な夜な、トレーニングしたモデルと既存のモデルをマージして、その最適なパターンを探るのです。
それはもうどこかのシェフや目利きのワイン通の様に、混ぜ合わせて味わい、違う、これじゃない、となるのです。
もう完全に沼です、沼。
そういう沼にハマりこんだ皆様が作られたモデルが、惜しげも無く公開されているのが今の現状です。
以上、現段階に至るまでの私の忘備録でした。
もしこの記事が少しでもお役に立てたなら嬉しいです。
しかし、この先の道は絵師様の皆様が通った修羅の道の再演であると私は感じました。
なので、その辺りの話もしておきたいと思います。
私も手の空いた時に色々なウララを出力しようとして、切磋琢磨しております。
どうもDreamBoothの場合は、かなり強烈に焼き付けるので、基本的に衣装ごと学習します。
なので学習画像の状態や、プロンプトによっては、そのまま変えられない状態になる事も良くあるのです。
これは私のやり方がまずいからだと思うので、これ以上のウララを目指すなら更なる研鑽が必要になってくるでしょう。
で、そんな風に色々と工夫しながらトライ&エラーを繰り返しつつ、多分、先人たちの10周遅れ位のところをぐるぐる回っていて、ふと気づいてしまうのです。
私はなんでこんな事をやっているんだ?(真顔
そして、何千枚というウララと思しき絵を出力して、それをずっと見ていると、だんだんどれが正解なのか分からなくなります。
最初はそれっぽいものが出ていただけで満足していたのですが、
回数をこなしていくと、耳の太さだったり、眼の中の桜の枚数だったり、
最終的には、絵柄とか線の太さとか、笑顔の角度とか、それこそどうでも良いところが気になるようになります。
くっ!? 確かにこのウララも可愛いが、もっと可愛いウララが出来るはずだ!?
もっと違った画風でウララが表現できるはずだ!?
そうして、一周回りきると「ハルウララとは、一体なんだ?」となる訳です。
そして、私はこう思いました。
もしかしたら、これが絵師さんの抱く山の高さなのか?と。
これはとても先が見えません。
私は技術力という所をAIでごまかして楽しんでいますが、それでもなお、この闇の深さ。
うーむ、やはり絵師様というのは凄い存在だ……と、改めて恐れすら抱くようになりました。
絵師さんはやはり凄い。
そして同時に、やっぱりAIは上手く使えば、有益であるというのも身をもって体験しております。
皆さんも是非、内に秘めた魂を爆発させる道具の一つとして、活用して見て下さい。
これも前の記事からの引用です。
① トレーニングさせる環境を用意するのが大変
私のようなPC主体に活動されている方は、既にハイスペックの物をお持ちの方もいらっしゃるでしょうが、大抵の方はそんなハイスペックなPCは無いと思うんですよね。
特に絵描きの方は、低スペックやミドルスペックで満足しちゃうようですし、ゲーマーでもない限り、そもそもこのスペック群のPCは持ってませんよね。
なので、よほどのお金持ちや興味のある方以外は、スタートラインにすら立てないのが現状です。
ちなみに、参考までにですが、私のPCを市販でゼロから買うとなるとこんな感じ。
メモリとストレージがやや不安があるので、そこを強化すれば3年は戦えるPCかと思います。
勿論、私の使っている環境とほぼ同じなので、問題なくAIちゃんもトレーニングできるはずです。
ただ、技術が進んで使用メモリ量を削減できるようになれば、もう少しグラボの選択肢は広がると思います。
それが数週間先の事なのか、数年先の事なのかはわかりません。
なのでご自分の財政状況とその他諸々踏まえた上でご検討下さいね。
② 仕組みや使い方を理解するのが大変
基本事項を理解するだけでもかなり大変な上に、最近の更新頻度がとんでもなく高いせいで、そのハードルが更に爆上がり状態です。
この記事がここまで遅れてしまったのも、もとはと言えばバグラッシュのせいなので、その辺りを受け流せるか、どん欲にネットの荒波を乗り越えて知識を得ていける方でないと、この流れを追うのすら大変です。
まぁ、数年もすればこの勢いも落ち着いてくるとは思うので、それまで待つというのも手ですが、その時には先に逝った人たちに追いつくのは厳しいと思います。
本当に技術の転換点であるので、もし興味のある方は今のうちにある程度触っておくほうが、良いとは思います。
そんな感じで、私のように楽しみたい方は、おススメできますが茨の道であることはお覚悟ください。
その上で自分の絵を作り出してみたいなと思っている紳士淑女の皆様の力に少しでもなれたらなら幸いです。
けど、重ねて何度も申し上げますが、人の絵は勝手に使っちゃダメですからね?
※4月18日追記
次の記事を書きました。ControlNetを含む、画像編集についてです。
また、今のトレーニング環境が変わっておりますので、そちらの記事も更新しました
宜しければどうぞです。
今回の記事は以上になります。
お読みいただき、ありがとうございました。
こちらの機能はStable Diffusionが世に出てから初期の段階で登場したトレーニング方法です。
それに対して、今回ご紹介するのは「Dream Booth」というものです。
こちらは、Stable Diffusionが話題になって少しして世に出てきました。
名前さえ分かれば検索で幾らでも情報は出てくる……と思いきや、割とここから先の話はよー分からんという状況になっていきます。
なんせ概念なら上のHPで何となくわかるのですが、実際に使ってみるとかなり癖が強いんです。
私が使い方をよくわかってないというのもあるんですけど、未だにこれ単体だとうまく使えません。
なので色々な方法を取り入れて試行錯誤していくことになります。
その入り口の技術として、今回のトレーニング方法であるDreamBoothを紹介です。
Textual InversionとDream Boothの違いについて
今回、どちらのトレーニングも使ってみた私としての感想を以下にまとめておきたいと思います。勿論、へっぽこな私なので思い違いをしていたり、そもそも使い方を間違っている可能性もありますので、その辺りは織り込んで参考程度にお読みください。
私が触った感じだとこんなイメージです。
では、細かくメリットとデメリットについて、書いていきますね。
〇 Textual Inversion
メリット :
・細かい調整に向いている
・必要メモリはトレーニング環境としては少なめ
・ptファイルで出力されるため、ファイルサイズが少なく容量の管理が楽
デメリット:
・設定を細かくしようとするとファイルをいじるので凄く面倒くさい
・とにかく時間がかかる
・試す場合はptファイルを移動するので、そこだけちょっと面倒
〇 DreamBooth
メリット :
・新しい概念を焼き付けるのに向いている
・所要時間は短いので気軽に試せる
・ckptファイルで出るので、試すのが楽
デメリット:
・設定や素材によって学習の仕方に強いムラが生じる
・めっちゃ強烈に焼き付けるので融通が利かない
・ckptファイルで出るので、数をこなすとファイル容量をめっちゃとる
私から見ると、以上のような感じです。
細かい話は、後でまたご説明します。
創作に際して、忘れてはいけない事
前の記事でも書いたことですが、再度引用した上で簡単に追記しつつ注意喚起しておきます。このトレーニングを行うには、当たり前ですがAIちゃんにその概念を教える教材が必要です。
そして例えばですが、私が大好きな花騎士のシクラメンちゃんを描きたいと思っていたとしましょう。
では、その絵を片っ端から集めて学習させるのは、良いのでしょうか?
私は、現時点で絵師の許可なしにAIをトレーニングすることはお勧めしません。(って言うかやめた方が良い)
いちオタクとしましては、絵師さんの心境や尊厳を思うと、それで筆を折ってしまう事も十分に考えられるからと言う理由が一番大きいです。
折角素敵な絵を描いて下さっているのに、それを邪魔してしまったら本末転倒です。
あくまでAIの本質は真似をすることが基本なので、絵師さんの存在はとても重要なのです。
ですが、私の意見に関わらずそう思わない人はやるでしょうし、その流れが止まらないとも思っています。
何より、じゃあ、何で私はこの記事を出したんだ? と言う話になる訳ですが、それはむしろ絵師さんにこそ、このAIの可能性とできる事、できない事を知って欲しいからなんですよね。
そしてそれを更に乗り越えて、自分自身の在り方をもう一度見直してほしいと思っております。
詳しい事は他の場所で細かく書いておりますので、ここでは割愛しますが、究極言えば「好き」を突き詰める事が必須になるという事です。
丁度、この番組で「山田玲司」さんが私と方向性が同じ事を仰ってくれてましたので、ご紹介しておきます。
後半部分で仰っておりますが、最終的に読者や皆様に伝わる創作というのは、自分の魂と読者の魂の共振であり、それを起こすのは自分が伝えたいという思いを作品に籠めてないと起こりえません。
私はそれを「好き」という一言で表現しておりますが、本質的な所は同じだと思っています。
確かに画力を追い求めることで、自分の価値を高めていくのはありだと思います。
事実、今の時点ではそれはとても有力な武器となるはずです。
しかし、一方で更にここ数か月で進歩してモデルの進化が止まりません。
別の技術体系としてより洗練化されてきた印象を受けます。
今はまだ使い方に癖があるため一般的にはあまり浸透していませんが、これがこなれてくれば話は別です。
既にもうお分かりの方も多いかと思いますが、画力の神話が崩れてきています。
私はその昔、神絵師の力が手に入ったらあなたは何を描きますか? と言う問いを見た事があります。
その比喩であった神絵師の力が、誰でも使える時代が目の前に来ています。
それ自体は、方法も含めて法と言う観点で論じられる話ではあるでしょう。
しかし、もしその力が貴方に与えられた時、あなたはその力で何を成しますか?
それは、あなたの好き(魂)でしか語れない事だと私は思います。
そうして作品に否応なしに向き合わされてしまう時、心を折らずに向き合って欲しいからこそ、このような記事を書いてます。
同時にこれは、私のような絵の描けない創作者の創作活動の幅を広げるツールにもなります。
今まで手の出せなかった分野が開拓されることで、更に多種多様なコンテンツが生まれる事でしょう。
私はその可能性の方を重視しているという立場でもあるので、今回の記事を書くに至りました。
ちなみにどれだけAIが進歩しても、絵を描ける人の方が、私のような絵を描けない人に比べてはるかに有利なのはこれからも変わらないでしょう。
何故なら私は、ちょっとだけ手を入れての修正すらできませんが、絵心のある方は、それが可能です。
神絵師達と皆様の差は凄く埋まるでしょうが、私のような絵心の無い人と、少しでも絵が描ける人の差は変わらないと思います。
AIの出来る事、できないこと。導入の苦労や使いこなす難易度の高さ。
そう言ったもの全てを踏まえた上で、どうやってAIと向き合っていくかを考える指標になってくれればと思います。
DreamBoothでトレーニングしてみよう!
前置きが長くなりましたが、大事な事だったので。では、例の如く私のPC環境をある程度こちらに記載しておきたいと思います。
・CPU
Core i7-12700
・グラボ
Palit NE63060T19K9-190AD (GeForce RTX 3060 Dual OC 12GB) LHR版
※ドスパラ購入サイト
・OS
Windows 11
・メモリ
48G
・私の知識レベル
Java ScriptやGASなら書けるくらい
Python?最近流行ってるよねーくらい
開発環境? 何それ美味しいの?(テキストベタ打ち)
ちなみに、前回の記事でもお話した通り、ネックとなるのはグラボでした。
そして、前の記事をお読みの皆様の中には不思議に思った方もいらっしゃったのではないでしょうか?
Textual Inversionを使うならギリギリ8Gでなんとかなるのです。
なのになぜ、わざわざ12Gのグラボにこだわったのかと?
答えは今回の記事の通りです。
この記事を書いている時点においても、DreamBoothを安定動作させる要件が10Gっぽかったからです。
実際、使って見た感じとして10Gないとかなり厳しい戦いを強いられることになりそうです。
つまり、トレーニングをローカル環境で最大限にこなすには、グラボのメモリ12Gは最低ラインだったという訳ですね。
結論から申し上げますと、3060(12G)でなら、何の問題もなくトレーニングできてます。
ちなみに後程書きますが、8G程度でもDreamBoothを使える方法もありますが、私の環境では検証できません。
数値的にはOKでも実際に8Gメモリのグラボで回してみないと確証は持てませんので。
ああ、メモリーオーバーフローのエラーが出ないって素晴らしい(ぁ
再度確認 Stable Diffusion web UIのインストール方法
さて、割とStable Diffusion web UIのインストールで躓く方が多いっぽいようで、そのような方もこちらのサイトをシレっと見て下さっているようです。確かに、コマンドプロンプトに慣れていない方は、このインストール時点でめっちゃ躓きそうです。
最近は、他のサイトでもインストール方法を紹介している記事が増えてきた印象です。
なのでこちらでは、そう言った記事のご紹介と、簡単な設定方法だけ再度、書いておきたいと思います。
まず、うちの超見ずらい(自覚はある)サイトよりは、とても良い記事がありました。
モデルの紹介もありますので、基本はこちらのサイトで見ていけばいいかと思います。
では、その上で一応、こちらのサイトでも軽く書いておきますね。
とりあえず、注意点としては前の記事から変わらず、以下の部分です。
① Pythonは3.10.9を使いましょう
実は新しいバージョンで3.11.0が来てるのですけど、そちらだと上手く動きませんでした。
多分、ソースでバージョンを縛る部分があるっぽいです。
なので、3.10.9を選んでインストールしましょうね。
ちなみに前回の記事では3.10.8で紹介していましたが、バージョンが上がっていたので一応、こちらに差し替えてます。
とりあえず問題なく動いているっぽいので、どちらでも良いかなーとは思います。
〇 Download Windows installer (64-bit)
インストールの際には、下部の「Add Python 3.10 to PATH」にチェックを入れる事をお忘れなく。
最悪間違ったらアンインストールからの再インストールでもOKです。
② Git は最新のものでOK CUDAは必要なし
逆にGitは、最新のものでOKです。
Git 2.38.1 Download
前回の記事ではCUDAも入れるようにご案内しておりましたが、どうやらWebUI側で対応したらしく、PCへ個別に入れる必要はなくなりました。
上手くインストールできたか確認したい場合は、コマンドプロンプトで以下のコマンドを使ってみましょう。
コマンドプロンプトの起動方法が分からないという方は、以下のサイトを参考にしてみて下さいね。
簡単に説明すると「Windows(四つの🔲が集まったマーク)」+Rで「ファイル名を指定して実行」を開き、「cmd」と入力します。
〇 Ptythonのバージョン
python -V
※注 Vは大文字なおコマンドをこちらでコピーしたら、コマンドプロンプト上で右クリックすることでペーストできます。
なお、コマンドプロンプト上の文字をなぞって色を付け右クリックをすると、その文字列をコピーできます。
貼り付けた後、エンターキーで、コマンドを実行できますので、覚えておきましょう。
nvcc -V
〇 gitのバージョン
git --version
① Stable Diffusion web UI(AUTOMATIC1111版)をインストール
まずはStable Diffusion web UI(AUTOMATIC1111版)をインストールするのですが、実は今はめちゃくちゃ楽です。
まず、インストールするフォルダを作っておきましょう。
今回はCドライブ直下にTrainというフォルダを作りました。
C:\Train
コマンドプロンプトを起動し、その場所に移動します。
cd C:\Train
cd(スペース)ファイルアドレス前の記事で書いたように、エクスプローラー上でファイルの場所を右クリックして「アドレスをテキストとしてコピー」をした後、コマンドプロンプト上で右クリックするとその場所を貼り付けられます。
cd を前に書いてファイルパスを貼り付けたあと、エンターキーを押しましょう。
C:\Train>
※ファイルの場所
となっていたら準備OKです。
以下のコマンドをコピーして貼り付けエンターキーを押します。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
インストールが始まり、Train(指定したフォルダ)内に「stable-diffusion-webui」フォルダが作成されているはずです。② モデルの配置
その後は、モデルを配置します。
C:\Train\stable-diffusion-webui\models\Stable-diffusion
上記のフォルダにモデルを入れておきます。
今回は「wd-1-4-anime_e1」を置いておきました。
モデルが無いという方は、先ほど紹介したサイトから追うか、Wife1.4を使う事をお勧めします。
「 」と「 」の両方が必要です。
この二つを上記フォルダに配置しましょう。
※実はこの記事を書いている最中に、更に新しい「 」が来ております。
なので、そちらを使っても良いと思います。
その際、yamlファイルは上記の物を落として、名前を「wd-1-4-anime_e2.yaml」に合わせましょう。
③ webui-user.batから起動する
なお、トレーニングするにあたって起動batである「webui-user.bat」内の「COMMANDLINE_ARGS」に以下の設定をしておきましょう。
「stable-diffusion-webui」フォルダ内の下の方に「webui-user.bat」というファイルがあると思います。
右クリックで編集を選択し、メモ帳などで開きます。
Windows11は編集が隠れておりますので、Shiftキーを押しながら右クリックをしましょう。
@echo off set PYTHON= set GIT= set VENV_DIR= set COMMANDLINE_ARGS=--xformers
git pull
call webui.bat
最新状態にしておきたい方で、私のようなものぐさな人は入れておきましょう。
逆に、環境をなるべく変えたくない人は入れないでおきましょう。
「webui-user.bat」をダブルクリックして起動します。
トレーニングする場合の起動は「webui.bat」ではなく「webui-user.bat」ですのでお間違いないように。
起動すると新しいコマンドプロンプトが立ち上がり、暫く固まります。
見た目には動きが少ないので心配になりますが、そのまま根気強く待ちましょう。
最後の方に「http://127.0.0.1:7860」等のリンクが出ればOKです。
コマンドプロンプト上のリンクを「ctr」を押しながらクリックすれば、すぐに開くと思います。
仮にエラーが出て止まった場合、大抵の場合はモデルの配置忘れです。
正しい場所にモデルが配置されているか、確認しましょう。
これにて基本構成の構築は終了です。
ただ使うだけならばこれで十分なので、使いたいだけの方は参考にしてみて下さいな。
Stable Diffusion web UI(AUTOMATIC1111版)へDreamBoothを導入する方法
ここからが本番ですね。Stable Diffusion web UI(AUTOMATIC1111版)へDreamBoothを導入する方法を解説します。
「Extention」タブにある「Available」から「Localization」にチェックを入れて「Load from」ボタンを押します。
以下のような画面が出ると思いますので、DreamBoothの右にあるInstallボタンを押しましょう。
ちなみに、本来なら「localization」だと出ないはずなのですが、何でかでてます。
仮にアップデートで表示されなくなった場合は「script, tab」にチェックをして「Load form」を押してみましょう。
「Ctr+F」で検索画面を開いて「Dreambooth」で検索してみるのが良いと思います。
右側のInstallボタンを押すと、コマンドプロンプト上で処理が走ります。
初期のインストールの時と同じく、最初は何も動きがありません。
気長に待ちましょう。
ただ、これは私の環境だけかもしれませんが、途中で以下のエラーが起きて止まります。
そうしましたら、コマンドプロンプトをいったん閉じます。
Ctr+Cで止めた後に、Yを押して閉じるか、そのまま右上の×ボタンで閉じてしまいましょう。
その後、再度「webui-user.bat」をダブルクリックして起動します。
今までには出てなかった「DreamBooth」用のコマンドラインが出てきます。
見たら一発でわかると思うのですが、左側の [ ] が [ + ] となっていれば問題ありません。
もし+が入ってない場所があれば、そのモジュールのインストールに失敗しています。
大抵の場合は、X-formersのインストールを忘れているパターンでしょうから、「webui-user.bat」内の「COMMANDLINE_ARGS」にX-formersが入っているか確認しましょう。
問題なく起動していれば、タブに新しく「Dreambooth」の項目が出来ているはずです。
これでDreamBoothを使う準備が整いました。
ただしここまでならメモリ8G未満のグラボでもこれます。
問題はこの先なんですよね……。
閑話休題 モデルの種類とVAEについて
この記事は2か月ほどかけてダラダラと書いているのですが、その間にモデルの方で大きな動きがあり、日進月歩で出まくってます。特に昨年末に出たStable DiffusionV2.0の登場によって、モデルそのものが更に進化を遂げております。
正直、私の力量では追いきれませんので、投げ出しておきたいのですが、それでは困る人もいらっしゃるでしょう。
なのでここでは大筋と以後、私が使っているモデルについてのみ言及しておきます。
まずモデルには大きく分けてV1とV2があります。
これは不勉強で申し訳ないのですが、Stable DiffusionV1の技術体系をベースにしたか、V2をベースにしたかという事かなと理解しております。
最近出ているモデルはV2モデルが多いです。
なので時間が経てば気にする必要はなくなると思いますが、後述のトレーニングにおいて、私の環境ではV2モデルでトレーニングしようとするとエラーが出ます。
もし私と同じように、V2モデルでうまくできない場合はV1モデルを使ってみましょう。
現在、私がトレーニングに使っているのは以下のモデルです。
〇 Elysium Anime V2
使って見た感じで一番私の好みの絵に近く、ウマ娘(umamusume)のプロンプトを内包していることから、こちらを使って試行錯誤しております。
ただ、本来はウマ娘自体の語が入っていること自体があまり良い事ではなさそうなので、ご利用はご自身の判断でお願いします。
〇 VAEについて
実は多くのモデルは、そのまま使っても掠れたような、ぼんやりとした絵しか出てきません。
それは、元々の作りとしてVAEというのものの補正を前提として調整されているからです。
なので、多くのモデルがあるように、それに合わせてVAEも一緒に組み合わせて使う必要があります。
モデルによっては、VAEだけでなくネガティブプロンプトも指定しているものがありますので、画像出力の際には参考にしてみて下さい。
今回ご紹介しております、Elysium Anime V2においては、以下のVAEを推奨しています。
以下、公式より引用
・VAE: 'vae-ft-mse-840000'
・VAE: 'kl-f8-anime2.ckpt'
推奨されるネガティブプロンプト
lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry
また細かいモデルの種類やVAEにつきましては、こちらのサイト様が参考になります。
興味があれば、こちらでご自分の好みのものを追ってみても良いかと思いますよ。
ただし、ご判断はご自分でしっかりと行いますよう、お願い致します。
※注意 1月30日現在、トレーニングが上手くいきません
この記事は実は前の記事を書き終えてからすぐに書き始めました。ですが、この記事が実際にこうして表に出るまで、実に2か月の月日を要しています。
それはもちろん、私がDreamboothでのトレーニングの仕方が良くわからんというのもあるのですが、それ以上にStable Diffusion web UI(AUTOMATIC1111版)の更新頻度が早すぎて、しょっちゅう使えなくなっていたからです。
実は、この2か月の間でも何度もバグとの戦いで、トレーニングができなくなる事態が続きました。
先日まで普通に使えてたのに、いきなりダメになる、という事もしょっちゅうなのです。
この記事を書いている現在(1月30日)においても、またもトレーニングが使えなくなってます。
最初はエラーを吐く状態から始まり、現在はエラーこそ吐かない物の何をしてもプロンプトがモデルに覚えこませられてないっぽく、トレーニングが無意味になってます。
その状況で記事を出しても意味が無いと思ったので、保留にしておりましたが原因と対処療法ではありますが対策がわかりましたので、こちらに置いておきます。
こちらのフォーラムで議論されておりましたが、どうやら「torch」と「xformers」がバージョンアップしたことによる弊害のようです。
なので、対策としてはトレーニングをしたければ前の安定していたバージョンに強制的に戻すという作業が必要になります。
コマンドプロンプトを開いて、cdコマンドで以下の場所まで行きます。
C:\Train\stable-diffusion-webui\venv\Scripts
※ご自分の環境でパスが変わりますのでご注意ください。
以下のコマンドを上からひとつづつ、コピペで入力していきます。
全部をいっぺんに張り付けるととんでもないことになるので気を付けて下さいね。一行ずつです。
pip uninstall torch torchvision pip uninstall torchaudio pip uninstall xformers pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu116 pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/torch13/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whlなお、アンインストールに関しては、途中で「y」を押してエンターを押さないと進まない場所が何か所かあります。
出てきたら「y」を入力して先に進みましょう。
その後終了したら、「webui-user.bat」をダブルクリックして起動します。
途中に注意書きが入るようになりますが、これは推奨されているバージョンと違うものを使ってますよーという事なので、気にしなくて大丈夫です。
起動した後、一番下の方に各種バージョンが記載されておりますので、
ここが、ダウングレードできていればひとまずの応急処置は完了です。
コマンドプロンプトを扱うのに慣れてない方や、もっと楽に終わらせたい場合は、バッチファイルを作ると良いです。
私と同じフォルダ環境であれば、以下の内容をメモ用紙に張り付けて、「好きな名前.bat」と言う名前で保存すれば完成です。
@echo off cd C:\Train\stable-diffusion-webui\venv\Scripts pip uninstall torch torchvision pip uninstall torchaudio pip uninstall xformers pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu116 pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/torch13/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whlフォルダ環境が違う方は、cd以下をご自分のフォルダ環境に合わせて作って下さい。
アンインストールの際に、「y」ボタンを押すのは避けられませんので、そこだけは頑張って下さいね!
暫くすれば対策されて、普通にトレーニングできるようになると思いますので、その時はまたこちらの記事を修正しますね。
では、Dreamboothでトレーニングしましょう
と言う訳で、長々と語りましたがやっと本番です。長くなりすぎてお忘れの方も多いと思いますので、再度、釘を刺しておきますが、
許可の取れていない絵師さんの絵でトレーニングするのはやめましょう。
と、ここまで口を酸っぱくして言ったのと、ここに来るオタクの皆様は基本的に紳士淑女(意味深)なので、信じております。
あ、まず、再度、前回の記事同様に最初に宣言しておきますが、
私は、今までお世話になった絵師様の絵を勝手に使ってトレーニングしないと誓います
じゃあ、何を使うんだ?と言う話ですが、前回と同じハルウララで行きましょう。
と言うか、その為にAIちゃんをいじってるだけなので。
とりあえず、現時点においては運営さんから怒られてませんので、静かに楽しみたいと思います。
しかし、ウララ可愛いのぉ……(しみじみ
過去、色々と試した時の名残で、なんとなーく基本的な工程は理解しているのつもりだったのですが、いざ動かしてみると意味が分かりませんでした(相変わらずの情弱
そんな中で、こちらのサイトがとても分かりやすかったので紹介しておきますね。
本当に助かりました。いや、このサイトを読み込んでなお、意味わからんですけど。
では、今回もやり方を追っていきましょう。
① 学習元になる画像ファイルを用意する
今回もウララの可愛い姿を集めました。
他のモデルでそれっぽいウララも出てるので、それも混ぜてみてます。
後程書きますけど、「Dreambooth」は「Textual Inversion」と違って、テキスト的な設定がそれほど必要ありません(私が使い方を理解してないからかもしれませんが)
また、背景を抜かなくてもかなり正確にキャラを抜き出して覚えます。
その代わり絵の特徴をそれはもう強く焼き付けますので、そういう意味で注意が必要です。
② Modelを作成する(Create Model)
ここがまず最初のポイントです。
最初に元になるモデルを変換して、トレーニング用モデルを作ります。
Dreamboothの「Create」タブを選ぶと上のような画面になります。
ここに必要な設定をしていきます。
〇 Name
モデルの名前になります。
自分の管理しやすい好きな名前を入れましょう。
今回は「EAV3 Haru Urara V1」としてます。
〇 Source Checkpoint
上記、トレーニングの元になるモデルをこちらで選びます。
こちらは上のStable Diffusion checkpointで現在選べるモデルがそのまま出ますので、もし使うモデルが無かったら、指定の場所(今回なら C:\Train\stable-diffusion-webui\models\Stable-diffusion)に置きましょう。
今回は、お試しで「Elysium_Anime_V2.ckpt」を使ってみました。
理由としては、絵柄が好みなものが多いのと、ウマ娘(umamusume)のプロンプトを理解しているからです。
〇 Scheduler
とりあえずデフォルトの「.ddim」で設定しましょう。
上記の通り設定したら「Create Model」ボタンを押します。
そうすると裏のコマンドプロンプトに処理が出てきます。
初回のCreateでは、必要なものをダウンロードするため時間がかかります。
ノンビリ待ちましょう。
左側の「Model Selection」に情報が出てきたら、元になるモデル変換が終了です。
※2月1日修正
③ Conceptsタブから学習パラメータを設定
このタブは、トレーニング画像の参照場所や、トレーニングに必要なパラーメータを設定するところです。
あまりにも多くのパラメータがあり、私の知識も全く追いつけてないので、とりあえずは動かせる状態に持っていく私なりのやり方をご紹介しておきます。
なおセオリーや、本来のやり方と一部違う部分もあり、またその辺りの検証は途中ですので、あらかじめご了承ください。
〇 Directories
絶対に設定が必要な部分です
・Dataset Directory
こちらに学習させたい絵が入ったフォルダのパスを入れます。
私は別ドライブHにあるTraningと言うフォルダに、トレーニング用のフォルダを一元管理してます。
今回は「H:\Training\Dataset directory\face」と言う場所に入れておきました。
パス? どうするの?と言う方は、エクスプローラー(ファイルを見るウィンドウね)の、上の方にある場所が書いているところで右クリック>アドレスをテキストとしてコピーを選んでそのまま、貼り付けましょう。
・Classification Dataset Directory
こちらは正規化用の画像を入れているフォルダのパスを指定します。
正規化とは、新しい概念を覚えさせる時の比較対象になるデータの事で、今回はウララの下地になる画像を選んでいます。
つまり今回の場合は、ウマ娘達の画像です。
ウマ娘の特徴である馬の耳と尻尾がちゃんと出ているうえで、好みの絵を他のモデルで出してここにまとめておいてます。
画風やキャラの構図なんかも吸収するので、多様なファイルを置いておくと良い感じに仕上がると思いました。
正規化画像は無くても良いのですが、その場合はトレーニング元のモデルを使って勝手に作りますので、思ったものと違った方向に学習することが多くなります。
お試しでまずはトレーニングしてみる位なら良いのですが、慣れてきたらこの辺りも気にして絵を選んでみましょう。
〇 Filewords
ぶっちゃけよくわからんので空のままです(こら
とりあえず、まだ私は卵の殻が付いたままのひよっこなので、あまり難しい事をせずに、何も入れずそのままでいます。
最初はここにも色々とぶち込んでましたが、凄く安定しませんでした、はい。
〇 Prompts
超重要部分です。
・Instance Prompt
私は、そのまま呼び出したいプロンプトを入れてます。
今回の場合は「Haru Urara」となります。
何か吸収されやすい3文字でうんたらかんたらとかあるんですけど、それだとプロンプトで制御するとき、イマイチ気分が乗らないという極個人的な理由と、後々の管理が大変なことになりそうなのでそうしてます。
まぁ、とりあえずちゃんと学習してプロンプトでも出てくるから良いかーと言う感じです(適当
・Class Prompt
地味に重要だったりします。
上記の「Instance Prompt」と紐づけるための語を入れます。
例えば、今回はハルウララと紐づけたいのでumamusumeを入れてます。
本来であれば一語でgirlなどが推奨されてますが、とある理由で意図的に外してます。
仮に正規化の画像が無い場合は、このプロンプトで正規化画像を勝手に作るっぽいです。
・Sample Image Prompt
上記ClassPromptで正規化画像を作る際に、恐らく使用されるのと、おまじない的に入れてます。
多分、省略しても問題ないと思います。
以上のパラメータを設定したら、上の方にある「Traning Wizard(Person)」ボタンを押します。
勝手に人物用のパラメータに調整してくれるっぽいです。
とりあえず、自分で設定する技量はまだないので、こちらで自動設定してます。
まぁ、とりあえずこれでトレーニングできてるからまずはOKという事で!(適当
④ Settingsタブからパラメータを設定
何で先にこっちを設定しないのかと言えば、Wizardを使う場合は、まずConseptsタブの「Directories」を設定しておかないと2度手間になるからです。
こちらは、既にConseptsで設定が終わっていれば、とりあえず上の「Performance Wizard(WIP)」を押すだけです。
勿論、細かいところの調整は必要になるので、こだわりたい人はそこから設定しなおしていきましょう。
〇 General
基本設定の部分が詰まってます。
特に「LORA」を使ってトレーニングしたい場合は、ここでチェックを入れましょう。
ちなみに私はまだLORAの使い方が分からないので、この記事の時点ではスルーしております。
次回の記事を書く機会があれば、触れられたらいいなぁと思ってます。
私の環境では、ここにチェックは入りません。
〇 Intervals
トレーニングの各種パラメータを設定します。
・Training Steps Per Image (Epochs)
学習元画像1枚に対して、どれくらい学習ステップを踏むか設定する場所です。
多くやればいいというものでもないので、慣れるまではWizardの提案する数値で良いと思います。
初期設定は150になることが多いのですが、後述のLearning Rateを下る場合は上げてます。
・Save Preview(s) Frequency (Epochs)
既定のタイミングでプレビュー画像を出します。
細かくチェックしたいなら初期の数値で良いのですが、その分処理に時間を取られるので、上の「Save Model Frequency (Epochs)」と同じ数値で良いと思います。
私は25で設定してます。
・Learning Rate
恐らく初期設定は「0.000002」ですが、もし時間に余裕があれば「0.000001」に落としてます。
その方が時間はかかりますが、学習の幅が広がっているように感じます。
イマイチわかって無いので、皆さんで試してみて下さい(丸投げ)
〇 Advanced
設定が必要な超重要部分です。
設定するのは以下の場所のみで、後はWizard通りです。
〇 Tuning
・Use EMA
メモリに余裕があるときはチェックを入れます。
ただ時々、これが原因でエラーが出ることがあるので、時間に余裕を持てるなら外します。
・Use 8bit Adam
・Mixed Precision fp16(注意)
・Memory Attention xformers
残念ながら上三つは必須項目です。
無いと、オーバーフローエラーが出る事があります。
Mixed Precisionは、私の環境だとbf16が優先して選ばれます。
しかし、今までトレーニングした感じだとfp16の方が動作が安定しているのでそちらで進めます。
Settingsに関してはこれだけです。
環境次第ではもっと柔軟に対応できるようになると思いますので、色々と試してみて下さいね。
⑤ トレーニング開始!(Train)
右上の「Train」ボタンを押せばトレーニングが開始されます。
クラスファイルの読み込みや、モデルの読み込みが終了し、設定が正常に完了していれば、そのままトレーニングに入れるはずです。
Cancelボタンを押せばトレーニングは中断できますので、必要なときはそこで止めましょう。
今回の設定では、約1時間半(90分)でトレーニングが完了しました。
以上、簡単ではありますが最低限のトレーニングに必要な操作でした。
Dreamboothの再現力は、かなりヤバい
以前ご紹介した「Textual Inversion」も使い方でかなりいい感じになるのですが、なんせ時間がかかるのがネックです。
それに比べると「Dreambooth」は、かかる時間が圧倒的に少ないです。
ちなみに、上記のフォルダでDatasetを26枚、Classimageを189枚読み込んだ場合ですら、1時間半ぐらいです。
これを「Textual Inversion」でやると一日かかります。
また、使用されているVRAMも10.6Gとかなり微妙なラインから始まるため、12Gの3060でないと厳しいと思いました。
私の設定では枚数を少なくしないと8Gをギリギリ超えますので、場合によってはLORAを使った方法や、数値の最適化が必要になりそうです。
とりあえず現時点においては、やはり12G積んでいる3060ちゃんで良かったようです。
さて、ではそんな感じで軽く流してトレーニングしたモデルはどんな感じになったでしょうか?
早速できたばかりのモデルで出力して見ます。
使用したプロンプトは以下の通りです。
〇 Prompt
1Girl, best quality, (((masterpiece))), (((Haru Urara))), little Haru Urara, junior high school students, blue_sky, blurry, blurry_background, blurry_foreground, branch, cherry_blossoms, day, depth_of_field, falling_petals, graduation, hanami, holding, holding_instrument, looking_at_viewer, motion_blur, outdoors, petals, pink_flower, plectrum, rose_petals, solo, spring_\(season\), tree, wind
〇 Negativ Prompt
lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry
ウララ? と言う感じでちょっと思っていたより硬いというか雑な感じになります。
私のやり方がまずいせいもあるのでしょうが、どうもこれがDreamboothの特徴なのかなと。
ただ、再現率は割と高く、サクッとトレーニングした割には得られるものが大きいと私は感じてます。
しかし、絵柄的に微妙なのも否めません。
と言いますのも、全く同じプロンプトで、トレーニング前に出力したものがこちらになります。
おわかりいただけただろうか?(某番組風
実はトレーニングすると、そのモデルは必ずと言っていいほど画風や構図が劣化する傾向にあります。
ですから、最初私も色々とやってみて、そのあまりの差に絶望しました。
まぁ、確かにモデルに短時間で強烈に学習させるとその弊害も大きいのだろうなぁと言うのは、何となく納得なのです。
ですが、巷を見れば皆様、とても綺麗に好きなキャラたちを描かせています。
私のやり方がまずいのを差し引いても、やり方が何かあるはずです……多分。
今まで軽く嗜んだ程度の私でも、他の所でも言われております通り、以下の事が重要だと感じました。
・学習元のデータは数より質が大事
この質と言うのが曲者ではありますが、具体的には次の事になります。
① 解像度が高い画像
② キャラの特徴をしっかりと捉えてる画像
③ 腕や他の物が顔の近くにないもの
例えば、今回のウララの学習元データのうち、トレーニングさせてみて以下の物はあまりよくないと感じました。
こちらは解像度不足です。
実際にこうして表示してみるとわかるのですが、ガタガタですね。
この位まで鮮明じゃないと、学習した時に崩れ気味になるようです。
なので、この辺りを意識して学習しなおすと質が上がります。
またこちらの画像は、解像度は問題ないのですが……
水の中だったため、どうやらウララ=水と言う属性が勝手に読み取られたらしく、生成時に水辺の景色が混じるようになりました。
そうか、そういう学習の仕方をしたのかー、なるほどねーと言う感じです。
なのでそういう極端な構図の絵も外した方が良さそうですね!
・学習先のデータ(モデル)との相性も考える
実は表現の仕方によっては、モデルによって得手不得手が存在します。
また学習の仕方と言う意味でも、ある意味モデル個々に癖の様なものがあります。
私はアニメ調の絵を好んでいるので今は「Elysium Anime」系のモデルを好んで使っております。
ですが、もっと違った絵柄が好みの方もいらっしゃるでしょう。
なので、この辺りは実際に自分で様々なモデルを触ってみて、感触として実感していく他ないと思います。
または自分の好みの絵柄を出すため、日々、研鑽されておられる方もいらっしゃるので、そのような術師様を追っていくのも良いかと思いますよ。
と言う感じで、以上の事を踏まえて、改めて学習し直しました。
なお、モデルは「Elysium_Kuro_Anime_V1」に差し替えました。
枚数は半分ほどの13枚です。
学習元の枚数が減ったため、トレーニング時間は1時間ほどになりました。
それで完成したモデルを使用し、同じプロンプトで出した絵がこちら。
細かいところで気になる部分はありますけど、雰囲気はとても私好みですね!
とりあえず、こういう感じで煮詰めていったり、更に好みの方向性を探していくことになります。
それでもうまくいかない事もある そんな時はMergeしましょう
とまぁ、トレーニングをし始めると、膨大な時間と知識が溶けていきます。試行錯誤しつつ、多くのモデルが積みあがる事でしょう。
そんな中にはトレーニングを長時間行っても、全く納得がいかない内容になるもの多いです。
また惜しいんだけど満足できないというものだったり、お気に入りなんだけどモデルの革新にすぐに置いていかれてしまったモデルちゃんも出来る事でしょう。
そんなあまたのモデルたちはゴミ箱に入るだけの存在なのか?
実はそうでもなかったりします。
特に強烈に焼き付けすぎて、帰って崩壊し始めたようなモデルは実は可能性を秘めています。
その可能性を引き出してくれるのはマージ(Merge)と言う手段です。
これはモデル同士を混ぜ合わせて新しいモデルを作る手法です。
実はトレーニングはあくまで自分のこだわり部分の中でも足りない場所を補う方法で、実際の作業はほぼマージに費やされることになると思います。
では、実際の方法をご紹介です。
と言っても、この機能は元から「Stable Diffusion web UI(AUTOMATIC1111版)」に内包されているので簡単です。
① 「Checkpoint Merger」タブを選択
② Primary model(A)にベースとなるモデルをセット
③ Secondaty model(B)付け加えるモデルをセット
④ 新しくできるモデルの名前を指定したい場合はCustom Name(Optional)に入力
⑤ Multiplier(M) -set to 0 to get model A の数値をセット
※0.3にした場合は、モデルAが70% モデルBが30%でマージされる
⑥ Interpolation Method 初期設定 Weighted sum のまましか試してないです
これだけなので、割と簡単に使えます。
しかし、その影響は割とシャレになってません。
では、実際に先ほどちょっと画像が多すぎて微妙な感じとなったモデルを「Elysium_Kuro_Anime_V1」へとマージしてみました。
ちなみに「Multiplier(M) -set to 0 to get model A」の数値は0.85で設定してます。
どうでしょうか?
雰囲気はかなり変わりましたよね?
吸収する側のモデルいかんよって、割と化けますので色々と試すことになると思います。
そして多分、最終的には皆様、ここに行きつくんでしょうね。
夜な夜な、トレーニングしたモデルと既存のモデルをマージして、その最適なパターンを探るのです。
それはもうどこかのシェフや目利きのワイン通の様に、混ぜ合わせて味わい、違う、これじゃない、となるのです。
もう完全に沼です、沼。
そういう沼にハマりこんだ皆様が作られたモデルが、惜しげも無く公開されているのが今の現状です。
以上、現段階に至るまでの私の忘備録でした。
最終的に流れ着く場所 ウララとは、なんだ?(哲学
さて、皆様の環境でも無事、トレーニングが出来るようになりましたらおめでとうございます。もしこの記事が少しでもお役に立てたなら嬉しいです。
しかし、この先の道は絵師様の皆様が通った修羅の道の再演であると私は感じました。
なので、その辺りの話もしておきたいと思います。
私も手の空いた時に色々なウララを出力しようとして、切磋琢磨しております。
どうもDreamBoothの場合は、かなり強烈に焼き付けるので、基本的に衣装ごと学習します。
なので学習画像の状態や、プロンプトによっては、そのまま変えられない状態になる事も良くあるのです。
これは私のやり方がまずいからだと思うので、これ以上のウララを目指すなら更なる研鑽が必要になってくるでしょう。
で、そんな風に色々と工夫しながらトライ&エラーを繰り返しつつ、多分、先人たちの10周遅れ位のところをぐるぐる回っていて、ふと気づいてしまうのです。
私はなんでこんな事をやっているんだ?(真顔
そして、何千枚というウララと思しき絵を出力して、それをずっと見ていると、だんだんどれが正解なのか分からなくなります。
最初はそれっぽいものが出ていただけで満足していたのですが、
回数をこなしていくと、耳の太さだったり、眼の中の桜の枚数だったり、
最終的には、絵柄とか線の太さとか、笑顔の角度とか、それこそどうでも良いところが気になるようになります。
くっ!? 確かにこのウララも可愛いが、もっと可愛いウララが出来るはずだ!?
もっと違った画風でウララが表現できるはずだ!?
そうして、一周回りきると「ハルウララとは、一体なんだ?」となる訳です。
そして、私はこう思いました。
もしかしたら、これが絵師さんの抱く山の高さなのか?と。
これはとても先が見えません。
私は技術力という所をAIでごまかして楽しんでいますが、それでもなお、この闇の深さ。
うーむ、やはり絵師様というのは凄い存在だ……と、改めて恐れすら抱くようになりました。
絵師さんはやはり凄い。
そして同時に、やっぱりAIは上手く使えば、有益であるというのも身をもって体験しております。
皆さんも是非、内に秘めた魂を爆発させる道具の一つとして、活用して見て下さい。
総評 やはり難易度(と更新頻度)が高いので今はお勧めはしない
前の記事でも書きましたが私は割と時間がある方なのと、試行錯誤は好きな研究者肌なので良いのですが、これを一般の、しかも初心者の皆様がやるのは、現時点ではあまりお勧めできないと思いました。これも前の記事からの引用です。
① トレーニングさせる環境を用意するのが大変
私のようなPC主体に活動されている方は、既にハイスペックの物をお持ちの方もいらっしゃるでしょうが、大抵の方はそんなハイスペックなPCは無いと思うんですよね。
特に絵描きの方は、低スペックやミドルスペックで満足しちゃうようですし、ゲーマーでもない限り、そもそもこのスペック群のPCは持ってませんよね。
なので、よほどのお金持ちや興味のある方以外は、スタートラインにすら立てないのが現状です。
ちなみに、参考までにですが、私のPCを市販でゼロから買うとなるとこんな感じ。
メモリとストレージがやや不安があるので、そこを強化すれば3年は戦えるPCかと思います。
勿論、私の使っている環境とほぼ同じなので、問題なくAIちゃんもトレーニングできるはずです。
ただ、技術が進んで使用メモリ量を削減できるようになれば、もう少しグラボの選択肢は広がると思います。
それが数週間先の事なのか、数年先の事なのかはわかりません。
なのでご自分の財政状況とその他諸々踏まえた上でご検討下さいね。
② 仕組みや使い方を理解するのが大変
基本事項を理解するだけでもかなり大変な上に、最近の更新頻度がとんでもなく高いせいで、そのハードルが更に爆上がり状態です。
この記事がここまで遅れてしまったのも、もとはと言えばバグラッシュのせいなので、その辺りを受け流せるか、どん欲にネットの荒波を乗り越えて知識を得ていける方でないと、この流れを追うのすら大変です。
まぁ、数年もすればこの勢いも落ち着いてくるとは思うので、それまで待つというのも手ですが、その時には先に逝った人たちに追いつくのは厳しいと思います。
本当に技術の転換点であるので、もし興味のある方は今のうちにある程度触っておくほうが、良いとは思います。
そんな感じで、私のように楽しみたい方は、おススメできますが茨の道であることはお覚悟ください。
その上で自分の絵を作り出してみたいなと思っている紳士淑女の皆様の力に少しでもなれたらなら幸いです。
けど、重ねて何度も申し上げますが、人の絵は勝手に使っちゃダメですからね?
※4月18日追記
次の記事を書きました。ControlNetを含む、画像編集についてです。
また、今のトレーニング環境が変わっておりますので、そちらの記事も更新しました
宜しければどうぞです。
今回の記事は以上になります。
お読みいただき、ありがとうございました。
コメント
コメント一覧 (2)
沼の底までさんへ
おっと、同志の方、こんばんはー
そして初めまして
このような辺境へようこそです
AI関係はとても難しい立ち位置なので、ちょっと扱いが難しいですが、何か参考になったなら嬉しいです
ちょっとこの記事は古くて今はLoRAが主軸なのであれですが、基本は変わらないので、何か使えるところがあったら参考にしてやってください
私はウマ娘のハルウララちゃんで楽しんでますが、沼の底までさんの仰る通りで、ゴールがずれていきますよね
私は今はちょっと休憩中ですが、余裕が出てきたらまた可愛いウララを求めて探求する日々が始まるかもしれません
兎に角、進歩の早い業界なので、時々、情報をとってアップデートして行きたいと思います
あと、これは書くまでも無い事だと思っていたので記事では書いてませんでしたが、ウマ娘の規約を破るような絵を出すのは厳禁なので気を付けていきたいものですね
沼の底までさんも、節度のある範囲で、あまり気負わずほどほどに楽しみましょう
ではではー