InstructPix2Pix を使用して安定した拡散のための命令を微調整する

この記事では主に、命令微調整メソッドを使用して安定拡散を命令 PS イメージに従うように教える方法について説明します。このようにして、私たちの安定拡散は人間の音声を理解し、要件に従って入力画像に対して次のような対応する操作を実行できます。入力自然画像の漫画化

5f6272668a8147713cbce358f58063f0.png
図 1 : Stable Diffusion の命令微調整機能を調査しました。ここでは、さまざまな画像とキューを使用して、命令用に微調整された安定拡散モデルをテストします。微調整されたモデルは、入力内の画像操作命令を理解できるようです。(最適な視覚化を実現するには、ズームインしてカラーで表示することをお勧めします)

InstructPix2Pix: 画像編集指示に従う方法の学習という記事で入力画像を編集するためのユーザー指示に従うように安定拡散を教えるというこのアイデアが最初に提案されました。この記事では、InstructPix2Pix のトレーニング戦略を拡張して、画像変換 (漫画など)、低レベルの画像処理 (画像のレイン除去など) など、より具体的な指示タスクを理解して実行できるようにする方法について説明します。等 この記事の残りの部分は次のように構成されています。

  • 命令チューニングの概要

  • この作品のインスピレーション源

  • データセットの準備

  • トレーニング実験とその結果

  • 潜在的なアプリケーションとその制限

  • 未解決の質問

コード、事前トレーニングされたモデル、データセットはここで見つけることができます。

紹介と動機

命令の微調整は、言語モデルに命令に従ってタスクを完了する能力を教えるために使用される教師ありトレーニング方法です。この方法は、Fine-tuned Language Models Are Zero-Shot Learners (FLAN) の記事で Google によって最初に提案されました。最近、誰もがよく知っている Alpaca と FLAN V2 の取り組みにより、命令の微調整が多くのタスクに役立つことが完全に証明されました。

以下の図は、命令の微調整の一形式を示しています。FLAN V2 の論文では、以下の図に示すように、著者はサンプル セット上で事前トレーニングされた言語モデル (T5 など) を微調整しました。

892691c38616046adcb3ae74c7eee125.png
図 2 : FLAN V2 の概略図 (FLAN V2 の論文から引用)。

このアプローチを使用すると、さまざまなタスクをカバーするトレーニング セットを作成し、このデータセットを微調整できるため、マルチタスク シナリオで命令の微調整を使用できます。

入力 ラベル タスク
次の文の感情を予測します
。「その映画は
とても素晴らしかったです。
一瞬たりとも目をそらすことができませんでした
。」
ポジティブ 感情分析 /
シーケンス分類
次の質問に答えてください

窒素の沸点は何度ですか
?
320.4F 質疑応答
次の
英語の文をドイツ語に翻訳してください:「私は
猫を飼っています。」
私は猫を飼っています。 機械翻訳



この考えに基づいて、FLAN V2 の作成者は、数千のタスクを含む混合データセットの命令を微調整して、目に見えないタスクのゼロショット汎化を達成しました。

c148b594388758fb3889bd3d91b606b8.png
図 3 : トレーニングとテスト用の FLAN V2 混合タスク セット (FLAN V2 の論文からの画像)。

私たちの仕事の背後にあるインスピレーションは、一部は FLAN から、一部は InstructPix2Pix から来ました。要件に従って入力画像を処理するための特定の命令を使用して安定拡散をヒントできるかどうかを検討したいと思います。

事前トレーニングされた InstructPix2Pix モデルは、一般的な命令の理解と実行には優れていますが、画像操作などの特定の命令は苦手な場合があります。

2f0425d3d7890eebff05f0cdb4b51178.jpeg
図 4 : 同じ入力画像 (左の列) に対して、私たちのモデル (右の列) は、事前トレーニング済みの InstructPix2Pix モデル (中央の列) よりも「トゥーン化」命令をより忠実に実行していることがわかります。結果の最初の行は興味深いもので、ここでは、事前トレーニングされた InstructPix2Pix モデルが明らかに失敗しています。最適に視覚化するには、ズームインしてカラーで表示することをお勧めします。

しかし、InstructPix2Pix での経験や観察を活用して、より良い成果を上げることができます。

さらに、漫画化、画像のノイズ除去、画像レインの除去などのタスク用の公開データ セットは比較的簡単に入手できるため、それらに基づいて指示プロンプト データ セットを簡単に構築できます (このアプローチは FLAN V2 からインスピレーションを受けています)。このようにして、FLAN V2で提案された命令テンプレートの考え方を本作に移行することができました。

データセットの準備

漫画化

最初に、InstructPix2Pix を試してみましたが、入力画像を漫画化するよう促されましたが、期待どおりに機能しませんでした。推論ハイパーパラメータ (画像誘導スケールや推論ステップ数など) のさまざまな組み合わせを試しましたが、結果は常に満足のいくものではありませんでした。このため、私たちはこの問題に対処するさまざまな方法を探し始めました。

前のセクションで述べたように、次の 2 つの作業の利点を組み合わせたいと考えています。

(1) InstructPix2Pix のトレーニング方法、
(2)指示プロンプト データセット テンプレートを作成するための FLAN の超柔軟な方法。

まず、漫画化タスク用のコマンド プロンプト データセットを作成する必要があります。図 5 は、データセットを作成するためのパイプラインを示しています。

8675e61a7d5bcc5f4bb265ac834d6985.png
図 5 : このペーパーで漫画化されたトレーニング データセットの作成に使用されたパイプライン (最高の視覚効果を得るには、ズームインしてカラーで表示することをお勧めします)。

その主な手順は次のとおりです。

  1. ChatGPT に「画像を漫画化する」コマンドの同義語を 50 個生成するように依頼します。

  2. 次に、事前トレーニングされた Whitebox CartoonGAN モデルを利用して、Imagenette データセットのランダムなサブセット (5000 サンプル) 内の各画像に対応する漫画化された画像を生成します。これらの漫画化された画像は、トレーニング中にラベルとして使用されます。したがって、ある意味、これは実際には、Whitebox CartoonGAN モデルによって学習されたスキルを私たちのモデルに転送することに相当します。

  3. 次に、トレーニング サンプルを次の形式で整理します。

380ca52c4d17a8ec5c3a06862176d5f6.png
図 6 : 漫画化されたデータセットのサンプル形式 (最適な視覚化には拡大とカラー表示をお勧めします)。

元の記事で生成した漫画化されたデータセットを見つけることができます。データセットの準備方法の詳細については、元の論文を参照してください。このデータセットを使用して InstructPix2Pix モデルを微調整し、かなり良い結果を達成しました (詳細については、「トレーニング実験と結果」セクションを参照してください)。

次に、この方法を、画像のレイン除去、画像のノイズ除去、画像のぼけ除去などの低レベルの画像処理タスクに一般化できるかどうかを引き続き確認します。

低レベルの画像処理

MAXIM の論文では、主に一般的な低レベルの画像処理タスクに焦点を当てています。特に、雨の除去、ノイズ除去、低照度画像の強調、ぼけ除去などのタスクに関する実験を行っています。

次のように、タスクごとに次のデータセットからさまざまな数のサンプルを取得し、別のデータセットを構築して、それにヒントを追加しました。タスクの ヒント データセットの サンプリング数

タスク ヒント データセット 採取されたサンプルの数
ブレを除去する 「ぼやけた画像のぼやけを取り除く」 レッズ (train_blur
train_sharp)
1200
雨除け 「イメージを壊す」 雨13k 686
ノイズ除去 「ノイズの多い画像のノイズを除去する」 シド 8
低照度の画像補正 「低照度の画像を強調する」 23




上の表のデータセットは通常、输入输出对のため、グラウンド トゥルースがないことを心配する必要はありません。最終的なデータセットは元の論文から見つけることができます。最終的なデータセットは次のようになります。

3ed097c5e38645bbef16152e32689557.png
図 7 : 生成された基礎となる画像処理データセットのサンプル (最適な視覚化のために拡大および色付けすることを推奨)。

一般に、このデータセットの構成は FLAN から派生しています。FLAN では、さまざまなタスクを混合したデータ セットを作成しました。このアプローチは、複数のタスクで単一のモデルを同時にトレーニングするのに役立ち、さまざまなタスクを含むシナリオに適切に適用できるようになります。これは、低レベルの画像処理の世界で通常行われることとはまったく異なります。MAXIM のような研究では、基礎となるさまざまな画像処理タスクをモデル化できる単一モデル アーキテクチャが使用されますが、これらのモデルのトレーニングは各データセットに対して独立して実行されます。つまり、「単一アーキテクチャ、複数モデル」ですが、私たちのアプローチは「単一のアーキテクチャ、単一のモデル」。

トレーニング実験とその結果

これがトレーニング実験のスクリプトです。トレーニング ログ (検証セットとトレーニング ハイパーパラメータを含む) も次のWeight and Biases場所に。

  • 漫画化(ハイパーパラメータ)

  • 低レベルの画像処理(スーパーパラメータ)

トレーニングの際には、次の 2 つのアプローチを検討しました。

  1. InstructPix2Pix のチェックポイントを微調整する

  2. InstructPix2Pix トレーニング メソッドを使用して安定拡散のチェックポイントを微調整する

実験を通じて、最初の方法の方がデータセットからの学習が速く、最終的にトレーニングされたモデルの品質も優れていることがわかりました。

トレーニングとハイパーパラメータの詳細については、コードと対応するWeights and Biasesページ。

漫画の結果

命令によって微調整された漫画化されたモデルのパフォーマンスをテストするために、次の比較を実行します。

7ecd9302f75ef1eaed2b674f8c3aad60.png
図 8 : 命令で微調整された Cartoonization モデルの結果 (最後の列) を、 CartoonGAN モデル (2 番目の列) および事前トレーニング済み InstructPix2Pix モデル (3 番目の列) の結果と比較します。明らかに、命令で微調整されたモデルの結果は、CartoonGAN モデルの出力とより一致しています (最適な視覚化を行うには、拡大してカラーで表示することをお勧めします)。

テスト画像は ImageNette の検証セットからサンプリングされます。私たちのモデルと事前トレーニング済みの InstructPix2Pix モデルを使用するときは、 「画像の漫画化されたバージョンを生成する」というヒントを使用し、推論ステップのimage_guidance_scaleguidance_scale、および数をそれぞれ 1.5、7.0、および 20 に設定しました。これは予備的な効果にすぎず、将来的にはハイパーパラメータに関するさらなる実験が必要であり、各モデルの効果に対する各パラメータの影響、特に事前トレーニングされた InstructPix2Pix モデルの効果が必要です。

送信元アドレスにより、さらに多くの比較結果が得られます。モデルのパフォーマンスを比較するために使用したコードも原文で見つけることができます。

ただし、モデルはトレーニング中にそのようなサンプルを十分に認識していないため、ImageNette のターゲット オブジェクト (パラシュートなど) では期待したほどのパフォーマンスを発揮しません。これはある程度予想されており、トレーニング データを増やすことで軽減できると考えられます。

低レベルの画像処理結果

基礎となる画像処理 (モデル) には、上記と同じ推論ハイパーパラメーターを使用しました。

  • 推論ステップ数: 20

  • image_guidance_scale:1.5

  • guidance_scale:7.0

雨の除去タスクでは、グラウンド トゥルースおよび事前トレーニングされた InstructPix2Pix モデルの出力と比較した結果、モデルの結果が非常に良好であることがわかりました。

2dca74620ca85973a0e51051268bdb15.png
図 9 : 雨の除去の結果 (最適な視覚化のために拡大およびカラー表示をお勧めします)。ヒントは「イメージをデレインする」です(トレーニングセットと同じ)。

しかし、低照度での画像強調の効果は満足のいくものではありません。

85a7d88311be8938b2d7812266aec807.png
图 10: 低照度图像增强结果(建议放大并以彩色显示,以获得最佳视觉效果)。提示为 “enhance the low-light image”(与训练集相同)。

这种情况或许可以归因于训练样本不足,此外训练方法也尚有改进余地。我们在去模糊任务上也有类似发现:

d78b9d1138441a01a2e4a5fcdbdebe59.png
图 11: 去模糊结果(建议放大并以彩色显示,以获得最佳视觉效果)。提示为 “deblur the image”(与训练集相同)。

我们相信对社区而言,底层图像处理的任务不同组合如何影响最终结果 这一问题非常值得探索。在训练样本集中增加更多的任务种类并增加更多具代表性的样本是否有助于改善最终结果? 这个问题,我们希望留给社区进一步探索。

你可以试试下面的交互式演示,看看 Stable Diffusion 能不能领会并执行你的特定指令:

体验地址:https://instruction-tuning-sd-instruction-tuned-sd.hf.space

潜在的应用及其限制

在图像编辑领域,领域专家的想法 (想要执行的任务) 与编辑工具 (例如 Lightroom) 最终需要执行的操作之间存在着脱节。如果我们有一种将自然语言的需求转换为底层图像编辑原语的简单方法的话,那么用户体验将十分丝滑。随着 InstructPix2Pix 之类的机制的引入,可以肯定,我们正在接近那个理想的用户体验。

但同时,我们仍需要解决不少挑战:

  • 这些系统需要能够处理高分辨率的原始高清图像。

  • 扩散模型经常会曲解指令,并依照这种曲解修改图像。对于实际的图像编辑应用程序,这是不可接受的。

开放性问题

目前的实验仍然相当初步,我们尚未对实验中的很多重要因素作深入的消融实验。在此,我们列出实验过程中出现的开放性问题:

  • 如果扩大数据集会怎样? 扩大数据集对生成样本的质量有何影响?目前我们实验中,训练样本只有不到 2000 个,而 InstructPix2Pix 用了 30000 多个训练样本。

  • 延长训练时间有什么影响,尤其是当训练集中任务种类更多时会怎样? 在目前的实验中,我们没有进行超参调优,更不用说对训练步数进行消融实验了。

  • 如何将这种方法推广至更广泛的任务集?历史数据表明,“指令微调”似乎比较擅长多任务微调。 目前,我们只涉及了四个底层图像处理任务: 除雨、去模糊、去噪和低照度图像增强。将更多任务以及更多有代表性的样本添加到训练集中是否有助于模型对未见任务的泛化能力,或者有助于对复合型任务 (例如: “Deblur the image and denoise it”) 的泛化能力?

  • 使用同一指令的不同变体即时组装训练样本是否有助于提高性能? 在卡通化任务中,我们的方法是在 数据集创建期间 从 ChatGPT 生成的同义指令集中随机抽取一条指令组装训练样本。如果我们在训练期间随机抽样,即时组装训练样本会如何?对于底层图像处理任务,目前我们使用了固定的指令。如果我们按照类似于卡通化任务的方法对每个任务和输入图像从同义指令集中采样一条指令会如何?

  • 如果我们用 ControlNet 的训练方法会如何? ControlNet 允许对预训练文生图扩散模型进行微调,使其能以图像 (如语义分割图、Canny 边缘图等) 为条件生成新的图像。如果你有兴趣,你可以使用本文中提供的数据集并参考 这篇文章 进行 ControlNet 训练。

总结

この記事では、安定拡散の「命令の微調整」に関する私たちの探求の一部を紹介します。事前トレーニング済みの InstructPix2Pix は一般的な画像編集命令を理解するのは得意ですが、より特殊な命令が提示されると失敗する可能性があります。この状況を軽減するために、結果を提示しながら、InstructPix2Pix をさらに微調整するためにデータセットを準備する方法について説明します。上で述べたように、私たちの結果はまだ暫定的なものです。しかし、私たちは、同様の問題に取り組んでいる研究者に基礎を提供し、この分野の未解決の問題をさらに探究するきっかけを与えたいと考えています。

リンク

  • トレーニングと推論コード

  • デモ

  • InstructPix2Pix

  • この論文のデータセットとモデル

この記事に関して有益な議論をしてくれた Alara Dirik と Zhengzhong Tu に感謝します。記事をレビューしてくれた Pedro Cuenca と Kashif Rasul に感謝します。

引用

この記事を引用するには、次の形式を使用してください。

@article{
  Paul2023instruction-tuning-sd,
  author = {Paul, Sayak},
  title = {Instruction-tuning Stable Diffusion with InstructPix2Pix},
  journal = {Hugging Face Blog},
  year = {2023},
  note = {https://huggingface.co/blog/instruction-tuning-sd},
}

英文原文: https://hf.co/blog/instruction-tuning-sd

原作者: サヤック・ポール

翻訳者: Intel ディープラーニング エンジニアである Matrix Yao (Yao Weifeng) は、さまざまなモーダル データに対するトランスフォーマー ファミリ モデルの適用と、大規模モデルのトレーニングと推論に取り組んでいます。

校正・組版:中東儀(阿东)

おすすめ

転載: blog.csdn.net/HuggingFace/article/details/131318754