InstructPix2Pix – 使用Prompt提示工程實現圖片智慧編輯

InstructPix2Pix – 使用Prompt提示工程實現圖片智慧編輯配圖

隨著最近Stable Diffusion(深度學習文字到影象生成模型)的蓬勃發展,從基於文字的prompt中生成影象已經變得相當普遍。 Image2Image技術遵循這種方法,它允許我們通過遮罩和內畫來編輯影象。隨著這項技術的快速發展,我們不再需要蒙版來編輯影象。隨著新的InstructPix2Pix的出現,使使用者能夠提供自然語言提示,指導模型的影象生成過程,從而使這一方法更進一步。

intructpix2pix-examples

圖1-InstructPix2Pix編輯影象示例

在這篇文章中,我們將探討InstructPix2Pix模式,它的工作原理,以及它能產生什麼樣的結果。

讀完這篇文章後,你將掌握必要的技能,在你的個人創作中有效利用InstructPix2Pix。有了對InstructPix2Pix的能力和缺點的瞭解,你可以把你的影象編輯技能提高到一個新的水平。

什麼是InstructPix2Pix?

InstructPix2Pix是一個擴散模型,特別是穩定擴散的一個變體。但它不是一個影象生成模型(文字到影象),而是一個影象編輯擴散模型。

簡單地說,如果我們給InstructPix2Pix一個輸入影象和提示指令,那麼這個模型就會按照指令來編輯影象。

它是由Tim Brooks、Aleksander Holynski和Alexei A. Efros在題為InstructPix2Pix: Learning to Follow Image Editing Instructions論文中提出的。

用InstructPix2Pix設計一個人戴帽子

圖2-用InstructPix2Pix設計一個人戴帽子的例子

上圖是InstructPix2Pix工作的一個簡單例子。我們通過使用非常簡單的指令使人戴上帽子。

由此產生的問題是,像InstructPix2Pix這樣的模式是否真的有益?答案是響亮的 “是”!在此引用作者的話:

“由於它在正向傳遞中進行編輯,不需要對每個例子進行微調或反轉,我們的模型可以在幾秒鐘內快速編輯影象。我們展示了對各種輸入影象和書面指令的令人信服的編輯結果”。

上述宣告證明,一旦進行了微調,我們就可以在各種影象上使用該模型進行推理。

InstructPix2Pix的核心工作仍然與原來的穩定擴散模型類似。它仍然具有:

  • 一個基於大型變換器的文字編碼器。
  • 一個自動編碼器網路,將影象編碼到潛空間(僅在訓練期間)。解碼器對UNet的最終輸出進行解碼,並對其進行升取樣。
  • 還有一個在潛空間工作的UNET模型,用來預測噪聲。

大部分的變化都發生在模型的訓練階段。事實上,InstructPix2Pix是訓練兩個不同模型的高潮。該模型的技術細節和訓練程式將在下一節中討論。

InstructPix2Pix是如何工作的?

在本節中,我們將重點討論InstructPix2Pix的工作。這包括兩件事:

  • 訓練InstructPix2Pix模型。
  • 使用該模型進行推理。

整個訓練過程涉及訓練兩個獨立的模型。InstructPix2Pix是一個多模式的模型,它同時處理文字和影象。它試圖根據指令來編輯影象。使用單一的模型是很難實現的。

因此,作者結合了GPT-3語言模型和穩定擴散的力量。GPT-3被用來生成文字提示(指令),穩定擴散模型的一個變種被訓練在這些指令和生成的影象上。

讓我們仔細看一下訓練過程。

微調GPT-3

作者對GPT-3模型進行了微調,建立了一個多模型訓練資料集。我們可以將整個過程分解為以下幾點:

  • 我們向GPT-3模型提供一個輸入標題,然後它對該標題進行訓練。
  • 訓練後,它學習生成編輯指令和最終的標題。

例如,我們的輸入標題是:

“A cat sitting on a couch(一隻坐在沙發上的貓)”. 

編輯指令可以是:

“cat wearing a hat(戴帽子的貓)”.

在這種情況下,最後的標題可以是:

“A cat wearing a hat sitting on a couch(一隻戴帽子的貓坐在沙發上)”.

注意:我們只向GPT-3模型輸入第一個標題。它也會學習生成編輯指令和最終編輯過的標題。

有趣的是,GPT-3模型是在一個相對較小的資料集中進行微調的。作者從LAION-Aesthetics資料集中只收集了700個標題。然後,編輯說明和輸出的標題被手動生成以訓練模型。

使用GPT-3為InstructPix2Pix訓練生成標題對

圖3-使用GPT-3為InstructPix2Pix訓練生成標題對

圖4顯示了第一行中的資料集生成過程。正如所討論的,編輯是手動生成的。

第二行顯示了經過訓練的GPT-3模型如何生成最終的資料集。

訓練結束後,我們可以給GPT-3模型輸入一個標題,它就會生成一個編輯指令和最終的標題。為了訓練InstructPix2Pix,產生了超過45萬個標題對。

微調文字到影象的穩定擴散模型

在訓練GPT-3模型和生成標題對之後,下一步是對預先訓練好的穩定擴散模型進行微調。

在資料集中,我們有初始和最後的標題。穩定擴散模型是通過從這些標題對中生成兩個影象來訓練的。

然而,有一個問題。即使我們固定了種子和其他引數,穩定擴散模型也傾向於生成非常不同的影象,即使有類似的提示。因此,從編輯過的標題生成的影象大多不會像編輯過的影象;相反,它將是一個完全不同的影象。

為了克服這個問題,作者使用了一種叫做 “Prompt-to-Prompt” 的技術。這種技術允許文字-影象模型以類似的提示語生成類似的影象。

不使用和使用Prompt-to-Promp對比

圖4-不使用和使用Prompt-to-Prompt的穩定擴散影象生成例項對比

上圖顯示了 “Prompt-to-Prompt” 的一個實際例子。兩張圖片都是用穩定擴散法生成的。左邊的圖片沒有使用Prompt-to-Prompt,而右邊的圖片則使用了該技術。

論文中的下圖很好地描述了InstructPix2Pix的訓練資料集生成和推理階段。

InstructPix2Pix訓練資料的生成、訓練和推理

圖5-InstructPix2Pix訓練資料的生成、訓練和推理。

正如我們所看到的,推理過程是非常簡單的。我們只需要一個輸入影象和一個編輯指令。InstructPix2Pix模型確實很好地遵循了編輯指令,生成了最終的影象。

IntstructPix2Pix的擴散模型

InstructPix2Pix最終生成的影象是文字prompt和輸入影象的組合。在推理過程中,我們需要一種方法來告訴模型更關注哪裡–影象或文字。

這是通過Classifier-free guidance(擴散模型)來實現的,它對兩個條件輸入進行權衡。我們把這兩個條件分別稱為S_T和S_I,分別代表文字和輸入影象。

在推理過程中,通過S_T引導更多的人,將使最終的影象更接近於提示。同樣地,通過S_I引導模型更多將使最終影象更接近於輸入影象。

人工智慧影象生成中擴散模型的例子

圖6-人工智慧影象生成中擴散模型的例子。

在訓練階段,實施擴散模型有助於模型學習有條件和無條件的去噪。我們可以把影象條件稱為C_I,文字條件稱為C_T。對於無條件的訓練,兩者都被設定為空值。

在進行推理時,在S_T(對提示的權重更大)和S_I(對初始影象的權重更大)之間選擇是一種權衡。我們需要根據我們想要的結果和我們的喜好來選擇設定。

InstructPix2Pix一些測試結果

論文中發表的結果相當有趣。我們可以用InstructPix2Pix來重新制作具有各種藝術媒介甚至不同環境風格的影象。

使用InstructPix2Pix在不同的藝術媒介中生成影象

圖7-使用InstructPix2Pix在不同的藝術媒介中生成影象。

與其他穩定擴散的影象編輯方法相比,InstructPix2Pix幾乎超越了所有的方法。

InstructPix2Pix與其他基於穩定擴散的影象生成方法相比

圖8-InstructPix2Pix與其他基於穩定擴散的影象生成方法相比。

這還不是全部。InstructPix2Pix還可以進行其他具有挑戰性的編輯工作。其中一些是:

  • 改變服裝風格。
  • 改變天氣。
  • 更換背景。
  • 改變季節。

下面是我們自己使用InstructPix2Pix編輯的一些圖片。

將天氣從晴天改為陰天

圖9. 使用InstructPix2Pix將天氣從晴天改為陰天。

在上圖中,我們將天氣從晴天改為陰天。該模型只用 “change weather from sunny to cloudy(將天氣從晴天改為多雲)” 的指令就能做到。

將季節從夏季改為冬季

圖10-使用InstructPix2Pix將季節從夏季改為冬季。

在這種情況下,我們告訴InstructPix2Pix模型將季節從夏季改為冬季,它輕鬆地做到了這一點。

使用InstructPix2Pix改變藝術材料風格

圖11-使用InstructPix2Pix改變藝術材料風格(這裡我們把一張照片的材料改為大理石和木頭)。

上面的結果非常有趣,我們告訴InstructPix2Pix模型改變材料型別。在第一個例子中,我們把材料型別改為木頭,在第二個例子中改為石頭。

使用Instruct Pix2Pix的應用程式

我們可以用InstructPix2Pix建立一些相當不錯的應用程式。兩個這樣的應用程式是:

  • 虛擬化妝
  • 虛擬試穿
  • 和虛擬髮型師

InstructPix2Pix在交換服裝款式、化妝、眼鏡,甚至髮型方面確實很有一套。將InstructPix2Pix用作虛擬髮型師是一個有趣的例子,因為在保持其他面部特徵不變的情況下,在影象中調換髮型是非常困難的。然而,只要有合適的影象,InstructPix2Pix就能輕鬆地進行。

如果以正確的方式使用,像虛擬化妝和虛擬試穿這樣的應用將變得更容易建立,也更容易為公眾所接受。

以下是一些相同的例子。

使用InstructPix2Pix改變頭髮顏色

圖12-使用InstructPix2Pix改變頭髮顏色

使用InstructPix2Pix的虛擬試穿

圖13-使用InstructPix2Pix的虛擬試穿

在哪裡使用InstructPix2Pix?

看完這個帖子後,你可能有衝動想自己嘗試一下InstructPix2Pix。幸運的是,有幾種方法可以讓你輕鬆地進入InstructPix2Pix。

Automatic1111

如果你的本地系統有一個GPU,並且無懼於修補Python程式碼,那麼Automatic1111是嘗試InstructPix2Pix的最佳途徑之一。就目前而言,InstructPix2Pix是網路應用的一部分,你只需要下載模型。

在AUTOMATIC1111 WebUI中使用InstructPix2Pix

圖14-在AUTOMATIC1111 WebUI中使用InstructPix2Pix。

如果你沒有GPU,你可以用Automatic1111試試InstructPix2Pix,甚至在Google Colab上也可以。

官方Gradio應用程式

該論文的作者還提供了一個使用Gradio介面的官方Hugging Face空間。

你可以通過Hugging Face Spaces訪問它。

最重要的是,你不需要在本地設定任何東西來使用這個。

小結

在這篇文章中,我們介紹了InstructPix2Pix模型,它可以只用文字提示來編輯圖片。伴隨著它的訓練標準,我們還探討了我們可以利用它建立的可能的應用。

穩定擴散模型在創意領域開啟了一個充滿可能性的世界。現在,像數字藝術或技術藝術這樣的領域並不侷限於選定的幾個人。任何有學習這種新技術衝動的人都可以用幾行文字創造出引人注目的藝術。無論是編輯影象還是創造新的藝術;幾乎每個人都有機會使用使用擴散模型建立的工具。

InstructPix2Pix是一個突破性的影象編輯工具,允許使用者使用自然語言提示來編輯影象。通過InstructPix2Pix,使用者可以輕鬆地新增或刪除物件,改變顏色,並以以前很難或不可能的方式操縱影象。這個工具有可能徹底改變人們編輯影象的方式,使其比以往任何時候都更容易使用和直觀。

我邀請你通過他們的演示自己嘗試一下,並通過閱讀論文或他們公開的程式碼瞭解更多關於他們的方法。請在評論中告訴我們你是如何利用擴散模型的力量和你的創造力來創造新東西的。

評論留言