天天看點

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

作者:快樂愛生活的凡哥

#挑戰30天在頭條寫日記#

今天要來看一個ControlNet新出的模型-- Reference以及它的一些用法。

上個星期ControlNet釋出了更新版v1.1.167,其中包含了一個很好玩的新前置處理器-- reference_only。這是一個很好玩的東西,它模仿了一個Inpaint的技巧,就是故意生成雙胞胎。

Stable Diffusion有個很煩人的特性,就是如果畫布尺寸過大,AI會有很大機率産生一模一樣但是姿态不同的人物或動物來填充畫布。解決雙胞胎效果的方法通常是先從小尺寸畫布開始,然後用Hires. fix或Upscaling擴充尺寸并加細節。

但是雙胞胎效果也有一個很好玩的應用,就是故意制造雙胞胎效果,借以制造相似但是形态不一樣的角色。

以這張狗狗圖為例,用512x512來制圖,然後在繪圖軟體裡面将圖擴充成1024x512,新的地方留白,然後放進Inpaint裡面将留白的地方選擇起來:

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

左邊是原圖,右邊是空白區域

接着用:

  • Masked Content: Latent Noise
  • Denoising strength: 約0.75

這樣跑了幾張圖之後,有很大機率可以刷到非常相似的雙胞胎。

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

故意使用雙胞胎效應

而ControlNet的Reference就是重制相似的方法,但是能更精緻操控出圖的走向,并且避免這種方法的繁瑣以及頻繁的崩圖。

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

示例圖

以這張圖為示例,在txt2img内,把ControlNet的preprocessor設定為reference_only。将示例圖拉進ControlNet,其他設定都維持一樣,就可以開始跑了!

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

ControlNet的reference_only設定

我們在這邊隻用簡單的正向提示詞來繪圖:

(extremely detailed CG unity 8k wallpaper), best quality, masterpiece , hdr, ultra highres, 1girl, blunt hair, black long hair, white kimono,

dynamic pose, dynamic angle,

from above, slight smiling

Reference功能可以僅靠着這麼粗略的提示詞,就幫你畫出以示例圖為參考而産生的人物。我在提示詞中沒有提到帽子,是以産出的人物圖也不會有帽子。

這些提示詞必須先測試過,确定了産出的成果圖有你需要的元素,如果沒有的話,就自行增加提示詞來補上。例如我的示例圖中,Reference并沒有提取浏海與發色的特征,是以要自己補上blunt bangs(齊眉劉海)與black long hair(黑長發)。

然後加上了dynamic pose, dynamic angle等提示詞,讓産出的角色可以有更多的姿勢,用from above, slight smiling讓角色有更多的攝影角度與表情,之後再使用X/Y/Z plot來産出各種組合的圖。

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

就這樣,産生了好幾張與參考圖非常相似,但是表情,角度都有稍微不同的成果圖。

這個功能的用途,我能想到的第一個用途就是拿來當LoRA的訓練素材。通常LoRA訓練需要用到20張到40張的素材圖,最好是多角度多表情多光影,純粹使用提示詞來産生素材圖通常很難張張相像,是以使用Reference來産生一批表情各異、角度微調的類似圖檔,可以省下很多時間。

第二個用途就是結合ControlNet的其他功能,例如openpose來固定出圖人物的姿勢與角度,産生一個指定的角色圖,例如配合使用openpose來出圖:

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

ControlNet的openpose設定

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

複數ControlNet合作的成品

另一個用途就是讓我們能不使用LoRA就在不同模型間産生一個類似的角色圖,在某些情況下直接跳過訓練LoRA的階段,直接算圖快速滿足一些特定需求。

例如我們想在revAnimated這個模型産生哥布林,但是它産生的樣子與RPGV4模型産生的相差很多,而我想要RPGv4的哥布林外型,但又要在revAnimated産生比較柔和的皮膚感覺:

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

左圖為RPGv4的哥布林,右圖為revAnimated的哥布林

之前最穩定的做法是使用RPGv4的哥布林圖檔訓練一個專門的LoRA,然後在revAnimated裡面使用,但是現在有了這個新功能,就可以直接在目标模型内生成原始模型的角色圖了:

AI繪圖|Stable Diffusion進階—— ControlNet新模型Reference實戰

左上是無reference版本的哥布林,右邊六張圖是有reference的哥布林

這樣我們就可以省下訓練LoRA的時間跟資源在訓練雜兵LoRA上了!

限制

測試了Reference一陣子,發覺這個功能還有許多局限:

  • 多人畫面會造成參考錯亂,因為AI不知道哪個角色的特征要對應到成果圖的哪個角色,很常出現特征錯亂或者多人特征混合在一起出圖。
  • 3D或真實照片通常都提取不了特征,成果圖會跟參考圖差異非常大,這可能是Reference模型自己的問題,隻能等待作者解決,或者我們能開發出其他方法讓模型能夠正确讀取照片人物的特征。