安定した拡散: 独自のデータセットを使用して LoRA モデルを微調整する

ここに画像の説明を挿入

序文

前提条件

  1. Python 3.10.6をインストールします: https://www.python.org/downloads/release/python-3106/
  2. gitをインストールします: https://git-scm.com/download/win
  3. インストールVisual Studio 2015、2017、2019、2022 再頒布可能ファイル:https://aka.ms/vs/17/release/vc_redist.x64.exe

関連紹介

  • Python はクロスプラットフォームのコンピューター プログラミング言語です。これは、解釈可能性、コンパイル性、対話性、およびオブジェクト指向を組み合わせた高レベルのスクリプト言語です。元々は自動化スクリプト (シェル) を記述するために設計されましたが、バージョンが継続的に更新され、新しい言語機能が追加されるにつれて、独立した大規模プロジェクトの開発に使用されることが増えています。
  • PyTorch はディープ ラーニング フレームワークであり、多くのネットワークおよびディープ ラーニング関連のツールをカプセル化しており、それらを 1 つずつ作成するのではなく、呼び出すことができます。CPU版とGPU版に分かれており、その他のフレームワークとしてはTensorFlowやCaffeなどがあります。PyTorch は、Torch に基づいて Facebook Artificial Intelligence Research Institute (FAIR) によって開始され、次の 2 つの高度な機能を提供する Python ベースの持続可能なコンピューティング パッケージです: 1. 強力な GPU アクセラレーション (NumPy など) を備えた Tensor コンピューティング、2. 自動微分ディープニューラルネットワークを構築する際の仕組み。
  • AIGC (Artificial Intelligence Generated Content) は、人工知能システムによって作成または生成されたコンテンツを指します。これには、機械学習、自然言語処理、コンピューター ビジョンなどの人工知能技術を使用して、テキスト、画像、ビデオ、音楽などを含むさまざまな形式のコンテンツを生成することが含まれます。
  • 安定拡散は、確率モデリングと画像処理で使用される手法です。これは拡散プロセスの理論に基づいており、重要な画像構造と詳細を維持しながら、画像を滑らかにしてノイズを除去することを目的としています。
  • 安定拡散法は、画像に非線形拡散演算子を適用することにより、スムージングとノイズ除去を実現します。従来の線形拡散法とは異なり、安定拡散では非線形項が導入され、画像のエッジと詳細がより良く保存されます。
  • 安定した拡散の中心的な考え方は、拡散プロセス中に勾配情報を考慮し、勾配のサイズと方向に応じて拡散速度を調整することです。これにより、画像を滑らかにしながら、エッジのぼやけやディテールの損失を効果的に抑制します。
  • 安定した拡散方法は、画像のノイズ除去、エッジの保存、テクスチャの強調などに幅広い用途があります。これは、画像構造の平滑化と保存のバランスを取る方法を提供し、コンピュータ ビジョン、画像処理、パターン認識などの分野に適用できます。
  • LoRA モデルの正式名は「Low-Rank Adaptation of Large Language Models」です。これは、少量のデータのみでトレーニングできるモデルである Stable-Diffusion のプラグインとして理解できます。
  • LoRA モデルは大規模な言語モデルの微調整に使用でき、微調整のコストを削減するために使用できます。
  • LoRA モデルを大規模モデルと組み合わせて使用​​すると、大規模モデルによって生成される結果に干渉することができます。
  • LoRAで採用されている方法は、元のモデルに新しいデータ処理層を挿入することで、元のモデルのパラメータの変更を回避し、モデル全体をコピーする状況を回避すると同時に、挿入されたデータ処理層のパラメータも最適化します。レイヤー、そして最後に非常に軽量なモデル調整方法が実現されます。
  • LoRA は、事前トレーニングされたモデルの重みを凍結し、各 Transformer ブロックにトレーニング可能な層 (ランク分解行列) を注入することを提案しています。LoRA は、安定拡散のクロスアテンション レイヤーでも使用して、テキストから画像を生成する効果を向上させることができます。
  • LoRA モデルのサイズは比較的小さく、一般的なモデルは 144MB 程度ですが、使用する場合は prund 版の Stable Diffusion 1.5 モデルと組み合わせて使用​​する必要があります。
    ここに画像の説明を挿入

トレーニングされた LoRA モデルの微調整

kohya_ss プロジェクトをダウンロードする

ここに画像の説明を挿入ダウンロードして解凍すると、プロジェクトのディレクトリは下図のようになります。
ここに画像の説明を挿入

kohya_ss プロジェクトをインストールする

  1. ターミナルを開き、目的のインストール ディレクトリに移動します。ディレクトリを
    入力してください:kohya_ss

    cd kohya_ss
    
  2. 次のコマンドを実行してセットアップ スクリプトを実行します。

    .\setup.bat
    

エラーが報告されなければ、インストールは成功です。

kohya_ss プロジェクトを実行する

Windows では、gui.bat スクリプトを使用し、次のコマンドを使用してターミナルで実行します。

gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser --share

http://127.0.0.1:7860/正常に実行されると、次の図に示すように、ブラウザの input で開くことができます。
ここに画像の説明を挿入

注: 詳細なチュートリアルについては、このプロジェクトのREADME.mdファイルを参照してください。

データセットの準備

kohya_ss プロジェクトの下に train ディレクトリを作成します。具体的な内容は次のとおりです。
ここに画像の説明を挿入

  • image : 画像はここに配置されます。
  • ログ: トレーニング記録
  • モデル: モデルの保存パス
  • 画像ディレクトリにはサブディレクトリもあり、例えばこの記事は 100_Freeman ですが、100 はトレーニングの歩数や効果に直接影響する 100 歩を意味し、Freeman は写真に写っている人の名前を意味します。
  • ディレクトリを作成し、00_Freeman ディレクトリに処理済みの画像を配置し、キーワード生成の準備をします。

キーワードを生成する

  • 具体的な手順: [ユーティリティ] -> [キャプション] -> [BLIP キャプション]

ここに画像の説明を挿入
生成が成功すると、次の図に示すように TXT ファイルが表示されます。
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

モデルパラメータの設定

事前トレーニング済みモデルの設定

ここに画像の説明を挿入

フォルダ設定

ここに画像の説明を挿入

トレーニングパラメータの設定

ここに画像の説明を挿入

LoRA モデルのトレーニングを開始する

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
トレーニングが完了すると、モデルフォルダーに.safetensorsモデルファイルが生成されます
ここに画像の説明を挿入

TensorBoard ビューのトレーニング ステータス

ページ上でクリックしてStart TensorBoardURL を開きhttp://127.0.0.1:6006、表示します。
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

トレーニングされた LoRA モデルをテストする

モデルをテストするには、stable-diffusion-webui プロジェクトを使用する必要があります。具体的なインストール方法については、Stable Diffusion AI オープンソース プロジェクトのウィンドウの展開と使用を参照してください。

  1. kohya_ss/train/Freeman/model ディレクトリ内のFreeman_bs2_epoch50_fp16.safetensorsモデル ファイルを、stable-diffusion-webui/models/Lora ディレクトリと、stable-diffusion-webui プロジェクトのsteady-diffusion-webui/models/Stable-diffusion ディレクトリにコピーします。
    ここに画像の説明を挿入
    ここに画像の説明を挿入

  2. Stable-diffusion-webui ディレクトリでwebui-user.batスクリプトを使用し、次のコマンドを使用してターミナルで実行します。

webui-user.bat

ここに画像の説明を挿入

http://127.0.0.1:7861/正常に実行されると、次の図に示すように、ブラウザの input で開くことができます。
ここに画像の説明を挿入

  1. 独自のトレーニング済み LoRA モデルを選択してください
    ここに画像の説明を挿入
    ここに画像の説明を挿入
    ここに画像の説明を挿入

テキストから画像を生成(txt2img)

 <lora:Freeman_bs2_epoch50_fp16:1>Freeman a beautiful woman with glasses and a white dress,modelshoot style,beautiful light,photo realistic game cg

ここに画像の説明を挿入

参考

[1] https://github.com/bmaltais/kohya_ss.git
[2] https://github.com/AUTOMATIC1111/stable-diffusion-webui
[3] https://github.com/camenduru/stable-diffusion -webui
[4] https://www.kaggle.com/code/camenduru/stable-diffusion-webui-kaggle
[5] https://blog.csdn.net/wpgdream/article/details/130607099
[6] https ://zhuanlan.zhihu.com/p/620583928

おすすめ

転載: blog.csdn.net/FriendshipTang/article/details/132395013