當前 inpainting/outpainting 最優解:PowerPaint + BrushNet
一、概述
PowerPaint 是一種圖像修復模型,它能夠實現多種內繪圖任務,包括文本引導的對象內繪圖、上下文感知圖像內繪圖、可控形狀擬合的對象內繪圖以及外繪圖。如果單純從這篇文章來看,并不能達到最好的效果,但是作者受 BrushNet 啟發,重新訓練了一版,也是 github 里面的 PowerPaint v2,效果應該算是當前的最優解了。
項目地址:PowerPaint項目頁面(https://powerpaint.github.io/)
論文地址:A Task is Worth One Word: Learning with Task Prompts for High-Quality Versatile Image Inpainting(https://arxiv.org/pdf/2312.03594)
代碼地址:https://github.com/open-mmlab/PowerPaint(https://github.com/open-mmlab/PowerPaint)
效果:
二、原理
核心點:
- 學習任務提示(Task Prompts):通過引入可學習的任務提示和針對性的微調策略,指導模型明確關注不同的內繪圖目標。
- 負提示(Negative Prompt):展示任務提示在 PowerPaint 中的多功能性,作為負提示用于有效的對象移除。
- 提示插值技術(Prompt Interpolation Techniques):利用該技術實現可控的形狀引導對象內繪圖。
細節解釋:
- 問題設定:在圖像中填充用戶指定區域,根據用戶意圖填充合理的內容。
- PowerPaint架構:
1.任務提示 :引入可學習的任務提示,專門為上下文感知圖像內繪圖(Context-aware Image Inpainting)設計的任務提示。它引導模型填充圖像中的缺失區域,同時保持與周圍圖像內容的一致性。在訓練中通常與隨機掩碼一起使用,目的是讓模型學會如何根據圖像的上下文信息來填充缺失的部分,而不是依賴于文本描述。
2.對象移除:通過結合分類器自由引導采樣策略,使用作為正提示,作為負提示,有效防止在區域內生成對象,提高對象移除的成功率。
3.形狀引導對象內繪圖:通過隨機擴張對象分割掩碼,并使用和之間的插值作為訓練的任務提示,建立兩種內繪圖目標之間的權衡。為了實現形狀引導的對象內繪圖中的可控性,通過插值和來平衡形狀擬合和上下文感知。將和作為后綴添加到文本描述中,并將它們分別輸入到CLIP文本編碼器中,通過根據的值對兩個 Text Embedding 進行線性插值,我們得到了最終的文本嵌入,記為:
其中這里的值為了防止模型過度擬合掩模的形狀,而不考慮物體的整體形狀,做了如下設置:
局限性:
- 基礎模型限制:合成質量可能受到底層文本到圖像擴散模型能力的約束。
- 小區域擬合挑戰:在訓練中,對象占據極小區域的實例稀疏,導致實現極小值擬合度有一定挑戰。
三、PowerPaint + BrushNet
主要重點說下PowerPaint + BrushNet,前面我寫過一篇 BrushNet 的文章 grooter:【AIGC圖像理論篇11】BrushNet —— 插件式圖像修復inpainting 模型(??https://zhuanlan.zhihu.com/p/695197835??) ,BrushNet 使用了一個分支來更好的提取遮
罩圖像特征的優勢,但是因為其刪除了此分支的文本提示的交叉注意力,所以其內容的控制依靠原擴散模型的prompt。而PowerPaint主要創新點在于引入可學習的任務提示和針對性的微調策略,所以 PowerPaint 作者結合兩者的優勢,保留被 BrushNet 刪除的交叉注意力層用于任務提示輸入,重新訓練了新的 PowerPaint,得到了PowerPaint + BrushNet模型。總結下就是在BrushNet的單獨的分支上用PowerPaint 針對性微調的方式訓練了一個新的BrushNet模型。
我實際部署后做了下對比,效果確實會好一些,尤其是outpainting,效果圖如下:
inpainting:
outpainting:
四、總結
PowerPaint作為一種多功能的圖像內繪圖模型,通過學習任務提示和負提示,以及利用提示插值技術,實現了在多種內繪圖任務中的優異性能。而 PowerPaint + BrushNet 更好的結合了兩者的優點,也輸出了較好的效果,但是不能和sd webui結合是一個推廣瓶頸。
本文轉自 AI生成未來 ,作者:grooter
