在 SDXL 上用 T2I-Adapter 實現(xiàn)高效可控的文生圖


T2I-Adapter 是一種高效的即插即用模型,其能對凍結的預訓練大型文生圖模型提供額外引導。T2I-Adapter 將 T2I 模型中的內(nèi)部知識與外部控制信號結合起來。我們可以根據(jù)不同的情況訓練各種適配器,實現(xiàn)豐富的控制和編輯效果。
同期的 ControlNet 也有類似的功能且已有廣泛的應用。然而,其運行所需的?計算成本比較高。這是因為其反向擴散過程的每個去噪步都需要運行 ControlNet 和 UNet。另外,對 ControlNet 而言,復制 UNet 編碼器作為控制模型的一部分對效果非常重要,這也導致了控制模型參數(shù)量的進一步增大。因此,ControlNet 的模型大小成了生成速度的瓶頸 (模型越大,生成得越慢)。
在這方面,T2I-Adapters 相較 ControlNets 而言頗有優(yōu)勢。T2I-Adapter 的尺寸較小,而且,與 ControlNet 不同,T2I-Adapter 可以在整個去噪過程中僅運行一次。

在過去的幾周里,Diffusers 團隊和 T2I-Adapter 作者緊密合作,在?diffusers
?庫上為 Stable Diffusion XL (SDXL) 增加 T2I-Adapter 的支持。本文,我們將分享我們在從頭開始訓練基于 SDXL 的 T2I-Adapter 過程中的發(fā)現(xiàn)、漂亮的結果,以及各種條件 (草圖、canny、線稿圖、深度圖以及 OpenPose 骨骼圖) 下的 T2I-Adapter checkpoint!

與之前版本的 T2I-Adapter (SD-1.4/1.5) 相比,T2I-Adapter-SDXL 還是原來的配方,不一樣之處在于,用一個 79M 的適配器去驅動 2.6B 的大模型 SDXL!T2I-Adapter-SDXL 在繼承 SDXL 的高品質生成能力的同時,保留了強大的控制能力!
用?diffusers
?訓練 T2I-Adapter-SDXL
我們基于?diffusers
?提供的 這個官方示例 構建了我們的訓練腳本。
本文中提到的大多數(shù) T2I-Adapter 模型都是在 LAION-Aesthetics V2 的 3M 高分辨率?圖文對
?上訓練的,配置如下:
訓練步數(shù): 20000-35000
batch size: 采用數(shù)據(jù)并行,單 GPU batch size 為 16,總 batch size 為 128
學習率: 1e-5 的恒定學習率
混合精度: fp16
我們鼓勵社區(qū)使用我們的腳本來訓練自己的強大的 T2I-Adapter,并對速度、內(nèi)存和生成的圖像質量進行折衷以獲得競爭優(yōu)勢。
在?diffusers
?中使用 T2I-Adapter-SDXL
這里以線稿圖為控制條件來演示 T2I-Adapter-SDXL 的使用。首先,安裝所需的依賴項:
T2I-Adapter-SDXL 的生成過程主要包含以下兩個步驟:
首先將條件圖像轉換為符合要求的?控制圖像?格式。
然后將?控制圖像?和?提示?傳給?
StableDiffusionXLAdapterPipeline
。
我們看一個使用 Lineart Adapter 的簡單示例。我們首先初始化 SDXL 的 T2I-Adapter 流水線以及線稿檢測器。
然后,加載圖像并生成其線稿圖:

然后生成:

理解下述兩個重要的參數(shù),可以幫助你調節(jié)控制程度。
adapter_conditioning_scale
該參數(shù)調節(jié)控制圖像對輸入的影響程度。越大代表控制越強,反之亦然。
adapter_conditioning_factor
該參數(shù)調節(jié)適配器需應用于生成過程總步數(shù)的前面多少步,取值范圍在 0-1 之間 (默認值為 1)。
adapter_conditioning_factor=1
?表示適配器需應用于所有步,而?adapter_conditioning_factor=0.5
?則表示它僅應用于前 50% 步。
更多詳情,請查看 官方文檔。
試玩演示應用
你可以在 這兒 或下述嵌入的游樂場中輕松試玩 T2I-Adapter-SDXL:

你還可以試試 Doodly,它用的是草圖版模型,可以在文本監(jiān)督的配合下,把你的涂鴉變成逼真的圖像:

更多結果
下面,我們展示了使用不同控制圖像作為條件獲得的結果。除此以外,我們還分享了相應的預訓練 checkpoint 的鏈接。如果想知道有關如何訓練這些模型的更多詳細信息及其示例用法,可以參考各自模型的模型卡。
使用線稿圖引導圖像生成

模型見?TencentARC/t2i-adapter-lineart-sdxl-1.0
使用草圖引導圖像生成

模型見?TencentARC/t2i-adapter-sketch-sdxl-1.0
使用 Canny 檢測器檢測出的邊緣圖引導圖像生成

模型見?TencentARC/t2i-adapter-canny-sdxl-1.0
使用深度圖引導圖像生成

模型分別見?TencentARC/t2i-adapter-depth-midas-sdxl-1.0
?及?TencentARC/t2i-adapter-depth-zoe-sdxl-1.0
使用 OpenPose 骨骼圖引導圖像生成

模型見?TencentARC/t2i-adapter-openpose-sdxl-1.0
致謝: 非常感謝 William Berman 幫助我們訓練模型并分享他的見解。
英文原文:?https://hf.co/blog/t2i-sdxl-adapters
原文作者: Chong Mou,Suraj Patil,Sayak Paul,Xintao Wang,hysts
譯者: Matrix Yao (姚偉峰),英特爾深度學習工程師,工作方向為 transformer-family 模型在各模態(tài)數(shù)據(jù)上的應用及大規(guī)模模型的訓練推理。
審校/排版: zhongdongy (阿東)