使用HuggingFace實現 DiffEdit論文的掩碼引導語義圖像編輯

在本文中,我們將實現Meta AI和Sorbonne Universite的研究人員最近發表的一篇名爲DIFFEDIT的論文。對於那些熟悉穩定擴散過程或者想了解DiffEdit是如何工作的人來說,這篇文章將對你有所幫助。

什麼是DiffEdit?

簡單地說,可以將DiffEdit方法看作圖像到圖像的一個更受控制的版本。DiffEdit接受三個輸入-

  1. 輸入圖像
  2. 標題-描述輸入圖像
  3. 目標查詢文本-描述想要生成的新圖像的文本

模型會根據查詢文本生成原始圖像的修改版本。如果您想對實際圖像進行輕微調整而不需要完全修改它,那麼使用DiffEdit是非常有效的。

從上圖中可以看到,只有水果部分被梨代替了。這是一個非常驚人的結果!

論文作者解釋說,他們實現這一目標的方法是引入一個遮蔽生成模塊,該模塊確定圖像的哪一部分應該被編輯,然後只對遮罩部分執行基於文本的擴散。

從上面這張論文中截取的圖片中可以看到,作者從輸入的圖像中創建了一個掩碼,確定了圖像中出現水果的部分(如橙色所示),然後進行掩碼擴散,將水果替換爲梨。作者提供了整個DiffEdit過程的良好可視化表示。

這篇論文中,生成遮蔽掩碼似乎是最重要的步驟,其他的部分是使用文本條件進行擴散過程的調節。使用掩碼對圖像進行調節的方法與在“Hugging face”的In-Paint 實現的想法類似。正如作者所建議的,“DiffEdit過程有三個步驟:

步驟1:爲輸入圖像添加噪聲,並去噪:一次參考提示文本,一次參考查詢文本(或無條件,也就是不參考任何文本),並根據去噪結果的差異推導出一個掩碼。

步驟2:對輸入圖像進行DDIM編碼,估計與輸入圖像相對應的潛在值

步驟3:在文本查詢條件下執行DDIM解碼,使用推斷的掩碼將背景替換爲來自編碼過程中相應時間步" 1 "的像素值

下面我們將這些思想實現到實際的代碼中。

完整文章

https://avoid.overfit.cn/post/f0a8a7b6981a4962aae21e97d535ee41

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章