更新於 2023/05/18閱讀時間約 6 分鐘

Stable Diffusion進階 -- ControlNet新功能Reference

正文

今天要來看一個ControlNet新出的模型 -- Reference以及它的一些用法。
上個星期ControlNet發佈了更新版v1.1.167,其中包含了一個很好玩的新前置處理器 -- reference_only。這是一個很好玩的東西,它模仿了一個Inpaint的技巧,就是故意生成雙胞胎。
Stable Diffusion有個很煩人的特性,就是如果畫布尺寸過大,AI會有很大機率產生一模一樣但是姿態不同的人物或動物來填充畫布。解決雙胞胎效果的方法通常是先從小尺寸畫布開始,然後用Hires. fix或Upscaling擴展尺寸並加細節。
但是雙胞胎效果也有一個很好玩的應用,就是故意製造雙胞胎效果,藉以製造相似但是型態不一樣的角色。
以這張狗狗圖為例,用512x512來製圖,然後在繪圖軟體裡面將圖擴展成1024x512,新的地方留白,然後放進Inpaint裡面將留白的地方選擇起來:
左邊是原圖,右邊是空白區域
左邊是原圖,右邊是空白區域
接著用:
  • Masked Content: Latent Noise
  • Denoising strength: 約0.75
這樣跑了幾張圖之後,有很大機率可以刷到非常相似的雙胞胎。
故意使用雙胞胎效應
而ControlNet的Reference就是重現相似的方法,但是能更精緻操控出圖的走向,並且避免這種方法的繁瑣以及頻繁的崩圖。
範例圖
以這張圖為範例,在txt2img內,把ControlNet的preprocessor設定為reference_only。將範例圖拉進ControlNet,其他設定都維持一樣,就可以開始跑了!
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來產出各種組合的圖。
成果圖
就這樣,產生了好幾張與參考圖非常相似,但是表情,角度都有稍微不同的成果圖。
這個功能的用途,我能想到的第一個用途就是拿來當LoRA的訓練素材。通常LoRA訓練需要用到20張到40張的素材圖,最好是多角度多表情多光影,存粹使用提示詞來產生素材圖通常很難張張相像,所以使用Reference來產生一批表情各異、角度微調的類似圖片,可以省下很多時間。
第二個用途就是結合ControlNet的其他功能,例如openpose來固定出圖人物的姿勢與角度,產生一個指定的角色圖,例如配合使用openpose來出圖:
ControlNet的openpose設定
複數ControlNet合作的成品
另一個用途就是讓我們能不使用LoRA就在不同模型間產生一個類似的角色圖,在某些情況下直接跳過訓練LoRA的階段,直接算圖快速滿足一些特定需求。
例如我們想在revAnimated這個模型產生哥布林,但是它產生的樣子與RPGV4模型產生的相差很多,而我想要RPGv4的哥布林外型,但又要在revAnimated產生比較柔和的皮膚感覺:
左圖為RPGv4的哥布林,右圖為revAnimated的哥布林
之前最穩定的做法是使用RPGv4的哥布林圖片訓練一個專門的LoRA,然後在revAnimated裡面使用,但是現在有了這個新功能,就可以直接在目標模型內生成原始模型的角色圖了:
左上是無reference版本的哥布林,右邊六張圖是有reference的哥布林
這樣我們就可以省下訓練LoRA的時間跟資源在烘焙雜兵LoRA上了!

限制

測試了Reference一陣子,發覺這個功能還有許多侷限:
  • 多人畫面會造成參考錯亂,因為AI不知道哪個角色的特徵要對應到成果圖的哪個角色,很常出現特徵錯亂或者多人特徵混合在一起出圖。
  • 3D或真實照片通常都提取不了特徵,成果圖會跟參考圖差異非常大,這可能是Reference模型自己的問題,只能等待作者解決,或者我們能開發出其他方法讓模型能夠正確讀取照片人物的特徵。
祝大家AI算圖愉快!

參考

進階技巧目錄:
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.