安定した拡散: 独自のデータセットを使用して LoRA モデルを微調整する
序文
- 私のレベルが限られているため、間違いや漏れがあることは避けられませんが、批判と修正をお願いします。
- さらにエキサイティングなコンテンツについては、クリックしてYOLOシリーズのコラム、自然言語処理の
コラム、または私の個人ホームページに入ってご覧ください。- DETR に基づく顔のなりすまし検出
- YOLOv7 は独自のデータセットをトレーニングします (マスク検出)
- YOLOv8 は独自のデータセット (サッカー検出) をトレーニングします
- YOLOv5: TensorRT は YOLOv5 モデル推論を加速します
- YOLOv5:イオウ、ジオウ、ディオウ、シオウ、エイオウ
- Jetson Nano で遊ぶ (5): TensorRT は YOLOv5 ターゲット検出を加速します
- YOLOv5: SE、CBAM、CoordAtt、ECA アテンション メカニズムを追加
- YOLOv5: yolov5s.yaml 構成ファイルの解釈、小さなターゲット検出レイヤーの追加
- Python は、COCO 形式のインスタンス セグメンテーション データセットを YOLO 形式のインスタンス セグメンテーション データセットに変換します。
- YOLOv5: バージョン 7.0 を使用して、独自のインスタンス セグメンテーション モデル (車両、歩行者、道路標識、車線などのインスタンス セグメンテーション) をトレーニングします。
- Kaggle GPU リソースを使用して、Stable Diffusion オープンソース プロジェクトを無料で体験してください
前提条件
- Python 3.10.6をインストールします: https://www.python.org/downloads/release/python-3106/
- gitをインストールします: https://git-scm.com/download/win
- インストール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 プロジェクトをダウンロードする
- 公式ソースアドレス: https://github.com/bmaltais/kohya_ss.git
ダウンロードして解凍すると、プロジェクトのディレクトリは下図のようになります。
kohya_ss プロジェクトをインストールする
-
ターミナルを開き、目的のインストール ディレクトリに移動します。ディレクトリを
入力してください:kohya_ss
cd kohya_ss
-
次のコマンドを実行してセットアップ スクリプトを実行します。
.\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 TensorBoard
URL を開きhttp://127.0.0.1:6006
、表示します。
トレーニングされた LoRA モデルをテストする
モデルをテストするには、stable-diffusion-webui プロジェクトを使用する必要があります。具体的なインストール方法については、Stable Diffusion AI オープンソース プロジェクトのウィンドウの展開と使用を参照してください。
-
kohya_ss/train/Freeman/model ディレクトリ内の
Freeman_bs2_epoch50_fp16.safetensors
モデル ファイルを、stable-diffusion-webui/models/Lora ディレクトリと、stable-diffusion-webui プロジェクトのsteady-diffusion-webui/models/Stable-diffusion ディレクトリにコピーします。
-
Stable-diffusion-webui ディレクトリで
webui-user.bat
スクリプトを使用し、次のコマンドを使用してターミナルで実行します。
webui-user.bat
http://127.0.0.1:7861/
正常に実行されると、次の図に示すように、ブラウザの input で開くことができます。
- 独自のトレーニング済み 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
- 私のレベルが限られているため、間違いや漏れがあることは避けられませんが、批判と修正をお願いします。
- さらにエキサイティングなコンテンツについては、クリックしてYOLOシリーズのコラム、自然言語処理の
コラム、または私の個人ホームページに入ってご覧ください。- DETR に基づく顔のなりすまし検出
- YOLOv7 は独自のデータセットをトレーニングします (マスク検出)
- YOLOv8 は独自のデータセット (サッカー検出) をトレーニングします
- YOLOv5: TensorRT は YOLOv5 モデル推論を加速します
- YOLOv5:イオウ、ジオウ、ディオウ、シオウ、エイオウ
- Jetson Nano で遊ぶ (5): TensorRT は YOLOv5 ターゲット検出を加速します
- YOLOv5: SE、CBAM、CoordAtt、ECA アテンション メカニズムを追加
- YOLOv5: yolov5s.yaml 構成ファイルの解釈、小さなターゲット検出レイヤーの追加
- Python は、COCO 形式のインスタンス セグメンテーション データセットを YOLO 形式のインスタンス セグメンテーション データセットに変換します。
- YOLOv5: バージョン 7.0 を使用して、独自のインスタンス セグメンテーション モデル (車両、歩行者、道路標識、車線などのインスタンス セグメンテーション) をトレーニングします。
- Kaggle GPU リソースを使用して、Stable Diffusion オープンソース プロジェクトを無料で体験してください