見出し画像

Diffusion Model(拡散モデル)の追加学習をColabでやる方法_ver2

こんにちは、kizamimiです。今回はDream BoothやHyper Networkではない純粋なDiffusion Modelの追加学習をColabで実行できるプログラムを大幅改修したのでその記録と共有になります。可能な限り、プログラムを直接触らなくても動かせるように作りました。ver2ではプレミアムGPUでなくても動かせるようになりました。つまりgoogle colabで無料で使用可能なGPUでも動きます。リンクはこちらから↓↓↓

こちらはコードの作成にかかり大きな助けになった記事です。追加学習部分の実装はKohya S.さんのスクリプトとなっています。

Diffusion Modelの追加学習を始める

前提知識

  • google colabの使い方が分かる

  • google driveの使い方が分かる


追加学習までの流れ

  1. 画像データセットを用意する

  2. データセットのキャプションを作成する

  3. 追加学習する

  4. 学習モデルを使って生成


Part0. データセットを用意する

まず、画像を沢山用意します。v2ではサイズ条件を緩和し、縦横500px程度の画像を用意してください。(私の場合は少なくても200枚程度用意しました)
次に、"Part0 データセットフォルダの作成"にてPart0-1でgoogle driveと接続し、Part0-2を実行してください。Part0-2実行後、指定されたgoogle driveの場所に用意したデータセットを入れてください。

colab上のPart0の画面
Part0の実行後の表示の例

上の図だとMyDrive/My_Finetuing/1/datasetにデータセットを入れることになります。データセットのアップロードには少し時間がかかると思うので待ちます。

今回の例でデータを入れる場所は青く光るdatasetのフォルダ


Part1. 用意したデータセットを使って追加学習する

追加学習ver2の画面

最初にPart1-1でgoogle colabと接続した後、Part1-2で追加学習を行うための初期設定を行います。要求される入力項目は以下になります。

pretrained_model_tag:使用する学習済みモデル

max_train_steps:学習を行うステップ数(バッチサイズ分の学習を行う回数を入力)

batch_size:バッチサイズ(colabの無料枠で使用できるGPUのT4だと4で動作することを確認しました)

learning_rate:学習率(若干専門的なパラメータです)

次にPart1-3とPart1-4を順に実行し、学習したモデルが今回だとMyDrive/My_Finetuing/1/result/でlast.ckptファイルとして出力されます。

学習した後は

ckptファイルはWebUIで使用できるためautomatic1111さんのWebUIが動くPCを持っている方はそちらをお勧めします。
WebUIを利用できない方のため、colabでdiffusersを使用して画像生成する機能も用意しました。Part2に進みます。


Part2. ckptファイルをdiffusersに変換

Part3での画像生成を実行するため、ckptファイルをdiffusersに変換していきましょう。Part2-1から順に実行していきます。

colab上のPart2の画面

またcolabの説明にもあるように、実行一回目RESTART RUNTIMEのボタンが出るのでクリックしてください。再起動されます。

再起動の要求がされる場合クリックして再起動する


Part3. 画像生成

diffusers用の学習したモデルで実際の生成はPart3を実行することで行えます。

Part3は画像生成を行う推論用パート

最初にPart3-1とPart3-2の実行後、、Part3-3画像生成を行います。実行で生成画像を得ることができます。

学習済みモデルで画像を生成する

最後に

今回は前回に引き続き、Dream BoothやHyper Networkなどの軽量追加手法でない純粋な追加学習を行いました。Discordサーバーでフィードバックをいただきながら改善したver2の紹介になりました。最後に私が運営のお手伝いしている Discord サーバーを載せます。このサーバーでは Novel AIやniji・journeyなど を使用した作品共有、研究やwaifu diffusionなどの追加学習の情報共有など行っています。

こちらは今回作成したcolabのフィードバックをいただいたときお世話になったサーバーです。参加してお絵描きAIの世界をのぞいてみてはいかがでしょうか。(kizamimi)


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