最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

使用 InstructPix2Pix 對 Stable Diffusion 進行指令微調(diào)

2023-06-20 21:17 作者:HuggingFace  | 我要投稿


本文主要探討如何使用指令微調(diào)的方法教會 Stable Diffusion 按照指令 PS 圖像。這樣,我們 Stable Diffusion 就能聽得懂人話,并根據(jù)要求對輸入圖像進行相應(yīng)操作,如: 將輸入的自然圖像卡通化 。

圖 1:我們探索了 Stable Diffusion 的指令微調(diào)能力。這里,我們使用不同的圖像和提示對一個指令微調(diào)后的 Stable Diffusion 模型進行了測試。微調(diào)后的模型似乎能夠理解輸入中的圖像操作指令。(建議放大并以彩色顯示,以獲得最佳視覺效果)

InstructPix2Pix: Learning to Follow Image Editing Instructions 一文首次提出了這種教 Stable Diffusion 按照用戶指令 編輯 輸入圖像的想法。本文我們將討論如何拓展 InstructPix2Pix 的訓(xùn)練策略以使其能夠理解并執(zhí)行更特定的指令任務(wù),如圖像翻譯 (如卡通化) 、底層圖像處理 (如圖像除雨) 等。本文接下來的部分安排如下:

  • 指令微調(diào)簡介

  • 本工作的靈感來源

  • 數(shù)據(jù)集準備

  • 訓(xùn)練實驗及結(jié)果

  • 潛在的應(yīng)用及其限制

  • 開放性問題

你可在 此處 找到我們的代碼、預(yù)訓(xùn)練模型及數(shù)據(jù)集。

引言與動機

指令微調(diào)是一種有監(jiān)督訓(xùn)練方法,用于教授語言模型按照指令完成任務(wù)的能力。該方法最早由谷歌在 Fine-tuned Language Models Are Zero-Shot Learners (FLAN) 一文中提出。最近大家耳熟能詳?shù)?Alpaca、FLAN V2 等工作都充分證明了指令微調(diào)對很多任務(wù)都有助益。

下圖展示了指令微調(diào)的一種形式。在 FLAN V2 論文 中,作者在一個樣本集上對預(yù)訓(xùn)練語言模型 (如 T5) 進行了微調(diào),如下圖所示。

圖 2: FLAN V2 示意圖 (摘自 FLAN V2 論文)。

使用這種方法,我們可以創(chuàng)建一個涵蓋多種不同任務(wù)的訓(xùn)練集,并在此數(shù)據(jù)集上進行微調(diào),因此指令微調(diào)可用于多任務(wù)場景:

輸入標簽任務(wù)Predict the sentiment of the
following sentence: “The movie
was pretty amazing. I could not
turn around my eyes even for a
second.”PositiveSentiment analysis /
Sequence classificationPlease answer the following
question.
What is the boiling point of
Nitrogen?320.4FQuestion answeringTranslate the following
English sentence into German: “I have
a cat.”Ich habe eine Katze.Machine translation………

在該理念的指導(dǎo)下,F(xiàn)LAN V2 的作者對含有數(shù)千個任務(wù)的混合數(shù)據(jù)集進行了指令微調(diào),以達成對未見任務(wù)的零樣本泛化:

圖 3: FLAN V2 用于訓(xùn)練與測試的混合任務(wù)集 (圖來自 FLAN V2 論文)。

我們這項工作背后的靈感,部分來自于 FLAN,部分來自 InstructPix2Pix。我們想探索能否通過特定指令來提示 Stable Diffusion,使其根據(jù)我們的要求處理輸入圖像。

預(yù)訓(xùn)練的 InstructPix2Pix 模型 擅長領(lǐng)會并執(zhí)行一般性指令,對圖像操作之類的特定指令可能并不擅長:

圖 4: 我們可以看到,對同一幅輸入圖像(左列),與預(yù)訓(xùn)練的 InstructPix2Pix 模型(中間列)相比,我們的模型(右列)能更忠實地執(zhí)行“卡通化”指令。第一行結(jié)果很有意思,這里,預(yù)訓(xùn)練的 InstructPix2Pix 模型很顯然失敗了。建議放大并以彩色顯示,以獲得最佳視覺效果。原圖見此處。

但我們?nèi)匀豢梢岳迷?InstructPix2Pix 上的一些經(jīng)驗和觀察來幫助我們做得更好。

另外,卡通化、圖像去噪 以及 圖像除雨 等任務(wù)的公開數(shù)據(jù)集比較容易獲取,所以我們能比較輕松地基于它們構(gòu)建指令提示數(shù)據(jù)集 (該做法的靈感來自于 FLAN V2)。這樣,我們就能夠?qū)?FLAN V2 中提出的指令模板思想遷移到本工作中。

數(shù)據(jù)集準備

卡通化

剛開始,我們對 InstructPix2Pix 進行了實驗,提示其對輸入圖像進行卡通化,效果不及預(yù)期。我們嘗試了各種推理超參數(shù)組合 (如圖像引導(dǎo)比 (image guidance scale) 以及推理步數(shù)),但結(jié)果始終不理想。這促使我們開始尋求不同的處理這個問題的方式。

正如上一節(jié)所述,我們希望結(jié)合以下兩個工作的優(yōu)勢:

(1) InstructPix2Pix 的訓(xùn)練方法,以及
(2) FLAN 的超靈活的創(chuàng)建指令提示數(shù)據(jù)集模板的方法。

首先我們需要為卡通化任務(wù)創(chuàng)建一個指令提示數(shù)據(jù)集。圖 5 展示了我們創(chuàng)建數(shù)據(jù)集的流水線:

圖 5: 本文用于創(chuàng)建卡通化訓(xùn)練數(shù)據(jù)集的流水線(建議放大并以彩色顯示,以獲得最佳視覺效果)。

其主要步驟如下:

  1. 請 ChatGPT 為 “Cartoonize the image.” 這一指令生成 50 個同義表述。

  2. 然后利用預(yù)訓(xùn)練的 Whitebox CartoonGAN 模型對 Imagenette 數(shù)據(jù)集 的一個隨機子集 (5000 個樣本) 中的每幅圖像生成對應(yīng)的卡通化圖像。在訓(xùn)練時,這些卡通化的圖像將作為標簽使用。因此,在某種程度上,這其實相當(dāng)于將 Whitebox CartoonGAN 模型學(xué)到的技能遷移到我們的模型中。

  3. 然后我們按照如下格式組織訓(xùn)練樣本:

圖 6: 卡通化數(shù)據(jù)集的樣本格式(建議放大并以彩色顯示,以獲得最佳視覺效果)。

你可以在 此處 找到我們生成的卡通化數(shù)據(jù)集。有關(guān)如何準備數(shù)據(jù)集的更多詳細信息,請參閱 此處。我們將該數(shù)據(jù)集用于微調(diào) InstructPix2Pix 模型,并獲得了相當(dāng)不錯的結(jié)果 (更多細節(jié)參見“訓(xùn)練實驗及結(jié)果”部分)。

下面,我們繼續(xù)看看這種方法是否可以推廣至底層圖像處理任務(wù),例如圖像除雨、圖像去噪以及圖像去模糊。

底層圖像處理 (Low-level image processing)

我們主要專注 MAXIM 論文中的那些常見的底層圖像處理任務(wù)。特別地,我們針對以下任務(wù)進行了實驗: 除雨、去噪、低照度圖像增強以及去模糊。

我們?yōu)槊總€任務(wù)從以下數(shù)據(jù)集中抽取了數(shù)量不等的樣本,構(gòu)建了一個單獨的數(shù)據(jù)集,并為其添加了提示,如下所示: 任務(wù) 提示 數(shù)據(jù)集 抽取樣本數(shù)

任務(wù)提示數(shù)據(jù)集抽取樣本數(shù)去模糊“deblur the blurry image”REDS (train_blur
train_sharp)1200除雨“derain the image”Rain13k686去噪“denoise the noisy image”SIDD8低照度圖像增強"enhance the low-light image”LOL23

上表中的數(shù)據(jù)集通常以 輸入輸出對的形式出現(xiàn),因此我們不必擔(dān)心沒有真值 (ground-truth)。你可以從 此處 找到我們的最終數(shù)據(jù)集。最終數(shù)據(jù)集如下所示:

圖 7: 我們生成的底層圖像處理數(shù)據(jù)集的樣本(建議放大并以彩色顯示,以獲得最佳視覺效果)。

總的來說,這種數(shù)據(jù)集的組織方式來源于 FLAN。在 FLAN 中我們創(chuàng)建了一個混合了各種不同任務(wù)的數(shù)據(jù)集,這一做法有助于我們一次性在多任務(wù)上訓(xùn)練單個模型,使其在能夠較好地適用于含有不同任務(wù)的場景。這與底層圖像處理領(lǐng)域的典型做法有很大不同。像 MAXIM 這樣的工作雖然使用了一個單一的模型架構(gòu),其能對不同的底層圖像處理任務(wù)進行建模,但這些模型的訓(xùn)練是在各個數(shù)據(jù)集上分別獨立進行的,即它是“單架構(gòu),多模型”,但我們的做法是“單架構(gòu),單模型”。

訓(xùn)練實驗及結(jié)果

這 是我們的訓(xùn)練實驗的腳本。你也可以在 Weight and Biases 上找到我們的訓(xùn)練日志 (包括驗證集和訓(xùn)練超參):

  • 卡通化 (超參)

  • 底層圖像處理 (超參)

在訓(xùn)練時,我們探索了兩種方法:

  1. 對 InstructPix2Pix 的 checkpoint 進行微調(diào)

  2. 使用 InstructPix2Pix 訓(xùn)練方法對 Stable Diffusion 的 checkpoint 進行微調(diào)

通過實驗,我們發(fā)現(xiàn)第一個方法從數(shù)據(jù)集中學(xué)得更快,最終訓(xùn)得的模型生成質(zhì)量也更好。

有關(guān)訓(xùn)練和超參的更多詳細信息,可查看 我們的代碼 及相應(yīng)的 Weights and Biases 頁面。

卡通化結(jié)果

為了測試 指令微調(diào)的卡通化模型 的性能,我們進行了如下比較:

圖 8: 我們將指令微調(diào)的卡通化模型(最后一列)的結(jié)果與 CartoonGAN 模型(第二列)以及預(yù)訓(xùn)練的 InstructPix2Pix 模型(第三列)的結(jié)果進行比較。顯然,指令微調(diào)的模型的結(jié)果與 CartoonGAN 模型的輸出更一致(建議放大并以彩色顯示,以獲得最佳視覺效果)。原圖參見此處。

測試圖像是從 ImageNette 的驗證集中采樣而得。在使用我們的模型和預(yù)訓(xùn)練 InstructPix2Pix 模型時,我們使用了以下提示: _“Generate a cartoonized version of the image”_,并將 image_guidance_scale、 guidance_scale、推理步數(shù)分別設(shè)為 1.5、7.0 以及 20。這只是初步效果,后續(xù)還需要對超參進行更多實驗,并研究各參數(shù)對各模型效果的影響,尤其是對預(yù)訓(xùn)練 InstructPix2Pix 模型效果的影響。

此處 提供了更多的對比結(jié)果。你也可以在 此處 找到我們用于比較模型效果的代碼。

然而,我們的模型對 ImageNette 中的目標對象 (如降落傘等) 的處理效果 不及預(yù)期,這是因為模型在訓(xùn)練期間沒有見到足夠多的這類樣本。這在某種程度上是意料之中的,我們相信可以通過增加訓(xùn)練數(shù)據(jù)來緩解。

底層圖像處理結(jié)果

對于底層圖像處理 (模型),我們使用了與上文相同的推理超參:

  • 推理步數(shù): 20

  • image_guidance_scale: 1.5

  • guidance_scale: 7.0

在除雨任務(wù)中,經(jīng)過與真值 (ground-truth) 和預(yù)訓(xùn)練 InstructPix2Pix 模型的輸出相比較,我們發(fā)現(xiàn)我們模型的結(jié)果相當(dāng)不錯:

圖 9: 除雨結(jié)果(建議放大并以彩色顯示,以獲得最佳視覺效果)。提示為 “derain the image”(與訓(xùn)練集相同)。原圖見此處 。

但低照度圖像增強的效果不盡如意:

圖 10: 低照度圖像增強結(jié)果(建議放大并以彩色顯示,以獲得最佳視覺效果)。提示為 “enhance the low-light image”(與訓(xùn)練集相同)。原圖見[此處]。

這種情況或許可以歸因于訓(xùn)練樣本不足,此外訓(xùn)練方法也尚有改進余地。我們在去模糊任務(wù)上也有類似發(fā)現(xiàn):

圖 11: 去模糊結(jié)果(建議放大并以彩色顯示,以獲得最佳視覺效果)。提示為 “deblur the image”(與訓(xùn)練集相同)。原圖見此處 。

我們相信對社區(qū)而言,底層圖像處理的任務(wù)不同組合如何影響最終結(jié)果 這一問題非常值得探索。 在訓(xùn)練樣本集中增加更多的任務(wù)種類并增加更多具代表性的樣本是否有助于改善最終結(jié)果? 這個問題,我們希望留給社區(qū)進一步探索。

你可以試試下面的交互式演示,看看 Stable Diffusion 能不能領(lǐng)會并執(zhí)行你的特定指令:

體驗地址:https://instruction-tuning-sd-instruction-tuned-sd.hf.space

潛在的應(yīng)用及其限制

在圖像編輯領(lǐng)域,領(lǐng)域?qū)<业南敕?(想要執(zhí)行的任務(wù)) 與編輯工具 (例如 Lightroom) 最終需要執(zhí)行的操作之間存在著脫節(jié)。如果我們有一種將自然語言的需求轉(zhuǎn)換為底層圖像編輯原語的簡單方法的話,那么用戶體驗將十分絲滑。隨著 InstructPix2Pix 之類的機制的引入,可以肯定,我們正在接近那個理想的用戶體驗。

但同時,我們?nèi)孕枰鉀Q不少挑戰(zhàn):

  • 這些系統(tǒng)需要能夠處理高分辨率的原始高清圖像。

  • 擴散模型經(jīng)常會曲解指令,并依照這種曲解修改圖像。對于實際的圖像編輯應(yīng)用程序,這是不可接受的。

開放性問題

目前的實驗仍然相當(dāng)初步,我們尚未對實驗中的很多重要因素作深入的消融實驗。在此,我們列出實驗過程中出現(xiàn)的開放性問題:

  • 如果擴大數(shù)據(jù)集會怎樣? 擴大數(shù)據(jù)集對生成樣本的質(zhì)量有何影響?目前我們實驗中,訓(xùn)練樣本只有不到 2000 個,而 InstructPix2Pix 用了 30000 多個訓(xùn)練樣本。

  • 延長訓(xùn)練時間有什么影響,尤其是當(dāng)訓(xùn)練集中任務(wù)種類更多時會怎樣? 在目前的實驗中,我們沒有進行超參調(diào)優(yōu),更不用說對訓(xùn)練步數(shù)進行消融實驗了。

  • 如何將這種方法推廣至更廣泛的任務(wù)集?歷史數(shù)據(jù)表明,“指令微調(diào)”似乎比較擅長多任務(wù)微調(diào)。 目前,我們只涉及了四個底層圖像處理任務(wù): 除雨、去模糊、去噪和低照度圖像增強。將更多任務(wù)以及更多有代表性的樣本添加到訓(xùn)練集中是否有助于模型對未見任務(wù)的泛化能力,或者有助于對復(fù)合型任務(wù) (例如: “Deblur the image and denoise it”) 的泛化能力?

  • 使用同一指令的不同變體即時組裝訓(xùn)練樣本是否有助于提高性能? 在卡通化任務(wù)中,我們的方法是在 數(shù)據(jù)集創(chuàng)建期間 從 ChatGPT 生成的同義指令集中隨機抽取一條指令組裝訓(xùn)練樣本。如果我們在訓(xùn)練期間隨機抽樣,即時組裝訓(xùn)練樣本會如何?對于底層圖像處理任務(wù),目前我們使用了固定的指令。如果我們按照類似于卡通化任務(wù)的方法對每個任務(wù)和輸入圖像從同義指令集中采樣一條指令會如何?

  • 如果我們用 ControlNet 的訓(xùn)練方法會如何? ControlNet 允許對預(yù)訓(xùn)練文生圖擴散模型進行微調(diào),使其能以圖像 (如語義分割圖、Canny 邊緣圖等) 為條件生成新的圖像。如果你有興趣,你可以使用本文中提供的數(shù)據(jù)集并參考 這篇文章 進行 ControlNet 訓(xùn)練。

總結(jié)

通過本文,我們介紹了我們對“指令微調(diào)” Stable Diffusion 的一些探索。雖然預(yù)訓(xùn)練的 InstructPix2Pix 擅長領(lǐng)會執(zhí)行一般的圖像編輯指令,但當(dāng)出現(xiàn)更專門的指令時,它可能就沒法用了。為了緩解這種情況,我們討論了如何準備數(shù)據(jù)集以進一步微調(diào) InstructPix2Pix,同時我們展示了我們的結(jié)果。如上所述,我們的結(jié)果仍然很初步。但我們希望為研究類似問題的研究人員提供一個基礎(chǔ),并激勵他們進一步對本領(lǐng)域的開放性問題進行探索。

鏈接

  • 訓(xùn)練和推理代碼

  • 演示

  • InstructPix2Pix

  • 本文中的數(shù)據(jù)集和模型

感謝 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

原文作者: Sayak Paul

譯者: Matrix Yao (姚偉峰),英特爾深度學(xué)習(xí)工程師,工作方向為 transformer-family 模型在各模態(tài)數(shù)據(jù)上的應(yīng)用及大規(guī)模模型的訓(xùn)練推理。

審校/排版: zhongdongy (阿東)


使用 InstructPix2Pix 對 Stable Diffusion 進行指令微調(diào)的評論 (共 條)

分享到微博請遵守國家法律
万年县| 徐水县| 保德县| 大连市| 遵化市| 弥勒县| 富阳市| 浑源县| 山东省| 新和县| 南木林县| 汪清县| 馆陶县| 荣昌县| 孙吴县| 巢湖市| 闻喜县| 白山市| 墨江| 玉田县| 黄骅市| 涪陵区| 庄浪县| 银川市| 万盛区| 溧阳市| 曲麻莱县| 宜川县| 周口市| 竹北市| 海口市| 清丰县| 龙川县| 绩溪县| 元江| 司法| 峨眉山市| 太仆寺旗| 宣威市| 泰兴市| 拜泉县|